C++实现操作系统中进程调度的优先级调度算法和轮转时间片调度算法
操作系统中进程调度是处理及管理的核心内容。 阅读本文,需要有一定的C/C++、数据结构基础。 内容介绍 采用C++编写程序,选用 优先数调度算法 或 简单轮转法 对五个进程进行调度,每个进程处于运行(Run)、就绪(Ready)和完成(Finish)三种状态之一,并假定起始状态为 就绪 状态。 进程控制块结构 进程控制块的链结构 其中: Run——表是当前运行进程指针, Ready——就绪队列头指针 Tail——就绪队列尾指针 Finish——完成队列指针 算法说明 (1) 为了便于处理,程序中进程的运行时间以时间片为单位进行计算,各进程的优先数或轮转时间片数,以及进程需要运行的时间片数,其初始值均有用户给定。 (2) 优先数法 进程就绪队列按优先数大小从高到低排列,链首进程首先投入运行。进程每执行一次,进程需要的时间片数减1、该进程的优先数减3。这样,该进程如果在一个时间片中没有完成,其优先数降低一级。接着仍是用该进程降低一级后的优先数与就绪队列中链首进程的优先数进行比较,如果仍是该进程的优先数高或相同,便让该进程继续执行;否则,调度就绪队列的链首进程投入运行。原运行过的进程按其现行优先数大小插入就绪队列,且改变它们对应的进程状态,一直到所有进程都运行完各自的时间片数。 (3) 简单轮转法 进程就绪队列按各进程进入的先后顺序排列