操作系统时间片论转调度算法

操作系统时间片论转调度算法

ID:28587780

大小:226.04 KB

页数:6页

时间:2018-12-11

操作系统时间片论转调度算法_第1页
操作系统时间片论转调度算法_第2页
操作系统时间片论转调度算法_第3页
操作系统时间片论转调度算法_第4页
操作系统时间片论转调度算法_第5页
资源描述:

《操作系统时间片论转调度算法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验报告(一)1.程序代码:#include#include#defineN2//定义时间片typedefstructnode{charname[10];intcputime;intneedtime;charstate;//Wforwait,Rforrun,Fforfinishstructnode*next;}PCB;intn;//进程总数voidshow(PCB*pcb,PCB*pcb_rear)//显示某一队列中进程状况{PCB*p_show;p_show=pcb;while(

2、p_show!=pcb_rear){printf("%s%d%d%c",p_show->name,p_show->cputime,p_show->needtime,p_show->state);p_show=p_show->next;}printf("%s%d%d%c",p_show->name,p_show->cputime,p_show->needtime,p_show->state);}voidmain(){PCB*wait,*w_rear,*run,*r_rear,*finish,*f_rear;//三

3、个队列的首尾wait=NULL;w_rear=NULL;run=NULL;r_rear=NULL;finish=NULL;f_rear=NULL;//输入进程信息printf("输入进程数:");scanf("%d",&n);for(inti=1;i<=n;i++){PCB*p;p=(PCB*)malloc(sizeof(PCB));printf("输入第%d个进程名:",i);scanf("%s",&p->name);printf("输入进程所需cpu时间:");scanf("%d",&p->needtime);p-

4、>cputime=0;p->state='W';p->next=NULL;if(i==1){wait=p;w_rear=wait;}else{w_rear->next=p;w_rear=w_rear->next;}}//输出输入的进程信息printf("进程名占用CPU时间还需CPU时间进程状态");show(wait,w_rear);//第一批进程调入run队列//第一个进程进入run=wait;wait=wait->next;run->next=NULL;r_rear=run;r_rear->state='R'

5、;//剩下的进程进入for(inti1=1;i1<=N-1;i1++){if(wait!=NULL){r_rear->next=wait;r_rear=r_rear->next;wait=wait->next;r_rear->state='R';r_rear->next=run;}else{printf("已无就绪进程");break;}}printf("进程名占用CPU时间还需CPU时间进程状态");if(run!=NULL)show(run,r_rear);if(wait!=NULL)show(wait,w_r

6、ear);if(finish!=NULL)show(finish,f_rear);printf("*****************开始执行*****************");//执行时间片while(run!=NULL){if(run->needtime>0){run->cputime++;run->needtime--;run=run->next;r_rear=r_rear->next;}else//有进程执行完{run->state='F';//进程从run调出到finish,并从wait中调入一个进程/

7、/调出if(finish==NULL)//若finish为空{//finish=run;f_rear=finish;run=run->next;r_rear->next=run;f_rear->next=NULL;}else{f_rear->next=run;f_rear=f_rear->next;run=run->next;r_rear->next=run;f_rear->next=NULL;}//调入if(wait!=NULL){r_rear->next=wait;r_rear=r_rear->next;wait=

8、wait->next;r_rear->state='R';r_rear->next=run;}else{printf(":已无就绪进程");}}if(r_rear==r_rear->next&&r_rear->needtime==0){f_rear->next=run;f_rear=f_rear->next;f_rear->n

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

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

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