实验一 进程调度算法模拟,用动态优先数及时间片轮转法
实现进程调度
1.内容:设计一个简单的进程调度算法,模拟 OS 中的进程调度过程
2.要求:
① 进程数不少于 5 个;
② 进程调度算法任选;
最好选用动态优先数法,每运行一个时间片优先数减 3
③ 用 C
++
(或 C)语言编程;
④ 程序运行时显示进程调度过程。
3.步骤:
① 设计 PCB 及其数据结构:
进程标识数:ID
进程优先数:PRIORITY(优先数越大,优先级越高)
进程已占用时间片:CPUTIME
进程尚需时间片:ALLTIME(一旦运行完毕,ALLTIME 为 0)
进程队列指针:NEXT,用来将 PCB 排成队列
进程状态:STATE(一般为就绪,不用)
② 设计进程就绪队列及数据结构;
③ 设计进程调度算法,并画出程序流程图;
④ 设计输入数据和输出格式;
结构格式:当前正运行的进程:0
当前就绪队列:2,1,3,4
⑤ 编程上机,验证结果。
4.提示:
假设调度前,系统中有 5 个进程,其初始状态如下:
ID 0 1 2 3 4
可否考虑用
二维数组去
实现
PRIORITY 9 38 30 29 0
CPUTIME 0 0 0 0 0
ALLTIME 3 3 6 3 4
STATE ready ready ready ready ready
① 以时间片为单位调度运行;
② 每次总是从 ALLTIME 中不为 0,且 PRIORITY 最大的进程调度运行一个时间片;
③ 上述进程运行后其优先数减 3,再修改其 CPUTIME 和 ALLTIME,重复②,③
④ 直到所有进程的 ALLTIME 均变为 0。
5.书写实验报告
① 实验题目;
② 程序中所用数据结构及说明;
③ 程序清单及描述;
- 1
- 2
前往页