1、 操作系统操作系统 课 程 设 计 报 告课 程 设 计 报 告 专业专业 计算机科学与技术 学生姓名学生姓名 班级班级 学号学号 指导教师指导教师 完成日期完成日期 1 题 目:题 目:进程调度的模拟实现的模拟实现进程调度的模拟实现的模拟实现 一、一、设计目的设计目的 本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练, 通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理 论和重要算法的理解,加强学生的动手能力。 在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干 个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊 地工作,
2、必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模 拟处理机调度算法,以巩固和加深处理机调度的概念。 二、二、设计内容设计内容 1 1)概述)概述 选择一个调度算法,实现处理机调度。 设计要求: 1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。 2)可选择进程数量 3)本程序包括三种算法,用 C 或 C+语言实现,执行时在主界面选择算法 (可用函数实现) ,进入子页面后输入进程数, (运行时间,优先数由随机函数产 生) ,执行,显示结果。 2 2)设计原理)设计原理 1进程控制块的内容如下: 进程名 进程状态 要求运行时间 优先数 链接指针 其中优先数是赋给进程
3、的优先级 调度时总是选取优先数最大的进程优先运行 2每个进程的优先数,运行时间,由程序任意指定。 3为了调度方便,把进程按给定优先级(动态优先级算法中)从小到大排成 一个队列。按给定运行时间(短作业优先)从小到大排成一个队列用一个变量作 为队首指针,指向队列的第一个进程。 4处理机调度总是选队首进程运行。由于本实验是模拟处理机调度,所以被 选中的进程并不实际的启动运行,而是执行: 2 优先数-1(动态优先级算法中) 要求运行时间-1 来模拟进程的一次运行。 5进程运行一次后,若要求运行时间不等于 0,则再将它加入队列(动态优 先级算法中:按优先数大小插入。 ) ,且改变队首指针:若要求运行时间
4、=0,则把 它的状态改为完成(C)状态,且退出队列。 6若就绪队列不空,则重复上述的 4 和 5,直接所有的进程成为完成状态。 7在所设计的程序中应有显示或打印语句,以显示或打印每次被选中的进程 的进程名以及运行一次后进程队列的变化。 3 3)详细设计)详细设计及编码及编码 1.1. 流程图如下流程图如下 N 开始 初始化 PCB,输入进程信息 各进程按优先数从高到低排列 Y N 就绪队列为空 就绪队列首进程投入运行 时间片到,运行进程已占用 CPU 时间加 1 运行进程已占用CPU时间 已达到所需的运行时间 使运行进程的优先数减 1 把运行 进程插入就绪队列 Y 进程已完成撤销 改进程 结束
5、 3 2.2. 实验分析实验分析 (1)PCB 结构通常包括以下信息:进程名,进程优先数,轮转时间片,进程 已占用的 CPU 时间,进程还需要的 CPU 时间,进程的状态,当前队列指针等。可 根据实验的不同,PCB 结构的内容可以作适当的增删 (2)本程序用两种算法对五个进程进行调度,每个进程可有三个状态:就绪、 执行、完成。并假设初始状态为就绪状态。 (3)为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程 的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 (4)在优先数算法中,优先数可以先取值为一个常数减去进程所需要的时间 片数目,进程每执行一次,优先数减 3
6、,CPU 时间片数加 1,进程还需要的时间 片数减 1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执 行时间片数为已执行了 2 个单位) ,这时,CPU 时间片数加 2,进程还需要的时间 片数减 2,并排列到就绪队列的尾上。 (5)对于遇到优先数一致的情况,采用 FIFO 策略解决。 3.3.概要设计概要设计 (1)本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假 设初始状态为就绪状态。 (2)为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程 的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 (3)在优先数 算法中 ,优先数 的值为 50 与运行 时间的差 值,即 P_TIME-process-needtime。进程每执行一次,优先数减 3,CPU 时间片数加 1, 进程还需要的时间片数减 1。在轮转算法中,采用固定时间片(即:每执行一次 进程,该进程的执行时间片数为已执行了 2 个单位) ,这时,CPU 时间片数加 2, 进程还需要的时间片数减 2,并排列到就绪队列的尾上