作業系統中任務的優先順序分配


在作業系統中,為每個任務或程序分配優先順序水平的做法稱為優先順序分配。優先順序水平是一個數字,表示與其他任務相比,活動或程序的相對緊急程度或重要性。

當有多個任務準備執行時,作業系統利用優先順序水平來決定接下來應該執行哪個任務。優先順序較高的任務會先於優先順序較低的任務執行。這確保了系統能夠高效執行,並且最關鍵的任務能夠首先完成。

優先順序的分配可以是靜態的或動態的。靜態優先順序分配在建立時為每個任務分配一個優先順序水平,並且該優先順序水平在任務的整個生命週期中保持不變。動態優先順序分配允許根據任務的相對重要性、執行持續時間和資源使用情況,在執行時更改任務的優先順序水平。

優先順序分配是作業系統體系結構中一個重要的組成部分,以確保作業系統能夠快速響應重要事件並有效地分配資源。不正確的優先順序分配會導致一些問題,例如優先順序反轉(其中低優先順序任務阻止高優先順序任務的執行)和優先順序飢餓(其中低優先順序任務永遠不會被執行,因為高優先順序任務一直在執行)。

優先順序的型別

程序或任務在系統中的重要性由其優先順序決定。優先順序較高的程序將獲得更多資源,並且將在優先順序較低的程序之前執行。通常,優先順序從 0 到 127 評級,其中 127 是最高優先順序,0 是最低優先順序。

作業系統中使用了多種型別的優先順序。如下所示 -

靜態優先順序

在這種優先順序分配方式中,程序或任務的優先順序在建立時設定,並且在執行期間不會改變。通常,系統管理員或開發人員在建立程序時確定優先順序。靜態優先順序易於設計,但如果分配不當,可能會導致資源利用效率低下。

動態優先順序

在這種優先順序分配方式中,程序或任務的優先順序可以在執行期間改變,具體取決於諸如程序行為、CPU 使用率和系統負載等因素。動態優先順序允許更有效地利用資源並確保最關鍵的任務首先完成。

優先順序反轉

當低優先順序任務阻止或延遲高優先順序任務時,稱為優先順序反轉。當低優先順序程序正在使用高優先順序任務正在等待的資源時,可能會發生這種情況。在這種情況下,低優先順序任務可能會長時間佔用資源,從而延遲高優先順序任務的執行。

可以使用多種技術來避免優先順序反轉,包括優先順序繼承、優先順序上限和優先順序繼承與上限結合。優先順序繼承在低優先順序任務擁有高優先順序任務需要的資源時,臨時提高低優先順序任務的優先順序至高優先順序任務的優先順序。設定優先順序上限是指為共享資源分配高於任何可能使用該資源的任務的優先順序的優先順序上限。優先順序繼承與上限結合這兩種技術,確保只有當低優先順序任務擁有受優先順序上限約束的共享資源時,才會發生優先順序繼承。

優先順序排程演算法

優先順序排程演算法用於確定哪些任務或程序應該首先執行以及執行的順序。各種作業系統使用多種優先順序排程策略,包括 -

先來先服務 (FCFS)

在這種演算法中,任務按照接收的順序執行。不考慮任務的優先順序,因此,如果存在大量等待的低優先順序任務,則最高優先順序的任務可能需要等待很長時間。

最短作業優先 (SJF)

在這種演算法中,能夠在最短時間內完成的任務優先執行。不考慮任務的優先順序,因此,如果其執行時間長於低優先順序任務,則最高優先順序的任務可能需要等待很長時間。

優先順序排程

這種演算法根據優先順序對任務進行排序,優先順序較高的任務在優先順序較低的任務之前執行。相同優先順序的任務按照 FCFS 順序執行。

輪循排程

在這種演算法中,任務以迴圈的方式執行,每個任務都有一個固定的時間視窗(或時間片)來執行。如果任務在時間片內沒有完成,則會被搶佔並放置在佇列的末尾。這種演算法考慮優先順序,並且優先順序較高的任務優先於優先順序較低的任務。

多級反饋佇列排程

在這種演算法中,任務根據其優先順序被分配到多個佇列。如果任務在時間片內沒有完成,則會被移動到較低優先順序的佇列,並且最高優先順序的佇列首先執行。消耗大量 CPU 時間的任務會被移動到較低優先順序的佇列,以便其他任務有機會執行,並且根據任務的行為動態更改任務的優先順序。

即時作業系統

即時作業系統 (RTOS) 是一種旨在管理具有精確時間約束的操作的作業系統,例如工業控制系統、醫療裝置和汽車系統中存在的操作。在 RTOS 中,優先順序分配對於確保最關鍵的任務按時完成至關重要。RTOS 通常使用的排程機制是在建立時為任務分配靜態優先順序。

此外,RTOS 使用多種技術來確保高優先順序操作不會干擾或延遲關鍵任務。這些技術包括主動排程、基於截止日期的排程和優先順序反轉預防。

應用

各種作業系統使用各種排程演算法和優先順序分配方法。以下是一些示例 -

Windows

Windows 使用的排程演算法根據執行緒的優先順序級別分配優先順序。存在多個執行緒優先順序級別,從 0 到 31;較高的級別具有更高的優先順序。此外,Windows 具有搶佔式排程系統,確保高優先順序執行緒優先於低優先順序執行緒。

Linux

Linux 使用動態優先順序排程方法,根據任務消耗的 CPU 時間確定任務的優先順序。此外,Linux 使用完全公平排程程式 (CFS),根據優先順序和 CPU 消耗在任務之間分配 CPU 時間。

Android

Android 使用的排程演算法根據每個程序的優先順序級別分配優先順序。存在多個程序優先順序級別,從 -20 到 19;較小的數字表示較高的優先順序。Android 還使用 O(1) 排程程式,確保高優先順序任務優先於低優先順序任務。

結論

優先順序分配對於每個作業系統都是必不可少的,因為它確保了有效的資源利用並提高了系統性能。各種作業系統使用不同的優先順序分配方法和排程演算法來滿足其特定需求。當低優先順序任務阻止或延遲高優先順序任務時,稱為優先順序反轉。可以使用多種技術來防止優先順序反轉,包括優先順序繼承、優先順序上限和優先順序繼承與上限結合。即時作業系統使用固定優先順序排程演算法和其他方法來確保關鍵任務按時完成。總的來說,優先順序分配對於現代計算機系統的有效和可靠執行至關重要。

更新於: 2023-07-19

453 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告