进程调度算法模拟实现_第1页
进程调度算法模拟实现_第2页
进程调度算法模拟实现_第3页
进程调度算法模拟实现_第4页
进程调度算法模拟实现_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业实验六 进程调度算法模拟实验类型 本实验为设计性实验。实验目的与任务1) 通过对进程调度算法的设计,加深对进程调度原理的理解,进一步掌握各种调度算法的特征;2) 针对你所选择的算法的模拟情况进行对算法进行评价(通过比较计算平均周转时间和平均带权周转时间)。预习要求理解各调度算法原理;理解平均周转时间和平均带权周转时间实验基本原理(1) 设计程序模拟先来先服务(FCFS)进程调度、短进程优先调度(SJF)、高响应比优先调度(HRN)、最高优先权优先调度、时间片轮转调度等算

2、法,要求比较所选算法的平均周转时间和平均带权周转时间,可选用C 、C+或Java 等编程语言中任一种语言。(2)自设模拟的情景,但要求至少包括四个进程调度。注意,问题情境最好允许用户设定。即当程序启动时,应允许用户可以选择不同的调度算法;然后用户从控制台输入各个进程的信息,进程信息输入完毕后,就开始了进程调度。参考代码如下:(3) 认真完成实验报告,同时要求说明模拟的情境、数据结构的使用,程序流程图或步骤,并给出实验结果分析和实验小结;实验仪器与设备(或工具软件)实验设备:计算机一台;实验内容 参考代码如下 #includestdio.h#includestdlib.hvoid dayin()

3、;typedef struct PCB /定义进程控制块char num2; /进程号char state; /运行状态int tijiaotime; /提交进程时间int starttime; /进程开始时间int finishtime; /结束时间int needtime; /运行需要时间float roundtime; /周转时间float weightroundtime; /带权周转时间struct PCB *next; /指向下个进程pcb;int time=10000,n; /计时器 (假设当前时间)float sumroundtime=0,sumweightroundtime=0

4、,avgroundtime,avgweightroundtime; /定义全局平均变量。pcb *head=NULL,*p,*q; / 进程全局指针。void run_fcfs(pcb *p1) /进程执行过程time = p1-tijiaotime time? p1-tijiaotime:time; / 获得真正的当前时间。p1-starttime=time;/printf(n现在时间是%d,开始运行进程%sn,time,p1-num);time+=p1-needtime;p1-state=F;p1-finishtime=time;p1-roundtime=p1-finishtime-p1-

5、tijiaotime;p1-weightroundtime=(float)(p1-finishtime-p1-tijiaotime)/(float)p1-needtime;sumroundtime+=p1-roundtime;sumweightroundtime+=p1-weightroundtime;void run_spf(pcb *p1,int t) /模拟进程执行过程p1-starttime=t;p1-state=W;p1-finishtime=t+p1-needtime;p1-roundtime=p1-finishtime-p1-tijiaotime;p1-weightroundti

6、me=(p1-finishtime-p1-tijiaotime)/(float)p1-needtime;sumroundtime+=p1-roundtime;sumweightroundtime+=p1-weightroundtime;void fcfs() /从队首分别取出进程(找到满足条件的进程,并执行。)int i,j,t;for(j=0;jn;j+)p=head;t=10000;for(i=0;itijiaotimestate=W)t=p-tijiaotime;q=p; /标记当前未完成的进程p=p-next;run_fcfs(q);avgroundtime=sumroundtime/

7、n;avgweightroundtime=sumweightroundtime/n;/void spf() /从队首分别取出进程(找到满足条件的最短进程,并执行。)int i,j,t,k,futmin,flag;t=10000;/p=head;for(i=0;itijiaotimestate=F) t=p-tijiaotime;/记录范围内。最早完成时间。 p=p-next; / k=0;while(kn) flag=0;futmin=10000;/最小的一个服务时间。(在范围内总是可以找到最小的一个服务时间。)p=head;for(i=0;itijiaotimestate=F& p-need

8、timeneedtime;/ 每一次都要修改当前最早时间。q=p; /标记当前未完成的进程flag=1; p=p-next;if(flag=1)k+;run_spf(q,t);t=t+q-needtime; /t为当前时间。用于筛选进程 下一个进程的当前时间。elset=10000;/p=head;for(i=0;itijiaotimestate=F)t=p-tijiaotime;/记录范围内。最早完成时间。p=p-next;avgroundtime=sumroundtime/n;avgweightroundtime=sumweightroundtime/n; /void getInfo()

9、/创建进程int num;printf(n请输入进程个数:);scanf(%d,&n);printf(n依次输入%d个进程:n,n);dayin();printf(进程名 到达时间 运行时间n);for(num=0;numnum,&p-tijiaotime,&p-needtime);if(p-tijiaotime tijiaotime; /记录最早时间。q-next=p;p-starttime=0;p-finishtime=0;p-roundtime=0;p-weightroundtime=0;p-next=NULL;p-state=W;q=p;void display()printf(nn进

10、程名tt);p=head;while(p!=NULL)printf(%st,p-num);p=p-next;printf(平均);printf(n到达时间t);p=head;while(p!=NULL)printf(%dt,p-tijiaotime);p=p-next;printf(n运行时间t);p=head;while(p!=NULL)printf(%dt,p-needtime);p=p-next;printf(n开始运行时间t);p=head;while(p!=NULL)printf(%dt,p-starttime);p=p-next;p=head;printf(n完成时间t);whil

11、e(p!=NULL)printf(%dt,p-finishtime);p=p-next;p=head;printf(n周转时间t);while(p!=NULL)printf(%0.1ft,p-roundtime);p=p-next;printf(%0.1fn,avgroundtime);p=head;printf(带权周转时间t);while(p!=NULL)/printf(%0.1ft,p-roundtime);printf(%0.1ft,p-weightroundtime);p=p-next;printf(%0.1fn,avgweightroundtime);dayin(); printf(平均周转时间为%0.1fn,avgroundtime);printf(平均带权周转时间为%0.1fn,avgweightroundtime); dayin();void dayin()printf(-n);void main() /mian函数dayin();printf(tt先来先服务优先调度算法和短进程优先调度模拟实现nn);dayin();getI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论