- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
时间片轮转调度算法
一.实验目的: 1)学习时间片轮转调度算法。
2)学习 C++程序设计的方法。
二.实验环境:
1)一台运行 Windows2000Professional操作系统计算机。
2)计算机中需要安装 VisualC++6.0企业版。
三.实验内容:本实验主要是实现时间片轮转调度算法。
1)进入 VisualC++的窗口,新建一个 C++的文件,命名为 01.cpp.2)在源程序编辑窗口输入如下的源程序:
#includeiostream
#includestring
#includetime.h
usingnamespacestd;
intn;
classPCB
{
public:
intpri;// 进程优先数
intruntime;// 进程运行 CPU时间
intpieceOftime;// 轮转时间片
stringprocname;// 进程名
1 / 14
stringstate;// 进程状态
intneedOftime;// 还需要时间
intCounter;
PCB*next;
};
PCB*run=NULL;
PCB*ready=NULL;
PCB*finish=NULL;
PCB*tial=ready;
voidDtime(intt);
voidPrinft(inta)
{
if(a==1)
{
cout进程名称 \\t 优先数 \\t 还需要时间 \\t 已运行时间 \\t 状态 :endl;
}
else
cout进程名称 \\t 已运行时间 \\t 还需要时间 \\t 计数器 \\t 时间片 \\t 状态 endl;
}
voidPrinft(intb,PCB*p)
2 / 14
{
if(b==1)
{
coutp-procname\\t\\tp-pri\\tp-needOftime\\t\\tp-r untime\\t\\tp-stateendl;
}
else
coutp-procname\\t\\tp-runtime\\t\\tp-needOftime\\t\\t p-Counter\\tp-pieceOftime\\tp-stateendl;
}
voiddisplay(intc)
{
PCB*p;
if(run!=NULL)/* 如果运行指针不空 */
Prinft(c,run);/* 输出当前正在运行的 PCB*/
//Dtime(2);
p=ready;/* 输出就绪队列 PCB*/
while(p!=NULL)
{
Prinft(c,p);
p=p-next;
}
3 / 14
//Dtime(2);
p=finish;/* 输出完成队列的 PCB*/
while(p!=NULL)
{
Prinft(c,p);
p=p-next;
}
}
voidinsert(PCB*p)// 插入就绪队列按 Pri 大小
{
PCB*S1,*S2;
if(ready==NULL)
{
p-next=NULL;
ready=p;
}
else
{
S1=ready;
S2=S1;
while(S1!=NULL)
4 / 14
{
if(S1-pri=p-pri)
{
S2=S1;
S1=S1-next;
}
else
break;
}
if(S2-pri=p-pri)
{
S2-next=p;
p-next=S1;
}
else
{
p-next=ready;
ready=p;
}
}
}
5 / 14
boolCTProcessOfPri()
{
PCB*Node;
cout输入创建进程的数目 :endl;
cin n;
for(intj=0;jn;j++)
{
Node=newPCB;
if(Node==NULL)
returnfalse;
else
{
cout输入进程的名称 ,进程需 CPU时间 :endl;
cinNode-procnameNode-needOftime;
Node-runtime=0;
Node-state=就绪 ;
Node-pri=Node-needOftime;
cout进程 Node-procname创建完毕 !endl;
}
insert(Node);
}
6 / 14
returntrue;
}
voidpriority(inti)
{
run=ready;
ready=ready-next;
run-state=运行 ;
Prinft(i);
while(run!=NULL)/* 当运行队列不空时,有进程正在运行 */
{
run-runtime=run-runtime+1;
run-needOftime=run-needOftime-1;
run-pri=run-pri-1;/* 每运行一次优先数降低 1 个单位 */
i
您可能关注的文档
最近下载
- 广州市萝岗区凤凰山隧道工程TJ-04合同段 路基高边坡施工“12.29”坍塌 较大事故调查报告.doc VIP
- 新解读《GB_T 18319 - 2019纺织品 光蓄热性能试验方法》最新解读.pptx VIP
- T∕CABEE 030-2022民用建筑直流配电设计标准.pdf VIP
- 高中政治大单元教学设计案例.docx VIP
- 人音版音乐四年级下册 第4课童年的音乐 白桦林好地方 课件(共22张PPT)(含音频+视频).pptx VIP
- 2025年中国方便粉丝市场调查研究报告.docx
- 畜牧养殖业项目融资方案.docx VIP
- 煤矿职业健康操作规程.pdf VIP
- 中建给排水设计控制要点技术指南(94页).pdf VIP
- 2025年青海省中考生物地理合卷试题(含答案解析).docx
文档评论(0)