进程调度功能的设计与实现 一、实验目的 a.编程实现模拟操作系统进程调度子系统的基本功能;理解进程调度的概念,通过课程设计深入了解进程控制块的功能、进程的创建、删除以及进程各个状态间的转换过程;实现先来先服务、时间片轮转、多级反馈轮转法对进程进行的调度过程;通过观察有关的队列结构的内容的动态变化过程深入体会各个调度算法的特点;从而能够更好的巩固从书本上学到的知识。 b.编程过程中需要建立队列等结构进行各种操作,通过该次试验,可以督促学生从实用的角度对《数据结构》课程内容进行更深入理解和更熟练的应用。 c.实验编程语言要求使用 jav a 语言或 C++语言。通过对调度功能的编程实现,不但能有效训练学生对编程语言的熟练使用,还能促进学生独立思考解决问题、以及独立查新获取知识的能力。 二、实验内容 1)实现进程相关数据结构的创建和查看功能。 2)实现多种进程调度算法:先来先服务算法、优先级调度算法、时间片轮转法、多级反馈轮转法等。 3)实现对执行进程的阻塞,对等待进程的唤醒等功能。 4)实现相关队列在进程调度中的动态变化过程。 三、实验原理、方法和手段 实验原理: 现代操作系统的重要特点是程序的并发执行,无论是在批处理系统还是在分时系统中,用户进程数一般都多于处理机数,这将导致进程互相争夺处理机。另外,系统进程也需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。实验中要求实现以下常见的进程调度策略: (1) 先来先服务法 进程产生获得所需资源后进入就绪队列,排在队首的进程获得 CPU资源,排在就绪队列后面的进程必须等到前面的进程全部都执行完毕后才能被执行。 单独使用先来先服务法 CPU效率较低。 图 1.1 先来先服务调 (2)时间片轮转法 进程得到除CPU之外的所有资源后进入就绪队列,在就绪队列中,不是一定要被执行完前一个进程才开始执行后一个,而只是执行一个很小的时间片,当一个进程的时间片被执行完后,会自动回到就绪队列的队尾等待下一个属于自己的时间片,如此循环,直到该进程执行完毕。 (3)多级反馈轮转法 该方法有不同的实现方案,其中常见的一种说明如下: 设置多个就绪队列,分别赋予不同的优先级,如逐级降低,队列1的优先级最高。每个队列执行时间片的长度也不同,规定优先级越低则时间片越长,如逐级加倍。新进程进入内存后,先投入队列1的末尾,按FCFS算法调...