- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)
您可能关注的文档
最近下载
- 2025届高考语文复习:散文知识导图及教考衔接整理+课件.pptx VIP
- 部编版语文五年级上册听力练习(含听力原文和参考答案).pdf VIP
- 人流男方赔偿协议书.docx VIP
- 2017春人教版(新起点)英语六下Unit 3《Daily Life》(Lesson 1)教学课件.ppt VIP
- 2024年企业培训师职业技能培训考试题库及答案.pdf VIP
- NB-SH-T6083-2023轻质和中间馏分油品中氯和硅含量的测定 波长色散X射线荧光光谱法.pdf
- 小学语文教师业考试试卷及答案.doc VIP
- 建筑工程安全总监年终总结.docx
- 2025届高考语文复习:概括内容要点,鉴赏散文形象+课件.pptx VIP
- 2025届高考专题复习:散文阅读策略++课件.pptx VIP
文档评论(0)