优先级作业调度系统实验报告_第1页
优先级作业调度系统实验报告_第2页
优先级作业调度系统实验报告_第3页
优先级作业调度系统实验报告_第4页
优先级作业调度系统实验报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、优先级作业调度系统仿真实验报告课程名称:大规模数据结构实验实验项目名称:优先级作业调度系统仿真学院:计算机科学与技术学院专业:计算机科学与技术教员:刘端阳演讲者:学生编号:班级:目录1.实验内容分析.31.1实验目的.1.2实验要求.1.3设计分析.2.测试验证分析.2.1输入形式和输入值范围.2.2计划能实现什么.2.3测试数据.3.测试和分析.3.1基本问题.3.2技术问题.3.3调试错误4.调试结果分析.4.1程序的运行结果.5.附录.一、实验内容分析:实验目的:Windows、Linux等操作系统支持同时运行多个作业,但由于调度算法不同,作业的执行顺序也不同。通常,操作系统采用优先级作

2、业调度,即操作系统根据作业的长度设置优先级大小,优先级高的作业先执行,优先级低的作业后执行。作业调度的细节描述如下:作业Ji的长度是ti=(si,ei),si是开始时间(进入时间),ei是结束时间(离开时间),ti是完成作业Ji所需的执行时间(单位:秒)。作业调度的基本任务是从作业队列中选择一个来执行,如果没有作业,则执行空操作。优先级作业调度是指每次选择优先级最高的作业。优先级可以用优先级编号来表示(每个作业一个优先级编号pi)。优先级编号越小,优先级越高。当作业Ji进入系统时,即在si时间,系统将其初始优先级编号pi=ti分配给作业,使得较短的作业优先级较高。当作业等待调度执行时,优先级会

3、持续降低。调整公式为pi=pi-wi,其中wi为作业吉的等待时间;wi=当前时间-si。一旦作业被调度,它将总是被执行并且不能被抢占。只有当当前执行的作业完成时,才会生成下一轮计划。因此,有必要在每次调度之前动态调整每个作业的优先级。在每个调度时间,如果存在具有相同优先级的作业,则根据先进先出原则执行调度。实验要求:1.要求自己对堆结构及其相关函数进行编程,从而实现优先级队列。不允许使用标准模板类的堆函数和优先级队列;测试时,需要测试所有情况,并附上测试截图;2.要求采用类的设计思想,不允许类外的函数定义,但允许友函数。主函数中只能调用类的成员函数,不允许调用其他函数。3.需要多文件模式:h文

4、件存储类的声明。cpp文件存储类的实现,而主函数存储在另一个单独的cpp文件中。如果使用了类模板,则类的声明和实现将放在。h文件。4.要求源程序中有相应的注释;5.既不需要类模板,也不需要可视窗口;6.要求测试示例详细,应考虑各种极端情况,测试的输出信息应详细且易于理解,表明每个功能执行正确,包括作业何时进入、何时调度哪个作业、何时离开、每个作业等待多长时间以及优先级的动态变化等。7.调试需要Visual C 6.0及以上版本;设计分析:l类设计Work:用户定义的作业类别。MyHeap:一个用户定义的优先级队列,用于帮助工程类的实现系统:模拟由作业调度系统定义的工程类,并模拟处理作业的过程。

5、类图系统(工程)实施工具工作(操作类)我的堆(优先级队列类)数据类型基本数据结构类的设计;MyHeap(优先级队列):优先级队列是利用用户定义的最小堆来实现的,主要功能包括插入作业、提取和删除最小优先级作业、修改每个作业的优先级等。优先级队列采用模板类。数据成员矢量mh我的堆显示成员函数更新推流行音乐顶端大小空的n MyHeap();/队列的构造函数无效pop();/删除队列头元素并更新队列无效推送(常量数据项);/向队列中添加新项目并更新队列数据顶部();/返回团队领导的元素bool空();/判断队列是否为空n int size();/返回队列中元素的数量无效更新();/将队列中每个项目的优

6、先级降低一无效显示();/显示队列的所有信息作业和工程设计工作(工作类别):int s数据成员工作Int t成员函数Int postream=操作员运算符=整数n int s;/作业进入的时间n int t;/作业的执行时间n int p;/作业的优先级n整数;/作业标签工作();/无参数构造函数工作;/参数构造函数工作操作员-();/自动减速操作过载作业员=(施工员);/分配操作的重载一个朋友牡蛎操作员(牡蛎不在,工作人员a);/输出流过载朋友布尔运算符(常量工作a,常量工作b);/重新定义小于布尔运算符(常量工作a,常量工作b)/重定义小于if(a.p!=b.p)返回a . p b . p

7、;/先按优先级排序,优先级越低返回a . s . b . s。/否则,先输入小的/因为创建了最小的堆,所以队列头的堆具有较小的优先级,并且满足主题的要求系统(工程类):模拟优先作业调度系统的运行过程,设计调试程序代码功能数据成员MyHeap mwmwmwmw工作周。bool正在工作T,结束,尺寸系统运行()n void run();/自动操作项目srand(时间(0);/把时间当成种子。如果不调用这个函数,生成的随机数都是伪随机的,每个程序运行的结果都是一样的int tol=0;/表示作业编号对于(T=0;T从睡眠(500)调用3个函数;/单位是毫秒技术问题1.运营关系规模的设计误解:我认为只需要比较工作的优先级,所以设计不能实现先进先出的原则解决方案:在设计工作规模比较时,优先考虑工作的优先级。如果优先级相同,请根据作业的编号值(即进入系统的顺序)比较大小2.优先级队列的设计困难:1调整节点条件的分析当二叉树只有一个节点时,不需要向下调整因为向下调整操作是一个最小堆,只要调整后的元素小于它的两个子节点,它就可以直接跳出循环在节点比较中没有必要考虑相等性,因为每

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论