题目有点长``麻烦大虾们花点时间看看拉..先谢谢拉..
要求一个算法实现三种调度
1.设计一个按先来先服务的调度算法,实现处理机调度。
提示:
(1)假设系统中有五个进程,每个进程由进程控制快(PCB)来标识,进程控制块的内容如下:
进程名 |
链接指针 |
要求运行时间 |
到达时间 |
进程状态 |
其中:
进程名,即进程的标识。
链接指针,按进程到达系统的时间将处于就绪状态的进程连接成一个就绪队列,指针指出下一个到达进程的进程控制块首地址,最后一个进程的链接指针为NULL。
要求运行时间,可由设计者任意指定一个时间值。
到达时间,创建时的系统时间或由用户指定。调度时,总是选择到达时间最早的进程。
状态,有两种状态:就绪和完成,初始状态为就绪,用R表示。进程运行完成后,它的状态为完成,用C表示。
(2)设置一个队首指针head ,用来指出最先进入系统中的进程,各就绪进程通过链接指针链成一个队列。
(3)处理机调度总是选队首指向的进程投入运行。
(4)在所设计的程序中应有显示或打印语句,能显示或打印正在运行的进程名。
2.设计一个按优先级调度算法实现处理机调度的程序。
提示:
(1)进程控制块的内容如下:
进程名 |
链接指针 |
要求运行时间 |
优先数 |
进程状态 |
其中优先数是赋给进程的优先级,调度时总是选取优先数最大的进程优先运行。其他同第1题。
(2)每个进程的优先数由用户自己设定或程序任意指定。
(3)为了调度方便,把五个进程按给定优先级从大到小排成一个队列。用一个变量作为队首指针,指向队列中的第一个进程。
(4)处理机调度总是选队首进程运行。为了采用动态优先级方法,进程每运行一次优先数减1。由于本实验是模拟处理机调度,所以被选中的进程并不实际的启动运行,而是执行:
优先数 - 1
要求运行时间 – 1
来模拟进程的一次运行。
(5)进程运行一次后,若要求运行时间≠0,则再将它加入队列(按优先数大小插入。优先级相同者,新插入者放到队尾),且改变队首指针;若要求运行时间=0,则把它的状态改为完成(C)状态,且退出队列。
(6)若就绪状态的进程队列不空,则重复上述的(4)和(5),直到所有的进程成为完成状态。
(7)在所设计的程序中应有显示或打印语句,以显示或打印每次被选中的进程的进程名以及运行一次后进程队列的变化。
(8)为五个进程任意确定一组“优先数”和“要求运行时间”,启动处理机调度程序,显示或打印每次选中的进程名以及控制块的动态变化过程。
3.设计一个按时间片论转实现处理机调度的程序。
提示:
(1)假设系统有五个进程,每个进程用一个进程控制块PCB。PCB的格式如下:
进程名 |
链接指针 |
要求运行时间 |
到达系统时间 |
状态 |
其中:
进程名,即进程的标识。
链接指针,指向下一个进程的进程控制块首址,最后一个进程的链接指针指示第一个进程的进程控制块首地址。。
要求运行时间,是进程需要运行的时间数。
到达时间,进程到达系统的时间。
状态,有两种状态:就绪和完成,初始状态为就绪,用R表示。进程运行完成后,它的状态为完成,用C表示。
(2)为每个进程任意确定它的要求运行时间和到达时间。
(3)把进程按到达的先后顺序排成一个循环队列,用链接指针指示队列的连接情况。再设一个队首指针,指向第一个到达的进程的首址。
(4)执行处理机调度时,总是选取队首指针指示的进程运行。由于本实验是模拟处理机调度功能的,所以,被选中的进程并不实际启动运行,而是执行:
要求运行时间-1
来模拟程序的一次运行。由于这是一个模拟实验,省去进程的现场保护和恢复现场工作。
(5)进程运行一次后,应把进程的进程控制块中的链接指针值送到队首指针,以指示下一个轮到运行的进程。同时,应判断该进程的要求运行时间是否为0,若不为0,应等待下一轮时再运行。若该进程的要求运行时间=0,则将其状态置为完成“C”,推出该队列。
(6)若就绪队列不空,则重复上述(4)和(5)步骤,直到所有进程完成为止。
(7)在所设计的程序中应有显示或打印语句,能显示或打印每次选中的进程的名字以及运行一次后队列的变化。
(8)为五个进程任意确定一组“优先数”和“要求运行时间”,运行处理机调度程序,显示或打印逐次被选中进程的进程名以及控制块的动态变化过程。