实验3高动态优先权优先的进程调度算法模拟Word文件下载.docx
《实验3高动态优先权优先的进程调度算法模拟Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验3高动态优先权优先的进程调度算法模拟Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
(3)优先数改变的原则:
进程在就绪队列中呆一个时间片,优先数增加1;
进程每运行一
个时间片,优先数减
—/.t/.A-.ftYLt,、.
3。
(4)假设在调度前,系统中有
5个进程,它们的初始状态如下:
ID
1
2
3
4
PRIORITY
9
38
30
29
CPUTIME
NEEDTIME
6
STARTBLOCK
-1
BLOCKTIME
STATE
READY
(5)为了清楚地观察进程的调度过程,程序应将每个时间片内的进程的情况显示出来,参照的具体格式如下:
RUNNINGPROCESS:
$id0
READYQUEUE:
$id1->
$id2
BLOCKQUEUE:
$id3->
$id4
FINISHQUEUE:
$id0->
$id1->
$id2->
$id3->
XX
4.实验要求
(1)将源程序(priority.c)和程序运行结果写入实验报告。
(2)将该算法执行过程与高响应比优先调度算法的执行过程进行比较。
#include<
stdio.h>
iostream>
usingnamespacestd;
inti;
//循环值
intj;
//还在阻塞或就绪队列中的进程数
ints;
intm;
//最大priority的idstructpcb
{
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;
return1;
}if(pro[0].state==0&
&
pro[0].startblock!
=-1){
pro[0].startblock--;
}
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"
;
cout<
ID"
cout.width(10);
pro[i].id;
endl<
PRIORITY"
pro[i].p;
CPUTIME"
pro[i].cputime;
ALLTIME"
pro[i].alltime;
STARTBLOCK"
for(i=0;
pro[i].startblock;
}cout<
BLOCKTIME"
pro[i].blocktime;
STATE"
pro[i].state;
intmain()
j=5;
//刚开始有5个进程while(j!
=0)
{for(i=0;
i++){
if(pro[i].state==1){for(;
pro[i]=pro[i+1];
}j=j-1;
display();
getchar();
运行结果:
RUNNINGPR0G:
ID01
PRIORITY10
35
31
CPUTIME0
ALLTIME3
STATE0
PRIORITY11
32
PRIORITY12
33
ALLTIME30634STARTBLOCK-1-1-1-1-1
BLOCKTIME30000
STATE-11000
ID02
PRIORITY13
5
STATE-1
PRIORITY14
PRIORITY15
28
PRIORITY16
7
B