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

  • 27
  • 0
  • 约7.72千字
  • 约 12页
  • 2019-09-04 发布于湖南
  • 举报

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

操作系统 课程设计报告 学校:广州大学 学院:计算机科学与教育软件学院 班级:计算机127班 课题:处理机调度程序 任课老师:陶文正、陈文彬 姓名:黄俊鹏 学号:1200002111 班内序号:27 成绩: 日期:2015年1月6日 一、设计目的 在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。 二、设计要求 1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。 2)可选择进程数量 3)本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现)(进程数,运行时间,优先数由随机函数产生)执行,显示结果。 三、设计思路及算法思想 界面菜单选项 一级菜单提供2个选项: ① 自动生成进程数量 ② 手动输入所需进程数量 一级菜单选择完毕后进入二级菜单: ① 重新生成进程 ② 时间片轮转法 ③ 短作业优先算法 ④ 动态优先级算法 ⑤ 退出程序 调度算法 程序所用PCB结构体 需要用到的进程结构体如上图所示 时间片轮转法 主要是设置一个当前时间变量,curTime和时间片roundTime。 遍历进程组的时候,每运行一个进程,就把curTime += roundTime。进程已运行时间加roundTime 短作业优先算法 遍历进程组,找到未运行完成并且运行时间最短的进程,让它一次运行完成,如此往复,直到所有进程都运行完成为止。 动态优先级算法 做法跟短作业优先算法类似,此处主要是比较进程的优先数,优先级高者,先执行。直到全部执行完毕。当一个进程运行完毕后,适当增减其余进程的优先数,以达到动态调成优先级的效果。 程序流程图 四、运行截图 1)启动后输入5,生成5个进程 输入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; //是否完成

文档评论(0)

1亿VIP精品文档

相关文档