实验3 高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx
- 文档编号:17883512
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:13
- 大小:29.21KB
实验3 高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx
《实验3 高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验3 高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
(4)假设在调度前,系统中有5个进程,它们的初始状态如下:
ID01234
PRIORITY93830290
CPUTIME00000
NEEDTIME33634
STARTBLOCK2-1-1-1-1
BLOCKTIME30000
STATEREADYREADYREADYREADYREADY
(5)为了清楚地观察进程的调度过程,程序应将每个时间片内的进程的情况显示出来,参照的具体格式如下:
RUNNINGPROCESS:
$id0
READYQUEUE:
$id1->
$id2
BLOCKQUEUE:
$id3->
$id4
FINISHQUEUE:
$id0->
$id1->
$id2->
$id3->
==================================================================
IDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME
0XXXXXXXXXXXX
1XXXXXXXXXXXX
2XXXXXXXXXXXX
3XXXXXXXXXXXX
4XXXXXXXXXXXX
====================================================================
4.实验要求
(1)将源程序(priority.c)和程序运行结果写入实验报告。
(2)将该算法执行过程与高响应比优先调度算法的执行过程进行比较。
#include<
stdio.h>
iostream>
usingnamespacestd;
inti;
//循环值
intj;
//还在阻塞或就绪队列中的进程数
ints;
intm;
//最大priority的id
structpcb
{
intid;
intp;
//priority
intcputime;
intalltime;
intstartblock;
intblocktime;
intstate;
//0表示ready1表示end-1表示block
};
structpcbpro[5]={
{0,9,0,3,2,3,0},
{1,38,0,3,-1,0,0},
{2,30,0,6,-1,0,0},
{3,29,0,3,-1,0,0},
{4,0,0,4,-1,0,0}
intchangestate0()
if(pro[0].startblock==0)
{
pro[0].state=-1;
pro[0].startblock--;
return1;
}
if(pro[0].blocktime==0)
pro[0].state=0;
}
if(pro[0].state==0&
&
pro[0].startblock!
=-1)
{
pro[0].startblock--;
return1;
if(pro[0].state==-1&
pro[0].blocktime!
=0)
{
pro[0].blocktime--;
}
intstate0()
changestate0();
s=pro[0].p;
if(pro[0].state==-1)
s=-100;
returns;
intmaxp()//求出最大priority
state0();
intmax=s;
m=pro[0].id;
for(i=0;
i<
j;
i++)
if(pro[i+1].p>
pro[i].p)
{
max=pro[i+1].p;
m=pro[i+1].id;
returnm;
voidchange()
maxp();
intx;
//得到m现在的数组编号
pro[i].p++;
if(pro[i].id==m)
x=i;
pro[x].cputime++;
pro[x].p=pro[x].p-4;
pro[x].alltime--;
if(pro[x].alltime==0)
pro[x].state=1;
voiddisplay()
change();
cout<
<
"
RUNNINGPROG:
m<
endl;
===============================================================\n"
;
ID"
cout.width(10);
pro[i].id;
endl<
PRIORITY"
pro[i].p;
CPUTIME"
pro[i].cputime;
ALLTIME"
pro[i].alltime;
STARTBLOCK"
pro[i].startblock;
BLOCKTIME"
pro[i].blocktime;
STATE"
pro[i].state;
intmain()
j=5;
//刚开始有5个进程
while(j!
if(pro[i].state==1){
for(;
{
pro[i]=pro[i+1];
j=j-1;
}
display();
getchar();
}
运行结果:
1
===============================================================
ID
0
1
2
3
4
PRIORITY
10
35
31
30
1
CPUTIME
0
ALLTIME
6
STARTBLOCK
-1
-1
BLOCKTIME
STATE
11
32
2
12
29
33
3
2
13
5
3
14
5
15
28
6
4
16
7
17
26
8
18
27
9
19
24
10
20
21
11
12
13
14
15
4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验3 高动态优先权优先的进程调度算法模拟 实验 动态 优先权 优先 进程 调度 算法 模拟