1、 操作系统操作系统课程设计课程设计 设计题目设计题目 动态优先权算法模拟 专业名称 计算机科学与技术 班级学号 学生姓名 指导教师 设计时间 2015.01 . 022015.01.15 课程设计任务书课程设计任务书 专业:专业:计算机科学与技术计算机科学与技术 学号学号: 学生姓名:学生姓名: 设计题目:设计题目: 必做题目:动态优先权算法模拟必做题目:动态优先权算法模拟 选做题目:选做题目:Linux 内核分析内核分析 一、设计实验条件一、设计实验条件 实验地点:综合楼 808 语言环境:C 语言 二、设计任务及要求二、设计任务及要求 必做:模拟单处理机环境下的进程调度模型,调度采用基于动
2、态优先权的调度法。 选做:对 Linux操作系统的处理机管理、存储器管理、文件管理、设备管理中一个 或几个功能进行较全面系统分析,分析内容包括设计实现原理、典型算法、主要 实现函数,分析内容写入综述报告,报告内容还要包括函数间调用关系图、功能 模块图、系统主要流程图。 三、三、设计报告的内容设计报告的内容 1. 设计题目与设计任务设计题目与设计任务 必做题目: 设计题目:动态优先权算法模拟 设计任务:模拟单处理机环境下的进程调度模型,调度采用基于动态优先权 的调度算法。 选做题目: 设计题目:Linux 内核分析 设计任务:对 Linux 操作系统的处理机管理、存储器管理、文件管理、设备 管理
3、中一个或几个功能进行较全面系统分析,分析内容包括设计实现原理、典型 算法、主要实现函数,分析内容写入综述报告,报告内容还要包括函数间调用关 系图、功能模块图、系统主要流程图。 2. 前言(绪论)前言(绪论) 通过小组一起合作进行操作系统课程设计,让大家对操作系统的知识学习可 以更深入的理解。通过小组讨论设计方案,让大家学会了团队合作的重要性,并 且通过上机实践,给提高大家上机编程实践能力的一个提供一个很好的机会。 在操作系统中调度算法的实质是一种资源的分配,因而调度算法是指“根据 系统资源分配策略所规定的资源分配算法”。对于不同的操作系统和系统目标, 通常采用不同的调度算法。为了照顾紧迫作业,
4、使之在进入系统后便获得优先处 理,引入了最高优先权先调度算法。在作为进程调度算法时,该算法是把处理机 分配给就绪队列优先权最高的进程。这可以分为抢占式优先权算法和非抢占式优 先权算法。对于最高优先权优先调度算法,其关键在于:它是使用静态优先权还 是动态优先权,以及如何确定进程的优先权。本次课程设计所实现的算法就是动 态优先权算法的抢占式优先权调度算法和非抢占式动态优先权算法。 而在 Linux 内核分析中大家针对操作系统的几个主要功能分工合作,查阅资 料,画图整理,进行汇总,使得大家对 Linux 内核都有了全面系统的认识。 3.设计主体(各部分设计内容、分析、结论等)设计主体(各部分设计内容
5、、分析、结论等) 3.1.必做题:动态优先权算法模拟必做题:动态优先权算法模拟 【设计内容】 动态优先权是指在创建进程之初,先赋予其一个优先级,然后其随进程的推 进或等待时间的增加而改变,以获得更好的调度性能。 非抢占式优先权调度算法。在这种方式下,系统一旦把处理机分配给就绪队 列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某事件 使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。 抢占式优先权算法。系统同样把处理机分配给优先权最高的进程,使之执行。 但在其执行期间,只要又出现了另一个优先权更高的进程,进程调度程序就立即 停止当前进程的执行,重新将进程分
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 【代码实现】 #in