网站大量收购闲置独家精品文档,联系QQ:2885784924

c++编程模拟进程调度.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c编程模拟进程调度

#includeiostream #includequeue #includecstring #includecstdlib using namespace std; struct PCB { int id; int pri; int needtime; int cputime; char state;//R,ready;B,block;F,finish;r,runing; void pcb(int i=0,int p=0,int nt=0,int ct=0,char st=R) { id = i; pri = p; needtime = nt; cputime = ct; state = st; } PCB operator= (const PCB a) { id = a.id; pri = a.pri; needtime = a.needtime; cputime = a.cputime; state = a.state; return *this; } }; int c = 0; int n,m; queuePCBready,block,finish; void creat() { cout 进程模拟 endl; cout @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ endl; cout 请输入进程数和资源个数 endl; cout 进程数: ;cin n; cout endl; cout 资源个数:;cin m; c = m; for(int j=1;j=n;j++) { PCB s; int i,p,nt; cout 请输入第 j 个进程信息 endl; cout 进程标示符: ;cin i; cout 进程所需资源个数:;cin p; cout 进程运行时间:;cin nt; s.pcb(i,p,nt); ready.push(s); } system(cls); cout ############################################################endl; cout 开始进程模拟 endl; cout ############################################################endl; } void contrl() { while(ready.empty() != true) { PCB s1; s1 = ready.front(); ready.pop(); if(s1.needtime == s1.cputime) { _sleep(2000); cout 进程 s1.id 全部执行完毕,,释放其所占用资源并进入完成队列 endl; c = c +s1.pri; s1.state = F; finish.push(s1); while(block.empty() != true) { PCB s2; s2 = block.front(); if(s2.pri=c) { _sleep(2000); cout 因进程 s1.id 资源释放,所以进程 s2.id 被唤醒,获得资源,进入就绪队列等待执行 endl; s2.state = R; ready.push(s2); block.pop(); } else { _sleep(2000); cout 进程 s1.id 所释放资源不能满足进程 s2.id 所需资源个数,进程 s2.id 继续阻塞 endl; break; } } } else if(s1.state == r) { s1.cputime++; _sleep(2000); cout 进程 s1.id 第 s1.cputime 时间片运行完成 endl; ready.push(s1); } else if(cs1.pri)

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档