进程调度算法实验报告

上传人:m**** 文档编号:474284196 上传时间:2023-02-17 格式:DOCX 页数:12 大小:62.19KB
返回 下载 相关 举报
进程调度算法实验报告_第1页
第1页 / 共12页
进程调度算法实验报告_第2页
第2页 / 共12页
进程调度算法实验报告_第3页
第3页 / 共12页
进程调度算法实验报告_第4页
第4页 / 共12页
进程调度算法实验报告_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《进程调度算法实验报告》由会员分享,可在线阅读,更多相关《进程调度算法实验报告(12页珍藏版)》请在金锄头文库上搜索。

1、作业调度一、实验名称作业调度算法二、实验目标在单道环境下编写作业调度的模拟程序,以加深对作业调度的理解。单道环境的特点使 被调度的作业占有所有的资源。实现的算法有先来先服务,最短作业优先,最高响应比三种 作业调度算法。三、实验环境要求:1. PC 机。2. Windows;3. CodeBlocks四、实验基本原理1.本实验设计一个可指定作业个数的作业调度系统。可以输出先来先服务,最短作业优先,最高响应比三种作业调度算法的结果。2.先来先服务就是按照各个作业进入系统的自然次序进行调度。最短作业优 先就是优先调度并且处理短作业。最高响应比优先就是根据在程序运行过程中的 最高响应比对应的作业先进行

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;min

3、utes = (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

4、 (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;

5、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 #include using namespace std; class time public:time(int x = 0, int y = 0) t

6、ime: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

7、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 (o

8、stream& 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 ro

9、unds_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

10、;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 xi.name txi.in_timett xi.run_time tttxi.st_ti

11、me 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

12、.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

13、.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;/已经运

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

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号