ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:120.21KB ,
资源ID:13751533      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13751533.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多级反馈队列Word下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多级反馈队列Word下载.docx

1、通过选做上面的课题,实现OS最基本模块的管理功能,重点放在数据结构设计、文档规范化和程序设计风格。、设计进度及完成情况日 期内 容6.13-6.15选取参考书,查阅有关文献资料,完成课程设计说明书内容1部分。 完成课程设计说明书内容2-4部分6.166.20创建相关数据结构,录入源程序6.216.22调试程序并记录调试中的问题,完成课程设计说明书第5部分。6.23系统测试,演示设计成果,考核成绩。6.24整理课程设计说明书,上午11时,由学习委员交课程设计说明书(计算机科学系9#213或直接交给指导教师)、主要参考文献及资料1 汤子赢等.计算机操作系统(第二版).西安电子科技大学出版社,200

2、6.82 冯耀霖等.操作系统,西安电子科技大学出版社.19923 张尧学等.计算机操作系统教程(第2版).清华大学出版社,2001.44 谭耀铭.操作系统.中国人民大学出版社,2003.45 Abraham Silberschatz,Peter Galvin & Greg Gagne,Applied Operating System Concepts,Higher Education Press,2002、成绩评定:设计成绩: (教师填写)指导老师: (签字)目 录第一章 概述1第二章 系统分析2第三章 系统设计3第四章 程序设计流程图或N-S图4第五章 调试过程中的问题及系统测试情况5第六章

3、 结束语6附录7第一章 概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。计算机操作系统一门重要的专业课,是开发操作系统和软件系统的理论和应用基础。第二章 系统分析很多进程调度方法都有一定的局限性,如短进程优先的调度法,仅照顾了短进程而忽略了长进程,而且如果并未指明进程的长度,则段进程优先和基于进程长度的抢占调度算法,都将无法使用,而多级反馈队列调度算法,则不必事先知道各种进程所需的时间,而且还可以满足各种类型进程的需要,因而它是目前被公认为的一种

4、较好的进程调度算法。在采用多级反馈队列调度算法的系统中,调度算法的实施过程如下:(1) 应设置多个就绪队列,并为各个队列赋予不同的优先级,第一个队列的优先级是最高,第二个队列次之,其余各队列的优先权逐个降低,该算法赋予各个队列中进程执行时间片,例如,第二个队列的时间片要不第一个队列的时间片长一倍,第i+1个队列的时间片要比第i个队列的时间片长一倍。(2) 当一个新进程进入内存后,首先将它放入第一队列的结尾,按FCFS原则排队等待调度,当论到该进程执行时, 如它能在该时间片后内完成,便可准备撤离系统,如果它在一个时间片结束尚未完成,调度程序便将该进程转入第二个队列的结尾,再同样地按FCFS原则等

5、待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三个队列,如此下去,当第一长作业(进程)从第一队列依次降到第n队列后,在第n队列中便采用取按时间片轮转的方式运行。(3) 仅当第一个队列空闲时,调度程序才调度第二个队列中的进程运行,仅当第1(i-1)队列均空闲时,才会调度第I个队列中为某进程服务时,又有新进程进入优先权比较高的队列(第1(i-1)中的任何一个队列),则此时新进程将 抢占在运行进程的处理机,即由调度程序把在运行的进程放回到第I队列的结尾,把处理机分配给新到的高有限权进程。第三章 系统设计实现多级反馈队列的模拟。当一个新进程进入内存后,首先将它放入第一队列的结

6、尾,按FCFS原则排队等待调度,当论到该进程执行时, 如它能在该时间片后内完成,便可准备撤离系统,如果它在一个时间片结束尚未完成,调度程序便将该进程转入第二个队列的结尾,再同样地按FCFS原则等待调度执行;仅当第一个队列空闲时,调度程序才调度第二个队列中的进程运行,仅当第1(i-1)队列均空闲时,才会调度第I个队列中为某进程服务时,又有新进程进入优先权比较高的队列(第1(i-1)中的任何一个队列),则此时新进程将 抢占在运行进程的处理机,即由调度程序把在运行的进程放回到第I队列的结尾,把处理机分配给新到的高有限权进程。至CPU(时间片:)用VB模拟的时候,可以用list来显示进程。第四章 程序

7、设计流程图或N-S图第五章 调试过程中的问题及系统测试情况本系统主要可视的模拟了多级反馈队列的工作过程,多级反馈队列的工作过程如下:第六章 结束语这次操作系统课程设计,在编写过程中,遇到很多难题,特别是在操作系统实验中不曾注意到的问题,也有许多新的问题,在实际反复调试运行中,不断加深了对操作系统的理解,也很大地程度上提高了编程的能力,由于对重要概念的把握程度还不够深入,在实际理解编写时遇到很多不该发生的问题。不过,都很好的解决并牢牢地掌握住了。通过做多级目录文件系统,我知道了多级目录文件系统的工作原理,在打开文件时系统是如何进行操作的,并加深了理解。希望在以后的学习中,继续保持这份昂扬的斗志,

8、继续努力学习计算机方面的知识,永不懈怠。通过这次课程设计,不仅让我了解了多级反馈队列的进程管理系统,更重要的还让我学会了、或者说是验证了“做事一定要有次序和对事物的总体把握”这句话。这次操作系统实习,不仅让我对操作系统这门课程有了更深入的研究、对很多重要的概念有了巩固和掌握,还给了我今后做事的启示。做事要塌实,不能想着一步登天,要有计划,有目的的进行做事。盲目真的不应该再在我们新一代的大学生身上出现了,我们应该认真找到自己的缺点并且及时改正。在这里,我感谢老师的教导。“活到老,学到老”,这也是我整个学习过程中的一次经验、一次总结,我相信它肯定会给我今后的学习有所启示和指导作用。附录:源代码#i

9、nclude stdlib.hstring.htypedef struct node /*进程节点信息*/char name20; /*进程的名字*/int prio; /*进程的优先级*/int round; /*分配CPU的时间片*/int cputime; /*CPU执行时间*/int needtime; /*进程执行所需要的时间*/char state; /*进程的状态,W-就绪态,R-执行态,F-完成态*/int count; /*记录执行的次数*/struct node *next; /*链表指针*/PCB;typedef struct Queue /*多级就绪队列节点信息*/PC

10、B *LinkPCB; /*就绪队列中的进程队列指针*/ /*本就绪队列的优先级*/ /*本就绪队列所分配的时间片*/struct Queue *next; /*指向下一个就绪队列的链表指针*/ReadyQueue;PCB *run=NULL,*finish=NULL; /*定义三个队列,就绪队列,执行队列和完成队列*/ReadyQueue *Head = NULL; /*定义第一个就绪队列*/int num; /*进程个数*/int ReadyNum; /*就绪队列个数*/void Output(); /*进程信息输出函数*/void InsertFinish(PCB *in); /*将进程

11、插入到完成队列尾部*/void InsertPrio(ReadyQueue *in); /*创建就绪队列,规定优先数越小,优先级越低*/void PrioCreate(); /*创建就绪队列输入函数*/void GetFirst(ReadyQueue *queue); /*取得某一个就绪队列中的队头进程*/void InsertLast(PCB *in,ReadyQueue *queue); /*将进程插入到就绪队列尾部*/void ProcessCreate(); /*进程创建函数*/void RoundRun(ReadyQueue *timechip); /*时间片轮转调度算法*/void

12、 MultiDispatch(); /*多级调度算法,每次执行一个时间片*/int main(void)PrioCreate(); /*创建就绪队列*/ProcessCreate();/*创建就绪进程队列*/MultiDispatch();/*算法开始*/Output(); /*输出最终的调度序列*/return 0;void Output()ReadyQueue *print = Head;PCB *p;printf(进程名t优先级t轮数tcpu时间t需要时间t进程状态t计数器n);while(print)if(print -LinkPCB != NULL)p=print -LinkPCB;while(p)%st%dt%dt%dt%dtt%ctt%dn,p-name,p-prio,p-round,p-cputime,p-needtime,p-state,p-count);p = p-next;print = print-p = finish;while(p!=NULL)needt

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1