当前位置:文档之家› (售后服务)操作系统编程进程或作业先来先服务高优先权按时间片轮转调度算法

(售后服务)操作系统编程进程或作业先来先服务高优先权按时间片轮转调度算法

(售后服务)操作系统编程进程或作业先来先服务高优先权按时间片轮转调度算法
(售后服务)操作系统编程进程或作业先来先服务高优先权按时间片轮转调度算法

(售后服务)操作系统编程进程或作业先来先服务高优先权按时间片轮转调度

算法

湖南农业大学科学技术师范学院

学生实验报告

(高优先权流程图)

(按时间片轮转调度)

程序说明及实现:

1)先来先服务调度算法:

高响应比优先实现进程调度.(用C语言实现),

2)优先级调度程序:

该程序由主程序、构造队列子程序、打印子程序、运行子程序构成。

3)时间片轮转法程序:

于此程序中由于程序比较小,未进行分模块设计。直接采用单壹模块。

1先来先服务

#include floatt,d;/*定义俩个全局变量*/

struct/*定义壹个结构体数组,包括进程的信息*/

{

intid;

floatArriveTime;

floatRequestTime;

floatStartTime;

floatEndTime;

floatRunTime;

floatDQRunTime;

intStatus;

}arrayT ask[4];/*定义初始化的结构体数组*/

GetTask()/*给结构体数组赋值,输入到达,服务时间*/

{inti;

floata;

for(i=0;i<4;i++)

{arrayT ask[i].id=i+1;

printf("inputthenumber");

printf("inputthetheArriveTimeofarrayT ask[%d]:",i);/*用户输入进程的时间,初始为零*/

scanf("%f",&a);

arrayT ask[i].ArriveTime=a;

printf("inputtheRequestTimeofarrayT ask[%d]:",i);

scanf("%f",&a);

arrayT ask[i].RequestTime=a;

arrayT ask[i].StartTime=0;

arrayT ask[i].EndTime=0;

arrayT ask[i].RunTime=0;

操作系统实验-进程控制

实验一、进程控制实验 1.1 实验目的 加深对于进程并发执行概念的理解。实践并发进程的创建和控制方法。观察和体验进程的动态特性。进一步理解进程生命期期间创建、变换、撤销状态变换的过程。掌握进程控制的方法,了解父子进程间的控制和协作关系。练习Linux 系统中进程创建与控制有关的系统调用的编程和调试技术。 1.2 实验说明 1)与进程创建、执行有关的系统调用说明进程可以通过系统调用fork()创建子进程并和其子进程并发执行.子进程初始的执行映像是父进程的一个复本.子进程可以通过exec()系统调用族装入一个新的执行程序。父进程可以使用wait()或waitpid()系统调用等待子进程的结束并负责收集和清理子进程的退出状态。 fork()系统调用语法: #include pid_t fork(void); fork 成功创建子进程后将返回子进程的进程号,不成功会返回-1. exec 系统调用有一组6 个函数,其中示例实验中引用了execve 系统调用语法: #include int execve(const char *path, const char *argv[], const char * envp[]); path 要装入 的新的执行文件的绝对路径名字符串. argv[] 要传递给新执行程序的完整的命令参数列表(可以为空). envp[] 要传递给新执行程序的完整的环境变量参数列表(可以为空).

Exec 执行成功后将用一个新的程序代替原进程,但进程号不变,它绝不会再返回到调用进程了。如果exec 调用失败,它会返回-1。 wait() 系统调用语法: #include #include pid_t wait(int *status); pid_t waitpid(pid_t pid,int *status,int option); status 用 于保留子进程的退出状态 pid 可以为以下可能值: -1 等待所有PGID 等于PID 的绝对值的子进程 1 等待所有子进程 0 等待所有PGID 等于调用进程的子进程 >0 等待PID 等于pid 的子进程option 规 定了调用waitpid 进程的行为: WNOHANG 没有子进程时立即返回 WUNTRACED 没有报告状态的进程时返回 wait 和waitpid 执行成功将返回终止的子进程的进程号,不成功返回-1。 getpid()系统调用语法: #include #include pid_t getpid(void); pid_t getppid(void); getpid 返回当前进程的进程号,getppid 返回当前进程父进程的进程号 2)与进程控制有关的系统调用说明可以通过信号向一个进程发送消息以控制进程的 行为。信号是由中断或异常事件引发的,如:键盘中断、定时器中断、非法内存引

第二章-操作系统进程(练习题答案)

第二章进程管理 1.操作系统主要是对计算机系统全部 (1) 进行管理,以方便用户、提高计算机使 用效率的一种系统软件。它的主要功能有:处理机管理、存储管理、文件管理、 (2) 管 理和设备管理等。Windows和Unix是最常用的两类操作系统。前者是一个具有图形界面的 窗口式的 (3) 系统软件,后者是一个基本上采用 (4) 语言编制而成的 的系统软件。在 (5) 操作系统控制下,计算机能及时处理由过程控制反馈的信息 并作出响应。 供选答案: (1): A. 应用软件 B. 系统软硬件 C. 资源 D. 设备 (2): A. 数据 B. 作业 C. 中断 D. I/O (3): A. 分时 B. 多任务 C. 多用户 D. 实时 (4): A. PASCAL B. 宏 C. 汇编 D. C (5): A. 网络 B. 分时 C. 批处理 D. 实时 答案:CBBDD 2.操作系统是对计算机资源进行的 (1) 系统软件,是 (2) 的接口。 在处理机管理中,进程是一个重要的概念,它由程序块、 (3) 和数据块三部 分组成,它有3种基本状态,不可能发生的状态转换是 (4) 。 虚拟存储器的作用是允许程序直接访问比内存更大的地址空间,它通常使用 (5) 作为它的一个主要组成部分。 供选答案: (1): A. 输入和输出 B. 键盘操作 C. 管理和控制 D. 汇编和执行 (2): A. 软件和硬件 B. 主机和外设 C. 高级语言和机器语言 D. 用户和计算机 (3): A. 进程控制块 B. 作业控制块 C. 文件控制块 D. 设备控制块 (4): A. 运行态转换为就绪态 B. 就绪态转换为运行态 C. 运行态转换为等待态 D. 等待态转换为运行态 (5): A. 软盘 B. 硬盘 C. CDROM D. 寄存器 答案:CDADB 3.在计算机系统中,允许多个程序同时进入内存并运行,这种方法称为 D。 A. Spodling技术 B. 虚拟存储技术 C. 缓冲技术 D. 多道程序设计技术 4.分时系统追求的目标是 C。 A. 高吞吐率 B. 充分利用内存 C. 快速响应 D. 减少系统开销 5.引入多道程序的目的是 D。

时间片轮转调度算法资料

《操作系统》课程实验报告实验名称:时间片轮转调度算法 班级:**************** 学号:************* 姓名:************** 指导老师:*************** 成绩:

一、实验目的: 1、测试数据可以随即输入或从文件中读入。 2、必须要考虑到进程的到达时间 3、最终能够计算每一个进程的周转时间的带权周转时间。 4、时间片大小可以不为1,但至少实现时间片大小为1的RR调度。 二、实验内容: 模拟实现时间片轮转调度算法,具体如下: 设置进程体:进程名,进程的到达时间,服务时间,,进程状态(W——等待,R ——运行,F——完成),进程间的链接指针 进程初始化:由用户输入进程名、服务时间进行初始化,同时,初始化进程的状态为W。 显示函数:在进程调度前、调度中和调度后进行显示。 排序函数:对就绪状态的进程按照进入就绪队列的时间排序,新到达的进行应优先于刚刚执行过的进程进入就绪队列的队尾。 调度函数:每次从就绪队列队首调度优一个进程执行,状态变化。并在执行一个时间片后化,服务时间变化,状态变化。当服务时间为0时,状态 变为F。 删除函数:撤销状态为F的进行。 三、实验代码 #include #include #include typedefstruct PCB2 { char name[10];//进程名 int runtime;//要求运行时间 intfrist;//定义优先数 char zhuangtai; //定义状态,R为就绪,F为完成 }; structshijian {//定义时间片的结构体 char name; //定义进程名 intdaodatime;// 到达时间 intfuwutime; //服务时间 intshengyutime;//剩余时间 char *state;//所处状态 structshijian *next; }; structshijian *time() { inta,i;

(完整版)操作系统第二章作业答案

第二章作业 1.操作系统中为什么要引入进程的概念?为了实现并发进程中的合作和协调,以及保证系统的安全,操作系统在进程管理方面要做哪些工作? 答:为了从变化角度动态地分析研究可以并发执行的程序,真实的反应系统的独立性、并发性、动态性和相互制约,操作系统中不得不引入进程的概念。 为了防止操作系统及其关键的数据结构如:PCB等,受到用户程序破坏,将处理机分为核心态和用户态。对进程进行创建、撤销以及在某些进程状态之间的转换控制。 2.试描述当前正在运行的进程状态改变时,操作系统进行进程切换的步骤。答:分为两种情况: (1):运行状态就绪状态:根据进程的自身的情况插入到就绪队列的适当位置,系统收回处理及转入进程调度程序重新进行调度。 (2):运行状态→阻塞状态:系统会调用进程调度程序重新选择一个进程投入运行。 3.现代操作系统一般都提供多任务的环境,是回答以下问题。 为支持多进程的并发执行,系统必须建立哪些关于进程的数据结构? 答:系统必须建立PCB。 为支持进程的状态变迁,系统至少应该供哪些进程控制原语? 答:阻塞、唤醒、挂起和激活原语。 当进程的状态变迁时,相应的数据结构发生变化吗? 答:会根据状态的变迁发生相应的变化。例如:将进程PCB中进程的状态从阻塞状态改为就绪状态,并将进程从阻塞队列摘下,投入到就绪队列中。 4.什么是进程控制块?从进程管理、中断处理、进程通信、文件管理、设备管理及存储管理的角度设计进程控制块应该包含的内容。 答:PCB:描述进程本身的特征、状态、调度信息以及对资源占有情况等的数据结构,是进程存在的唯一标识。 进程控制块所包含的内容: ①进程信息描述;②CPU信息状态;③进程调度信息;④进程控制和资源占用信息。 5.假设系统就绪队列中有10个进程,这10个进程轮换执行,每隔300ms轮换一次,CPU在进程切换时所花费的时间是10ms,试问系统化在进程切换上的开销占系统整个时间的比例是多少? 解:P=(10*10)/[(300+10)*10]=3.2% 6.试述线程的特点及其与进程之间的关系。 答:线程的特点:是被独立分派和调度的基本单位。线程与进程的关系:线程是进程的一部分,是进程内的一个实体;一个进程可以有多个线程,但至少必须有一个线程。

处理器调度(设计一个按时间片轮转法实现处理器调度的程序)

实验一处理器调度 一、实验容 选择一个调度算法,实现处理器调度。 二、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实习模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。 三、实验题目 设计一个按时间片轮转法实现处理器调度的程序。 [提示]: (1)假定系统有五个进程,每一个进程用一个进程控制块PCB来代表。进程控制块的 格式为: 其中,Q1,Q2,Q3,Q4,Q5。 指针——进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地址最后一个进程的指针指出第一个进程的进程控制块首地址。 要求运行时间——假设进程需要运行的单位时间数。 已运行时间——假设进程已经运行的单位时间数,初始值为“0”。 状态——有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用“R”表示。 当一个进程运行结束后,它的状态为“结束”,用“E”表示。 (2) 每次运行所设计的处理器调度程序前,为每个进程任意确定它的“要求运行时间”。 (3) 把五个进程按顺序排成循环队列,用指针指出队列连接情况。另用一标志单元记录轮到运行的进程。例如,当前轮到P2执行,则有: 标志单元 K1 K2 K 3 K4 K5

(4)处理器调度总是选择标志单元指示的进程运行。由于本实习是模拟处理器调度的 功能,所以,对被选中的进程并不实际的启动运行,而是执行: 已运行时间+1 来模拟进程的一次运行,表示进程已经运行过一个单位的时间。 请同学注意:在实际的系统中,当一个进程被选中运行时,必须置上该进程可以运行的时间片值,以及恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行满一个时间片。在这时省去了这些工作,仅用“已运行时间+1”来表示进程已 经运行满一个时间片。 (5)进程运行一次后,应把该进程的进程控制块中的指针值送到标志单元,以指示下一 个轮到运行的进程。同时,应判断该进程的要求运行时间与已运行时间,若该进程的要求运行时间 已运行时间,则表示它尚未执行结束,应待到下一轮时再运行。若该进程的要求运行时间=已运行时间,则表示它已经执行结束,应指导它的状态修改成“结束”(E)且退出队列。此时,应把该进程的进程控制块中的指针值送到前 面一个进程的指针位置。 (6)若“就绪”状态的进程队列不为空,则重复上面的(4)和(5)的步骤,直到所有 的进程都成为“结束”状态。 (7)在所设计的程序中应有显示或打印语句,能显示或打印每次选中进程的进程名以及 运行一次后进程队列的变化。 (8)为五个进程任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示 或打印逐次被选中的进程名以及进程控制块的动态变化过程。 四. 所用数据结构及符号说明 typedef struct PNode//PCB { struct PNode *next; //定义指向下一个节点的指针 char name[10]; //定义进程名,并分配空间 int All_time; //定义总运行时间 int Runed_Time; //定义已运行时间 char state; //定义进程状态Ready/End } *Proc; //指向该PCB的指针 int ProcNum; //总进程数

时间片轮转算法

一、实验目的 (1)在单处理器情况下按时间片轮转算法实现处理器调度,输出运行动态变化过程。 (2)通过算法的实现加深了解处理器调度的工作。 二、实验内容 输入实现处理器调度的几个进程信息,任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示逐次被选中进程的进程名以及进程控制块的动态变化过程。 三、实验步骤 1、任务分析: 时间片轮转的主要思想就是按顺序为每一个进程一次只分配一个时间片的时间。算法要完成的功能就是将各个进程按照时间片轮转运行的动态过程显示出来。时间片轮转算法的主要实现过程是首先为每一个进程创建一个进程控制块,定义数据结构,说明进程控制块所包含的内容,有进程名、进程所需运行时间、已运行时间和进程的状态以及指针的信息。实现的过程即运用指针指向某一个进程,判断当前的进程是否是就绪状态“r”,如果是,则为该进程分配一个时间片,同时,已运行时间加一且要求运行的时间减一,如此循环执行,当某一个进程的所需要运行的时间减少至0时,则将该进程的状态设置为“e”。然后,将指针指向下一个未运行完成的进程,重复判断,直至所有的进程都运行结束。 2、概要设计: (1)所用数据结构及符号说明 typedef struct PCB{ char name[10]; //进程名 struct PCB *next; //循环链指针 int need_time; //要求运行时间 int worked_time; //已运行时间,初始为0 char condition; //进程状态,只有“就绪”和“结束”两种状态 int flag; //进程结束标志,用于输出 }PCB; PCB *front,*rear; //循环链队列的头指针和尾指针 int N; //N为进程数 (2)主程序的流程图:

时间片轮转调度算法

#include #include #include #include /*进程控制块数据结构*/ typedef struct node { char name[10];/*进程名*/ int prio; /*进程优先级*/ int round; /*循环轮转法进程每次轮转的时间片*/ int cputime; /*进程累计消耗的CUP时间*/ int needtime; /*进程到完成还需要的CUP时间*/ int count; /*循环轮转法一个时间片内进程运行时间*/ char state; /*进程的状态:'R':运行,'W':等待,'F':结束*/ struct node *next;/*指向下一个进程的链指针*/ }PCB; PCB *finish,*ready,*tail,*run;/*指向三个队列的队首的指针, finish为完成队列头指针, ready为就绪队列头指针, tail为就绪队列的队尾指针, run为当前运行进程头指针*/ int N;/*定义进程的数目*/ void firstin(void); //调度就绪队列的第一个进程投入运行; void print1(char a); //打印表头行信息 void print2(char chose,PCB *p); //打印每一行的状态信息 void print(char chose); //打印每执行一次算法后所有的进程的状态信息 void insert_prio(PCB *q); //在优先数算法中,将尚未完成的PCB按优先数顺序插入到就绪队列中; void prior_init(char chose); //进程优先级法初始化将进程按优先级插入到就绪队列里 void priority(char chose); //进程优先级算法总函数 void insert_rr(PCB *q); //在轮转法中,将执行了一个时间片单位(为2),但尚未完成的进程的PCB,插到就绪队列的队尾; void roundrun_init(char chose); //循环轮转法初始化将就绪队列保存为FIFO队列 void roundrun(char chose); //循环轮转法总算法 void main()//主函数 {

操作系统实验二(进程管理)

操作系统进程管理实验 实验题目: (1)进程的创建编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 (2)进程的控制修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。 (3)编制一段程序,使其实现进程的软中断通信。要求:使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按Del键);当捕捉到中断信号后,父进程调用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Child process 1 is killed by parent! Child process 2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止:Parent process is killed! 在上面的程序中增加语句signal(SIGINT, SIG_IGN)和signal(SIGQUIT, SIG_IGN),观察执行结果,并分析原因。 (4)进程的管道通信编制一段程序,实现进程的管道通信。使用系统调用pipe( )建立一条管道线;两个进程P1和P2分别向管道各写一句话:Child 1 is sending a message! Child 2 is sending a message! 而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。 实验源程序及报告: (1)、进程的创建 #include int main(int argc, char *argv[]) { int pid1,pid2; /*fork first child process*/ if ( ( pid1=fork() ) < 0 ) { printf( "ProcessCreate Failed!"); exit(-1); }

时间片轮转调度算法实验报告

xx大学操作系统实验报告 姓名:学号:班级: 实验日期: 实验名称:时间片轮转RR进程调度算法 实验二时间片轮转RR进程调度算法 1.实验目的:通过这次实验,理解时间片轮转RR进程调度算法的运行原理,进一步 掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 2.需求分析 (1) 输入的形式和输入值的范围; 输入:进程个数n 范围:0

(4) 测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。正确输入: 错误输入:

2、概要设计 所有抽象数据类型的定义: static int MaxNum=100 int ArrivalTime //到达时间 int ServiceTime //服务时间 int FinishedTime //结束时间 int WholeTime //周转时间 double WeightWholeTime //带权周转时间double AverageWT //平均周转时间double AverageWWT //平均带权周转时间主程序的流程: 变量初始化

采用时间片轮转算法调度程序

采用时间片轮转算法调度程序 学号: 姓名: 专业: 指导教师: 日期: 目录 一、需求分析 (3)

1、设计要求: (3) 2、解决方案: (3) 二、课程设计简介 (4) 1、课程设计题目 (4) 2、课程设计目的 (4) 3、课程设计内容 (4) 4、时间安排 (4) 三、概要设计 (4) 1、基本原理 (4) 2、算法思想设计 (5) 3、数据结构及模块说明: (5) 四、主要函数及其说明 (6) 五、调试分析 (7) 1、调试过程及步骤 (7) 2、结果分析(以三个进程数为例) (8) 六、总结及参考文献 (9) 1、总结: (9) 2、参考文献 (9) 附录:程序源代码 (9)

一、需求分析 1、设计要求: 在多道程序或多任务系统中,系统同时处于就绪状态的进程有若干个。为了使系统中各进程能有条不紊地进行,必须选择某种调度策略,以选择一进程占用处理机。要求用时间片轮转算法模拟单处理机调度,以巩固和加深处理机调度的概念。 2、解决方案: (1)、假设系统有5个进程,每个进程用一个进程控制块PCB来表示。PCB包括:进程名、链接指针、到达时间、估计运行时间和进程状态。其中,进程名即进程标识。链接指针指出下一个到达进程的进程控制块地址,按照进程到达的顺序排队,统设置一个队头和队尾指针分别指向第一个和最后一个进程,新生成的进程放队尾。估计运行时间:可由设计者任意指定一个时间值。到达时间:进程创建时的系统时间或由用户指定,调度时,总是选择到达时间最早的进程。进程状态:为简单起见,假定进程有三种状态,就绪、等待和完成,并假定进程一创建就处于就绪状态,用R表示,当一个进程运行结束时,就将其置成完成状态,用F表示。当一个进程未运行完成并且时间片不足时,就将其置成等待状态,用W表示。 (2)、为每个进程任意确定一个要求运行时间和到达时间。 (3)、按照进程到达的先后顺序排成一个循环队列。再设一队首指针指向第一个到达进程的首址。 (4)、执行处理机调度时,开始选择队首的第一个进程运行。另外再设一个当前运行进程的指针,指向当前正运行进程。 (5)、由于本实验是模拟实验,所以对被选中进程并不实际启动运行,而只是执行: a)、估计运行时间减时间片长度; b)、输出当前运行进程的名字。用这两个操作来模拟进程的一次运行(即一个时间片)。 (6)、进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个进程,即调整当前运行指针指向该进程的链接指针所指进程,以指示应运行进程。同时还应判断该进程的剩余运行时间是否为零。若不为零,则等待下一轮的运行;若该进程的剩余运行时间为零,则将该进程的状态置为完成状态F,并退出循环队列插入完成队列。 (7)、若就绪队列不空,则重复上述(5)和(6)步骤直到所有进程都运行完为止。 (8)、在所有设计的调度程序中,应包含显示或打印语句,以便显示或打印每次选中进程的名称及运行一次后队列的变化情况。

WINDOWS系列操作系统常见进程列表(精华)

WINDOWS系列操作系统常见进程列表(精华) 下面是系统的进程列表 最基本的系统进程(也就是说,这些进程是系统运行的基本条件,有了这些进程,系统就能正常运行) smss.exe session manager csrss.exe 子系统服务器进程 winlogon.exe 管理用户登录 services.exe 包含很多系统服务 lsass.exe 管理 ip 安全策略以及启动 isakmp/oakley (ike) 和 ip 安全驱动程序。(系统服务) 产生会话密钥以及授予用于交互式客户/服务器验证的服务凭据(ticket)。(系统服务) svchost.exe 包含很多系统服务 svchost.exe spoolsv.exe 将文件加载到内存中以便迟后打印。(系统服务) explorer.exe 资源管理器 internat.exe 托盘区的拼音图标 附加的系统进程(这些进程不是必要的,你可以根据需要通过服务管理器来增加或减少) mstask.exe 允许程序在指定时间运行。(系统服务) regsvc.exe 允许远程注册表操作。(系统服务) winmgmt.exe 提供系统管理信息(系统服务)。 inetinfo.exe 通过 internet 信息服务的管理单元提供 ftp 连接和管理。(系统服务) tlntsvr.exe 允许远程用户登录到系统并且使用命令行运行控制台程序。(系统服务) 允许通过 internet 信息服务的管理单元管理 web 和 ftp 服务。(系统服务) tftpd.exe 实现 tftp internet 标准。该标准不要求用户名和密码。远程安装服务 的一部分。(系统服务) termsrv.exe 提供多会话环境允许客户端设备访问虚拟的 windows 2000 professional 桌面会话以及运行在服务器上的基于 windows 的程序。(系统服务) dns.exe 应答对域名系统(dns)名称的查询和更新请求。(系统服务) 以下服务很少会用到,上面的服务都对安全有害,如果不是必要的应该关掉 tcpsvcs.exe 提供在 pxe 可远程启动客户计算机上远程安装 windows 2000 professional 的能力。(系统服务) 支持以下 tcp/ip 服务:character generator, daytime, discard, echo, 以及 quote of the day。(系统服务) ismserv.exe 允许在 windows advanced server 站点间发送和接收消息。(系统服 务) ups.exe 管理连接到计算机的不间断电源(ups)。(系统服务) wins.exe 为注册和解析 netbios 型名称的 tcp/ip 客户提供 netbios 名称服务。(系统服务)

计算机操作系统进程调度实验报告

计算机操作系统进程调度 实验报告 This manuscript was revised on November 28, 2020

操作系统实验题:设计一若干并发进程的进程调度程序 一、实验目的 无论是批处理系统、分时系统还是实时系统,用户进程数一般都大于处理机数,这将导致用户进程互相争夺处理机。这就要求进程调度程序按一定的策略,动态地把处理及分配给处于就绪队列中的某一进程,以使之执行。进程调度是处理机管理的核心内容。本实验要求采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法编写和调试一个简单的进程调度程序。通过本实验可以加深理解有关进程控制块、进程队列的概念。并体会了优先数和先来先服务调度算法的具体实施办法。 二、实验要求 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 三、实验内容 进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法(将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理)。 每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。 进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。 如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。

时间片轮转算法和优先级调度算法 C语言模拟实现

一、目得与要求?进程调度就是处理机管理得核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会与了解优先数算法与时间片轮转算法得具体实施办法。 二、实验内容 1、设计进程控制块PCB得结构,通常应包括如下信息: 进程名、进程优先数(或轮转时间片数)、进程已占用得CPU时间、进程到完成还需要得时间、进程得状态、当前队列指针等。 2、编写两种调度算法程序: 优先数调度算法程序?循环轮转调度算法程序 3、按要求输出结果。?三、提示与说明 分别用两种调度算法对伍个进程进行调度。每个进程可有三种状态;执行状态(RUN)、就绪状态(READY,包括等待状态)与完成状态(FINISH),并假定初始状态为就绪状态。?(一)进程控制块结构如下:?NAME——进程标示符PRIO/ROUND——进程优先数/进程每次轮转得时间片数(设为常数2)? CPUTIME——进程累计占用CPU得时间片数? NEEDTIME——进程到完成还需要得时间片数 STATE——进程状态?NEXT——链指针?注: 1、为了便于处理,程序中进程得得运行时间以时间片为单位进行计算; 2、各进程得优先数或轮转时间片数,以及进程运行时间片数得初值,均由用户在程序运行时给定。?(二)进程得就绪态与等待态均为链表结构,共有四个指针如下:? RUN——当前运行进程指针 READY——就需队列头指针 TAIL——就需队列尾指针 FINISH——完成队列头指针 1、在优先数算法中,进程优先数得初值设为: (三)程序说明? 50-NEEDTIME?每执行一次,优先数减1,CPU时间片数加1,进程还需要得时间片数减1。 在轮转法中,采用固定时间片单位(两个时间片为一个单位),进程每轮转一次,CP

操作系统课后习题答案 2 进程答案

习题2 进程、线程管理 一、选择题 题号 1 2 3 4 5 6 7 8 9 10 答案 B B D C D C A B D C 题号 11 12 答案 A A 二、综合题 2、答:在多道程序环境下,允许多个程序并发执行,这就导致了在操作系统中引入了“进 程”。进程是随着操作系统中分时思想的提出而引出的。进程是一个可并发执行的具有 独立功能的程序在某个数据集合的一次执行过程,它是操作系统进行资源分配和保护的 基本单位。 ①进程和程序的最大区别就是进程是程序的一次执行过程,它是一个动态概念。程序 是以文件形式存放在磁盘上的代码序列,它是一个静态概念。 ②进程能够并发执行。在同一段时间内,并发执行的若干进程共享一个处理机,各个 进程按照不同的推进速度运行。进程状态及其转换可以很好地描述并发执行进程的执行过 程。

③进程是计算机系统资源分配的基本单位,程序不能作为一个独立单位运行和申请系 统资源。 ④进程由含有代码和数据的用户地址空间、进程控制块和执行栈区等部分组成,而程 序只由静态代码组成。 ⑤进程和程序之间是多对多的关系。一个程序可被多个进程共用,一个进程在其活动 中又可调用若干个程序。 2、答: 原语是由若干条机器指令组成的、用于完成一定功能的一个过程。原语不可分割,其执 行期间不充许被中断,要么从头到尾执行一遍,要么全不执行。原语的特征保证其在执行过 程中不受外界因素的影响。 原语的一般实现方法是以系统调用的方式提供原语接口,原语在执行过程中采用屏蔽中断的 方式来保证其不能被中断。原语常驻内存,只在核心态下运行。通常情况下,原语只提供给 系统进程或系统服务器使用。 3、答: 传统操作系统通过进程的并发执行提高了系统资源利用率和作业吞

操作系统-时间片轮转算法

进程时间片轮转调度算法 一、实验题目: 进程时间片轮转调度算法 二、实验原理: 在多道程序系统中,一个作业被提交后必须经过处理机调度后,方能获得处理机执行。对调度的处理又都可采用不同的调度方式和调度算法。调度算法是指:根据系统的资源分配策略所规定的资源分配算法。 三、实验目的: 1、加深对进程概念的理解,明确进程和程序的区别。 2、深入系统如何组织进程、创建进程。 3、进一步认识如何实现处理器调度。 4、通过对进程调度算法的设计,深入理解进程调度的原理。 5、加深对时间片轮转调度算法的理解。 四、实验要求: 用C语言编写程序完成单处理机的进程调度,要求采用时间片轮转调度算法。实验具体要求包括:首先确定作业控制块的内容和组成方式;然后完成作业调度;最后编写主函数,并对所做工作进行测试。 五、运行结果

时间片大小为1时(q=1): 时间片大小为4时(q=4):

六、代码 #include"stdafx.h" #include #include #include #include #define OK 0 #define OVERFLOW 1 char pro[20] ; //进程 int processNum; //进程数int timeSlice = 0; //时间片 typedef char QlemTypeChar;

typedef int QlemTypeInt; typedef int Status; typedef struct QNode { QlemTypeChar data; QlemTypeInt timeArrive = 0; QlemTypeInt timeService = 0; QlemTypeInt timeCount = 0; QlemTypeInt runCount = 0; QlemTypeInt timeFinal = 0; //完成时间 QlemTypeInt timeRound = 0; //周转时间 float timeRightRound = 0; //带权周转时间 QlemTypeChar proState = 'W'; //进程的状态,W——就绪态,R——执行态,F——完成态struct QNode *next; //链表指针 }QNode, *QueuePtr; typedef struct{ QueuePtr front; //队头指针 QueuePtr rear; //队尾指针 }LinkQueue; Status InitQueue(LinkQueue &Q){ Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(OVERFLOW); Q.front->next = NULL;

计算机操作系统时间片循环轮转算法

淮海工学院计算机工程学院实验报告书 课程名:《计算机操作系统》 题目:时间片循环轮转调度 班级:软件081班 学号: 6 姓名:陈点点

? (4) 处理器调度总是选择标志单元指示的进程运行。由于本实验是模拟处理器调度的功能,所以,对被选中的进程并不实际的启动运行,而是执行: 已运行时间+1 来模拟进程的一次运行,表示进程已经运行过一个单位的时间。 请注意:在实际的系统中,当一个进程被选中运行时,必须置上该进程可以运行的时间片值,以及恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行满一个时间片。在这时省去了这些工作,仅用“已运行时间+1”来表示进程已经运行满一个时间片。 (5) 进程运行一次后,应把该进程的进程控制块中的指针值送到标志单元,以指示下一个轮到运行的进程。同时,应判断该进程的要求运行时间与已运行时间,若该进程的要求运行时间 已运行时间,则表示它尚未执行结束,应待到下一轮时再运行。若该进程的要求运行时间=已运行时间,则表示它已经执行结束,应指导它的状态修改成“结束”(E)且退出队列。此时,应把该进程的进程控制块中的指针值送到前面一个进程的指针位置。 (6) 若“就绪”状态的进程队列不为空,则重复上面的(4)和(5)的步骤,直到所有的进程都成为“结束”状态。 (7) 在所设计的程序中应有显示或打印语句,能显示或打印每次选中进程的进程名以及运行一次后进程队列的变化。 (8) 为五个进程任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中的进程名以及进程控制块的动态变化过程。 五、流程图与源程序

int ProcNum; // 总进程个数 // 初始化就绪队列 void InitPCB(Proc &H) { cout<<"请输入总进程个数: "; cin>>ProcNum; // 进程总个数 int Num=ProcNum; H=(Proc)malloc(sizeof(PNode)); // 建立头节点 H->next=NULL; Proc p=H; //定义一个指针 cout<<"总进程个数为 "<next=(Proc)malloc(sizeof(PNode)); cout<<"进程名总运行时间已运行时间 :"; cin>>p->name>>p->All_Time>>p->Runed_Time; p->state='R'; p->next=NULL; } p->next=H->next; } //输出运行中的进程信息 void DispInfo(Proc H) { Proc p=H->next; do { if (p->state != 'E') //如果该进程的状态不是End的话 { cout<<"进程名:"<name<<"\t总运行时间:"<All_Time <<"\t已运行时间:"<Runed_Time <<"\t状态:"<state<next; } else p=p->next; } while (p != H->next); // 整个进程链条始终完整,只是状态位有差异} // 时间片轮转法 void SJP_Simulator(Proc &H) { cout<next; while (p->All_Time > p->Runed_Time) { // 即未结束的进程 round++;

操作系统题—进程

1 并发进程失去了封闭性,是指(d) A 多个相对独立的进程以各自的速度向前推进 B 并发进程的执行结果与速度无关 C 并发进程执行时,在不同时刻发生的错误 D 并发进程共享变量,其执行结果与速度有关 2 当一个进程处于这样的状态(ab)时,称其为等待状态。 A 它正等着输入一批数据 B 它正等着协作进程的一个消息 C 它正等分给它一个时间片 D 它正等着进入内存 3.进程的属性包括(c)。 A 进程就是程序。或者说,进程是程序的另一种叫法。 B 一个被创建了的进程,在它消灭之前,在任何时刻总是处于3种基本状态之一。 C 多个不同的进程可以包含相同的程序。 D 一个处于等待队列的进程,即使进入其它状态,仍然被放在等待队列中。 E 两个进程可以同时处于运行状态。 4 判断正误 1)进程由进程控制块和数据集以及对该数据集进程操作的程序组成。(dui) 2)进程上下文是进程执行活动全过程的静态描述(dui) 3)并发是进程的不同表述,其原理相同。(cuo) 5.简答:比较进程和程序的区别 进程与程序是既有联系又相区别的两个概念。 1 联系。程序是构成进程的组成部分之一。一个进程的运行目标是执行它所对应的程序,如果没有程序,进程就失去了其实际存在的意义。从静态的角度看,进程是由程序、数据和PCB三部分组成的。 2 区别1)程序是指令的有序集合。它是一个静态概念,其本身没有任何运行的含义。而进程是程序在处理机上的一次执行过程,它是动态概念。程序可以作为一种软件长期保存,而进程是有一定生命期的,它能够动态的产生和消亡。2)进程与程序在结构上不同,进程由PCB、程序段、数据段三部分组成。 3)进程是一个能独立运行的单位,能与其它进程并发执行。4)进程是竞争计算机系统有限资源的基本单位,也是进行处理机调度的基本单位。同一程序运行于若干不同的数据集合上,它将属于若干个不同的进程。或者说,若干个不同的进程可以包含相同的程序。 6 简答:操作系统中为什么要引入进程的概念?OS在进程管理方面应做哪些工作? 程序的并发执行充分利用了系统资源,提高了系统的处理能力。但由于系统资源有限,并发执行必将导致资源共享和资源竞争。此时如果不按照特定的规则和方法进行资源竞争和共享,则执行结果不可避免的失去封闭性和可再现性,从而得到不正确或非预期的结果。所以我们需要一个能描述程序的执行过程且能用来共享资源的基本单位,这就是进程。应做工作:1)进程控制2)进程同步 3)进程通信4)进程调度 1在多进程的系统中,为了保证公共变量的完整性,各个进程应互斥进入临界区。所谓临界区是指(d)。 A一个缓冲区B一段数据区 C同步机制D一段程序 2一个进程是(c)。 A由协处理机执行的一个程序B.一个独立的程序+数据集 C.PCB结构与程序和数据的组合D.一个独立的程序 3信号量是一个初值为非负的整型变量,可在其上做加1和减1操作。(cuo只可以做P、V操作。) 4 已知一个求值公式(A2 +3B)/(B+5A),若A、B已经赋值,请画出该公式求值过程的前趋图。 6 试用用信号量机制描述两人下象棋的过程。 ?两人下象棋的过程可以概括为:一开始只能是“红先黑后”,以后两人要循环轮流走子,直至某 一方获胜或双方和棋为止。 ?这是个只有一个生产者和一个消费者的生产者——消费者问题,是个典型的“你等我,我也 等你”的问题。红方是总的前趋任务——生产者 进程,黑方是总的后继任务——消费者进程,但 由于下棋过程必须轮流走子,所以红黑双方的生产 者消费者身份会轮流改变。棋盘则是生产者与消费 者共享的缓冲。 ?要求:只描述对弈过程,对棋盘的访问不做描述。二人对弈过程是个纯粹的同步过程 ?①所用信号量设置如下: ?Ⅰ)同步信号量hei,初值为1,表示黑方已走子,开始时可使红方先行不受阻。 ?Ⅱ)同步信号量hong,初值为0,表示红方

相关主题
文本预览
相关文档 最新文档