操作系统设计实验报告
姓 名 Name 代码总行数 Code Lines 1.实验目的 李谦 学 号 Student No. 实验名称 Item 20154983 班 级 Class 152402 处理器调度算法设计实验 处理器管理是操作系统中的重要功能,用来创建进程、撤消进程、实现进程状态转换,它提供了在可运行的进程之间复用CPU的方法。在处理器管理中,进程调度是核心,因为在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态,当就绪进程个数大于处理器数目时,就必须依照某种策略决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,目的是加深对处理器调度工作的理解,掌握不同调度算法的优缺点。 2.实验内容 进程控制块:为了管理和控制进程,系统在创建每一个进程时,都为其开辟一个专用的存储区,用以随时记录它在系统中的动态特性。而当一个进程被撤消时,系统就收回分配给它的存储区。通常,把这一存储区称为该进程的“进程控制块” 进程控制块队列:在多道程序设计环境里,同时会创建多个进程。当计算机系统只有一个CPU时,每次只能让一个进程运行,其他的进程或处于就绪状态,或处于阻塞状态。 进程调度算法:进程调度算法用于确定就绪队列中的哪一个进程即将获得CPU。常用的进程调度算法有先来先服务法、时间片轮转法、优先数法等。 1. 先来先服务调度算法:以到达就绪队列的先后次序为标准来选择占用处理机的进程。 2. 时间片轮转调度算法:为就绪队列中的每一个进程分配一个称为“时间片”的时间段,它是允许该进程运行的时间长度。 3. 优先数调度算法:为每一个进程确定一个优先数,进程就绪队列按照优先数排序。 4. 多级队列调度算法:多级反馈队列调度算法,它是时间片调度算法与优先数调度算法的结合。
1
操作系统设计实验报告
4.运行结果 1.先来先服务调度算法 按拍好的顺序第一个进程执行 上一个进程的时间是否大 于下一个进程的到达时间 下一个进程开始时间 下一个进程的开始时间从上个进程的完成时 从它本身到达时间开始 间开始 2.时间片轮转调度算法 确定时间片大小 空则等待 进 就绪队列为空 行 下 一 N 次 选择队首进程进行 执 执行一个时间片 行 N 该进程运行完成 送到就绪队列末尾 Y
2
操作系统设计实验报告
3.优先数调度算法 就绪队列队首进程加入运动队列 运动队列是否为空 延时1秒,当前运行进程优先数减1、 运行时间加1、还需时间减1 Y 所需时间是否为0 进程状态设为 N 完成,该进程加 Y 就绪队列是否为空 入完成队列,运 行队列设为空 N 就绪队列队首进程的优先 N 数是否大于当前运行进程 就绪对别Y 是否为空 Y 当前运行的进程状态设为就绪,将当前运行的进程插 入就绪队列,将就绪队列的队首进程插入到运行队列 N 就绪队列 队首进程 加入运行 队列中
3
操作系统设计实验报告
4.多级队列调度算法
建立50个进程队列 创建进程 分配进程号 生成进程控制块 按优先级调度一个进程 执行选中进程 修改进程控制块信息, 放入响应队列 4
操作系统设计实验报告
5.上机调试及问题分析 对操作系统的API不熟悉,导致整个试验暂停。 然后就是c语言掌握能力不扎实,出现空指针问题。 6.心得体会及建议 因为我开始接触的是操作系统的理论部分,只在课本和ppt上接触到操作系统,所以不能很好的理解操作系统的一些真实结构,虽然只是模仿个别程序 ,但是我从中明白了操作系统的对进程调度的核心思想。还更好地加深和理解了指针的内层含义,而不是单单地抽象概念。而且C++的程序联系地实在是太少,这同样是一次很好的锻炼。 成 绩 Score 教师签字 日期
5