使用动态优先权的进程调度算法的模拟实验1.实验目的通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。2.实验内容(1)用 C 语言实现对 N 个进程采纳动态优先权优先算法的进程调度;(2)每个用来标识进程的进程控制块 PCB 用结构来描述,包括以下字段:进程标识数;进程优先数 priority,并规定优先数越大的进程,其优先权越高;进程已占用的 CPU 时间 cputime;进程还需占用的 CPU 时间 alltime,当进程运行完毕时,alltime 变为 0;进程的堵塞时间 startblock,表示当进程再运行 startblock 个时间片后,进程将进入堵塞状态;进程被堵塞的时间 blicktime,表示已堵塞的进程再等待 blocktime 个时间片后,将转换为就绪态;进程状态 state;队列指针 next,用来将 PCB 排成队列。(3)优先数改变的原则:进程在就绪队列中呆一个时间片,优先数增加 1.进程每运行一个时间片,优先数减 3。(4)假设在调度前,系统中有 5 个进程,它们得 初始状态如下:ID 01234PRIORITY9 38 30290CPUTIME 00000ALLTIME33634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEREADYREADYREADYREADYREADY(5)为了清楚地观察诸进程的调度过程,程序应将每个时间片内的进程的情况显示出来,参照的具体格式如下: RUNNING PROG:i READY_QUEUE:->id1->id2 BLOCK_QUEUE:->id3->id4======================================================================ID 01234PRIORITY P0 P1 P2P3 P4CPUTIME C0C1C3C4C5ALLTIMEA0A1A2A3A4STARTBLOCKT0T1T2T3T4BLOCKTIMEB0B1B2B3B4STATES0S1S2S3S43.过程(流程图)4.代码#include <>#include <>开始创建就绪队列Alltime>0就绪→执行显示状态改变优先数+1==0>0==0执行→堵塞执行→就绪BLK==NULL ==0堵塞→就绪结束是否否是是否是否是否否是#include <>typedef struct node{int id; 行结果输入 5 个进程,分别是 0—4 进程,运行结果可以看到第一次运行进程 1,优先数为 38。第二次运行的进程是进程 1,优先数为 35,cpu 时间占用为 1,进程所需时间为 2,同时下一个进程(进程 1)的优先数+1。第三次运行进程 2,优先数 32,cpu 占用时间将+1,所需时间将-1。同时下一个进程(进程 1)优先数+1,。第四次运行进程 1,优先数 33,cpu 占用时间 2+1,所需时间将-1。同时下一个进程(进程 3)优先数+1,第四次运行进程 1 完毕,所需时...