进程调度模拟实验(bbs)

进程调度模拟实验(bbs)

ID:42017777

大小:89.50 KB

页数:8页

时间:2019-09-05

进程调度模拟实验(bbs)_第1页
进程调度模拟实验(bbs)_第2页
进程调度模拟实验(bbs)_第3页
进程调度模拟实验(bbs)_第4页
进程调度模拟实验(bbs)_第5页
资源描述:

《进程调度模拟实验(bbs)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、进程调度模拟实验1.实验目的通过对进程调度算法的模拟加深对进程概念和进程调度过程的理解。2.实验内容和要求用C语言实现对N(N=5)个进程的调度模拟,可以采用如简单轮转法RoundRobin>优先权高者优先算法HighestPriorityFirst等,分别进行模拟调度。每个用来标识进程的进程控制块PCB用结构(记录)来描述,根据需要,它包括以下字段:◊进程标识数ID。◊进程优先数Priority,并规定优先数越大的进程,其优先权越高。采用简单轮转法时该字段无用。◊进程已经占用的CPU时间CPUTIMEo◊进程还需占用的CPU时间ALLTIMEo当进程运行完毕吋,ALLTIME变为0

2、。◊进程状态STATE。◊队列指针NEXT,用来将PCB排成队列。优先数改变的原则(采用简单轮转法时该字段无用):◊进程在就绪队列中等待一个时间片,优先数增加1;◊进程每运行一个吋间片,优先数减3。假设在进行调度前,系统中有5个进程,它们的初始状态可以编程输入(更具有灵活性),也可以初始化为如下内容:IDPRIORITYCPUTIMEALLTIMESTATE0903READY13803READY23006READY32903READY4004READY为了清楚地观察诸进程的调度过程,程序应该将每个时间片内各进程的情况显示出来并暂停,参考格式如2Running:IReadyQueue:

3、Idi,Idj,・・.IDPRIORITYCPUTIMEALLTIMESTATE0P0COAOSO1PlClAlSI2P2C2A2S23P3C3A3S34P4C4A4S4三、源代码#include#include#include#definegctpch(typc)(typc*)malloc(sizcof(typc))#defineNULL0#defineTIME2〃时间片长度typedefstructpcb{〃进程管理块charname[10];//进程名字charstate;〃进程状态intqueue;〃进程所在的队列int

4、ntime;〃进程需要运行的时间intrtimc;〃进程已经运行的时间intetime;〃进程在本队列可运行的时间片structpeb*link;}PCB;PCB*rcady=NULL,*pinscrt=NULL,*pfcnd=NULL,*p=NULL;〃就绪队列,进程插入位置的变量intgeti()〃使用户仅能输入整数{charch;inti=0;fflush(stdin);ch=getchar();whilc(ch=='){printf("tf输入不能为空•.请重新输入");fflush(stdin);ch=getchar();}whilc(ch!=*){if(ch

5、>911ch<*0'){printf(Mt输入有误!!输入只能为正整数,请重新输入.An”);fflush(stdin);i=();ch=gctchar();}else{i=i*10+(chch=getchar();returni;}voidfindpos()//更新状态虽{PCB*ps=pfend;if(!psII!ps->linkII(ps->link->queue・ps->queue)>1)pinsert=ps;clsc{while(ps->link&&ps->link->queue!=(pfend->queue+2))ps=ps->link;pinsert=ps;voidi

6、nscil()〃插入进程{if(!ready){ready=p;pfend=p;pinsert=p;}elseif(ready->queue==1){〃第一队列存在p->link=pfend->link;pfend->link=p;pfend=p;findpos();)else)p->link=ready;ready=p;findpos();voidinput()/*建立进程控制块函数*/inti,num;printf(M请输入进程的个数?”);num=geti();for(i=0;i

7、CB);printf(H输入进程名scanf(M%s",p->name);printf(M输入进程运行时间:”);p->ntimc=gcti();printf(Hn);p->rtime=O;p->state='w,;p->queue=1;p->ctimc=TIME;p->link=NULL;insert();/*调用insert函数*/}}voiddisp(PCB*p“/*建立进程现实函数,用于显示当前进程*/{printf(Hnamet

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。