计算机操作系统2Word文档格式.docx
- 文档编号:16432703
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:10
- 大小:96.72KB
计算机操作系统2Word文档格式.docx
《计算机操作系统2Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机操作系统2Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
优先数
进程状态
其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。
进程到达时间――进程的输入时间。
要求运行时间——假设进程需要运行的单位时间数。
以时间片为单位进行。
优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。
可以事先人为指定,也可以求随机函数产生。
状态——可假设有两种状态,“就绪”状态和“结束”状态。
五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。
(2)在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。
(4)处理器调度总是选队首进程运行。
采用动态改变优先数的办法,进程每运行一次优先数就减“1”。
由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行:
优先数-1
要求运行时间-1
来模拟进程的一次运行。
提醒注意的是:
在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。
在这里省去了这些工作。
(5)进程运行一次后,若要求运行时间0,则再将它加入队列(按优先数大小插入,且置队首标志);
若要求运行时间=0,则把它的状态修改成“结束”(E),且退出队列。
(6)若“就绪”状态的进程队列不为空,则重复上面(4)和(5)的步骤,直到所有进程都成为“结束”状态。
(7)在所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行一次后进程队列的变化。
要求:
为五个进程任意确定一组“优先数”和“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。
四,实验步聚:
(1)明确设计思路。
(2)编写程序。
(3)输入数据,程序显示结果。
五,实验结果:
六,实验总结:
本次实验做的是进程的调度。
通过这次实验,我知道了进程的到达时间,优先级在进程调度中的作用。
在不同的进程同时要处理时,系统如果通过判断进程的优先级和到达时间来优先给调度进程。
七,附录
#include<
stdio.h>
stdlib.h>
string.h>
#definePCBSIZE5
typedefstruct//存放PCB
{
charname[5];
intarrtime;
intruntime;
intpriority;
charstatus;
}PCB;
typedefstructNode//带PCB结构的队列
PCBpcb;
structNode*next;
}Node,*QNode;
inttime=0;
PCB*InitPCB()//初始化进程
PCB*p=(PCB*)malloc(PCBSIZE*sizeof(PCB));
printf("
namearriverunpriority\n"
);
for(inti=0;
i<
PCBSIZE;
i++)
{
strcpy(p[i].name,"
pcb"
itoa(i+1,&
p[i].name[3],10);
%s"
p[i].name);
scanf("
%d"
&
p[i].arrtime);
p[i].runtime);
p[i].priority);
p[i].status='
R'
;
}
returnp;
}
QNodeEnQNode(PCB*p,QNodeq,int&
count)//将到达时间=time的pcb添加到队列中
if(count==5)
returnq;
QNodeLastNode,NewNode;
for(inti=0;
if(p[i].arrtime==time)
count++;
if(!
q->
next)
NewNode=(QNode)malloc(sizeof(Node));
NewNode->
pcb=p[i];
next=NULL;
q->
next=NewNode;
NewNode=NewNode->
next;
else
for(LastNode=q;
LastNode->
next&
&
next->
pcb.priority>
=p[i].priority;
LastNode=LastNode->
next);
next=LastNode->
QNodeInitQNode(PCB*p)//初始化队列
QNodeFirstNode=(QNode)malloc(sizeof(Node));
FirstNode->
returnFirstNode;
QNodeRun(QNodeq)//队首进程运行
if(q->
pcb.priority--;
pcb.runtime--;
pcb.runtime==0)
pcb.status='
E'
QNodeSchedule(PCB*p,QNodeq)//调整队列
QNodeLastNode;
next)//若队首的status为"
E"
则将队首移除队列,否则调整队列顺序
QNoder=q->
next=q->
if(r->
pcb.status=='
)
free(r);
=r->
pcb.priority;
r->
next=r;
voidPrintQNode(QNodeq)//打印队列信息
QNoder;
namearriverunprioritystatus\n"
time);
for(r=q->
r;
r=r->
%s%d%d%d%c\n"
r->
pcb.name,r->
pcb.arrtime,r->
pcb.runtime,r->
pcb.priority,r->
pcb.status);
intmain()
PCB*p;
QNodeq;
intcount=0;
p=InitPCB();
q=InitQNode(p);
while(count!
=PCBSIZE||q->
time=%d\n"
EnQNode(p,q,count);
beforerunning:
\n"
PrintQNode(q);
time++;
q=Run(q);
afterrunning:
q=Schedule(p,q);
system("
pause"
Thetotalruntimeis%d\n"
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 操作系统