1、 1 操作系统原理 课程设计报告 题目:进程调度算法进程调度算法 课程名称:课程名称:操作系统操作系统 姓姓 名:名: 学学 号:号: 专专 业:业:计算机科学与技术计算机科学与技术 学学 校:校: 指导老师:指导老师: 日日 期:期:2014.3.1 2 目录目录 一一 设计要求设计要求-3 二 设计思想流程设计思想流程-3 三三 数据结构数据结构-5 四 程序清单程序清单-6 五 运行结果运行结果-9 六六 实验体会实验体会-11 七七 设计心得设计心得-12 八八 参考文献参考文献-12 3 进程调度算法进程调度算法 一一.设计要求设计要求 1.编写一个进程调度程序,允许多个进程并行执行
2、。 2.每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息: 进程名、优先数、到达时间、需要运行时间、已用 CPU 时间、进程状态等等。 3.进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产 生) 。进程的到达时间为输入进程的时间。 二设计思想流程设计思想流程 1. 优先权调度模拟流程图 Y N N ready-queue 是否为 输入开始进程数 n Running逐个将 redy_pc 中的 PCB 创建 n 个 PCB并加入 readyqueue 中 阻塞 Running 开始 Running=id 4 Y Y N N Y Y N N Y 优先权调度模拟流程
3、图 将 Running 从 ready_queue 中删除, 再将 running 加入 block_queueb 将其从blick_queuek队列是中删除, 再将其加入ready_queuek 随机 对 block_queue 中的进程 PCB询问是否要唤醒? 创建新进程并加入到 ready_queue 中 处理完了吗 是否要唤醒 是否创建新 PCB Running=idle 更新新进程就绪队列进程优先数,优先数加 1 5 2.按时间片轮转调度模拟流程图 Y N N Y Y N N Y ready-queue 是否为 将 Running 从 ready_queue 中删除, 再将 runn
4、ing 加入 block_queueb 输入开始进程数 n Running逐个将 redy_pc 中的 PCB 创建 n 个 PCB并加入 readyqueue 中 阻塞 Running 是否创建新 PCB Running=idle Running=id 开始 6 Y N N Y Y 时间片轮转调度模拟流程图 三数据结构数据结构 1.进程管理程序调试好后运行进程管理程序 2.优先权调度 (1)输入 1 选择优先权调度算法模拟。 (2)输入开始进程个数 n,创建 n 个 PCB 并加入就绪队列 ready_queue 中。 (3)就绪队列 ready_queue 不为空,调度就绪队列中第一个进程
5、运行,否则,从闲逛队列 idleprocess 中调度闲逛进程运行。 (4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列 block_queue 中,且将该进程 从 ready_queue 中删除。 (5)如果运行时间 CPUtime 大于等于 Alltime,该进程运行完毕,释放该进程;否则插入 将其从 blick_queuek 队列是中删除,再将其加入 ready_queuek 随机 对 block_queue 中的进程 PCB询问是否要唤醒 ? 创建新进程并加入到 ready_queue 中 处理完了吗 是否要唤醒 7 到就绪队列中。 (6)更新就绪队列中的优先级数。 (7)随机对阻塞队列 block_queue 中的进程 PCB 询问是否要唤醒,唤醒,即从唤醒队列中 选择第一个进程,且插入就绪队列中;阻塞队列中没有阻塞进程返回。 (8)重复上述步骤,直到本次调度结束。 3.按时间片轮转调度 (1)输入 2 选择优先权