操作系统进程调度实验Word格式文档下载.docx

上传人:b****3 文档编号:17876623 上传时间:2022-12-11 格式:DOCX 页数:16 大小:136.09KB
下载 相关 举报
操作系统进程调度实验Word格式文档下载.docx_第1页
第1页 / 共16页
操作系统进程调度实验Word格式文档下载.docx_第2页
第2页 / 共16页
操作系统进程调度实验Word格式文档下载.docx_第3页
第3页 / 共16页
操作系统进程调度实验Word格式文档下载.docx_第4页
第4页 / 共16页
操作系统进程调度实验Word格式文档下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

操作系统进程调度实验Word格式文档下载.docx

《操作系统进程调度实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《操作系统进程调度实验Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。

操作系统进程调度实验Word格式文档下载.docx

(3)优先数改变的原则:

✧进程在就绪队列中呆一个时间片,优先数增加1。

✧进程每运行一个时间片,优先数减3。

(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。

(5)分析程序运行的结果,谈一下自己的认识。

四、实验结果及分析

1.实验步骤

(2)分析程序运行的结果,谈一下自己的认识。

2.实验代码

#include<

stdio.h>

iostream.h>

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;

voidmain()

j=5;

//刚开始有5个进程

while(j!

if(pro[i].state==1){

for(;

{pro[i]=pro[i+1];

j=j-1;

display();

getchar();

}

 

3.实验结果

在MicrosoftVisualC++6.0中运行以上程序,得结果如下:

1

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

ID01234

PRIORITY103531301

CPUTIME01000

ALLTIME32634

STARTBLOCK1-1-1-1-1

BLOCKTIME30000

STATE00000

PRIORITY113232312

CPUTIME02000

ALLTIME31634

STARTBLOCK0-1-1-1-1

PRIORITY122933323

CPUTIME03000

ALLTIME30634

STARTBLOCK-1-1-1-1-1

STATE-11000

2

ID0234

PRIORITY1330334

CPUTIME0100

ALLTIME3534

STARTBLOCK-1-1-1-1

BLOCKTIME2000

STATE-1000

3

PRIORITY1431305

CPUTIME0110

ALLTIME3524

BLOCKTIME1000

PRIORITY1528316

CPUTIME0210

ALLTIME3424

BLOCKTIME0000

PRIORITY1629287

CPUTIME0220

ALLTIME3414

STATE0000

PRIORITY1726298

CPUTIME0320

ALLTIME3314

PRIORITY1827269

CPUTIME0330

ALLTIME3304

STATE0010

ID024

PRIORITY192410

CPUTIME040

ALLTIME324

STARTBLOCK-1-1-1

BLOCKTIME000

STATE000

PRIORITY202111

CPUTIME050

ALLTIME314

PRIORITY211812

CPUTIME060

ALLTIME304

STATE010

ID04

PRIORITY1813

CPUTIME10

ALLTIME24

STARTBLOCK-1-1

BLOCKTIME00

STATE00

PRIORITY1514

CPUTIME20

ALLTIME14

PRIORITY1215

CPUTIME30

ALLTIME04

STATE10

4

ID4

PRIORITY12

CPUTIME1

ALLTIME3

STARTBLOCK-1

BLOCKTIME0

STATE0

PRIORITY9

CPUTIME2

ALLTIME2

PRIORITY6

CPUTIME3

ALLTIME1

PRIORITY3

CPUTIME4

ALLTIME0

STATE1

4.实验结果分析

动态优先权是指,在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。

在此次实验中具体来说是指:

进程在就绪队列中呆一个时间片,优先数增加1;

进程每运行一个时间片,优先数减3。

运行程序后,进程1的优先数最大,即优先权最高。

因此首先调度进程1,RUNNINGPROG:

图1优先调度进程1

此后进程1完成,状态值为1表示END,再比较0,2,3,4进程的优先数,发现进程2的优先数最大,运行进程2,运行1个时间片后再比较,进程3优先数最高,则优先运行进程3。

以此类推。

图2最终5个进程全部完成

综上所述,程序运行过程中逐步实现各进程的调度,最终如结果所示,0-4共5个进程都已完成,即STATE值均为1。

5.实验心得

通过本次操作系统综合实验我更好地掌握了操作系统的基本概念、基本原理、及基本功能。

特别是进程的概念、进程控制块的概念以及进程的三种基本状态等概念。

从而培养和提高了编制清晰、合理、可读性好的系统程序的能力,进一步加深了对操作系统课程的理解,切实锻炼了我的实践技能。

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

当前位置:首页 > 初中教育 > 理化生

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

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