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

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

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

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

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

(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

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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