




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验2 进程状态转换及其PCB的变化一、目的:自行编制模拟程序,通过形象化的状态显示,深入理解进程的概念、进程之间的状态转换及其所带来的PCB内容 、组织的变化,理解进程与其PCB间的一一对应关系。二、 内容及要求:1) 设计并实现一个模拟进程状态转换及其相应PCB内容、组织结构变化的程序。2) 独立编写、调试程序。进程的数目、进程的状态模型(三状态、五状态、七状态或其它)以及PCB的组织形式可自行选择(本实验采用5状态)。3) 合理设计与进程PCB相对应的数据结构。PCB的内容要涵盖进程的基本信息、控制信息、资源需求及现场信息。4) 设计出可视性较好的界面,应能反映出进程状态的变化引起的对应PCB内容、组织结构的变化。5) 代码书写要规范,要适当地加入注释。6) 认真进行预习,完成预习报告。7) 实验完成后,要认真总结,完成实验报告。三、程序流程图:四、使用的数据结构及说明:在本实验中,主要用到的数据结构是PCB的结构,其中进PCB的数据结构如下:struct PCBint time;/所需时间片char Pid;/进程IDint Ppri;/进程优先级;其中time是进程所需的时间片,Pid是进程的ID号,每产生一个进程ID+1,Ppri是进程优先级,数字越大优先级越高。五、运行结果及说明:运行结果的截图:创建进程:进程开始运行每个时间片用完的进程调度进程阻塞进程异常终止进程从阻塞态到就绪态上面的运行结果是程序执行的每一步进程调度的显示,从进程的创建到进程的执行,结束,每一步进程调度都有显示。七、程序使用说明:1)输入字符P创建进程,T当前时间片用完,D当前运行进程异常结束,W当前运行进程阻塞,O阻塞进程得到足够资源,编程就绪态,R当前运行进程为空时,就绪态进程进入运行态。3)程序将显示每一步进程的执行状态。八、程序源代码及其文字说明:#include#include#include #include using namespace std;struct proint time;/所需时间片char Pid;/进程IDint Ppri;/进程优先级;vectorReady;/就绪队列vectorBlocked;/等待队列pro Run;/running进程char p=a;bool greaterpro(const pro& s1,const pro s2)return s1.Ppri s2.Ppri;void Occurs()/阻塞态-就绪态if(Ready.size()=5)if(!Blocked.empty()Ready.push_back(Blocked.front();Blocked.erase(Blocked.begin();/sort(Ready.begin(),Ready.end(),greaterpro);/ready队列排序elsecoutready queue is full.endl;void Create()/新建一个进程if(Ready.size()=5)pro process;coutprocess.time;coutprocess.Ppri;process.Pid=p;Ready.push_back(process);sort(Ready.begin(),Ready.end(),greaterpro);p+;else coutready queue is full.Run.Ppri)Run=Ready.front();Ready.erase(Ready.begin();else if(Ready.front().PpriRun.Ppri)/running状态不为空,而且ready队列有process优先级高于running状态process优先级temp=Run;Run=Ready.front();Ready.erase(Ready.begin();Ready.push_back(temp);sort(Ready.begin(),Ready.end(),greaterpro);elsecoutthere is a process is runingendl;void Realse()/进程结束if(!Ready.empty()Run=Ready.front();Ready.erase(Ready.begin();elseRun.Pid=NULL;Run.time=-1;Run.Ppri=-1;coutthere is no process in the cache.endl;void Timeout()/时间片用完if(!Run.Pid=NULL)Run.time-;if(Run.time=0)/进程结束Realse();else/进程未结束,进入ready状态Ready.push_back(Run);sort(Ready.begin(),Ready.end(),greaterpro);Run=Ready.front();Ready.erase(Ready.begin();else/running状态为空Dispatch();void Wait()/阻塞if(Run.Pid!=NULL)Blocked.push_back(Run);Run.Pid=NULL;Run.Ppri=-1;Run.time=-1;Dispatch();void Output()vector :iterator Iter;coutrunning:|Run.Pid Run.time Run.Ppri|endl;coutblockedqueue:|;for(Iter = Blocked.begin();Iter!=Blocked.end();Iter+ ) cout(*Iter).Pid (*Iter).time (*Iter).Ppri|;coutendl;coutreadyqueue:|;for(Iter = Ready.begin();Iter!=Ready.end();Iter+ ) cout(*Iter).Pid (*Iter).time (*Iter).Ppri|;coutendlendlendl;int main()char in=NULL;while(in!=e)coutpress P mean crea a processendlpress T mean timeoutendlpress D mean process endendlpress W mean blocked,endlpress Omean blocked to readyendlpress Rmean run processendlpress e to exit,in;switch (in)case T:Timeout();Output();break;case D:Dispatch();Out
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 室内装饰装修工程施工合同
- 工程改造合同协议书
- 餐饮特许经营加盟合同
- 在线教育平台用户体验优化与满意度调查报告:2025年市场前景预测
- 湘教版高一地理教案
- 2025年能源行业绿色金融创新报告:市场发展与实践案例
- 中医院外科考试题及答案
- 电竞俱乐部运营管理与品牌建设2025年市场趋势与挑战分析报告
- 中医药膳养学试题及答案
- 中医学药理学试题及答案
- 代建管理工作程序
- 继发性颅脑损伤的护理
- 便秘的中医护理
- 机电设备安装工艺细部节点做法
- 17025实验室管理体系
- 多模态技术在智能养鸡工厂中的研究现状与展望
- 征信知识专项培训课件
- 《美国司法体系》课件
- 《基于深度强化学习在游戏上的应用》
- 小学信息技术试题(附答案)
- 《异常子宫出血诊断与治疗指南(2022更新版)》解读
评论
0/150
提交评论