作業系統 - 程序排程



定義

程序排程是程序管理器的一項活動,它負責根據特定策略從 CPU 中移除正在執行的程序並選擇另一個程序。

程序排程是多道程式設計作業系統的必要組成部分。此類作業系統允許同時將多個程序載入到可執行記憶體中,並且載入的程序使用時間複用共享 CPU。

排程類別

排程分為兩類:

  1. 非搶佔式:在此,資源在程序完成執行之前無法被搶佔。資源的切換髮生在正在執行的程序終止並進入等待狀態時。
  2. 搶佔式:在此,作業系統為程序分配固定時間量的資源。在資源分配期間,程序從執行狀態切換到就緒狀態或從等待狀態切換到就緒狀態。這種切換髮生是因為 CPU 可能會優先考慮其他程序,並用優先順序更高的程序替換正在執行的程序。

程序排程佇列

作業系統在程序排程佇列中維護所有程序控制塊 (PCB)。作業系統為每種程序狀態維護一個單獨的佇列,並且處於相同執行狀態的所有程序的 PCB 都放置在同一佇列中。當程序的狀態發生變化時,其 PCB 將從其當前佇列中解鏈並移動到其新的狀態佇列。

作業系統維護以下重要的程序排程佇列:

  • 作業佇列 - 此佇列保留系統中的所有程序。

  • 就緒佇列 - 此佇列保留駐留在主記憶體中、已準備好並等待執行的所有程序的集合。新建立的程序始終放入此佇列。

  • 裝置佇列 - 由於 I/O 裝置不可用而被阻塞的程序構成此佇列。

Process Scheduling Queuing

作業系統可以使用不同的策略來管理每個佇列(FIFO、輪循、優先順序等)。作業系統排程程式決定如何將程序在就緒佇列和執行佇列之間移動,執行佇列在系統上每個處理器核心只能有一個條目;在上圖中,它已與 CPU 合併。

兩狀態程序模型

兩狀態程序模型指的是執行和非執行狀態,如下所述:

序號 狀態和描述
1

執行

當建立新程序時,它以執行狀態進入系統。

2

未執行

未執行的程序儲存在佇列中,等待其執行機會。佇列中的每個條目都是指向特定程序的指標。佇列使用連結列表實現。排程程式的使用方式如下。當程序被中斷時,該程序被轉移到等待佇列。如果程序已完成或中止,則丟棄該程序。在這兩種情況下,排程程式都會從佇列中選擇一個程序來執行。

排程程式

排程程式是特殊的系統軟體,以各種方式處理程序排程。它們的主要任務是選擇要提交到系統的作業並決定執行哪個程序。排程程式有三種類型:

  • 長期排程程式
  • 短期排程程式
  • 中期排程程式

長期排程程式

它也稱為作業排程程式。長期排程程式確定哪些程式被系統接受以進行處理。它從佇列中選擇程序並將它們載入到記憶體中以執行。程序載入到記憶體中以進行 CPU 排程。

作業排程程式的主要目標是提供均衡的作業組合,例如 I/O 繫結和處理器繫結。它還控制多道程式設計的程度。如果多道程式設計的程度是穩定的,則程序建立的平均速率必須等於離開系統的程序的平均離開速率。

在某些系統上,長期排程程式可能不可用或最少。分時作業系統沒有長期排程程式。當程序將狀態從新建更改為就緒時,則使用長期排程程式。

短期排程程式

它也稱為CPU 排程程式。其主要目標是根據所選的一組標準提高系統性能。它是程序從就緒狀態更改為執行狀態。CPU 排程程式從已準備好執行的程序中選擇一個程序,並將其分配給其中一個。

短期排程程式,也稱為排程程式,決定下一個要執行哪個程序。短期排程程式比長期排程程式快。

中期排程程式

中期排程是交換的一部分。它將程序從記憶體中移除。它降低了多道程式設計的程度。中期排程程式負責處理交換出的程序。

如果正在執行的程序發出 I/O 請求,則它可能會變為掛起狀態。掛起的程序無法朝著完成方向取得任何進展。在這種情況下,為了從記憶體中移除程序併為其他程序騰出空間,將掛起的程序移動到輔助儲存器。此過程稱為交換,並且該程序被稱為交換出或推出。交換可能是為了改善程序組合而必需的。

排程程式比較

序號 長期排程程式 短期排程程式 中期排程程式
1 它是作業排程程式 它是 CPU 排程程式 它是程序交換排程程式。
2 速度低於短期排程程式 速度是其他兩個中最快的 速度介於短期和長期排程程式之間。
3 它控制多道程式設計的程度 它對多道程式設計的程度控制較少 它降低了多道程式設計的程度。
4 在分時系統中幾乎不存在或最少 在分時系統中也最少 它是分時系統的一部分。
5 它從池中選擇程序並將它們載入到記憶體中以執行 它選擇已準備好執行的程序 它可以將程序重新引入記憶體,並可以繼續執行。

上下文切換

上下文切換是一種機制,用於在程序控制塊中儲存和恢復 CPU 的狀態或上下文,以便稍後可以從同一點恢復程序執行。使用此技術,上下文切換器使多個程序能夠共享單個 CPU。上下文切換是多工作業系統功能的重要組成部分。

當排程程式將 CPU 從執行一個程序切換到執行另一個程序時,當前正在執行的程序的狀態將儲存到程序控制塊中。在此之後,下一個要執行的程序的狀態將從其自己的 PCB 中載入,並用於設定 PC、暫存器等。此時,第二個程序可以開始執行。

Process Context Switch

上下文切換在計算上非常密集,因為必須儲存和恢復暫存器和記憶體狀態。為了避免上下文切換時間,一些硬體系統使用兩組或多組處理器暫存器。當程序切換時,以下資訊將被儲存以供以後使用。

  • 程式計數器
  • 排程資訊
  • 基址和界限暫存器值
  • 當前使用的暫存器
  • 更改的狀態
  • I/O 狀態資訊
  • 計費資訊
廣告