欢迎来到天天文库
浏览记录
ID:44483307
大小:102.00 KB
页数:7页
时间:2019-10-22
《操作系统AFCFS算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《操作系统A》课程综合性实验报告开课实验室:软件一2011年12月16日实验题目进程调度算法稈序设计一、实验目的通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法二、设备与环境1.硬件设备:PC机一台2.软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发坏境,如CC++Java等三、实验内容(1)用C语言实现对N个进程釆用某种进程调度算法(如动态优先权调度)的调度。(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:◊进稈标识数ID。◊进程优先数PRIORITY,并规
2、定优先数越大的进程,其优先权越高。◊进程己占用CPU时间CPUTIMEo◊进程还需占用的CPU时间ALLTIMEo当进程运行完毕时,ALLT1ME变为0。◊进程的阻塞吋间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。◊进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪林◊进程状态STATEo◊队列指针NEXT,用来将PCB排成队列。(3)优先数改变的原则:◊进程在就绪队列中呆一个吋间片,优先数增加1。◊进程每运行一个时间片,优先数减3。(4)为了清楚地观察每个进程的调度
3、过程,程序应将每个时间片内的进程的情况显示出来,包括止在运行的滋于阻塞队列中的进程。(5)分析程序运行的结果,谈一下自己的认识。四、实验结果及分析1.实验设计说明本程序根据先来先服务算法的思想调度程序,该算法用于作业调度,也可用于进程调度。在进程屮采用FCFS列的进程投入执行。2•实验代码#include#includetypedefstructprocess_FCFS{charname;floatarrivetime;floatservetime;floatfinishtime;floatroundtime;floatda
4、iquantime;structprocess_FCFS*link;}FCFS;FCFS*p,*q,*head=NULL;structprocess_FCFSa[100];FCFSinital(structprocess_FCFSa[],intn);voidprint(structprocess_FCFSa[],intn);voidFcfs(structprocess_FCFSa[],intn);structprocess_FCFS*sortarrivetime(structprocess_FCFSa[J,intn);structprocess_FCFS*sor
5、tamvetime(structprocess_FCFSa[],intn)intij;structprocess_FCFSt;intflag;fbr(i=l;ia[j+l].arnvetime)t=a[j];a[j]=a
6、j+l];a[j+l]=t;flag二1;}}if(flag==O)break;Ireturna;}voidFcfs(structprocess_FCFSa[J,intn){inti;a[0].finishtime=a[01.arrivet
7、ime+afO].servetime;a[0].roundtime=af01.finishtime+af01.amvetime;a[0].daiquantime=a[0].roundtime/a[0].servetime;for(i=0;ia[i-1].finishtime){a[i].finishtime=a[i-1].finishtime+a[i].servetime;a[i].roundtime=a[i].finishtime-a[i].arrivetime;a[i].daiquantime=a[i].
8、roundtime/a[i].servetime;}else{a[ij.finishtime=a[i].arrivetime+a[i].servetime;a[i].roundtime=a[i].finishtime+a[i].arrivetime;a[i].daiquantime=a[i].roundtime/a[i].servetime;print"先来先服务j;print(a,n);}voidprint(structprocess_FCFSaf],inln){inti;printfC倒达时间:
9、服务时间:
10、完成时间:
11、周转时间:
12、带权周转时间“);
13、for(i=0;i
此文档下载收益归作者所有