实验3高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx

上传人:b****5 文档编号:19218642 上传时间:2023-01-04 格式:DOCX 页数:13 大小:16.78KB
下载 相关 举报
实验3高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx_第1页
第1页 / 共13页
实验3高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx_第2页
第2页 / 共13页
实验3高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx_第3页
第3页 / 共13页
实验3高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx_第4页
第4页 / 共13页
实验3高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验3高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx

《实验3高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验3高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

实验3高动态优先权优先的进程调度算法模拟Word文档下载推荐.docx

假设在调度前,系统中有5个进程,它们的初始状态如下:

ID01234

PRIORITY93830290

CPUTIME00000

NEEDTIME33634

STARTBLOCK2-1-1-1-1

BLOCKTIME30000

STATEREADYREADYREADYREADYREADY

为了清楚地观察进程的调度过程,程序应将每个时间片内的进程的情况显示出来,参照的具体格式如下:

RUNNINGPROCESS:

$id0

READYQUEUE:

$id1->

$id2

BLOCKQUEUE:

$id3->

$id4

FINISHQUEUE:

$id0->

$id1->

$id2->

$id3->

==================================================================

IDPRIORITYCPUTIMENEEDTIMESTATESTARTBLOCKBLOCKTIME

0XXXXXXXXXXXX

1XXXXXXXXXXXX

2XXXXXXXXXXXX

3XXXXXXXXXXXX

4XXXXXXXXXXXX

====================================================================

实验要求

将源程序(priority.c)和程序运行结果写入实验报告。

将该算法执行过程与高响应比优先调度算法的执行过程进行比较。

#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 

 

4

PRIORITY 

10 

35 

31 

30 

1

CPUTIME 

0

ALLTIME 

STARTBLOCK 

-1 

-1

BLOCKTIME 

STATE 

11 

32 

2

12 

29 

33 

3

2

13 

3

14 

5

15 

28 

6

16 

7

17 

26 

8

18 

27 

9

19 

24 

10

20 

21 

11

12

13

14

15

4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1