操作系统实验-进程调度程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称:实验项目:实验地点:
专业班级:学生姓名:指导教师:
本科实验报告
操作系统B
进程调度程序设计
学号:2011 年11 月
目录
进程调度程序设计
一、实验目的和要求 (1)
二、实验内容及原理 (1)
三、实验仪器设备 (3)
四、操作方法与实验步骤 (3)
五、实验数据记录和处理 (3)
六、实验结果与分析 (10)
七、实验感想 (11)
实验二
一、实验目的和要求
(一) 目的
进程调度程序设计
进程是操作系统最重要的概念之一,进程调度是操作系统的主要内容,本实验要求 学生独立地用高级语言编写一个进程调度程序,调度算法可任意选择或自行设计,本实验 可使学生加深对进程调度和各种调度算法的理解。
(二) 要求
1. 设计一个有几个进程并发执行的进程调度程序,每个进程由一个进程控制块(PCB) 表示,进程控制块通常应包括下述信息:进程名,进程优先数,进程需要运行的时间,占 用 CPU 的时间以及进程的状态等,且可按照调度算法的不同而增删。
2. 调度程序应包含 2—3 种不同的调度算法,运行时可以任选一种,以利于各种方法 的分析和比较。
3. 系统应能显示或打印各进程状态和参数的变化情况,便于观察。
二、实验内容及原理
1. 本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行 R(run)、就绪 W(wait)和完成 F(finish)三种状态之一,并假定起始状态都是就绪状态 W 。
为了便于处理,程序中进程的运行时间以时间片为单位计算。各进程的优先数或轮 转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。
进程控制块结构如表 2-1 所示:
表 2-1
PCB
进程控制块链结构如图 2-1 所示:
图 2-1
进程控制块链结构
其中:RUN —当前运行进程指针;
进程标识符 链指针 优先数/轮转时间片数 占用 CPU 时间片数 进程所需时间片数
进程状态
HEAD —进程就绪链链首指针; TAIL —进程就绪链链尾指针。 2. 算法与框图
priority
程序框图如图 2-2 所示。
开始
alog=priority/round robin?
进程时 间片数 为 0?
优先数 大于链 首进程?
占用处 理机时 间片到?
进程时 间片数 为 0?
进程队列空?
是 结束
进程队列空?
结束
图 2-2
进程调度框图
(1)优先数法。 进程就绪链按优先数大小从大到小排列,链首进程首先投入运行。每 过一个时间片,运行进程所需运行的时间片数减 1,说明它已运行了一个时间片,优先数也 减 3。理由是该进程如果在一个时间片中完成不了,优先级应降低一级。接着比较现行进程 和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续运行,否则, 调度就绪链链首进程投入运行。原运行进程再按其优先数大小插入就绪链,且改变它们对应 的进程状态,直至所有进程都运行完各自的时间片数。
(2)简单轮转法。 进程就绪链按各进程进入的先后次序排列,链首进程首先投入运行。 进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相 输入调度算法 alog
从链首取一个
进程投入运行
时间片到,进程时间片 数减 1,优先数减 3
运行进程退出, 排到进程链尾部
撤消该进程 生成并按进入次序 排列进程控制块链 链首进程投入运行
时间片到,进程时间片数 减 1,占用 CPU 时间加 1
撤消该进程 运行进程退出,按 优先数插入进程链
从链首取一个 进程投入运行
是
是 是 否
否
否
否
否
是 round robin
否
是
生成并按优先数大小 排列进程控制块链 链首进程投入运行
应于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加 1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。
三、实验仪器设备
微型计算机。C++6.0编程软件
四、操作方法与实验步骤
1.编写源程序
2.编译运行,查看结果
五、实验数据记录和处理
优先权调度算法:
1.设定系统中有五个进程,每一个进程用一个进程控制块(PCB)表示,进程
队列采用链表数据结构。
2.进程控制块包含如下信息:进程名、优先数、需要运行时间、已用CPU时间、
进程状态等等。
3.在每次运行设计的处理调度程序之前,由终端输入五个进程的“优先数”和
“要求运行时间”。
4.进程的优先数及需要的运行时间人为地指定.进程的运行时间以时间片为单位
进行计算。
5.采用优先权调度算法,将五个进程按给定的优先数从大到小连成就绪队列。
用头指针指出队列首进程,队列采用链表结构。
6.处理机调度总是选队列首进程运行。采用动态优先数办法,进程每运行一次
优先数减“1”,同时将已运行时间加“1”。
7.进程运行一次后,若要求运行时间不等于已运行时间,则再将它加入就绪队
列;否则将其状态置为“结束”,且退出就绪队列。
8.“就绪”状态的进程队列不为空,则重复上面6,7步骤,直到所有进程都成
为“结束”状态。
9.在设计的程序中有输入语句,输入5个进程的“优先数”和“要求运行时间”,也有显示或打印语句,能显示或打印每次被选中进程的进程名、运行一次后队列的变化,以及结束进程的进程名。
10、最后,为五个进程任意确定一组“优先数”和“要求运行时间”,运行并调
试所设计的程序,显示或打印出逐次被选中进程的进程名及其进程控制块的动
态变化过程。
简单时间片轮转法:
1.设系统有5个进程,每个进程用一个进程控制块PCB来代表。
2.为每个进程任意确定一个要求运行时间。
3.按照进程输入的先后顺序排成一个队列。再设一个队首指针指向第一个到达
进程的首址。
4.执行处理机调度时,开始选择队首的第一个进程运行。另外,再设一个当前