版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、带优先级的时间片轮换的进程调度算法的实现一、实验目的(1)掌握进程状态转换过程(2 )掌握时间片轮转的进程调度算法;(3 )掌握带优先级的进程调度算法二、实验内容(1) 自肚义PCB的数据结构;(2) 使用带优先级的时间片轮转法调度进程,每运行一 个时间片,优先级减半。(3) 命令集A) create随机创建进程,进程的优先级与所需要的时间片随机决定;B) round执行1次时间片轮转操作,其方法为运行高优先级队列的 第1个,再降低其优先级,插入到相应的队列中。C) ps查看当前进程状态D) sleep命令将进翟宦趙E) awaRe命令唤醒1个被挂起的进程F) kill命令杀死进程G) qui
2、t命令退出选用面向对象的编程方法。三、实验原理或算法1=1本实验结合了进程状态转换、优先级调度、时间片轮转调度三方根据进程状态转换图,设置SLEEP命令,将1个进程挂起,AWAKE命令唤醒1个被挂起的进程(从阻塞状态到就绪状态)。1)优先级优先级体现了进程的重要程度或紧迫程度,在大多数现代操作系统中,都采 用了优先级调度策略。优先级从小到大(如0127 )优先级最高,127最 低。在本实验中按数值大小决走优先级,数值大的优先级高。2)基于时间片调度将所有的就绪进程按照先来先服务的原则,排成一个队列,每次调度时,将 cpu分配给队首进程,并令其执行一个时间片。当时间片用完时,由一个 计时器发出时
3、钟中断请求,调度程序把此进程终止,把该进程放到队尾。在该实验中,时间片以100ms为单位(实际的要小得多)。在调度过程中, 需要通过时间函数检测进程的执行时间,当该进程执行时间n时间片大小时, 进行调度。3)高优先级调度齬鸳鶴进勰龄歸亥进程4)基于时间片的高优先级调度四.数据结构及符号说明 struct pcb /PCB int ident;/标识符int state;/映态0-就绪z 1 -运行z 2 -堵塞int pior;/优先级MAXPIOR为最高优先级*/int life;/生命期/struct pcb *next;/*指针*7void init()/ int create()/ v
4、oid ps()/ void awake(int x)/ void kill(int x)/ void process。/对输入命令的处理 void routine()执行一次调度运行,将最高优先级队列的进程运行1个时 间片”并降低其优先级六.实验源程原#include #include #include vconio.h#define getpch(type) (type*)malloc(sizeof(type) struct pcbr走义进程控制块PCB 7char name10;char state;int super;int needtime;int run time;struct p
5、cb* link;*ready=NULL/p;typedef struct pcb PCB;int ident;/标识符int state;/状态0就绪,1 -运行,2 -堵塞int pio优先级,MAXPIOR为最高优先级7int life;/生命期7struct pcb *next/*指针*/ini creaooinill-opioFO 八 siruci pcbp*qs 八whi_e (id_iser0co2oAHLEN-L)+ifFHLEN) reEm 2id一is莹-srand(unsigned=ime(NULL);pioEand()MAXP_om 23耀嬉二 p2.ntf(=poF%
6、dnpiomSH(siruci pcbs*ma=oc(PCB)*cea0a node io keep -he process messege scidenNrs,vsiaieH5?s.vpiorHpior 八- 20svnexrNULL 八=feH-ife+(s,v-ife)八void sleep(int x)int i=O,test=O;struct pcb *p=NULL,*q=NULL;while(test=O&i!=MAXPIOR) p=arrayij;if (i!=MAXPIOR & p=NULL)i+;continue; while(p!=NULL) if (p-ident=x)t
7、est=1 ;killtest=1 ;break;elseq=p;p=p-next;if (test=O) i+;p=arraypior;/確立同优先级队列(链表) if (p=NULL)arraypior=s;elsewhile(p!=NULL)q=p;p=p-next; q-next=s;printf(vvsuccess create process id=%d, current process state disp below:nM,s-ident); Ps();/printfCend displaynvv);return 1;void ps()int i=0;struct pcb *p
8、;for (i=0;iident,p-state,p-pior,p-life); p=p-next;if (i=MAXPIOR) printf(Mlnvaild process number/9); else if (p-state=2) printfChe process %d has blocked9cannot sleep again!vv,p-ident); elsep-state=2;ps();void awake(int x)int i=O9test=O;struct pcb *p=NULL,*q=NULL; while(test=O&i!=MAXPIOR) p=arrayi;if
9、 (i!=MAXPIOR & p=NULL) i+;continue; while(p!=NULL)if (p-ident=x)test=1 ;killtest=1 ;break;elseq=p;p=p-next;if (test=O) i+;广找到X所在指针” /if (i=MAXPIOR)printf(Hlnvaild process number/1);elseif (p-state=0)printf(Hthe process %d is ready state,cannot awake again!fp-ident); elsep-state=0; ps();void kill(int
10、 x)int i=0,test=0;struct pcb *p=NULL,*q=NULL; while(test=O&i!=MAXPIOR) p=arrayi;i 卄;continue;while(p!=NULL) if (p-ident=x) test=1 ;killtest=1 ;break;elseq=p;p=p-next;if (i!=MAXPIOR & p=NULL)if (test=O) i+;广找到X所錄针/if (i=MAXPIOR) printfflnvaild process number/*); elseif (p=arrayi)arrayi=arrayi-next; i
11、dlistx=0;f(P); elseq-next=p-next;idlist 凶=0;life=life-(p-life);free(p);void process。/对输入命令的处理int i=09ii=0;for (i=0;iL EcaJlgs Apeai o- 26ueqQPU9)=UHd ?wt+lmoooppihhpi 1UEOJ(+000009上二上 1.E)OJ ou8pAILc6ucuru.52P%HP防 saoalAfiuud ruvlurnuenb 0300X0 三 m ssa)oodo.d 1SO26Zolnoco0l!L=l.Ed 3愜鼠3驰殉躱將亂宜4Y3此富恤Yf
12、Ecl1nN=E)2zM一丄 mxeuo-IELTEd) (OSSAQoaJlnNHi) O-Z5 e】AexlFHd(-Erual xu一 olealooseo一 d.ssIDQald ON)=u-d) (OVMVl-H- (HnNS【二 AaleoaosOHA) 2ZMop Hdbbd:d qod Imus 三 0EO-dvHO_dxv2-.E 矗泉$单逊玄de苗GLX匆側的ssYa密泉富恤嗨便口匆他理兴t乐二(a).E_nal POAr-life=r-life-QUANTUM; /时间减少QUANTUM life=life-QUANTUM;elselife=life-r-life; r-
13、life=O;1if (r-life=O)/jg程运行完成,KILL它printf(Mthe process %d is successful run,and release it!nu,r-ident); kill(r-ident);elseif (pr=r) 将r结点从原队列中删除arrayi+1=r-next;elsepr-next=r-next;t=r-pior; 将r逬程加入到相应低优先级队列中的最后 pp=arrayt);qq=NULL;while (pp!=NULL)qq=pp;pp=pp-next;if(qq=NULL) 插入到队尾 arrayt=r;elseqq-next=r;r-next=NULL;printf(Mafter.nM);Ps();printf(,fn 1 quantum successful run!nM);yy*A*i*void main()init();printf(f,Welcome to the Proce
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐厅员工提成合同范本
- 资产整体租赁合同范本
- 日料桌椅转让合同范本
- 水平空地出租合同范本
- 衢州餐饮加盟合同范本
- 电动车辆租售合同范本
- 美国按摩用工合同范本
- 2025年区域性医药产业园区建设项目可行性研究报告
- 2025年旅游共享平台建设项目可行性研究报告
- 2025年电力智能管理系统建设项目可行性研究报告
- 承包砂石场合同范本
- 2026年苏州工业职业技术学院单招职业技能测试模拟测试卷及答案解析(夺冠)
- 宜宾市叙州区事业单位2025年下半年公开考核招聘工作人员(24人)笔试考试备考试题及答案解析
- 2025浙江宁波北仑区新闻出版局招聘1人笔试模拟试卷带答案解析
- 基于组合模型的我国社会消费品零售总额精准预测研究
- 西游记第39回课件讲解
- 2025-2026学年统编版新教材道德与法治三年级上学期期末练习卷及答案
- 曹禺名作《日出》教学设计与文学赏析
- 自血治疗的课件
- 2025天津滨海传媒发展有限公司招聘13人笔试考试备考题库及答案解析
- 防黑恶势力安全教育课件
评论
0/150
提交评论