苏州大学操作系统实验3_第1页
苏州大学操作系统实验3_第2页
苏州大学操作系统实验3_第3页
苏州大学操作系统实验3_第4页
苏州大学操作系统实验3_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验三 进程调度实验目的: (1) 初步了解进程调度的功能和调度机制。(2) 掌握短作业优先算法、时间片轮转算法(RR)和优先数算法。(3) 理解响应时间和周转时间的意义。实验要求:(1)模拟短作业优先算法、时间片轮转算法(RR)和优先数算法的执行情况。(2)动态画出其进程执行的Gantt图。(3)计算三种算法的每个进程的周转时间。解决方案:创建的样本文件,编写相应的算法代码段。实现调度。运行结果(1)模拟短作业优先算法运行的程序结果:(2)模拟时间片轮转算法的程序结果: 当时间片大小为1时:当时间片大小为2时:当时间片大小为3时:3模拟时间片轮转算法的程序结果:思考题:1. 根据实

2、验步骤4的结果,谈谈时间片的大小对周转时间的影响。 答:时间片越长,周转时间越长 2. 根据实验步骤3的结果,如果所有的进程不是纯CPU型进程,而是I/O型进程,那么调度会有什么不同? 答:影响CPU的执行效率。 实验代码:#include<iostream>#include<fstream>#include<string>#define N 5using namespace std;class processpublic:string name;/进程名int ariTime;/到达时间int runTim

3、e;/运行时间int surTime;/剩余时间int priority;/优先级process()process(string n,int a,int r,int p):name(n),ariTime(a),runTime(r),priority(p),surTime(r)void operator=(process& x)name = ;ariTime = x.ariTime;runTime = x.runTime;surTime = x.surTime;priority = x.priority;/=/队列实现template<class T>class

4、SeqQueueprivate:T *str;int front;int rear;int maxSize;public:SeqQueue(int sz = 100);SeqQueue()delete str;int getSize();bool IsFull()return (rear+1)%maxSize = front;bool IsEmpty()return front = rear;bool EnQueue(T& x);bool DeQueue(T& x);template<class T>SeqQueue<T>:SeqQueue(int sz

5、)str = new Tsz;front = rear = 0;maxSize = sz;template<class T>int SeqQueue<T>:getSize()if(rear>front)return (rear-front);elsereturn (maxSize+rear-front);template<class T>bool SeqQueue<T>:EnQueue(T& x)if(IsFull()cerr<<"queue is full!"<<endl;return

6、false;strrear = x;rear = (rear+1)%maxSize;return true;template<class T>bool SeqQueue<T>:DeQueue(T& x)if(IsEmpty()cerr<<"queue is empty!"<<endl;return false;x= strfront;front = (front+1)%maxSize;return true;/=/非抢占式的短作业优先算法void Read(process p,int n)int i;ifstream

7、file("JOB1.txt");for(i=0;i<n;i+)file>>;file>>pi.ariTime;file>>pi.runTime;file>>pi.priority;pi.surTime = pi.runTime;file.close();void SJFA(process p,int n)int totleTime=0,i;for(i=0;i<n;i+)totleTime += pi.runTime;/所有进程运行总时间cout<<"非抢占式的短作业优先算法:&

8、quot;<<endl;for(i=0;i<totleTime;i+)int count=0;int j=0;int index;/找出某时刻到达的所有进程for(j=0;j<n;j+)if(pj.ariTime<=i)count+;/从到达的进程中找出最短作业进程if(count = 0) break;index = 0;for(j=1;j<count;j+)if(pj.runTime<pindex.runTime)index = j;cout<<<<' '<<pindex.r

9、unTime<<endl;i=i+pindex.runTime-1;/删除完成的进程for(j=index;j<n-1;j+)pj=pj+1;n-;/-/时间片轮转算法void RR(process p,int n,int r)/r为时间片大小int totleTime=0,i,j,k;for(i=0;i<n;i+)totleTime += pi.runTime;/所有进程运行总时间cout<<"时间片轮转算法(时间片为"<<r<<"):"<<endl;SeqQueue<pro

10、cess> queue(totleTime);/创建队列for(i=0;i<totleTime;i=i+r)if(n=0) break;/数组为空跳出循环int flag =1;for(k=0;k<n;k+)if(pk.ariTime<=i)/在数组中找到满足条件的进程if(pk.runTime>r)pk.runTime-=r;cout<<<<' '<<r<<endl;queue.EnQueue(pk);/进程进队列for(j=0;j<n-1;j+) /从数组中删除进程pj=pj+

11、1;n-;else/运行时间小于时间片大小cout<<<<' '<<pk.runTime<<endl;i=i-(r-pk.runTime);/调整时间pk.runTime=0;for(j=0;j<n-1;j+) /从数组中删除进程pj=pj+1;n-;flag = 0;break;/在数组中没有找到满足条件的进程,则操作队列中进程if(flag)if(queue.IsEmpty() break;process x;queue.DeQueue(x);/出队列if(x.runTime<=r)cout<&

12、lt;<<' '<<x.runTime<<endl;elsequeue.DeQueue(x);/出队列cout<<<<' '<<r<<endl;x.runTime-=r;queue.EnQueue(x);/所有进程进入队列,直接操作队列for(;i<totleTime;i=i+r)if(queue.IsEmpty() break;process x;queue.DeQueue(x);/出队列if(x.runTime<=r)cout<<

13、;<<' '<<x.runTime<<endl;elsecout<<<<' '<<r<<endl;x.runTime-=r;queue.EnQueue(x);/进队列/优先数调度算法void Priority(process p,int n)int totleTime=0,i;for(i=0;i<n;i+)totleTime += pi.runTime;/所有进程运行总时间cout<<"优先数调度算法:"<<

14、;endl;for(i=0;i<totleTime;i+)int count=0;int j=0;int index;/找出某时刻到达的所有进程数for(j=0;j<n;j+)if(pj.ariTime<=i)count+;/从到达的进程中找出优先级最高的进程if(count = 0) break;index = 0;for(j=1;j<count;j+)if(pj.priority>pindex.priority)index = j;cout<<<<' '<<pindex.runTime<<endl;i=i+pindex.runTime-1;/删除完成的进程for(j=index;j<n-1;j+)pj=pj+1;n-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论