




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
作业调度一、 实验名称作业调度算法二、实验目标在单道环境下编写作业调度的模拟程序,以加深对作业调度的理解。单道环境的特点使被调度的作业占有所有的资源。实现的算法有先来先服务,最短作业优先,最高响应比三种作业调度算法。三、实验环境要求:1.PC机。2.Windows;3.CodeBlocks 四、实验基本原理1.本实验设计一个可指定作业个数的作业调度系统。可以输出先来先服务,最短作业优先,最高响应比三种作业调度算法的结果。2.先来先服务就是按照各个作业进入系统的自然次序进行调度。最短作业优先就是优先调度并且处理短作业。最高响应比优先就是根据在程序运行过程中的最高响应比对应的作业先进行调度处理。3.在设计程序过程中,将time相关的内容封装到类中,重载了加减乘除和输入输出以及比较运算符,方便12:00这种形式的数据的加减乘除运算和比较运算, 五、数据结构设计1.时间类class time public:time(int x = 0, int y = 0) time:hour = x;time:minute = y;time& operator = (const time &t1)this-hour=t1.hour;this-minute=t1.minute;return *this;time operator + (time t2)int minutes,hours;minutes = (minute + t2.minute) % 60;hours=hour+t2.hour+ (minute + t2.minute) /60;return time(hours,minutes); time operator -(time t2) int minutes,hours;minutes =minute - t2.minute;if (minute0) minutes += 60;hour-;hours = hour - t2.hour;return time(hours,minutes);friend bool operator (time t1, time t2)if (t1.hour t2.hour) return true;else if(t1.hour=t2.hour)if (t1.minute = t2.minute) return true;return false;friend ostream& operator (ostream& out, const time &t1) return out t1.hour : (istream &in, time &t1) int h, m;scanf(%d:%d, &h,&m);t1.hour = h;t1.minute = m;return in;public:int hour;int minute; 2.作业内容typedef struct JOBchar name20;/Job nametime in_time;int run_time;time st_time;time end_time;int round_time;/周转时间int wait_time;double rounds_time;/带权周转double reson_radio;/响应比job; 六、流程图 七、源代码#include#include#include#includeusing namespace std;class time public:time(int x = 0, int y = 0) time:hour = x;time:minute = y;time& operator = (const time &t1)this-hour=t1.hour;this-minute=t1.minute;return *this;time operator + (time t2)int minutes,hours;minutes = (minute + t2.minute) % 60;hours=hour+t2.hour+ (minute + t2.minute) /60;return time(hours,minutes); time operator -(time t2) int minutes,hours;minutes =minute - t2.minute;if (minute0) minutes += 60;hour-;hours = hour - t2.hour;return time(hours,minutes);friend bool operator (time t1, time t2)if (t1.hour t2.hour) return true;else if(t1.hour=t2.hour)if (t1.minute = t2.minute) return true;return false;friend ostream& operator (ostream& out, const time &t1) return out t1.hour : (istream &in, time &t1) int h, m;scanf(%d:%d, &h,&m);t1.hour = h;t1.minute = m;return in;public:int hour;int minute;typedef struct JOBchar name20;/Job nametime in_time;int run_time;time st_time;time end_time;int round_time;/周转时间int wait_time;double rounds_time;/带权周转double reson_radio;/响应比job;double sum_time;/全部作业周转时间和double sums_time;/全部作业带权周转时间和int n;/job counts/重载 maxtime maxn(time t1, time t2) if(t1.hourt2.hour)return t1;else if(t1.hour=t2.hour)if (t1.minute t2.hour) return t1;return t2;/eg: 120转化成 2:0time m_exchange_h(int run_time) time run;run.hour = run_time / 60;run.minute = run_time % 60;return run;/eg: 2:0 转化成 120int h_exchange_m(time t1) return t1.hour * 60 + t1.minute;/先来先服务;void job_input(job *x) cout 作业t进入时间t估计运行时间(分钟)t开始时间t结束时间t周转时间(分钟)t带权周转时间 endl;for (int i = 0; i n; i+) cout t xi.in_timett xi.run_time ttt xi.st_time ttxi.end_time ttxi.round_time tt xi.rounds_time endl;cout 作业平均周转时间 T= sum_time/n endl;cout 作业平均带权周转时间 T= sums_time / n endl;void FCFS(job *x) sum_time = 0;sums_time = 0;time run = m_exchange_h(x0.run_time);x0.st_time = x0.in_time;x0.end_time = x0.st_time + run;x0.round_time = h_exchange_m(x0.end_time - x0.in_time);sum_time += x0.round_time;x0.rounds_time = x0.round_time*1.0 / x0.run_time;sums_time += x0.rounds_time;for (int i = 1; i n; i+) xi.st_time = maxn(xi.in_time, xi - 1.end_time);xi.end_time = xi.st_time + m_exchange_h(xi.run_time);xi.round_time = h_exchange_m(xi.end_time - xi.in_time);xi.rounds_time = xi.round_time*1.0 / xi.run_time;sum_time += xi.round_time;sums_time += xi.rounds_time;cout n【先来先服务作业调度算法计算结果】n endl;job_input(x);/短作业优先;void SJF(job *x) int flag100000 ;memset(flag, 0, sizeof(flag);sum_time = 0;sums_time = 0;time run = m_exchange_h(x0.run_time);x0.st_time = x0.in_time;x0.end_time = x0.st_time + run;x0.round_time = h_exchange_m(x0.end_time - x0.in_time);sum_time += x0.round_time;x0.rounds_time = x0.round_time*1.0 / x0.run_time;sums_time += x0.rounds_time;int i = 1;/已经运行的程序int e = 0;/上一个运行的程序flag0 = 1;while (i n) int temp = -1;int time_min = 99999999;for (int j = 1; j n; j+) if (xj.in_timexe.end_time&flagj!=1&xj.run_timetime_min) /cout小于:endl;time_min = xj.run_time;temp = j;if (temp != -1) xtemp.st_time = xe.end_time;e = temp;else e+;xe.st_time = xe.in_time;xe.end_time = xe.st_time + m_exchange_h(xe.run_time);xe.round_time = h_exchange_m(xe.end_time - xe.in_time);xe.rounds_time = xe.round_time*1.0 / xe.run_time;sum_time += xe.round_time;sums_time += xe.rounds_time;flage = 1;i+;cout n【短作业优先调度算法计算结果】n endl;job_input(x);/最高响应比优先;void HRN(job *x) int flag100000;memset(flag, 0, sizeof(flag);sum_time = 0;sums_time = 0;time run = m_exchange_h(x0.run_time);x0.st_time = x0.in_time;x0.end_time = x0.st_time + run;x0.round_time = h_exchange_m(x0.end_time - x0.in_time);sum_time += x0.round_time;x0.rounds_time = x0.round_time*1.0 / x0.run_time;sums_time += x0.rounds_time;int i = 1;/已经运行的程序int e = 0;/上一个运行的程序flag0 = 1;while (i n) int temp = -1;double radio_max = 0;for (int j = 1; j n; j+) if (xj.in_time radio_max) temp = j;radio_max=xj.reson_radio;if (temp != -1) xtemp.st_time = xe.end_time;e = temp;else e+;xe.st_time = xe.in_time;xe.end_time = xe.st_time + m_exchange_h(xe.run_time);xe.round_time = h_exchange_m(xe.end_time - xe.in_time);xe.rounds_time = xe.round_time*1.0 / xe.run_time;sum_time
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 先天性性格差异解读
- 心脏医学超声基础
- 蚊虫叮咬药物应对指南
- 2025年卫生院中国医师节知识竞赛题库及答案指导
- 2025年胺基化工艺考试题库附答案
- 学校文化设计解读
- 污染土壤脱附技术
- 挑战杯大学生创业大赛讲解
- 软装绿色方案讲解
- 小学校长述职工作汇报
- 养生茶基础知识培训课件
- 2025年暑假反电信网络诈骗试题及答案
- (完整版)中医适宜技术课件
- 机关、团体、企事业单位消防安全管理规定
- GB/T 20221-2023无压埋地排污、排水用硬聚氯乙烯(PVC-U)管材
- 等速肌力测试单关节或关节链不同运动模式以及运动角速度下的肌力参数
- 学生军训缓训(免训)申请表
- 真石漆施工工艺及要求【实用文档】doc
- 2017-2022年高考英语浙江卷七选五试题真题及答案汇编
- YB/T 117-1997高炉用耐火材料抗渣性试验方法
- GB/T 4744-2013纺织品防水性能的检测和评价静水压法
评论
0/150
提交评论