1、 计算机与通信工程学院计算机与通信工程学院 操作系统操作系统课程设计课程设计 设计题目设计题目 动态优先权算法模拟 专业名称 计算机科学与技术 班级学号 学生姓名 指导教师 设计时间 课程设计任务书课程设计任务书 专业:专业:计算机科学与技术计算机科学与技术 学号学号: 学生姓名(签名) :学生姓名(签名) : 设计题目:设计题目:动态优先权算法模拟动态优先权算法模拟 一、设计实验条件一、设计实验条件 综合楼 808 二、设计任务及要求二、设计任务及要求 模拟单处理机环境下的进程调度模型, 调度采用基于动态优先权的调度算法。 三、设计报告的内容三、设计报告的内容 1. 设计题目与设计任务设计题
2、目与设计任务 设计题目:动态优先权算法模拟 设计任务:模拟单处理机环境下的进程调度模型,调度采用基于动态优先权的调 度算法。 2. 前言(绪论)前言(绪论) 在操作系统中调度算法的实质是一种资源的分配,因而调度算法是指“根据 系统资源分配策略所规定的资源分配算法” 。对于不同的操作系统和系统目标,通 常采用不同的调度算法。 为了照顾紧迫作业,使之在进入系统后便获得优先处理,引入了最高优先权 先调度算法。在作为进程调度算法时,该算法是把处理机分配给就绪队列优先权 最高的进程。这可以分为抢占式优先权算法和非抢占式优先权算法。 对于最高优先权优先调度算法,其关键在于:它是使用静态优先权还是动态 优先
3、权,以及如何确定进程的优先权。本次课程设计所实现的算法就是动态优先 权算法的抢占式优先权调度算法和非抢占式动态优先权算法。 动态优先权拥有其特有的灵活优点,同时,若所有的进程都具有相同的优先 权初值,则显然是最先进入就绪队列的进程,将因其动态优先权变得高而优先获 得处理机,此即 FCFS 算法。若所有的就绪进程具有各不相同优先权初值,那么, 对于优先权初值低的进程,在等待了足够长的时间后,其优先权便可能升为最高, 从而获得处理机。当采用抢占式优先权调度算法时,如果规定当前进程的优先权 以一定速率下降,则可防止一个长作业长期垄断处理机。 这里,我们采用高响应比来决定每个进程的优先权。 3. 设计
4、主体(各部分设计内容、分析、结论等)设计主体(各部分设计内容、分析、结论等) 【设计内容】 动态优先权是指在创建进程时所赋予的优先权,是可以随进程的推进或随其 等待时间的增加而改变的,以便获得更好的调度性能。 非抢占式优先权调度算法。在这种方式下,系统一旦把处理机分配给就绪队 列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某事件 使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。 抢占式优先权算法。系统同样把处理机分配给优先权最高的进程,使之执行。 但在其执行期间,只要又出现了另一个优先权更高的进程,进程调度程序就立即 停止当前进程的执行,重新将进程分配
5、给优先权最高的进程。 在批处理系统中,段作业优先算法是一种比较好的算法,其主要不足之处, 是长作业的运行得不到保证。如果我们为每个作业引入动态优先权,并使作业优 先级随着等待时间的增加而以一定速率提高,则可以解决这个问题。优先权的变 化规律可描述为: 优先权=(等待时间+要求服务时间)/要求服务时间 对优先权计算完毕之后,要能够通过正确的调度函数,完成相应进程的每个 变量的更新,其中等待时间加一,运行进程的 CPU 时间减一,如果这时候运行的 进程结束,则改变其状态并记录完成时间。 【算法分析】 模拟动态优先权算法,在主函数中选择采用抢占式进程调度算法还是非抢占 式进程调度算法,进而调用对应的
6、函数完成模拟。 设置进程结构体, struct PROCESS int id; /进程 id double response_rate; /优先权 int cputime; /要求服务时间 int waittime; /等待时间 int endtime; /进程完成时间,未完成时标记-1 int STATE; /进程当前状态 ; 记录完成的进程 id,使用数组 pro_list10 功能函数 display() 打印各进程当前状态 init() 初始化进程状态 change() 抢占式调度算法进程状态更新 no_change() 非抢占式调度算法进程状态更新 函数调用顺序如图 1: 图 1 函数调用顺序图 main() init() display() change() no_change() end begin 采用高响应比作为进程调度的优先权,其特点如下: (1)如果作业的等待时间相同,则要求服务时间愈短,其优先权愈高,因而该算 法有利于短作业; (2)当服务时