版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二时间片轮转调度算法实验内容:模拟实现时间片轮转调度算法,具体如下:设置进程体:进程名,进程的到达时间,效劳时间,,进程状态〔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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老护理员健康宣教培训材料
- 阿莫西林介绍
- 品牌数字化传播
- 2025-2030中国嫩肉粉市场消费规模预测与投资可行性咨询研究报告
- 2025-2030中国轻医美行业营销趋势及未来经营管理风险研究报告
- 2025-2030葡萄牙旅游业品牌营销研究综合分析文化传播与行业发展前景规划报告
- 2025-2030舞台音响行业供需分析市场现状调研投资评估发展策略规划研究
- 2025-2030能源设备行业技术革新市场竞争态势投资规划分析需求评估分析研究报告
- 2025-2030网络教育平台竞争力深度研究及发展前景深度分析报告
- 企业内部规范手册
- 文化馆安全生产制度
- (2025年)保安员(初级)证考试题库及答案
- 2026年浙江省军士转业岗位履职能力考点练习题及答案
- 安全设备设施安装、使用、检验、维修、改造、验收、报废管理制度
- 2026届四川省成都市2023级高三一诊英语试题(附答案和音频)
- 2025至2030中国新癸酸缩水甘油酯行业项目调研及市场前景预测评估报告
- JJF 2333-2025恒温金属浴校准规范
- (2025年)司法考试法理学历年真题及答案
- 隧道照明工程设计方案
- 2025年战伤自救互救题库及答案
- GB/T 24786-2025一次性使用聚氯乙烯医用检查手套
评论
0/150
提交评论