一、 目的要求
用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。
二、 实习题
编写并调试一个模拟的进程调度程序。采用“轮转法”调度算法对五个进程进行调度。
轮转法可以是简单轮转法,可变时间片轮转法,或多队列轮转法。
简单轮转法的基本思想是:所有就绪进程按FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用的时间片相同,如果运行进程用完它的时间片后还未完成,就把它送回到就绪队列的末尾,把处理机重新分配给队首的进程。直到所有的进程运行完毕。
三、 编程思想
用结构体代表进程,将所有进程构造一个循环链表,逐个进行进程,如果进程的所需运行时间等于该进程已占用的CPU时间,刚该进程运行完毕,从循环链表中删除该节点,继续运行下一个进程,如此循环至所有进程运行完毕为止。
四、 程序数据结构
struct pcb{ char name[10]; /* 进程名 */
char state; /* 进程状态 */
int ntime; /* 完成进程所需时间 */
int rtime; /* 已占用CPU时间 */
struct pcb *link; /* 结构体指针 */
} *ready=NULL,*p;
typedef struct pcb PCB;
1