设计并实现一个模拟进程状态转换以及其相应PCB组织结构变化的程序.docx

设计并实现一个模拟进程状态转换以及其相应PCB组织结构变化的程序.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一:熟习 Linux 系统 实验目的: 自行编制模拟程序,经过形象化的状态显示, 使学生理解进度的看法、进度之间的状态变换及其所带来的 PCB内容 、组织的变化,理解进度与其 PCB间的一一对应关系。 实验要求: 设计并实现一个模拟进度状态变换及其相应 PCB组织构造变化的程序; 独立设计、编写、调试程序; 程序界面应能反应出在模拟条件下,进度之间状态变换及其对应的PCB组织的变化。 进度的状态模型(三状态、五状态、七状态或其余)可自行选择 运转 Running Dis Eve Tim patc Wai nt eout h t 就绪 Event 等候 Ready Occurs Blocked 基本状态间的变换 代码书写要规范,要适合地加入说明; 鼓舞在实验中加入新的看法或想法,并加以实现; 仔细进行预习,达成预习报告; 实验达成后,要仔细总结,达成实验报告。 程序流程图: 开始 初始化等候和堵塞行列 等候行列为 结束 是 空? 否 等得行列首个进度进入运转队 列 显示所有行列信息 能否堵塞? 运前进度耗费一个 运前进度能否 运前进度进入等候 否 结束 否 时间片 行列 是 是 正在执前进度 运转行列清空 进入堵塞行列 等候行列进度 数小于 4? 是 堵塞行列首个进度 进入等候行列 说明(  1)上为运转结果,  xy : x  为进度号;  y 为进度结束节余时间片。 ( 2)程序中使用行列数据构造,并以构造体 process(进度)作为行列元素。 ( 3) 程序自动进行时间片分派, 但每次运转一个进度前需要进行堵塞判断, 手动输入。  由操作员 4)程序在等候行列中进度小于 4 时,自动将堵塞行列中的进度开释出来。程序源代码: #includeiostream #includequeue #includewindows.h using namespace std; struct process { int id; int hp; process(){} process(int a,int b) { id=a; hp=b; } }; queueprocess re,bl,ru; int main() { void show(queueprocess re,queueprocess ru,queueprocess bl); process p1(1,2),p2(2,1),p3(3,1),p4(4,3),p5(5,2),p6(6,1); re.push(p1); re.push(p2); re.push(p3); bl.push(p4); bl.push(p5); bl.push(p6); process x;char ch;int n; cout 初始化中 .; Sleep(2000); cout.; Sleep(2000); cout.endlendl; show(re,ru,bl); coutendl 开始执行! endlendl; while(!re.empty()) { x=re.front(); re.pop(); ru.push(x); x=ru.front(); show(re,ru,bl); coutendl 能否堵塞? (y/n)endl; ch=getchar(); getchar(); if(ch==y) { x=ru.front(); ru.pop(); bl.push(x); } else if(ch==n) { x.hp--; ru.front().hp=x.hp; if(x.hp!=0) { x=ru.front(); ru.pop(); re.push(x); } else ru.pop(); } else cout输入有误 endl; n=re.size(); while(n4) { if(bl.empty())break; x=bl.front(); bl.pop(); re.push(x); n++; } } return 0; } void show(queueprocess re,queueprocess ru,queueprocess bl) { cout 运转任务: ; process y; if(ru.empty())cout 空 endl; else { y=ru.front(); ru.pop(); couty.id(y.hp)endl; } cout 行列中的任务: ; if(!re.empty()) { while(!re.empty()) { y=re.front(); re.pop(); couty.id(y.hp) ; } } else cout 空; coutendl 堵塞中的任务: ; if(!bl.empty()) { while(!

文档评论(0)

zdq17305382052 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档