进程调度算法的模拟实现.docVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

课程设计报告

课程名称:操作系统

信息工程学院

题目: 进程调度算法的模拟实现

一、设计目的

本课程设计是学习完“计算机操作系统”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统根底理论和重要算法的理解,加强学生的动手能力。本课程设计是在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有假设干个,也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以稳固和加深处理机调度的概念。

二、设计内容

〔1〕概述

选择一个调度算法,实现处理机调度。

设计要求:

1〕进程调度算法包括:先来先效劳算法,时间片轮转算法,短进程优先算法,动态优先级算法。

2〕可选择进程数量

3〕本程序包括四种算法,用C或C++语言实现,执行时在主界面选择算法〔可用函数实现〕,进入子页面后输入进程数,〔运行时间,优先数由随机函数产生〕,执行,显示结果。

〔2〕设计原理

〔1〕先来先效劳算法FCFS

每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源创立进程,然后放入就绪队列。

〔2〕时间片轮转法RR

系统将所有的就绪进程按先来先效劳的原那么排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的大小从几ms到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。

(3)短进程优先算法SPF

短进程优先调度算法是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。

〔4A〕动态优先级算法

优先权调度算法是为了照顾紧迫型作业,使之在进入系统后便获得优先处理,引入最高优先权优先调度算法。动态优先权是指在创立进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。

设计思想

首先开辟一个链表空间存放输入的原始作业的数据;然后设计的四种算法分别开辟四个链表空间,以实现不改变输入作业的原始数据就可以同时进行四种算法的调用,以比照四种算法的优劣性。

设计中所包括的函数有:

voidinput();//输入生成HEAD链表函数,用于存放输入作业的所有信息

voidconnect();//连接结点函数

voidmyprintf();//打印我的界面

voidprintftable();//打印作业状态

voidsortFCFS();//先来先效劳复制HEAD并形成先来先效劳的headFCFS链表

voidsortSJF();//短作业优先复制HEAD并形成短作业优先链表headSJF

voidsortHRN();//高响应比函数,包括了执行

voidsortSUPER();//高优先权函数复制HEAD形成headSUPER链表

voidchoose();//功能及算法选择函数

voidexecute(JCB*p);//执行函数

voidcopynode(JCB*p1,JCB*p2);//复制结点函数

voidprintffinish(JCB*p);//打印一个作业完成时的周转时间等统计

JCB*delenode(JCB*ph,JCB*P);//删除并返回结点,用于高响应比算法

Voidprintfall();//打印用过四种算法的周转时间和带权周转时间

Voiddestroy(JCB*P);//销毁函数,释放空间实现重新输入作业

〔3〕详细设计及编码

算法使用流程图

开始

开始

初始化PCB,输入进程信息

初始化PCB,输入进程信息

RR算法,按照时间片依次执行进程,ALLTIME

RR算法,按照时间片依次执行进程,ALLTIME—=4.

SP

SPS算法,按照ALLTIME从小到大依次输出

优先级算法,按照优先从大到小输出,进程执行依次P-3,就绪队列中的进程P+1

优先级算法,按照优先从大到小输出,进程执行依次P-3,就绪队列中的进程P+1

结束

结束

1.先来先效劳算法

对于先到达的进程优先分配CPU,按照先来先效劳的原那么依次执行各进程。

算法:

voidFCFS()

{

文档评论(0)

147****4268 + 关注
实名认证
文档贡献者

认真 负责 是我的态度

1亿VIP精品文档

相关文档