操作系统进程调度实验Word格式文档下载.docx
- 文档编号:17876623
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:16
- 大小:136.09KB
操作系统进程调度实验Word格式文档下载.docx
《操作系统进程调度实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《操作系统进程调度实验Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
(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.实验心得
通过本次操作系统综合实验我更好地掌握了操作系统的基本概念、基本原理、及基本功能。
特别是进程的概念、进程控制块的概念以及进程的三种基本状态等概念。
从而培养和提高了编制清晰、合理、可读性好的系统程序的能力,进一步加深了对操作系统课程的理解,切实锻炼了我的实践技能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 进程 调度 实验