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

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

ID:18578476

大小:352.00 KB

页数:11页

时间:2018-09-19

操作系统-课程设计报告-处理机调度程序_第1页
操作系统-课程设计报告-处理机调度程序_第2页
操作系统-课程设计报告-处理机调度程序_第3页
操作系统-课程设计报告-处理机调度程序_第4页
操作系统-课程设计报告-处理机调度程序_第5页
资源描述:

《操作系统-课程设计报告-处理机调度程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统课程设计报告学校:广州大学学院:计算机科学与教育软件学院班级:计算机127班课题:处理机调度程序任课老师:陶文正、陈文彬姓名:黄俊鹏学号:1200002111班内序号:27成绩:日期:2015年1月6日一、设计目的在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。二、设计要求1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。2)可选择进程数量3)本程序包

2、括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现)(进程数,运行时间,优先数由随机函数产生)执行,显示结果。三、设计思路及算法思想1.界面菜单选项一级菜单提供2个选项:①自动生成进程数量②手动输入所需进程数量一级菜单选择完毕后进入二级菜单:①重新生成进程②时间片轮转法③短作业优先算法④动态优先级算法⑤退出程序2.调度算法程序所用PCB结构体需要用到的进程结构体如上图所示1)时间片轮转法主要是设置一个当前时间变量,curTime和时间片roundTime。遍历进程组的时候,每运行一个进程,就把curTime+=roundTime。进程已运行时间加roundTime2

3、)短作业优先算法遍历进程组,找到未运行完成并且运行时间最短的进程,让它一次运行完成,如此往复,直到所有进程都运行完成为止。3)动态优先级算法做法跟短作业优先算法类似,此处主要是比较进程的优先数,优先级高者,先执行。直到全部执行完毕。当一个进程运行完毕后,适当增减其余进程的优先数,以达到动态调成优先级的效果。1.程序流程图四、运行截图1)启动后输入5,生成5个进程2)输入1,选择时间片轮转法。自动输出结果,分别是时间片为1和4的结果3)输入2,选择短作业优先算法3)输入3,选择动态优先级算法4)输入0,重新生成进程,再输入3,生成3个进程,选择2.短作业优先算法5)输入q,退出五

4、、心得体会通过这次实验,让我对操作系统的进程调度有了更进一步的了解。这个实验的模拟程度跟真实系统相比只是冰山一角,由此可见操作系统是何其复杂的软件产品,仅进程调度就有那么丰富和内涵的知识需要掌握。但是再复杂的系统,都是由小部件构成的。古语云:不积跬步,无以至千里。不积小流,无以成江海。掌握这些基础的知识,可以为以后打下扎实的基础。六、附录(源代码)////main.c//ProcessDispatch////CreatedbyJeanson1/5/15.//Copyright(c)2015Jeans.Allrightsreserved.//#include#i

5、nclude//最小进程数#defineMIN_PROCESS2//最大进程数#defineMAX_PROCESS20//最小优先数#defineMIN_PRIORITY0//最大优先数#defineMAX_PRIORITY10//最小运行时间#defineMIN_RUNNING_TIME1//最大运行时间#defineMAX_RUNNING_TIME20typedefstructPCB{charname;//进程名intpriority;//优先数intrunningTime;//运行时间intarriveTime;//到达时间intbeginTime;/

6、/开始时间intfinishTime;//完成时间intcyclingTime;//周转时间doubleweigthCyclingTime;//带权周转时间inthadRunTime;//已经运行时间intfinish;//是否完成}PCB;//获取随机数intGetRandomNumber(intmin,intmax){returnarc4random()%(max-min)+min;}//初始化PCB组voidInitPCBGroup(PCBp[],intnum){charname='A';for(inti=0;i

7、priority=GetRandomNumber(MIN_PRIORITY,MAX_PRIORITY);p[i].runningTime=GetRandomNumber(MIN_RUNNING_TIME,MAX_RUNNING_TIME);name++;}}voidPrintResult(PCBp[],intnum){doubleavgCycTime=0,avgWeiCycTime=0;printf("

8、进程名到达时间运行时间开始时间完成时间周转时间带权周转时间优先数

9、");for(in

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。