
- 作業系統教程
- 作業系統 - 首頁
- 作業系統 - 需求
- 作業系統 - 概述
- 作業系統 - 歷史
- 作業系統 - 組成部分
- 作業系統 - 結構
- 作業系統 - 架構
- 作業系統 - 服務
- 作業系統 - 特性
- 作業系統 - 週轉時間 & 帶權週轉時間
- 作業系統程序
- 作業系統 - 程序
- 作業系統 - 程序排程
- 作業系統 - 排程演算法
- 先來先服務 (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 演算法是最優演算法之一。
它更喜歡較短的程序,因此具有最短作業優先排程演算法的所有優點。