操作系统-课程计报告-处理机调度程序.docVIP

操作系统-课程计报告-处理机调度程序.doc

  1. 1、本文档共11页,可阅读全部内容。
  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文档。上传文档
查看更多
操作系统 课程设计报告 学校:广州大学 学院:计算机科学与教育软件学院 班级:计算机127班 课题:处理机调度程序 任课老师:陶文正、陈文彬 姓名:黄俊鹏 学号:1200002111 班内序号:27 成绩: 日期:2015年1月6日 一、设计目的 在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。 设计要求 1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。 2)可选择进程数量 3)本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现)(进程数,运行时间,优先数由随机函数产生)执行,显示结果。 程序所用PCB结构体 需要用到的进程结构体如上图所示 时间片轮转法 主要是设置一个当前时间变量,curTime和时间片roundTime。 遍历进程组的时候,每运行一个进程,就把curTime += roundTime。进程已运行时间加roundTime 短作业优先算法 动态优先级算法 输入1,选择时间片轮转法。 自动输出结果,分别是时间片为1和4的结果 输入2,选择短作业优先算法 输入3,选择动态优先级算法 输入0,重新生成进程,再输入3,生成3个进程,选择2.短作业优先算法 输入q,退出 五、心得体会 通过这次实验,让我对操作系统的进程调度有了更进一步的了解。这个实验的模拟程度跟真实系统相比只是冰山一角,由此可见操作系统是何其复杂的软件产品,仅进程调度就有那么丰富和内涵的知识需要掌握。 但是再复杂的系统,都是由小部件构成的。古语云:不积跬步,无以至千里。不积小流,无以成江海。掌握这些基础的知识,可以为以后打下扎实的基础。 六、附录(源代码) // // main.c // ProcessDispatch // // Created by Jeans on 1/5/15. // Copyright (c) 2015 Jeans. All rights reserved. // #include stdio.h #include stdlib.h //最小进程数 #define MIN_PROCESS 2 //最大进程数 #define MAX_PROCESS 20 //最小优先数 #define MIN_PRIORITY 0 //最大优先数 #define MAX_PRIORITY 10 //最小运行时间 #define MIN_RUNNING_TIME 1 //最大运行时间 #define MAX_RUNNING_TIME 20 typedef struct PCB{ char name; //进程名 int priority; //优先数 int runningTime; //运行时间 int arriveTime; //到达时间 int beginTime; //开始时间 int finishTime; //完成时间 int cyclingTime; //周转时间 double weigthCyclingTime; //带权周转时间 int hadRunTime; //已经运行时间 int finish; //是否完成 }PCB; //获取随机数 int GetRandomNumber(int min,int max){ return arc4random()%(max-min) + min; } //初始化PCB组 void InitPCBGroup(PCB p[],int num){ char name = A; for (int i = 0;i num;i++){ p[i].name = name; p[i].priority = GetRandomNumber(MIN_PRIORITY, MAX_PRIORITY); p[i].running

文档评论(0)

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

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

1亿VIP精品文档

相关文档