程序排程基礎


程序排程負責根據排程演算法選擇一個程序分配給處理器,以及從處理器上移除一個程序。它是作業系統中多道程式設計的重要組成部分。

程序排程演算法

程序排程演算法用於處理為處理器選擇程序或在程序之間分配資源。

一些程序排程演算法如下所示:

  • 先來先服務

    此演算法按照程序到達就緒佇列的順序處理程序。FCFS是最簡單的排程演算法。FCFS中沒有搶佔,因此不會發生飢餓現象。儘管如此,它的吞吐量仍然很低,因為大型程序可能會長時間佔用CPU。

  • 最短作業優先

    此演算法按照程序執行時間的順序執行程序,即首先選擇執行時間最短的程序。SJF支援搶佔,因此可能導致某些程序飢餓。但是,在大多數情況下,它提供了最大的吞吐量。

  • 固定優先順序排程

    此演算法按照每個程序指定的優先順序順序執行程序。低優先順序程序可能會被高優先順序程序搶佔,這可能導致某些程序飢餓。

  • 輪循排程

    此演算法為每個程序提供固定的時間片,並在所有程序之間迴圈,直到它們的執行完成。由於每個程序都有機會執行,因此不會發生飢餓現象。如果時間片過長,則輪循演算法的行為類似於FIFO,如果時間片過短,則其行為類似於SJF。

程序排程程式

程序排程涉及短期排程程式、中期排程程式和長期排程程式。這些程式的詳細資訊如下所示:

  • 長期排程程式

    長期排程程式執行長期排程。這涉及從輔助儲存器中的儲存池中選擇程序,並將其載入到主儲存器中的就緒佇列中以供執行。

    長期排程程式控制多道程式設計的程度。它必須選擇I/O繫結和CPU繫結程序的謹慎組合,以產生最佳的系統吞吐量。如果它選擇了太多CPU繫結程序,則I/O裝置處於空閒狀態;如果它選擇了太多I/O繫結程序,則處理器將無事可做。

  • 短期排程程式

    短期排程程式執行短期排程。這涉及從就緒佇列中選擇一個程序,並將其安排執行。短期排程程式使用排程演算法來決定接下來由哪個程序執行。

    下圖展示了使用長期和短期排程程式進行排程的過程:

    Short-Term Schedulers
  • 中期排程程式

    中期排程程式執行中期排程。這涉及將程序從主記憶體中交換出去。稍後可以從該程序停止執行的位置交換回該程序。

    這也可以稱為掛起和恢復程序,有助於降低多道程式設計的程度。交換也有助於改善記憶體中I/O繫結和CPU繫結程序的組合。

    下圖展示了中期排程的過程:

    Medium-Term Schedulers

更新於: 2020年1月31日

626 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告