1、操作系统 课程设计报告 XX 大学 计算机科学与教育软件学院 计算机系 12 级计算机专业*班 2015 年 1 月 8 日 一、设计目的一、设计目的 学习完操作系统课程后,进行的一次全面的综合训练,通过课程设计,让更好地掌握操作系统的原理及 实现方法,加深对操作系统基础理论和重要算法的理解,加强动手能力。 二、设计要求二、设计要求 从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:两人一组,每组从所给题目中任选一个 (如自拟题目,需经指导教师同意) ,每个学生必须独立完成课程设计,不能相互抄袭,同组者文档不能相同; 设计完成后,将所完成的工作交由指导教师检查;要求写出一份详细的设计
2、报告。 三、设计内容三、设计内容 课题、处理机调度程序:选择一个调度算法,实现处理机调度。 设计目的:在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的 进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理 机。要求设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。 四、四、设计要求设计要求 1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。 2)可选择进程数量 3)本程序包括三种算法,用 C 语言实现,执行时在主界面选择算法(可用函数实现) (进程数,运行时间,优先 数由随机函数产生)执
3、行,显示结果。 五、五、设计思路及算法思想设计思路及算法思想 1、建立循环链建立循环链。节点情况如下:节点情况如下: struct pcb char id; /进程标识数 int arrive_time; /进程的到达时间 int run_time; /进程运行时间 int priority; /进程优先级数 int finish_time; /进程完成时间 int cycling_time; /进程周转时间 float right_cycling_time;/带权周转时间 int backup_run_time; /备份进程运行时间 int back_priority; /备份进程优先级数
4、struct pcb *next; ; 注:进程运行在具体调度算法里会改变(减到零) ,在输出时需要数出运行时间所以要备份。优先级数同理。 2、通过循环链循环输出,按具体的算法输出响应的节点。、通过循环链循环输出,按具体的算法输出响应的节点。 1)程序的总体结构如下图 1.0 创建(进程)循环链,初始化循环链(输入进程的相关信息) ,选择进程调度算法退出,执行所选择的调度 算法(输出调度结果) ,销毁循环链。 开始 时 间 片 轮 转 算 法 退出0 结束 继续1 短 作 业 优 先 算 法 动 态 优 先 级 算 法 选择1 选择3 选择2 创建(进程)循环链 算法选择 继续0 销毁循环链
5、图 1.0 2)设计实现算法的主要思想如下图 1.1 设置控制循环条件,进程运行时间不为零,执行进程,该进程运行时间减一(短作业优先法的进程运行时间 减至零) ,控制条件清零,指向下一进程,该进程运行时间为零,控制条件加一。 执行进程 开始 当前进程运行时间减1 指向下一进程 运行时间不为0 控制条件加1运行时间为0 结束 控制条件加置0 控制条件到=进程数 控制条件到!=进程数 控制条件置1 图 1.1 2.1)时间片轮转算法详细设计如下图 1.2 进程循环占用时间片,当运行时间为 0 退出循环。 执行进程 开始 当前进程运行时间减1 指向下一进程 运行时间不为0 控制条件加1运行时间为0
6、结束 控制条件加置0 控制条件到=进程数 控制条件到!=进程数 控制条件置1 计时器置1 进程结束 时间=计时器 计时器加1 运行时间为0 运行时间不为0 图 1.2 2.2)动态优先法详细设计如下图 1.3 优先级最高的进程用完一个时间片,运行时间减 1,优先级加 1,再执行优先级最高的进程。 执行进程 开始 当前进程运行时间减1 指向下一进程 运行时间不为0 控制条件加1运行时间为0 结束 控制条件加置0 控制条件到=进程数 控制条件到!=进程数 控制条件置1 计时器置1 计时器加1 循环查找优先级最高(值最小, 运行时间不为0)的进程 优先级数加1 进程结束时 间=计时器-1 运行时间为0 运行时间不为0 图 1.3 2.3)短作业优先法详细设计如下图 1.4 运行时间最短的进程先执行完,再执行下一个运行时间最短的进程。 执行进程 开始 当前进程运行时间减1 指向下一进程 运行时间不为0 控制条件加1运行时间为0