动态优先权进程调度算法》实验报告题目:动态优先权进程调度算法的模拟实现专业:班级:学号:姓名:日期:实验目的通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解
二、实验内容与基本要求编制模拟动态优先权算法的程序,并给出的例子验证所编写的程序的正确性
(1)用C语言实现对N个进程采用动态优先权算法的调度
(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:◊进程标识数ID
◊进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高
◊进程已占用CPU时间CPUTIME
◊进程还需占用的CPU时间ALLTIME
当进程运行完毕时,ALLTIME变为0
◊进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态
◊进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪状态
◊进程状态STATE
◊队列指针NEXT,用来将PCB排成队列
(3)优先数改变的原则:◊进程在就绪队列中呆一个时间片,优先数增加1
◊进程每运行一个时间片,优先数减3
(4)假设在调度前,系统中有5个进程,它们得初始状态如下:ID01234PRIORITY93830290CPUTIME00000ALLTIME33634STARTBLOCK2-1-1-1-1BLOCKTIME30000为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程
格式如下:RUNNINGPROG:iREADY_QUEUE:->id1->id2BLOCK_QUEUE:->id3->id4ID01234PRIORITYP0P1P2P3P4CPUTIMEC0C1C3C4C5ALLTIMEA0A1A2A3A4STARTBLOCKT0T1