




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、进程调度模拟实验实验目的通过对进程调度算法的模拟加深对进程概念和进程调度过程的理解。实验内容用C语言、Pascal语言或其他开发工具实现对N(N=5)个进程的调度模拟,要求至少采用两种不同的调度算法(如简单轮转法Round Robin和优先权高者优先算法Highest Priority First),分别进行模拟调度。每个用来标识进程的进程控制块PCB用结构(记录)来描述,根据需要,它包括以下字段:进程标识数ID。进程优先数Priority,并规定优先数越大的进程,其优先权越高。采用简单轮转法时该字段无用。进程已经占用的CPU时间CPUTIME (以时间片为单位,下同)。进程还需占用的CPU时
2、间ALLTIMEo当进程运行完毕时,ALLTIME变为0。进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。进程被阻塞的时间BLOCKTIME,表示已经阻塞的进程再等待BLOCKTIME个时间片后,将转换成就 绪状态。进程状态STATEo队列指针NEXT,用来将PCB排成队列。优先数改变的原则(采用简单轮转法时该字段无用):进程在就绪队列中等待一个时间片,优先数增加1;进程每运行一个时间片,优先数减3o假设在进行调度前,系统中有5个进程,它们的初始状态可以编程输入(更具有灵活性),也可以初始 化为如下内容:ID PRIORITY CPUTI
3、ME ALLTIME STARTBLOCK BLOCKTIME ST巨E090323READY13803-10READY23006-10READY32903-10READY4004-10READY为了清楚地观察诸进程的调度过程,程序应该将每个时间片内各进程的情况显示出来并暂停,参考格 式如下:运行/Running: I就绪队列/Ready Queue: Idi, Idj, .阻塞队列/Block Queue: Idk, Idl,.进程号 优先数 已运行时间需要时间开始阻塞时间阻塞时间状态0P0C0A0T0B0S01P1C1A1T1B1S12P2C2A2T2B2S23P3C3A3T3B3S34P
4、4C4A4T4B4S4实验分析和思考在实际的进程调度中,还有哪些可行的算法,怎样模拟?在实际的进程调度中,除了按算法选择下一个运行的进程之外,操作系统还应该做哪些工作?为什么对进程的优先数可以按上述原则进行修改?有什么好处?实验学时安排:6学时,在调度与死锁内容学习之后进行。/模拟操作系统四种进程调度算法(先进先出、短进程优先、高优先权优先、简单时间片轮转) /本实验可以模拟任意一种,可以自定义进程个数、自定义初始化他们的PCB。/C+代码:#include stdafx.h#include using std:cout;using std:cin;using std:cerr;enum St
5、atusrunning,ready,blocked;enum Policyfifo,spf,hpf,rr;typedef class PCB/定义PCB类。public:int id,priority,cputime,alltime,startblock,blocktime;Status state;class PCB *next;PCB()priority=0;PCB,*PCBptr,*PCBpp;char x;PCBpp pp;/两个全局变量void Print(PCBptr head)/打印head为头指针的PCB链表信息。PCBptr p;coutnext;p=p-next)if(p-
6、next-state=running)coutIDnext-id;break;coutnext;p=p-next)if(p-next-state=ready)coutIDnext-id;coutnext;p=p-next)if(p-next-state=blocked)coutIDnext-id;coutnn阻塞时间状态n”;next-cputime阻塞时间状态n”;next-cputimenext-blocktimenext;p=p-next)cout next-idnext-priority”next-alltimenext-startblocknext-state)case ready:
7、cout ”就绪”;break;case running:cout”运行”;break;case blocked:cout阻塞”;break;default:exit(0);coutn;coutnx;void Delete(PCBptr head,PCBptr p)删除以head为头指针的PCB链表中p所指向的结点。PCBptr q=head;while(q-next!=p) q=q-next;q-next=p-next;delete p;void InsertSort(PCBpp Rdy,PCBpp RdyEd,Policy algthm)/直接插入排序。if(*(Rdy+1)/队列不为空i
8、f(RdyEd-1!=Rdy+1)(/Ready+1队列中不只一个。switch(algthm)case hpf:if(*(RdyEd-1)-priority(*(RdyEd-2)-priority)PCBpp tt;*Rdy=*(RdyEd-1);*(RdyEd-1)=*(RdyEd-2);for(tt=RdyEd-3;(*Rdy)-priority(*tt)-priority;tt-)*(tt+1)=*tt;*(tt+1)=*Rdy;break;case spf:if(*(RdyEd-1)-alltimealltime)PCBpp tt;*Rdy=*(RdyEd-1);*(RdyEd-1)
9、=*(RdyEd-2);for(tt=RdyEd-3;(*Rdy)-alltimealltime;tt-)*(tt+1)=*tt;*(tt+1)=*Rdy;void RunToBlk(PCBpp Run,PCBpp &BlkEd)/定义运行态转为阻塞态。(*Run)-state=blocked;*BlkEd=*Run;BlkEd+;void RdyToRun(PCBpp &Rdy,PCBpp Run,Policy algthm)/定义就绪态转为运行态。if(algthm=hpf|algthm=spf)if(*(Rdy+1)(*(Rdy+1)-state=running;*Run=*(Rdy+1
10、);Rdy+; else if(*Rdy)(*Rdy)-state=running;*Run=*Rdy; Rdy+; void RunToRdy(PCBpp Run,PCBpp Rdy,PCBpp &RdyEd,Policy algthm)(/定义运行态转为就绪态。(*Run)-state=ready;*RdyEd=*Run;RdyEd+;if(algthm=hpf|algthm=spf)InsertSort(Rdy,RdyEd,algthm); 上面是定义的函数,下面是主函数。 int main() coutn) (cerr错误:输入不正确! ”; exit(0);PCBptr Listhe
11、ad,Listp,Listq;/建立 n 个 TOC o 1-5 h z Listhead=new PCB;/Listp=Listhead;/for(int i=0;inext=Listq;/Listp=Listq; / Listp-next=0;/PCB 的队列。Policy algorithm; int num1,num2;L1: coutnum1) cerr”错误:输入不正确! ”; exit(0); algorithm=Policy(num1); if(algorithm!=fifo&algorithm!=spf&algorithm!=hpf&algorithm!=rr) cout”无
12、效的算法不正确!请重新输入:n; goto L1;coutn现在有nnext; for(int i=0;i=n-1;i+) cout请输入iid=i;if(algorithm=hpf) coutListp-priority) cerr错误:输入不正确! ”;exit(0); coutListp-cputime) cerr错误:输入不正确! ”;exit(0); coutListp-alltime) cerr错误:输入不正确! ”;exit(0); coutListp-startblock) cerr错误:输入不正确! ”;exit(0); coutListp-blocktime) cerr错误
13、:输入不正确! ”;exit(0);L2: coutnum2) cerr错误:输入不正确! ”;exit(0); if(num2!=0&num2!=1&num2!=2) coutstate=Status(num2); Listp=Listp-next; PCBpp Run=new PCBptr();/ 生成PCBpp Ready=new PCBptr100; / for(int i=0;i=99;i+) *(Ready+i)=0;/ 运行PCBpp ReadyEnd=Ready;/ 就绪PCBpp Block=new PCBptr100; /阻塞for(int i=0;inext;Listp=
14、Listp-next) /把初始化的进程放进各自队列 switch(Listp-next-state) case running:*Run=Listp-next;break;case ready:*ReadyEnd=Listp-next;ReadyEnd+;if(algorithm=hpf|algorithm=spf)InsertSort(Ready,ReadyEnd,algorithm);break;case blocked:*BlockEnd=Listp-next;BlockEnd+;break;coutn现在这nx;for(int time=1;Listhead-next;time+)开
15、始并发执行。coutn第timepriority-=3;(*Run)-cputime+;if(*Run)-alltime0)(*Run)-alltime-;if(*Run)-startblock0)(*Run)-startblock-;if(algorithm=hpf)/Ready+1队列的变化。if(*(Ready+1)for(pp=Ready+1;pp!=ReadyEnd;pp+) (*pp)-priority+;if(*Block)/Block队列的变化。for(pp=Block;pp!=BlockEnd;pp+)if(*pp)-blocktime0)(*pp)-blocktime-;P
16、rint(Listhead);if(*Block)pp=Block;while(pp!=BlockEnd)(/把已经阻塞好了的进程移到就绪队列。if(*pp)-blocktime=0)(*pp)-state=ready;*ReadyEnd=*pp;ReadyEnd+;if(algorithm=hpf|algorithm=spf)InsertSort(Ready,ReadyEnd,algorithm);for(PCBpp ss=pp;ss!=BlockEnd;ss+)*ss=*(ss+1);BlockEnd-;else pp+;if(*Run)if(*Run)-alltime=0)(/如果运行完
17、了,把该进程撤销,并拿就绪队头的进程来运行。Delete(Listhead,*Run);RdyToRun(Ready,Run,algorithm);else/没运行完if(*Run)-startblock=0)/如果该阻塞了,则放入阻塞队列,并拿就绪队头的进程来运行。RunToBlk(Run,BlockEnd);RdyToRun(Ready,Run,algorithm);else/如果没阻塞if(algorithm=hpf)/在HPF算法下,比较现在运行的进程的优先权和*(Ready+1)的优先权的大小。if(*(Ready+1)if(*Run)-prioritypriority)/下台了。(*Run)-state=ready;*ReadyEnd=*Run;ReadyEnd+;InsertSort(Ready,ReadyEnd,algorithm);if(*(Ready+1)(*(Ready+1)-state=running;*Run=*(Ready
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代收款委托声明3篇
- 工程合同价款结算方法3篇
- 城市公共照明路灯施工协议3篇
- 房产租赁逾期付款的投资风险3篇
- 合伙经营砂石料协议书范本版3篇
- 付费搬运服务合同3篇
- 水泥制品生产安全规程考核试卷
- 森林生态学与资源管理考核试卷
- 电容器在变频调速中的关键作用考核试卷
- 农药残留监控网络建设考核试卷
- 运动与身体教育智慧树知到期末考试答案章节答案2024年温州大学
- 电梯维保服务考核标准及评分办法
- (正式版)JBT 3300-2024 平衡重式叉车 整机试验方法
- 2024全新校医合作协议(重点条款版)
- 小脑梗死的护理查房
- 水产养殖公司合伙人股权分配协议
- 特殊教育导论 课件 第一章 特殊教育的基本概念
- 急救医疗资源整合优化研究
- 牛津译林7A-Unit3、4单元复习
- 专题四“挺膺担当”主题团课
- 国家义务教育质量监测初中美术试题
评论
0/150
提交评论