时间片轮转调度算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ቤተ መጻሕፍቲ ባይዱ
(7)若就绪队列不空,则重复上述的(5)和(6) 步骤直到所有进程都运行完为止。 (8)在所设计的调度程序中,应包含显示或打印语 句。以便显示或打印每次选中进程的名称及运行 一次后队列的变化情况。
数据结构:
typedef struct pcb /*进程控制块定义*/
{ char pname[N]; /*进程名*/
操作系统实验二
时间片轮转调度算法
的实现
(1)假设系统有5个进程,每个进 程用一个进程控制块PCB来代表, PCB的格式如右图所示。其中:
进程名:即进程标识。
进程名 链接指针 到达时间 估计运行时间 进程状态
链接指针:指出下一个到达进程的进程控制块首地址。按 照进程到达的顺序排队。系统设置一个队头和队尾指针分 别指向第一个和最后一个进程。新生成的进程放队尾。 估计运行时间:可由设计者任意指定一个时间值。 到达时间:进程创建时的系统时间或由用户指定。调度时, 总是选择到达时间最早的进程。 进程状态:为简单起见,这里假定进程有两种状态:就绪 和完成。并假定进程一创建就处于就绪状态,用R表示。 当一个进程运行结束时,就将其置成完成态,用C表示。
(2)为每个进程任意确定一个要求运行时间和到达 时间。
(3)按照进程到达的先后顺序排成一个循环队列。 再设一个队首指针指向第一个到达进程的首址。 (4)执行处理机调度时,开始选择队首的第一个进 程运行。另外再设一个当前运行进程指针,指向当 前正运行的进程。 (5)由于本实验是模拟实验,所以对被选中进程并 不实际启动运行,而只是执行:
(1)选中运行进程的名、运行后各进程控制块状态; (2)计算平均周转时间和带权平均周转时间。

总结收获体会及对该题解的改进意见和见解
输入
时间片
作业号 到达时间
1
A 0 B 1 C 2 D 3 4 E
服务时间
4
3
5
2
4
完成时间=开始时间+服务时间 周转时间=完成时间-到达时间 带权周转时间=周转时间/服务时间
①估计运行时间减1个时间片;
②输出当前运行进程的名字。
用这两个操作来模拟进程的一次运行。
(6)进程运行一次后,以后的调度则将当前指针依 次下移一个位置,指向下一个进程,即调整运行 指针指向该进程的链接指针所指进程,即指示应 运行进程。同时还应判断该进程的剩余运行时间 是否为零。若不为零,则等待下一轮的运行;若 该进程的剩余运行时间为零,则将该进程的运行 状态置为完成态C,并退出循环队列。
int runtime;
char state; }PCB;
/*服务时间*/
/*进程状态*/
int arrivetime; /*到达时间*/ struct pcb *next;/*联接指针*/
实验要求:



给出程序中使用的数据结构及符号说明 给出程序流程图和源程序,源程序中要附有详 细的注释 输入:时间片,五个进程的进程名、到达时间、 服务时间 输出:打印程序运行时的初值和运行结果,要 求如下:
输出
运行时刻: 18 运行进程名: 运行后状态: 1 A R 2 B R 3 A R 4 C R 5 B R 6 7 8
9 10 11 12 13 14 15 16 17
D R
D A E C B R R R R C
A E C E C E C
C R R R R C C
相关文档
最新文档