计算机操作系统编程

实验一 进程调度算法模拟,用动态优先数及时间片轮转法
实现进程调度

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个回答  2010-06-16
作业也找人给你答案啊??
建议你搞清楚过程,先写出伪代码,在写c/C++代码。这样才能学到知识。
应付差事不可取啊。
相似回答