版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二时间片轮转调度算法实验内容:模拟实现时间片轮转调度算法,具体如下:设置进程体:进程名,进程的到达时间,效劳时间,,进程状态〔W——等待,R——运行,F——完成〕,进程间的链接指针进程初始化:由用户输入进程名、效劳时间进行初始化,同时,初始化进程的状态为W。显示函数:在进程调度前、调度中和调度后进行显示。排序函数:对就绪状态的进程按照进入就绪队列的时间排序,新到达的进行应优先于刚刚执行过的进程进入就绪队列的队尾。注意考虑到达时间调度函数:每次从就绪队列队首调度优一个进程执行,状态变化。并在执行一个时间片后化,效劳时间变化,状态变化。当效劳时间为0时,状态变为F。删除函数:撤销状态为F的进行。实验要求:1、测试数据可以随即输入或从文件中读入。2、必须要考虑到进程的到达时间3、最终能够计算每一个进程的周转时间的带权周转时间。实验代码:#include<iostream>#include<string>#include<time.h>usingnamespacestd;intn;classPCB{public:intpri;intruntime;intpieceOftime;stringprocname;stringstate;intneedOftime;intCounter;PCB*next;};PCB*run=NULL;PCB*ready=NULL;PCB*finish=NULL;PCB*tial=ready;voidDtime(intt);voidPrinft(inta){if(a==1){ cout<<"\n进程名\t到达时间\t效劳时间\t时间片\t进程状态"<<endl;}}voidPrinft(intb,PCB*p){if(b==1){cout<<p->procname<<"\t"<<p->needOftime<<"\t\t"<<p->runtime<<"\t\t"<<p->pieceOftime<<"\t"<<p->state<<endl;}}voiddisplay(intc){PCB*p;if(run!=NULL)Prinft(c,run);p=ready;while(p!=NULL){Prinft(c,p);p=p->next;}p=finish;while(p!=NULL){Prinft(c,p);p=p->next;}}voidinsert(PCB*p){PCB*S1,*S2;if(ready==NULL){p->next=NULL;ready=p;}else{S1=ready;S2=S1;while(S1!=NULL){ if(S2->pri>=p->pri) {S2->next=p;p->next=S1; } else {p->next=ready;ready=p; }}}}boolCTProcessOfPri(){PCB*Node;cout<<"输入创立进程的数目:"<<endl;cin>>n;for(intj=0;j<n;j++){Node=newPCB;if(Node==NULL)returnfalse;else{cout<<"输入进程的名称,进程需CPU时间:"<<endl;cin>>Node->procname>>Node->needOftime;Node->runtime=0;Node->state="就绪";Node->pri=Node->needOftime;cout<<"进程"<<Node->procname<<"创立完毕!"<<endl;}insert(Node);}returntrue;}voidpriority(inti){run=ready;ready=ready->next;run->state="运行";Prinft(i);while(run!=NULL){run->runtime=run->runtime+1;run->needOftime=run->needOftime-1;run->pri=run->pri-1;if(run->needOftime==0){run->state="完成";run->next=finish;finish=run;run=NULL;if(ready!=NULL){run=ready;run->state="运行";ready=ready->next;}}elseif((ready!=NULL)&&(run->pri<ready->pri)){run->state="就绪";insert(run);run=ready;run->state="运行";ready=ready->next;}display(i);}}voidqueue(PCB*p){if(ready==NULL){p->next=NULL;ready=p;tial=p;}else{tial->next=p;tial=p;p->next=NULL;}}boolCTProcessOfRuntime(){PCB*Node;intm;cout<<"输入创立进程的数目:"<<endl;cin>>n;cout<<"输入时间片:"<<endl;cin>>m;for(intj=0;j<n;j++){Node=newPCB;if(Node==NULL)returnfalse;else{cout<<"输入进程的名称,进程需CPU时间:"<<endl;cin>>Node->procname>>Node->needOftime;Node->runtime=0;Node->state="就绪";Node->Counter=0;Node->pieceOftime=m;cout<<"进程"<<Node->procname<<"创立完毕!"<<endl;}queue(Node);}returntrue;}voidRuntime(intc){run=ready;ready=ready->next;run->state="运行";Prinft(c);while(run!=NULL){run->runtime=run->runtime+1;run->needOftime=run->needOftime-1;run->Counter=run->Counter+1;if(run->needOftime==0){run->state="完成";run->next=finish;finish=run;run=NULL;if(ready!=NULL){run=ready;ready=ready->next;}}elseif(run->Counter==run->pieceOftime){run->Counter=0;run->state="就绪";queue(run);run=NULL;if(ready!=NULL){run=ready;run->state="运行";ready=ready->next;}}display(c);}}intmain(){inti;cout<<"----------时间片轮转调度算法---------"<<endl;cout<<"---------1开始2退出---------\n\n选择:"<<endl;cin>>i;switch(i){case1:CTProcessOfRuntime();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第一章 有理数 测试卷(含答案)2026-2027学年华东师大版七年级上册数学
- 水产水质调控工岗位技能考试试卷及答案
- 四年级语文整本书阅读测试题及答案
- 矿用维修工程车司机岗前绩效评估考核试卷含答案
- 家庭教育指导师班组管理强化考核试卷含答案
- 地层测试工风险评估水平考核试卷含答案
- 2026年十八项核心医疗制度试题(附答案)
- 再生物资回收挑选工岗前沟通技巧考核试卷含答案
- 摩托车发动机装调工安全综合评优考核试卷含答案
- 电子元器件表面贴装工操作规范模拟考核试卷含答案
- 2026中国安宁疗护服务需求增长与供给缺口测算分析报告
- 2026秋小学岭南版美术六年级上册(新教材)教学计划附教学进度表
- 小学一年级语文上册《天地人》单元整体教学教案
- 2026年电梯高级工特种作业考试题库(附含答案)
- 第2课 《中国人首次进入自己的空间站》课件(内嵌视频)2026-2027学年统编版语文八年级上册
- 2026年魁北克驾驶员考试试题及答案
- 初级焊工理论考试题及答案
- 2026年阿里云ACP云计算工程师认证考试真题题库
- S224颍上至赛涧段道路工程K6~K9初步设计
- 物业公司与理发店合同
- 2026年4月自考02323操作系统概论试题及答案含评分参考
评论
0/150
提交评论