




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验六进程调度算法模拟一、实验类型本实验为设计性实验。二、实验目的与任务1)通过对进程调度算法的设计,加深对进程调度原理的理解,进一步掌握 各种调度算法的特征;2)针对你所选择的算法的模拟情况进行对算法进行评价(通过比较计算平 均周转时间和平均带权周转时间)。三、预习要求1)理解各调度算法原理;2)理解平均周转时间和平均带权周转时间四、实验基本原理(1)设计程序模拟先来先服务(FCFS)进程调度、短进程优先调度(SJF)、 高响应比优先调度(HRN)、最高优先权优先调度、时间片轮转调度等算法,要 求比较所选算法的平均周转时间和平均带权周转时间,可选用C、C+或Java等 编程语言中任一种语言。
2、(2)自设模拟的情景,但要求至少包括四个进程调度。注意,问题情境最好允 许用户设定。即当程序启动时,应允许用户可以选择不同的调度算法;然后用户 从控制台输入各个进程的信息,进程信息输入完毕后,就开始了进程调度。参考代码如下:(3)认真完成实验报告,同时要求说明模拟的情境、数据结构的使用,程序流 程图或步骤,并给出实验结果分析和实验小结;五、实验仪器与设备(或工具软件)实验设备:计算机一台;六、实验内容参考代码如下#includestdio.h#includestdlib.hvoid dayin();typedef struct PCB/定义进程控制块char num2;/进程号char sta
3、te;/运行状态int tijiaotime;/提交进程时间int starttime;/进程开始时间int finishtime;/结束时间int needtime;/运行需要时间floatroundtime;/周转时间floatweightroundtime; /带权周转时间structPCB *next;/指向下个进程pcb;int time=10000,n;/计时器(假设当前时间)float sumroundtime=0,sumweightroundtime=0,avgroundtime,avgweightroundtime; /定 义全局平均变量。pcb *head=NULL,*p,
4、*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-tijiaotime;p1-weightroundtime=(float)(p1-finishtime-p1-tijiao
5、time)/(float)p1-needt ime;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-weightroundtime=(p1-finishtime-p1-tijiaotime)/(float)p1-needtime;sumround
6、time+=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/n;avgweightroundtime=sumweightroundtime/n;/void spf() /从队首分别取出
7、进程(找到满足条件的最短进程,并执行。)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-needtimeneedtime;/每一次都要修改当前最早时间。 q=p;标记当前未完成的进程flag=1;p=p-next;if(fla
8、g=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()/创建进程int num;printf(n请输入进程个数:);scanf(%d”,&n);printf(n 依次输A%d 个进程:n”,n);
9、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 进程名tt);p=head;while(p!=NULL)printf(%st,p-num);p=p-next;printf(平均)
10、;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);while(p!=NULL)printf(%dt”,p-finishtime);p=p-next;p=head;printf(
11、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();getInfo(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2 周末巧安排 教学设计-2024-2025学年道德与法治二年级上册统编版
- 经营权转让合同模板
- 合同样本商业地产项目投资合作协议书
- 个人向公司借款合同简例
- 1-1《子路、曾皙、冉有、公西华侍坐》教学设计-2024-2025学年高一语文下学期同步教学设计(统编版必修下册)
- Module 3 Unit 9 Great cities of the world(教学设计)-2023-2024学年沪教牛津版(深圳用)英语六年级上册
- 25《慢性子裁缝和急性子顾客》(教学设计)-2023-2024学年统编版语文三年级下册
- 猪舍购销合同范本
- 沉降检测合同范本
- 毛毛新车网合同范本
- 交通运输安全管理整套教学课件
- 水力压裂技术详解334页(PPT 最新技术)_ppt
- 布洛维:拓展个案法
- SolidWorksTopDown设计方法实际应用
- 七年级历史第5课--安史之乱与唐朝衰亡ppt课件
- 户外LED显示屏设计施工方案.docx
- 净土资粮——信愿行(05)第三讲安住在弥陀大愿之海
- 化工车间开停车风险分析
- 市政小三线施工方案(共22页)
- 静压桩机、钻孔灌注桩、沉槽机CAD图形
- 易经(拼音版)
评论
0/150
提交评论