五、结果分析:
在优先数调度中,程序首先输出各个进程的初始值,按回车之后,由于进程p1的优先数最大,排在就绪队列的队首,首先执行,执行一次后优先数减一,要求运行时间减一,cpu占用时间加一,再和其他的进程比较优先数,还是最大,继续执行,再执行一次后优先数小于进程p3,所以下一个执行的是p3,按这样的顺序,在就绪队列队首的进程状态为\,不在队首的就绪进程状态为\,结束的进程状态为\,一直执行,直到所有进程状态都为\,调度完成。
在时间片轮转法调度中,先设置了时间片的大小为1,然后各个进程按循环队列依次执行,每执行一次,要求运行时间减一,若等于0了,则状态改为\,
退出队列,直到所有进程的状态为\,调度完成。 六、实验小结:
本次实验虽然为模拟在单处理机情况下处理机的调度,但深深帮我理解了处理机调度的工作,也对进程的几种状态就绪、结束等有了明确的认识。优先数调度的思考度更强点,在编写C程序的时候,对于其中的进程插入和优先数调度两个函数思考了蛮久,每执行一次进程后,优先数的改变将又要重新排就绪队列,这也是实验的难点所在,自己原来学C的时候对于队列不是很熟,也借本次实验又巩固了原来的知识。也许是有了优先数调度的基础,时间片轮转法调度的编写来得相对轻松,它的insert()函数比较简单,不用根据优先数来排队,而是直接插在队尾即可。另外,通过本次实验,我对函数的分模块书写的优点感受颇深,方便了移植和修改,减轻了下次编写的负担,这也是我们以后面向程序设计的要求所在。
相关推荐: