1、 实实 验验 报报 告告 课程名称课程名称 计算机计算机操作系统操作系统 第 1 页 操作系统操作系统 B B 课程综合性课程综合性实验报告实验报告 开课实验室:开课实验室: 基础七基础七 2011年年 6 月月 10 日日 实验题目 多级反馈队列进程调度算法 一、实验目的 通过对进程调度算法的模拟, 进一步理解进程的基本概念, 加深对进程运行状态和进程调度过程、 调度算法的理解。 二、设备与环境 1. 硬件设备:PC 机一台 2. 软件环境:安装 Windows 操作系统或者 Linux 操作系统,并安装相关的程序开发环境,如 C C+Java 等编程语言环境。 三、实验内容 1.采用 C
2、语言编程实现对 3 个进程采用多级反馈队列进程调度算法进行进程调度执行的模拟 2. 多级反馈队列进程调度算法的原理 (1)设置多个就绪队列,并为各个队列赋予不同的优先级。 (2).当一个新进程到达内存后,首先将它放在第一队列的末尾,按 FCFS 原则排对等待调度 (3)如果某个进程在执行一个时间片后尚未完成,则调度程序便将该进程转入第二队列的末尾, 在同样按 FCFS 的原则等待调度。 (4)仅当第一队列空闲时,调度程序才调度第二队列中的进程执行。 3.每个用来标识进程的进程控制块 PCB可用结构来描述,包括以下字段: (1).进程标识数 id。 (2).进程名称 name。 (3).进程到达
3、时间 time。 (4).进程需要执行的时间 usetime (5).进程就绪队列 Lingarr32, Yiarr32, Erarr32 (6)进程就绪队列的参数表 csb02 csb12 csb22; 根据以上对控制块 PCB 的结构的数据描述,定义如下的数据结构 struct Jc int id; char name15; int time; int usetime; 第 2 页 ; struct Jcb struct Jc *Lingarr32; int csb02; struct Jc *Yiarr32; int csb12; struct Jc *Erarr32; int csb2
4、2; ; (3)程序主要代码及说明 1. 多级反馈队列进程调度算法中,进程采用动态方式输入进程序列 void input(struct Jc *ch) printf(“请输入进程的idn“); scanf(“%d“, printf(“请输入进程的名称n“); scanf(“%s“,ch-name); printf(“请输入进程的到达时间n“); scanf(“%d“, printf(“请输入进程的执行时间n“); scanf(“%d“, printf(“n“); 2.多级反馈队列进程调度算法中,第一级队列采用到达内存时间的先后顺序进行排列。 void LingJi_add(struct Jcb *Jcb,struct Jc *K) int i,j,z; i=Jcb-Csb00; j=Jcb-Csb01; for(z=i;zj;z-) if(K-timeLingarr