操作系统程设计说明.docVIP

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

操作系统课程设计 时间:2012-2013学年第二学期第1-2周 班级:软件工程10级本科 设计目的 本课程设计是学习完《操作系统》课程后,进行的一次全面的综合训练加深操作系统基础理论和的理解,加强动手能力。一、 设计目的 3 二、 设计内容 3 三、银行家算法的基本思想 3 (一)死锁 3 (二)系统安全状态 4 (三)银行家算法避免死锁 4 1、银行家算法中的数据结构 4 2、银行家算法 4 3、安全性算法 5 四、系统模块间关系图,流程图 6 五、系统子模块结构图 7 六、输入、输出数据 9 七、源程序及系统文件使用说明 12 (一)源程序 12 (二)系统文件使用说明 25 八、心得体会 26 九、参考文献 26 五、各算法实现说明 进程调度算法设计与实现 要求 选用优先数法和多级反馈队列调度算法对n个进程进行调度。 进程是操作系统最终要的概念之一,进程调度又是操作系统核心的主要内容。本设计要求学生独立的用高级语言编写和调试一个进程调度程序。调度算法包括:优先权调度算法、多级反馈队列调度算法(可设置菜单由用户选择采取何种调度算法,也可添加自行设计的调度算法)。通过本设计加深对于进程调度和各种调度算法的理解,加深理解有关进程控制块、进程队列的概念,并体会和了解优先数和时间片轮转调度算法的具体实施办法。 说明与提示 设计一个有n个进程(可假定系统有五个进程)共行的进程调度程序。每一个进程用一个进程控制块PCB来代表。PCB中应包含下列信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间及进程的状态等,且可按调度算法的不同而增减。各进程的优先数或轮转时间片数,以及进程运行需要地时间片数,均由伪随机数发生器产生。 调度程序应包含2~3种不同的调度算法,运行时可任选一种。 每个进程处于运行R、就绪W和完成F三种状态之一,假定初始状态都为就绪状态W。 系统能显示或打印各进程状态和参数的变化情况。 为便于处理,程序中进程的运行时间以时间片为基本计算单位。 进程控制块PCB的格式为: 进程标识数 链指针 优先数/轮转时间片数 占用CPU时间片数 进程所需时间片数 进程状态 优先数算法:进程就绪链按优先数大小排列,链首首先投入运行。每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,理由是该进程如果在一个时间片中完成不了,优先数应降低一级。接着比较现行进程和就绪链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续运行,否则,调度就绪链的链首进程投入运行。原运行进程再按照其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。 简单轮转法:进程就绪链按各进程进入的先后次序排列,进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相应于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。 进程控制块链结构: RUN HEAD TAIL 1 3 5 ` 2 . . . . . . . . R W W W 其中: RUN ——当前运行进程指针; HEAD——进程就绪链链首指针; TAIL ——进程就绪链链尾指针。 5. 随即函数rand()通常的使用方法:rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。 这样,如果你要产生0~10的10个整数,可以表达为: int N = rand() % 11; 这样,N的值就是一个0~10的随机数,如果要产生1~10,则是这样: int N = 1 + rand() % 11; 总结来说,可以表示为: a + rand() %n ; 其中的a是起始值,n是整数的范围。 若要0~1的小数,则可以先取得0~10的整数,然后均除以10即可得到随机到十分位的10个随机小数,若要得到随机到百分位的随机小数,则需要先得到0~100的10个整数,然后均除以100,其它情况依此类推。 通常rand()产生的随机数在每次运行的时候都是与上一次相同的,这是有意这样设计的,是为了便于程序的调试。若要产生每次不同的随机数,可以使用srand( seed )函数进行随机化,随着seed的不同,就能够产生不同的随机数。此外,还可以包含time.h头文件,然后使用srand( time(0))来使用当前时间使随机数发生

文档评论(0)

linjuanrong + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档