作业调度算法模拟-实验报告.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
作业调度算法模拟-实验报告

作业调度算法模拟 课题内容和要求 常见的作业调度算法有先来先服务算法、最短作业优先算法、响应比优先调度算法。 参考操作系统教材理解这3种算法。 实现这3个算法。 已知若干作业的到达时间和服务时间,用实现的算法计算对该组作业进行调度的平均周转时间和平均带权周转时间。 作业的到达时间和服务时间可以存放在文本文件中。 设计简单的交互界面,演示所设计的功能。(可以使用MFC进行界面的设计) 需求分析 class Job //作业类 { public: int ID; //作业编号 Time enter; //进入时间 int requesttime; //估计运行时间 int priority; //优先数 Time start; //开始时间 Time end; //结束时间 int Ttime; //周转时间 double WTtime; //带权周转时间 }; 这个模块是设计作业结构(本程序是用的类Job)包括作业编号,进入时间,估计运行时间,优先数,开始时间,结束时间,周转时间,带权周转时间等。 class schedule //调度类 { private: int size; //作业数 Job *job; //作业数组 int *r; //排序用数组 int Differ(Time t1,Time t2) //求两个时刻间的时间差 { int borrow = (t2.minute<t1.minute) ? 1 : 0; return ((t2.hour-t1.hour-borrow)*60+(borrow*60+t2.minute-t1.minute)); } 这个模块是调度结构本程序为类scheduleb包括作业数,作业数组,排序用数组。 void FCFS() //先来先服务(First Come First Serve) 这个模块模拟实现算法先来先服务(FCFS)是按照各个作业进入系统的自然次序来调度算法。按照作业提交的先后次序分派CPU,当前作业或进程占用CPU,知道执行完成或阻塞,才出让CPU。在作业或进程被唤醒后,并不立即恢复执行,通常等到当前作业或进程出让CPU。 void SJF() //短作业优先(Shortest Job First) 这个模块模拟实现短作业优先,按照作业运行时间从低到高排序,优先处理短作业。所谓的短作业并不是指物理作业的长短,而是作业的运行时间短。 void HPF() //基于<外部>优先数(Highest Priority First) 这个模块模拟实现优先调度并处理优先数最高的作业。本程序仅针对外部优先数,即用户规定优先数。 void HRN() //最高响应比优先(Highest Response_ratio Next) 这个模块模拟实现优先处理并处理响应比最高的作业。要通过一个循环找到一个响应比响应比较高的作业。R=作业周转时间/作业处理时间。 概要设计 否 是 此程序设计作业结构(本程序为类Job),包括作业编码、进入时间、估计运行时间、优先数、开始时间、结束时间、周转时间和带权周转时间等;调度结构(本程序为类schedule),包括作业数、作业数组以及排序用的数组等。 模拟实现作业调度算法,包括:FCFS(先来先服务算法)、SJF(短作业优先算法)、HRN(最高响应比优先算法)、HPF(基于优先数调度算法)。 详细设计 #include <iostream> #include <fstream> #include <iomanip> using namespace std; const int defMaxJobNumber = 10; //作业数量的最大值 class Time //时间类 { public: int hour; int minute; }; void show() //输出计算结果 { double averageTime=0.0, //平均周转时间 wAverageTime=0.0; //带权平均周转时间 cout<<"编号 进入时间 运行时间 优先数 开始时间 结束时间 周转时间 带权周转时间"<<endl; for(int i=0;i<size;i++) { cout<<setw(4)<<job[i].ID<<setw(7)<<job[i].en

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档