进程管理和调度的算法实现 一、 实验目的 进程调度是处理机管理的核心内容。本设计要求用高级语言编写和调试一个简单的进程调度程序。通过本实验可以加深理解有关进程控制块、进程队列的概念,并体会和了解优先权调度算法和时间片轮转调度算法的具体实施办法。 二、 实验内容 1. 设计进程控制块 PCB 表结构,分别适用于优先权调度算法和时间片轮转调度算法。 2. PCB 结构包括以下信息:进程名、进程优先数(或轮转时间片),进程所占用的CPU 时间,进程的状态,当前队列指针等。根据调度算法的不同,PCB 结构的内容可以作适当的增删。 3. 建立进程就绪队列。对两种不同算法编制入链子程序。 4. 编制两种进程调度算法:a)优先数调度;b)时间片轮转调度。允许用户在程序运行时选择使用某一种调度算法。 三、 编程工具: C、Java、VC 或其它可视化语言 平台任选 四、 具体设计要求及有关说明 选用优先数算法和简单时间片轮转法对五个进程进行调度,每个进程可有三种状态:运行状态(RUN)、就绪状态(READY)和完成状态。并假定初始状态为就绪状态。 1. 设计进程控制块 PCB 结构如下: NAME //进程标识符; PRIO/ROUND // PRIO 表示进程优先数,ROUND 表示进程轮转时间片大小; CPUTIME //进程占用CPU 时间; COUNT //计数器; NEEDTIME /进程到完成还要的 CPU 时间; STATE //进程的状态; NEXT //链指针 2. 进程控制块链结构如图所示。 其中: … ∧ … … ∧ … ∧ … … … READY FINISH RUN TAIL „ „ RUN——当前运行进程指针; READY——就绪队列头指针; TAIL——就绪队列尾指针; FINISH——完成队列头指针。 为了便于处理,程序中进程的运行时间以时间片为单位计算。各进程的优先数或轮转时间片数以及进程需运行的时间片数的初值均由用户给定。 3. 程序说明: a)在优先数算法中,进程每执行一次,优先数减 3,CPU 时间片数加 1,进程还需要的时间片数减 1。在轮转法中,采用固定时间片,时间片数为 2,进程每执行一次,CPU 时间片数加 2,进程还需要的时间片数减 2,并排到就绪队列的尾上。 b)程序结构说明如下: 整个程序由 CREATE,FIRSTIN,INSERT1,INSERT2,PRINT,PRISCH 和 ROUNDSCH 过程组成。其中: CREATE 的功能是创建新的进程,即创立进程的 PCB,并将此PCB 链入到就绪队列中去。 FIRSTIN 的功能是将就绪队列中...