操作系统综合实验报告--作业调度算法模拟(共10页).doc

上传人:飞****2 文档编号:13375785 上传时间:2022-04-29 格式:DOC 页数:10 大小:142.50KB
返回 下载 相关 举报
操作系统综合实验报告--作业调度算法模拟(共10页).doc_第1页
第1页 / 共10页
操作系统综合实验报告--作业调度算法模拟(共10页).doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《操作系统综合实验报告--作业调度算法模拟(共10页).doc》由会员分享,可在线阅读,更多相关《操作系统综合实验报告--作业调度算法模拟(共10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上设计题目作业调度算法模拟小组合作是 ( ) 否( )小组成员张越男一 实验目的:1. 用高级语言编写和调试单道环境下的作业调度的模拟程序,以加深对作业调度的理解。单道环境的特点是被调度的作业占有所有资源。2. 在完成了单道环境的作业调度后,有余力的同学可以完成多道环境下的作业调度,多道的特点是:内存中可以同时存在一道以上的进程,所有进程共享系统资源,这样作业调度过程中还要考虑资源分配情况。3. 通过两种环境下作业调度的模拟,比较两种环境下作业调度的异同,从而达到理解作业调度的功能。二 实验要求:1. 复习作业调度的各种算法的思路;2. 认真完成实验内容,并对代码进行测

2、试;3. 完成实验报告,并于17周周三之前由学习委员按学号整理好提交给任课教师。4. 实验报告要求: 实验目的; 源程序并附注释; 对测试结果进行截图;三 软硬件环境:电脑,配置Vc+6.0等软件环境四 实验内容:为单道批处理系统设计一个作业调度程序,由于单道批处理系统中,作业一投入运行,它就占有计算机的一切资源知道作业完成为止,因此调度作业时不必考虑它所有的资源是否得到满足,它所占用的CPU时限等因素。作业调度算法:先来先服务调度算法(FCFS); 短作业优先算法;最高响应比调度算法; 最高优先级调度算法;输入:每个作业包括数据项,作业调度所需要的数据项:作业名、提交时间、运行时间等。输出:

3、要求打印每个作业完成后该作业的开始运行时间、完成时间、周转时间和平均周转时间。【源程序】#include using namespace std;struct job char name20; /作业名 int subtime; /提交时间 int runtime; /运行时间 int stime; /开始时间 int ftime; /完成时间 int ztime; /周转时间 int wtime; /等待时间 double dtime; /带权周转时间 double rratio; /响应比;int flag=0;double sumztime,sumdtime;double avgztim

4、e,avgdtime;void input(job*p,int n); /输入void output(job*p,int n); /输出void datahandle(job*p,int n); /数据处理void sort(job*p,int n); /按提交时间排序void fcfs(job*p,int n); /先来先服务void sjf(job*p,int n); /短作业优先void hrf(job*p,int n); /最高响应比int main() int n; coutendl; cout/*计算机操作系统综合实验*/endl; cout/*作业调度算法模拟*/endl; co

5、ut/* */endl; cout/*2012年12月18日*/endl; coutn; job*a=new jobn; input(a,n); fcfs(a,n); coutn; sjf(a,n); coutn; hrf(a,n); delete a; return 0;void input(job*p,int n) cout请输入作业信息:endlendl; for(int i=0;in;i+) coutpi.name; coutpi.subtime; pi.subtime=(pi.subtime)/100*60+pi.subtime%100; coutpi.runtime; pi.run

6、time=(pi.runtime)/100*60+pi.runtime%100; coutn; void output(job*p,int n) cout作业调度顺序:; for(int k=0;kn;k+) coutpk.name ; coutn;coutnametsubtimetruntimetstimetftimetztimetdtimetendl; for(int i=0;in;i+)coutpi.nametpi.subtime/60*100+pi.subtime-pi.subtime/60*60t;coutpi.runtime/60*100+pi.runtime-pi.runtime

7、/60*60t;coutpi.stime/60*100+pi.stime-pi.stime/60*60t;coutpi.ftime/60*100+pi.ftime-pi.ftime/60*60t;coutpi.ztime/60*100+pi.ztime-pi.ztime/60*60t;cout(int)pi.dtime/60*100+pi.dtime-(int)pi.dtime)/60*60endl; cout平均周转时间=avgztimeendl; cout平均带权周转时间=avgdtime=1;i-) for(int j=0;jpj+1.subtime) job temp; temp=pj

8、; pj=pj+1; pj+1=temp; void datahandle(job*p,int n) sumztime=sumdtime=0; p0.stime=p0.subtime; p0.ftime=p0.subtime+p0.runtime; for(int i=1;ipi.subtime) pi.stime=pi-1.ftime; pi.ftime=pi-1.ftime+pi.runtime; /*这里要特别小心,刚开始没考虑到下一个的开始时间可能大于上一个的结束时间*/ else pi.stime=pi.subtime; pi.ftime=pi.subtime+pi.runtime;

9、 for(int j=0;jn;j+) pj.ztime=pj.ftime-pj.subtime; pj.dtime=pj.ztime*1.0/pj.runtime*1.0; sumztime+=pj.ztime; sumdtime+=pj.dtime; avgztime=sumztime/n; avgdtime=sumdtime/n;void fcfs(job*p,int n) sort(p,n); datahandle(p,n); cout先来先服务调度算法:endl; output(p,n);void sjf(job*p,int n) sort(p,n); for(int i=0;in-

10、1;i+) int k=0; if(i=0) pi.ftime=pi.subtime+pi.runtime; else pi.ftime=pi.runtime+pi-1.ftime; for(int j=i+1;jn;j+) if(pj.subtime=pi.ftime) k+; double minstime=pi+1.runtime; int ps=i+1; for(int m=i+1;mi+k;m+) if(pm+1.runtimeminstime) minstime=pm+1.runtime; ps=m+1; job temp; temp=pi+1; pi+1=pps; pps=tem

11、p; datahandle(p,n); cout短作业优先算法:endl; output(p,n); void hrf(job*p,int n) sort(p,n); for(int i=0;in-1;i+) int k=0; if(i=0) pi.ftime=pi.subtime+pi.runtime; else pi.ftime=(pi.runtime+pi-1.ftime); for(int j=i+1;jn;j+) if(pj.subtime=pi.ftime) k+; doublemaxrratio=(pi.ftime-pi+1.subtime)/(1.0*pi+1.runtime)

12、; int ps=i+1; for(int m=i+1;m=maxrratio) maxrratio=(pi.ftime-pm+1.subtime)/(1.0*pm+1.runtime);ps=m+1; job temp; temp=pi+1; pi+1=pps; pps=temp; datahandle(p,n); cout最高响应比调度算法:pi.subtime) pi.stime=pi-1.ftime; pi.ftime=pi-1.ftime+pi.runtime;else pi.stime=pi.subtime; pi.ftime=pi.subtime+pi.runtime;所以在写代码之前一定要考虑好各种可能出现的情况。之后,是浮点数和整型数之间的问题。比如,计算带权周转时间的时候必须要(pj.dtime=pj.ztime*1.0/pj.runtime*1.0)乘以1.0!因为runtime,ztime都是整型数。最后,虽然本次实验占用了我很多时间和精力,但完完整整的做出整个实验后还是很替自己高兴。总的来说,收获很多。七. 指导老师评语及得分: 签名: 年 月 日专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁