- 操作系统教程
- 操作系统 - 首页
- 操作系统 - 需求
- 操作系统 - 概述
- 操作系统 - 历史
- 操作系统 - 组成部分
- 操作系统 - 结构
- 操作系统 - 架构
- 操作系统 - 服务
- 操作系统 - 特性
- 操作系统 - 周转时间 & 带权周转时间
- 操作系统进程
- 操作系统 - 进程
- 操作系统 - 进程调度
- 操作系统 - 调度算法
- 先来先服务 (FCFS) 调度算法
- 最短作业优先 (SJF) 调度算法
- 轮询 (Round Robin) 调度算法
- 最高响应比优先 (HRRN) 调度算法
- 优先级调度算法
- 多级队列调度
- 上下文切换
- 进程操作
- 彩票进程调度
- 预测 SJF 调度的突发时间
- 竞争条件漏洞
- 临界区同步
- 互斥同步
- 进程控制块
- 进程间通信
- 抢占式和非抢占式调度
- 操作系统同步
- 进程同步
- 操作系统内存管理
- 操作系统 - 内存管理
- 操作系统 - 虚拟内存
- 操作系统存储管理
- 操作系统 - 文件系统
- 操作系统类型
- 操作系统 - 类型
- 操作系统杂项
- 操作系统 - 多线程
- 操作系统 - I/O 硬件
- 操作系统 - I/O 软件
- 操作系统 - 安全
- 操作系统 - Linux
- 考试题目及答案
- 考试题目及答案
- 操作系统有用资源
- 操作系统 - 快速指南
- 操作系统 - 有用资源
- 操作系统 - 讨论
最高响应比优先 (HRRN) 调度算法
CPU 调度算法是在多编程环境中决定就绪队列中哪个进程应该接下来执行的策略。有多种调度策略,其中最高响应比优先 (HRRN) 调度算法旨在提供最优的调度解决方案之一。
最高响应比优先 (HRRN) 调度算法
HRRN 算法是一种非抢占式调度策略,它根据一个称为响应比的参数选择下一个要执行的进程。响应比的计算公式如下:
$$\mathrm{响应比 = \frac{(等待时间 + 服务时间)}{服务时间}}$$
这里,W 是进程到现在的等待时间,S 是进程的突发时间。
当多个进程准备执行时,调度程序计算每个进程的响应比,并将 CPU 分配给具有最高值的进程。由于 HRRN 是一种非抢占式算法,一旦进程获得 CPU 访问权,它就会执行到完成,然后另一个进程才能获得 CPU 访问权。
HRRN 调度的特点
- HRRN 算法是最优算法,因为它根据进程的响应比选择要执行的进程。
- HRRN 既优先考虑较短的进程,也优先考虑在就绪队列中等待时间较长的进程。
- 它被设想为最短作业优先算法的改进,解决了 SJF 算法的饥饿问题。
- 由于它是非抢占式的,因此当进程完成执行或当新的进程到达空闲的就绪队列时,调度程序就会被调用。
- 它不需要频繁的上下文切换。这有助于 CPU 主要专注于进程的执行。
HRRN 算法的工作原理
- 最初当 CPU 空闲时,当一个或多个新进程到达就绪队列时,调度程序就会被调用。首先让具有最短突发时间的进程进入。
- 当正在运行的进程完成执行后,计算就绪队列中每个进程的响应比。将具有最高响应比的进程分配给 CPU。
- 重复执行步骤 2,直到就绪队列中没有进程。
HRRN 调度算法示例
我们可以通过以下示例来了解 HRRN 调度算法的工作原理。
让我们考虑一个系统,该系统有四个进程同时到达,顺序为 P1、P2、P3 和 P4。每个进程的突发时间(以毫秒为单位)由下表给出:
| 进程 | 到达时间 | CPU 突发时间 |
|---|---|---|
| P1 | 0 | 6 |
| 0 | 4 | 10 |
| 6 | 4 | 4 |
| P2 | 8 | 5 |
4
10
P3
4
4
P4
8
5
让我们对它进行 HRRN 调度。我们将绘制甘特图并找到平均周转时间和平均等待时间。
甘特图生成
要生成甘特图,我们将找到调度程序每次被调用时的响应比。
在时间 = 0 毫秒时
系统中的进程:P1。
8
由于 P1 是唯一进程,因此它立即被调度。它在时间 = 6 毫秒时运行完成。
到此时间的甘特图是:
在时间 = 6 毫秒时
进程 P1 完成执行并离开系统。
系统中的进程:P2 和 P3,它们都在时间 = 4 毫秒到达。
P2 的响应比 = (W + S) / S = (2 + 10) / 10 = 1.2
8
P3 的响应比 = (W + S) / S = (2 + 4) / 4 = 1.5
由于 P3 的响应比更高,因此将 P3 分配给 CPU。
在时间 = 10 毫秒时
进程 P3 完成执行并离开系统。
系统中的进程:P2(在时间 = 4 毫秒到达)和 P4(在时间 = 8 毫秒到达)。
P2 的响应比 = (W + S) / S = (6 + 10) / 10 = 1.6
P4 的响应比 = (W + S) / S = (2 + 5) / 5 = 1.4
由于 P2 的响应比更高,因此将 P2 分配给 CPU。
在时间 = 20 毫秒时
进程 P2 完成执行并离开系统。
系统中唯一的进程是 P4,因此它立即被调度。
因此,最终的甘特图是:
由此我们将计算每个进程的周转时间和等待时间及其平均值。
进程的周转时间 = 完成时间 - 到达时间
TATP1 = TP1 - ATP1 = 6 - 0 = 6 毫秒
TATP2 = CTP2 - ATP2 = 20 - 4 = 16 毫秒
TATP3 = CTP3 - ATP3 = 10 - 4 = 6 毫秒
TATP4 = CTP4 - ATP4 = 25 - 8 = 17 毫秒
平均周转时间
= 各进程周转时间之和 / 进程数
= (TATP1 + TATP2 + TATP3 + TATP4) / 4
= (6 + 16 + 6 + 17) / 4 = 11.25 毫秒
等待时间由每个进程在就绪队列中等待的时间给出。对于非抢占式调度算法,每个进程的等待时间计算如下:
任何进程的等待时间 = CPU 进入时间 - 到达时间
WTP1 = 0 - 0 = 0 毫秒
- WTP2 = 10 - 4 = 6 毫秒
- WTP3 = 6 - 4 = 2 毫秒
- WTP4 = 20 - 8 = 12 毫秒
- 平均等待时间
= 各进程等待时间之和 / 进程数
- = (WTP1 + WTP2 + WTP3 + WTP4) / 4
- = (0 + 6 + 2 + 12) / 4 = 5 毫秒
- HRRN 调度的优点
HRRN 算法是最优算法之一。
它更喜欢较短的进程,因此具有最短作业优先调度算法的所有优点。
