版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生实习报告课程名称_数据结构与数据处理应用训练题目名称_多级反馈队列调度算法的实现_学生学院计算机与计算科学专业班级学 号学生姓名指导教师2012年2月16日多级反馈队列调度算法的实现【摘要】多级反馈队列调度算法是操作系统中CPU处理机调度算法之一,该算法既能使高优先级的进程(任务)得到响应又能使短进程(任务)迅速完成。UNIX操作系统便采取这种算法 ,而本次试验就是试用 C语言模拟某多级反馈队列调度算法。本次试验中前三级就绪队列采用时间片轮转法,时间片大小分别为 2、4和8,最后一级就绪队列采用 FIFO调度,将任务进入多级队列进行模拟,任务从优先级高的队列到优先级地的队列的顺序逐一进入,
2、还用了算法支持抢占式,最后完成模拟,得到各个任务先后完成的顺序,还 有得到各个任务的响应时间、离开时间、周转时间。【关键词】队列 优先级任务时间1内容与要求【内容】多级反馈队列调度算法是操作系统中CPU处理机调度算法之一,该算法既能使高优先级的进程(任务)得到响应又能使短进程(任务)迅速完成。UNIX操作系统便采取这种算法,本次试验就是试用C语言模拟某多级反馈队列调度算法,通过输入任务号、到达时间、运行时间,求出任务完成的先后顺序以及 各个任务的响应时间、离开时间、周转时间。【要求】多级反馈队列调度算法描述:1、该调度算法设置四级就绪队列:前三级就绪队列采用时间片轮转法,时间片大小分别为 2、
3、4和8 ;最后一级就绪队列采用 FIFO调度。2、任务在进入待调度的队列等待时,首先进入优先级最高的队列等待。3、首先调度优先级高的队列中的任务。若高优先级中队列中已没有调度的任务,则调度次优先级队 列中的任务,依次类推。4、对于同一个队列中的各个任务,按照队列指定调度方法调度。每次任务调度执行后,若没有完成 任务,就被降到下一个低优先级队列中。5、 在低优先级的队列中的任务在运行时,又有新到达的任务,CPU马上分配给新到达的任务。(与原来的题目不同,原题是在低优先级的队列中的任务在运行时,又有新到达的任务时,要在运行完这个 时间片后, CPU 马上分配给新到达的任务,而本题不需要在运行完这个
4、时间片,即正在进行的任务立刻 停止,CPU马上分配给新到达的任务)6、为方便实现, 时间以 1 为单位, 用整数数据表示; 且每个时间点, 最多只有一个任务请求服务 输入)。2 总体设计2.1 算法总体思路: 这是建立在一个时间轴上的,即时刻,一个一个时刻(时间点)进行。2.1.1 主函数思路:先初始化所有队列,再输入任务个数,如果输入个数为0,则重新输入,然后输入各个任务的信息,即任务号、到达时间、运行时间,再当时刻到任务的到达时间时,就创建任务,然后运行任务,时刻自动 加1 ,创建任务与运行任务进行循环,直到所有任务进行完或所有队列为空才跳出循环,最后清空所有队 列。2.1.2 功能函数思
5、路:void create(LinkQueue* x,Job job) :使任务的已运行时间为0,再使任务进入第一个队列。void function(LinkQueue* x, int timing):四个队列从第一个到第四个,即从最高优先级开始,任务在列中逐个进行,根据任务是否为第一次执行,求出响应时间,任务完成时,求出离开时间和周转时间输出 信息,在前 3 个队列,如果任务刚完成一个就绪队列的时间片,就降低优先级,使任务进入下一个队列。2.2 功能模块介绍:void main () 函数功能:主函数 void InitQueue(LinkQueue& HQ) :队列的初始化 void En
6、Queue(LinkQueue& HQ,ElemType item) 函数功能:向队列中插入一个元素ElemType OutQueue(LinkQueue& HQ) 函数功能:从队列中删除一个元素ElemType *PeekQueue(LinkQueue& HQ) 函数功能:读取队首元素 bool EmptyQueue(LinkQueue& HQ) 函数功能:检查队列是否为空注:4 个队void ClearQueue(LinkQueue& HQ) 函数功能:清除链队中的所有元素,使之变为空队 void create(LinkQueue* x,Job job)函数功能:创建任务。void fun
7、ction(LinkQueue* x, int timing) 函数功能:任务运行。2.3 输入输出 输入:任务号到达时间 运行时间输出:任务号响应时间 离开时间 周转时间、2.4 文件介绍main.cpp: 主函数的存放,功能函数的调用。queue.h:队列的各个基本功能函数,任务的创建函数与运行函数。3 详细设计3.1 存储结构描述struct Job intjobnum;/任务号intarrivetime;/到达时间intburst;/运行时间intretime;/响应时间intleavetime;/离开时间introundtime;/周转时间intruntime;/已运行时间;/ 任务
8、的存储结构typedef Job ElemType;/ 任务的类型定义struct LNodeElemType data;/ 值域LNode* next;/ 链接指针域;struct LinkQueueLNode* front;/ 队首指针LNode* rear;/ 队尾指针;3.2 参数说明timing 是时刻,时间轴;Job *jobing :任务数组(动态分配) int leatime4;/ 时间片大小 到达时间:任务请求的时刻 运行时间:任务运行完需要的时间 响应时间:任务从到达时间到任务第一次执行的时间差 周转时间:任务从开始请求(到达时间)到任务完成离开的时间 已运行时间:任务已运
9、行的时间离开时间:任务运行完后离开队列的时刻3.3 具体算法void InitQueue(LinkQueue& HQ) 算法:队首队尾设置为空。void EnQueue(LinkQueue& HQ,ElemType item)算法:得到一个新结点,把 item 的值赋给新结点的值域,再把新结点的指针域置空,若链队为空,则新结 点既是队首又是队尾,若链队非空,则新结点被链接到队尾并修改队尾指针。ElemType OutQueue(LinkQueue& HQ) 算法:若链队为空则中止运行,暂存队首元素以便返回,暂存队首指针以便收回队首节点,使队首指针指 向下一个结点,若删除后链队为空,则使队尾指针
10、为空,然后回收原队首节点,返回被删除的队首元素。ElemType *PeekQueue(LinkQueue& HQ) 算法:若链队为空则中止运行,返回队首元素指针(Job* )。bool EmptyQueue(LinkQueue& HQ) 算法:判断队首或队尾任一个指针是否为空即可。void ClearQueue(LinkQueue& HQ)算法:队首指针赋给 P,依次删除队列中的每个结点,然后循环结束后队首指针已经变空,置队尾指针为 空。void create(LinkQueue* x,Job job)算法:使任务的已运行时间为0,再使任务进入第一个队列。void function(Link
11、Queue* x, int timing)算法:将 4 个队列设为循环,从第一个队列开始到第四个队列逐个进行以下操作。判断队列是否为空,当 队列不为空时,则继续,若该队列的已运行时间为1 并且时刻已等于或大于任务的到达时间,即判断任务是否为第一次执行, 若是, 求出任务响应时间 =当前时刻 -任务到达时间, 即发出请求到任务开始的时间差。 如果运行完,求出任务离开时间 =当前时刻 +1,周转时间 =离开时间 - 到达时间,输出任务信息,再判断该 任务是否完成该队列的时间片,若是,则降低优先级,任务进入下一级队列。所有队列遍历完,任务均完 成,循环结束。4 程序测试测试一:测试数据:1 0 82
12、 6 43 9 12测试二: 测试数据:2 5 43 7 134 12 9测试三:当输入错误,输入任务个数是0,重新输入测试数据:1 0 72 5 43 7 134 12 9 测试四: 测试数据:1 1 52 4 2 测试五: 测试数据:1 2 82 3 23 7 54 9 105 14 6 选作(同个时间点多个任务请求) 测试六:测试数据:1 2 32 2 43 6 94 6 75 总结这次实验用了多级反馈队列调度算法 , 这个算法我们没有学过,所以理解有点困难,但是,这个算 法中涉及到了队列,它是队列的升级,是多级队列,因此,我在此不仅学到了新的知识,还是对数据结构 中队列部分的熟悉与加深
13、,更好的掌握了队列知识。这次实验我的题目与原题有点差别,在低优先级的队列中的任务在运行时,又有新到达的任务,那么在运行完这个时间片后, 即算法支持抢占式,但我的程序确是在新到达的任务,那么这个任务立即中止, 任务,我觉得这样更好。CPU马上分配给新到达的任务,CPU 马上分配给新到达的当然,这次编程中遇到过许多困难,比如存储结构顺序的错误,又比如 *PeekQueue(LinkQueue& HQ) ,这是与队列的原基础功能函数有所区别, 我原来返回的是元素,后来经过调试,错误提示,才改正确等等。ElemType它需要的是返回元素指针 (Job*),多级反馈队列调度算法是操作系统中CPU 处理机
14、调度算法之一, 该算法既能使高优先级的进程 (任务)得到响应又能使短进程(任务)迅速完成。 UNIX 操作系统便采取这种算法。现实中,我们在计算机中打 开各种程序,就是多级反馈队列调度算法的应用,这次是我们对操作系统操作的模拟,与实际相联系,增 加了趣味性。这次是我们第一次接触操作系统,对操作系统原理有了一定的了解,为我们将来学习操作系统打下了 基础。参考文献数据结构实用教程附录main.cpp#include#include#include#include queue.hvoid main ()LinkQueue* x;int n,i;int timing=0;/ 时刻Job *jobing
15、;/任务数组(动态分配)x = (LinkQueue*)malloc(sizeof(LinkQueue)*5);for(i=1; i=4; i+)/初始化所有队列InitQueue(xi);cout 请输入任务个数: n;if(n=0)cout 没有任务,请重新输入 n;jobing = new Jobn;/动态空间分配cout 请输入各个任务信息: endl;cout 任务号 到达时间 运行时间 endl;for(i=0;ijobingi.jobnumjobingi.arrivetimejobingi.burst;i=0;while(i!=n|!(EmptyQueue(x1)&EmptyQu
16、eue(x2)& EmptyQueue(x3)& EmptyQueue(x4)while(timing=jobingi.arrivetime)create(x,jobingi);/ 创建任务 i+;function(x,timing);/ 任务运行 timing+;for(i=1; idata=item; newptr-next=NULL;if (HQ.rear=NULL)HQ.front=HQ.rear=newptr;elseHQ.rear=HQ.rear-next=newptr;ElemType OutQueue(LinkQueue& HQ)if (HQ.front=NULL) cerrQ
17、ueue NULL.data;LNode* p=HQ.front; HQ.front=p-next;if (HQ.front=NULL) HQ.rear=NULL;delete p;return temp;ElemType *PeekQueue(LinkQueue& HQ)endl;exit(1);if (HQ.front=NULL) cerrdata;bool EmptyQueue(LinkQueue& HQ)return HQ.front=NULL;void ClearQueue(LinkQueue& HQ)LNode* p=HQ.front; while(p!=NULL) HQ.front=HQ.front-next; delete p;p=HQ.front;HQ.rear=NULL;void function(LinkQueue* x, int timing)/ 任务运行int leatime4;/ 时间片的大小 leatime0=0;leatime1=2;leatime2=6; leatime3=14; Job *t=NULL;int i=1;while(iruntime+;/ 已运行时间 +1 if(t-runtime=1&timing=t-arrivetime) t-retime=timing - t-arrivetime;if(t-runt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 包装卫生材料的防水透气性和紫外线辐射性鉴定考核试卷
- 福州房产转让合同起草与审核
- 供水厂改造评审案例
- 文化产业项目招投标
- 医疗机构市场营销与市场调研
- 环保行业质量奖评选
- 短视频编剧合作合同样本
- 辽阳市物业应急预案编制
- 眼镜连锁店前台聘用协议
- 拆迁工程班组施工协议
- 【课件】Unit4Readingforwriting课件高中英语人教版(2019)必修第二册
- 一年级海洋教育教案
- 分布函数(课堂PPT)
- 聚氨酯硬泡沫配方及计算
- 国家开放大学电大《物流信息系统管理》期末题库及答案
- 中国联通M2M UICC卡技术规范
- 田径运动会的编排和记录
- 反歧视、反骚扰、反强迫管理程序
- 质控图与质控规则
- 小学科学月相变化(课堂PPT)
- 220KV变电站工程标准化工艺施工实施细则DOC
评论
0/150
提交评论