背景
写这篇博文的背景是要做操作系统的实验,其中的一个是进程调度。实验的题目是这样的。
内容:
编写并调试一个模拟的进程调度程序,分别采用“短进程优先”、“时间片轮转”、“高响应比优先”调度算法对随机产生的五个进程进行调度,并比较算法的平均周转时间。以加深对进程的概念及进程调度算法的理解。
要求:
- 已运行时间、进程状态等等(可以根据需要自己设定)。
- 由程序自动生成进程(包括需要的数据,要注意数据的合理范围),第一个进程到达时间从0开始,其余进程到达时间随机产生。
- 采用时间片轮转调度算法时,进程的运行时间以时间片为单位进行计算。
- 每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。
- 每进行一次调度,程序都要输出一次运行结果:正在运行的进程、就绪队列中的进程、完成的进程以及各个进程的 PCB,以便进行检查。
- 最后计算各调度算法的平均周转时间,并进行比较、分析。
关于进程调度会有很多的方法。这里涉及到的是“短进程优先”、“时间片轮转”、“高响应比优先”。
一、作业与作业步
作业
作业不仅包含了通常的程序和数据,而且还有一份作业说明书,系统根据该说明书来队程序的运行进行控制。
作业步
在作业运行期间,每个作业都必须经过若干个相对独立,又相互关联的顺序加工步骤才嗯那个得到结果。
一个典型的作业可以分成:“编译”作业步,“连接装配”作业步和“运行”作业步。
二、作业控制块JCB
在多道批处理系统中,每个作业都会有对应的JCB。
每当一个作业进入系统时,便由“作业注册”程序为该作业建立一个作业控制块JCB。然后放进响应的作业后备队列中等待调度。
三、短作业优先 SJF
很简单来说就是作业运行时间越短,优先级越高。
改算法有一定的缺点:
- 必须知道作业运行时间,但这一半很难预计
- 长作业会出现饥饿现象
- 没有考虑作业的急迫程度
四、时间片轮转RR
在分时系统中,最简单最常用的是基于时间片的轮转。非常公平的处理机分配方法,让就绪队列中的每个进程每次仅运行 一个时间片。
4.1 基本原理
系统将所有的就绪进程按照FCFS策略排成一个就绪队列。系统按照一定的间隔定时发生中断,把cpu分配给队首进程,并令其执行一个时间片。
4.2 进程切换时机
- 若在一个时间片内完成,则马上切换。
- 一个时间片用完马上切换
4.3 时间片大小确定
太大会退化成FCFS
太小会频繁切换,增加系统开销
五、高响应比优先调度算法 HRRN
高响应比优先调度算法则是考虑到了作业的等待时间和作业运行时间的调度算法。
优
先
权
=
等
待
时
间
+
要
求
服
务
时
间
要
求
服
务
时
间
优先权=\frac{等待时间+要求服务时间}{要求服务时间}
优先权=要求服务时间等待时间+要求服务时间
由于等待时间与服务时间之和就是该作业对作业的响应时间
所以
R p = 等 待 时 间 + 要 求 服 务 时 间 要 求 服 务 时 间 = 响 应 时 间 要 求 服 务 时 间 R_p=\frac{等待时间+要求服务时间}{要求服务时间} =\frac{响应时间}{要求服务时间} Rp=要求服务时间等待时间+要求服务时间=要求服务时间响应时间