版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、进程调度算法模拟专业:XXXXX学号:XXXXX姓名:XXX实验日期:20XX年XX月XX日一、实验目的通过对进程调度算法的模拟加深对进程概念和进程调度算法的理解。二、实验要求编写程序实现对5个进程的调度模拟,要求至少采用两种不同的调度算法分别进行模拟调度。三、实验方法内容1 .算法设计思路将每个进程抽象成一个控制块PCB,PCB用一个结构体描述。构建一个进程调度类。将进程调度的各种算法分装在一个类中。类中存在三个容器,一个保存正在或未进入就绪队列的进程,一个保存就绪的进程,另一个保存已完成的进程。还有一个PCB实例。主要保存正在运行的进程。类中其他方法都是围绕这三个容器可以这个运行中的PCB
2、展开。主要用到的技术是STL中的vector以维护和保存进程容器、就绪容器、完成容器。当程序启动时,用户可以选择不同的调度算法。然后用户从控制台输入各个进程的信息,这些信息保存到进程容器中。进程信息输入完毕后,就开始了进程调度,每调度一次判断就绪队列是否为空,若为空则系统时间加一个时间片。判断进程容器中是否有新的进程可以加入就绪队列。2 .算法流程图主程序的框架:进程调度过程:.为空让系统等待一个时间片TimePast()根据设定的调度算法从就绪队列中调入一个进程并执行(此时进程从就绪队列中删除,赋值到表示运行中的成员变量中)if(m_WaitQueueempty()voidFCFi();/先
3、来先服务voidSJF();/最短进程优先调度voidRR);简单时间片轮转voidPD);最高优先数优先3 .算法中用到的数据结构structfcfs/先来先服务算法从这里开始charname10;floatarrivetime;floatservicetime;floatstarttime;floatfinishtime;floatzztime;floatdqzztime;/定义一个结构体,里面包含的有一个进程相关的信息4 .主要的常量变量vectormProcessQueue/进程输入队列vectorm_WaitQueue/进程就绪队列vectorPCBm_FinishQueue;/完成
4、队列vector:iteratormiter;/迭代器PCBm_runProcess;/运行中的进程intm_ProcessCount;/进程数floatm_RunTime运行时间intmtagIsRun;/是否在运行标志。表示正在运行,表示没有floatm_TimeSlice;/时间片大小intmTimeSliceCount;/指时间片轮转中一次分到的时间片个数charm_SchedulerAlgorithm;/调度算法5 .主要模块voidPCBInput();输入进程信息voidPCBSort();/对进程控制块按照优先级排序(采用冒泡排序)voidProcessSelect();/若当
5、前就绪队列不为空则根据选择的调度算法开始调度。否则,系统时间加.以等待新的进程到来voidPCBDisplay();/打印当前状况下。就绪队列、完成队列、运行中的进程信息voidProcessRun();/进程运行一次。运行时间加个时间片。并判断进程是否达到完成条件。若是则ProcessStatus=f.否贝1J为w;voidProcessQueueProcess();/查看当前时间下,有无进程加入。若有则把该进程调入就绪队列voidProcessDispatch();/进程分派,进程执行完成后决定进程该进入哪个队列(就绪、完成)voidTimePast()m_RunTime+=m_TimeS
6、lice;ProcessQueueProcess();/当前系统时间加个时间片,并检查是否有新的进程加入voidSchedulerStatistics();/调度统计,计算周转时间等voidFCFS);/先来先服务voidSJF();/最短进程优先调度voidRR);简单时间片轮转voidPC();/最高优先数优先四、实验代码#include#include#includeusingnamespacestd;structfcfs/先来先服务算法从这里开始charname10;floatarrivetime;floatservicetime;floatstarttime;floatfinisht
7、ime;floatzztime;floatdqzztime;);/定义一个结构体,里面包含的有一个进程相关的信息fcfsa100;voidinput(fcfs*p,intN)(inti;coutendl;printf(请您输入进程的名字到达时间服务时间:(例如:a0100)nn);for(i=0;i=N-1;i+)(printf(请您输入进程%d的信息:t,i+1);scanf(ttt%s%f%f,&,&pi.arrivetime,&pi.servicetime);voidPrint(fcfs*p,floatarrivetime,floatservicetime,floatsta
8、rttime,floatfinishtime,floatzztime,floatdqzztime,intN)(intk;printf(nn调用先来先服务算法以后进程运行的顺序是:);printf(%s,);for(k=1;k%s,);coutendl;printf(n具体进程调度信息:n);printf(t进程名到达时间服务时间开始时间结束时间周转时间带权周转时间n);for(k=0;k=N-1;k+)(printf(t%st%-.2ft%-.2ft%-.2ft%-.2ft%-.2ft%-.2fn,,pk.arrivetime,pk.serviceti
9、me,pk.starttime,pk.finishtime,pk.zztime,pk.dqzztime);getchar();/此处必须要有这个函数,否则就看不到显示器上面的输出,可以看到的结果只是一闪而过的一个框剪voidsort(fcfs*p,intN)/排序for(inti=0;i=N-1;i+)for(intj=0;j=i;j+)if(pi.arrivetimepj.arrivetime)(fcfstemp;temp=pi;pi=pj;pj=temp;voiddeal(fcfs*p,floatarrivetime,floatservicetime,floatstarttime,floa
10、tfinishtime,float&zztime,float&dqzztime,intN)运行阶段(intk;for(k=0;k=N-1;k+)(if(k=0)(pk.starttime=pk.arrivetime;pk.finishtime=pk.arrivetime+pk.servicetime;else(pk.starttime=pk-1.finishtime;pk.finishtime=pk-1.finishtime+pk.servicetime;for(k=0;k=N-1;k+)(pk.zztime=pk.finishtime-pk.arrivetime;pk.dqzztime=pk
11、.zztime/pk.servicetime;voidFCFS(fcfs*p,intN)(floatarrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,dqzztime=0;sort(p,N);deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N);getchar();/先来先服务算法到此结束struc
12、tsjf最短进程优先调度算法从这里开始charname10;floatarrivetime;至U达时间floatservicetime;运行时间floatstarttime;开始时间floatfinishtime;完成时间;sjfa1100;voidinput(sjf*p,intN1)/进程信息输入inti;coutendl;printf(请您输入进程的名字到达时间服务时间:(例如:a0100)n);for(i=0;i=N1-1;i+)printf(请您输入进程%d的信息:t,i+1);scanf(ttt%s%f%f,&,&pi.arrivetime,&pi.servicetim
13、e);voidPrint(sjf*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,intN1)/最终结果输出intk;printf(nt调用最短进程优先调度算法以后进程的调度顺序为:);printf(%s,);for(k=1;k%s,);coutendl;printf(n给个进程具体调度信息如下:n);printf(nt进程名t到达时间t运行时间t开始时间t完成时间n);for(k=0;k=N1-1;k+)printf(t%st%-.2ftt%-.2ftt%-.2ftt%-.2付n,
14、,pk.arrivetime,pk.servicetime,pk.starttime,pk.finishtime);getchar();)voidsort(sjf*p,intN1)/排序(for(inti=0;i=N1-1;i+)for(intj=0;j=i;j+)if(pi.arrivetimepj.arrivetime)(sjftemp;temp=pi;pi=pj;pj=temp;)voiddeal(sjf*p,floatarrivetime,floatservicetime,floatstarttime,floatfinishtime,intN1)/运行阶段intk;for
15、(k=0;k=N1-1;k+)if(k=0)pk.starttime=pk.arrivetime;pk.finishtime=pk.arrivetime+float(pk.servicetime)/60;elsepk.starttime=pk-1.finishtime;pk.finishtime=pk-1.finishtime+float(pk.servicetime)/60;voidsjff(sjf*p,intN1)floatarrivetime=0,servicetime=0,starttime=0,finishtime=0;sort(p,N1);for(intm=0;mN1-1;m+)i
16、f(m=0)pm.finishtime=pm.arrivetime+float(pm.servicetime)/60;elsepm.finishtime=pm-1.finishtime+float(pm.servicetime)/60;inti=0;for(intn=m+1;n=N1-1;n+)(if(pn.arrivetime=pm.finishtime)i+;floatmin=pm+1.servicetime;intnext=m+1;for(intk=m+1;km+i;k+)(if(pk+1.servicetimemin)min=pk+1.servicetime;next=k+1;sjft
17、emp;temp=pm+1;pm+1=pnext;pnext=temp;deal(p,arrivetime,servicetime,starttime,finishtime,N1);Print(p,arrivetime,servicetime,starttime,finishtime,N1);getchar();/最短进程优先调度算法到这里结束charmenu()/用来输出相关信息的函数charcse1;while(1)system(cls);fflush(stdin);coutendl;coutendl;coutt|欢迎|endl;coutt|endl;coutt|t进程调度算法模拟tt|e
18、ndl;coutt|endl;coutt|tt1.先来先服务调度算法coutt|endl;couttHtt2.最短进程优先调度算法,tt|r,endl;coutt|endl;coutt|endl;coutendl;coutendl;couttt请输入您的选择(1/2):cse1=getchar();if(cse1v1|cse12)coutvv”你的输入有错!endl;elsebreak;)returncse1;)intmain(intargc,char*argv)(while(1)(switch(menu()(case1:intN;coutendl;coutendl;printf(tt-!先来先服务调度算法coutendl;printf(输入进程数目scanf(%d,&N);input(a,N);FCFS(a,N);case2:intN1;coutendl;coutendl;printf(tt!最短进程优先调度算法!-n);cout但国?”10.0014.031.执行结果您您您2.00人进程数目:3.目此由也自Lb旨昱1a.的的的何I23警进进1A1A人出胃靠谭
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024中外合资企业教育培训与经营合同书
- 2024广州市房地产中介服务合同(卖方出租方使用)
- 2024个人民间借款合同范例
- 2024年信息安全保密协议
- 2024年合伙人分伙协议书
- 2024果树苗木定购合同范本
- 跨境电商商品销售合同
- 承包商土地使用权赠与合同模板
- 精装修室内工程合同
- 2024英文合同范本
- 艾滋病反歧视培训
- 民政局离婚协议书范文模板标准版
- 2024年代工生产机密保护协议
- 2023-2024学年湖北省武汉市洪山区九年级(上)期末物理试卷(含答案)
- 2024年新人教版五年级数学下册《第4单元第7课时 最大公因数(1)》教学课件
- 小学生感恩节国旗下讲话稿(35篇)
- 一年级新生家长会课件(共25张课件)
- 品牌经理招聘面试题与参考回答(某大型集团公司)2024年
- 五年级上册道德与法治说课稿-3 主动拒绝烟酒与毒品 部编版
- 术后谵妄的预防及护理
- 二次函数专题知识点-常考(典型)题型-重难点题型(含详细答案)
评论
0/150
提交评论