版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、xx大学操作系统实验报告姓名:学号:班级: 实验日期:实验名称:时间片轮转RR进程调度算法实验二 时间片轮转RR进程调度算法实验目的:通过这次实验,理解时间片轮转RR进程调度算法的运行原理,进步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。需求分析输入的形式和输入值的范围;输入:进程个数n范围:0n=q)(CurrentTime = q;else(CurrentTime = RRarray0.ServiceTime;while(!RRqueue.empty()(for (int j=i;j= RRarrayj.ArrivalTime)欢迎共阅(RRqueue.push(RRarra
2、yj);i+;if (RRqueue.front().ServiceTimeq)(tempTime = RRqueue.front().ServiceTime;else( tempTime = q;RRqueue.front().ServiceTime -= q;/进程每执行一次,就将其服务时间-q将队首进程的名称放入数组中processMomentprocessMomentPoint = RRqueue.front().name;processMomentPoint+;processTimefinalProcessNumber = tempTime;finalProcessNumber+;i
3、f (RRqueue.front().ServiceTime = 0) 把执行完的进程退出队歹U(/RRqueue.front().FinishedTime = CurrentTime;RRqueue.pop();/如果进程的服务时间小于等于,即该进程已经服务完了,将其退栈 . . -. else(将队首移到队尾RRqueue.push(RRqueue.front();RRqueue.pop();CurrentTime += tempTime;/进程输出处理每个时间段对应的执行的进程cout各进程的执行时刻信息:endl;cout” setw(2)processTime0时刻;processT
4、imefinalProcessNumber=0;int time = processTime0;int count = 0;for (i=0;ifinalProcessNumber;i+)(count = 0;coutsetw(3)processMomentisetw(3)endl;while(RR!=processMomenti & countn)(count+;RRarraycount.FinishedTime = time;if (ifinalProcessNumber - 1)(coutsetw(3)time时刻 setw(2)time + process
5、Timei+1 时刻 setw(3);time += processTimei+1;coutendl;周转时间、带权周转时间、平均周转时间、带权平均周转时间的计算/1.周转时间=完成时间-到达时间/2.带权周转时间二周转时间/服务时间for ( i=0;in;i+)(RRarrayi.WholeTime = RRarrayi.FinishedTime - RRarrayi.ArrivalTime;RRarrayi.WeightWholeTime =(double)RRarrayi.WholeTime/RRarrayi.ServiceTime;double x=0,y=0;for (i=0;in
6、;i+)(x += RRarrayi.WholeTime;y += RRarrayi.WeightWholeTime;AverageWT = x/n;-.AverageWWT = y/n;4、调试分析调试过程中遇到的问题以及解决方法,设计与实现的回顾讨论和分析在算法设计时,由于一开始不知道如何将位于队首的进程,在执行完后如何移至队尾进行循 环,所以思考了很久,后来想到将队首进程进行重新压入队列从而解决了此问题。算法的性能分析每个进程被分配一个时间段,即该进程允许运行的时间。如果在时间片结束时进程还在运行, 则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行
7、切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的 末尾。经验体会通过本次实验,深入理解了时间片轮转RR进程调度算法的思想,培养了自己的动手能力,通 过实践加深了记忆。5、用户使用说明程序的使用说明,列出每一步的操作步骤。运行完成,将按到达时间从小到大次序#include #include _#include 运行队首进程 nclude #define MaxNum 100 using namespace std;def struct进程运行时间-时间| (char name;int ArrivalTime;int ServiceTime;int Finis
8、hedTime;int WholeTime;double WeightWholeTime;RR;static queueRRqueue; /声明一个队歹Ustatic double AverageWT =0,AverageWWT=0;static int q; 时间片static int n; /进程个数static RR RRarrayMaxNum; 进程结构void Input()(/文件读取模式ifstream inData;inData.open(./data4.txt);/data.txt表示q = 4的RR调度算法/data2.txt表示q = 1的RR调度算法inDatan;in
9、Dataq;for (int i=0;iRR;for (i=0;iRRarrayi.ArrivalTime;for (i=0;iRRarrayi.ServiceTime;/用户输入模式cout*endl;coutn;coutq;cout请按到达时间的顺序依次输入进程名:endl;for (i=0;iRR;cout请从小到大输入进程到达时间:endl;for (i=0;iRRarrayi.ArrivalTime;cout请按到达时间的顺序依次输入进程服务时间:endl;for (i=0;iRRarrayi.ServiceTime;cout*endl;输
10、出用户所输入的信息coutThe information of processes is the following:endl;coutsetw(10)进程名 ;coutsetw(10)到达时间;coutsetw(10)服务时间 endl;for ( i=0;in;i+)(coutsetw(10)RR ;coutsetw(10)RRarrayi.ArrivalTime ;coutsetw(10)RRarrayi.ServiceTime endl;cout*=q)CurrentTime = q;elseCurrentTime = RRarray0.ServiceTime;w
11、hile(!RRqueue.empty()(for (int j=i;j= RRarrayj.ArrivalTime)(RRqueue.push(RRarrayj);i+;if (RRqueue.front().ServiceTimeq)(tempTime = RRqueue.front().ServiceTime;else( tempTime = q;RRqueue.front().ServiceTime -= q;进程每执行一次,就将其服务时间-q/将队首进程的名称放入数组中processMomentprocessMomentPoint = RRqueue.front().name;pro
12、cessMomentPoint+;processTimefinalProcessNumber = tempTime;finalProcessNumber+;if (RRqueue.front().ServiceTime = 0) /把执行完的进程退出队列(/RRqueue.front().FinishedTime = CurrentTime;RRqueue.pop();/如果进程的服务时间小于等于,即该进程已经服务完了,将其退栈else(/将队首移到队尾RRqueue.push(RRqueue.front();RRqueue.pop();CurrentTime += tempTime;/进程输
13、出处理每个时间段对应的执行的进程cout各进程的执行时刻信息:endl;cout setw(2)processTime0时刻;processTimefinalProcessNumber=0;int time = processTime0;int count = 0;for (i=0;ifinalProcessNumber;i+)(count = 0;coutsetw(3)processMomentisetw(3)endl;while(RR!二processMomenti & countn)( count+;RRarraycount.FinishedTime = t
14、ime;if (ifinalProcessNumber - 1)(coutsetw(3)time 时刻 setw(2)time + processTimei+1 时刻 setw(3);time += processTimei+1;coutendl;周转时间、带权周转时间、平均周转时间、带权平均周转时间的计算/1.周转时间=完成时间-到达时间/2.带权周转时间二周转时间/服务时间for ( i=0;in;i+)(RRarrayi.WholeTime = RRarrayi.FinishedTime - RRarrayi.ArrivalTime;RRarrayi.WeightWholeTime =(
15、double)RRarrayi.WholeTime/RRarrayi.ServiceTime;double x=0,y=0;for (i=0;in;i+)(x += RRarrayi.WholeTime;y += RRarrayi.WeightWholeTime;AverageWT = x/n;AverageWWT = y/n;void display()(cout*endl;coutRR调度算法执行后:进程相关信息如下:endl;coutsetw(10)进程名(ID) ;coutsetw(10)到达时间;coutsetw(10)服务时间;coutsetw(10) 完成时间 ;coutsetw(10)周转时间;coutsetw(10) 带权周转时间 endl;for (int i = 0;in;i+)(coutsetw(10)RR ;coutsetw(10)RRarrayi.ArrivalTime ;coutsetw(10)RRarrayi.Ser
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产开发管理新理念
- 2023年答案能源管理基础体系知识试题
- 金融行业高效办公用品招标
- 市场营销授权产品推广策略
- 共享服务器租赁合同范本
- 认识钟表课件大约几时
- 艺术区工作室租赁合同
- 雨水管道铺设施工合同
- 市政工程EPC合同管理策略
- 高端定制服装店设计师聘用书
- 英语四级选词填空的真题合集
- 音乐的美及其鉴赏智慧树知到答案2024年湖南师范大学
- 学校厕所维修协议合同协议书
- 2025届高考语文一轮复习:信息类文本之:信息的理解、分析、推断
- 人教版七年级地理上册《多样的文化》居民与文化课件
- 人教版(2024)八年级上册物理第六章《质量与密度》达标测试卷(含答案)
- DB2101T 0108-2024 工程建设招标代理机构公共信用综合评价规范
- 山东省泰安市肥城市2024-2025学年上学期高三开学考语文试题及参考答案
- 【浅析我国机关事业单位养老保险制度的改革及趋势6800字(论文)】
- 2024小语新教材培训:小学语文教材里的“变”与“不变”
- Python课程第二阶段第十三课:列表元素的查找和删除-Python教学设计
评论
0/150
提交评论