您好,欢迎访问三七文档
操作系统实验二时间片轮转调度算法的实现(1)假设系统有5个进程,每个进程用一个进程控制块PCB来代表,PCB的格式如右图所示。其中:进程名:即进程标识。链接指针:指出下一个到达进程的进程控制块首地址。按照进程到达的顺序排队。系统设置一个队头和队尾指针分别指向第一个和最后一个进程。新生成的进程放队尾。估计运行时间:可由设计者任意指定一个时间值。到达时间:进程创建时的系统时间或由用户指定。调度时,总是选择到达时间最早的进程。进程状态:为简单起见,这里假定进程有两种状态:就绪和完成。并假定进程一创建就处于就绪状态,用R表示。当一个进程运行结束时,就将其置成完成态,用C表示。进程名链接指针到达时间估计运行时间进程状态(2)为每个进程任意确定一个要求运行时间和到达时间。(3)按照进程到达的先后顺序排成一个循环队列。再设一个队首指针指向第一个到达进程的首址。(4)执行处理机调度时,开始选择队首的第一个进程运行。另外再设一个当前运行进程指针,指向当前正运行的进程。(5)由于本实验是模拟实验,所以对被选中进程并不实际启动运行,而只是执行:①估计运行时间减1个时间片;②输出当前运行进程的名字。用这两个操作来模拟进程的一次运行。(6)进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个进程,即调整运行指针指向该进程的链接指针所指进程,即指示应运行进程。同时还应判断该进程的剩余运行时间是否为零。若不为零,则等待下一轮的运行;若该进程的剩余运行时间为零,则将该进程的运行状态置为完成态C,并退出循环队列。(7)若就绪队列不空,则重复上述的(5)和(6)步骤直到所有进程都运行完为止。(8)在所设计的调度程序中,应包含显示或打印语句。以便显示或打印每次选中进程的名称及运行一次后队列的变化情况。数据结构:typedefstructpcb/*进程控制块定义*/{charpname[N];/*进程名*/intruntime;/*服务时间*/intarrivetime;/*到达时间*/charstate;/*进程状态*/structpcb*next;/*联接指针*/}PCB;实验要求:给出程序中使用的数据结构及符号说明给出程序流程图和源程序,源程序中要附有详细的注释输入:时间片,五个进程的进程名、到达时间、服务时间输出:打印程序运行时的初值和运行结果,要求如下:(1)选中运行进程的名、运行后各进程控制块状态;(2)计算平均周转时间和带权平均周转时间。总结收获体会及对该题解的改进意见和见解输入时间片1作业号ABCDE到达时间01234服务时间43524完成时间=开始时间+服务时间周转时间=完成时间-到达时间带权周转时间=周转时间/服务时间输出运行时刻:123456789101112131415161718运行进程名:ABACBDAECBDAECECEC运行后状态:RRRRRRRRRCRCRRRRCC
本文标题:时间片轮转调度算法
链接地址:https://www.777doc.com/doc-1663635 .html