《操作系统原理》实验报告
实验序号:1 实验项目名称:处理机调度
学 号 姓 名 专业、班
实验地点 文波机房 指导教师 金晶 时间
2011.11.15
一、实验目的
在采用多道程序设计的系统中,往往若干个进程同时处于就绪状态。当就绪进程
个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占有处理器。本实习
模拟在单处理器情况下的处理器调度,加深了解处理器调度的工作。
二、实验设备(环境)及要求
微机、C++
三、实验题目
第二题:设计一个按时间片轮转法实现处理器调度的程序。
[提示]:
(1)假定系统有 5 个进程,每个进程用一个 PCB 来代表。PCB 的格式为:
进程名、指针、要求运行时间、已运行时间、状态。
进程名——Q1~Q5。
指针——按优先数的大小把 5 个进程连成队列,用指针指出下一个进程 PCB 的首地
址。
要求运行时间——假设进程需要运行的单位时间数。
已运行时间——假设进程已运行的单位时间,初始值为 0。
状态——假设两种状态,就绪,用 R 表示,和结束,用 E 表示。初始状态都为就绪状
态。
(2) 每次运行之前,为每个进程任意确定它的“要求运行时间”。
(3) 把 5 个进程按顺序排成循环队列,用指针指出队列连接情况。用一个标志单元记录轮到运
行的进程。处理器调度总是选择标志单元指示的进程运行,对所指的进程,将其“已运行时间”加
1。
(4) 进程运行一次后,若“要求运行时间”等于“已运行时间”,则将状态改为“结束”,退出队列,
否则将它加入队列,继续轮转。
(5) 若就绪队列为空,结束,否则,重复(3)。
四、程序中使用的数据结构及符号说明
(1)定义一个 PCB,其中的成员有进程名、指针、要求运行时间、已运行时间、状态,分别
用 pname、next、ntime、Rtime 表示。
(2) 定义一个输出函数
(3)定义一个处理机调度函数 display(),如果运行指针不空,输出当前正在运行的
PCB,输出就绪队列 PCB;若进程 p 不为空,则输出完成队列的 PCB。
(4)定义一个队列 queue(), 把 5 个进程按顺序排成循环队列。
(5) 函数作用:用于创建进程