程序管理
程序是一個正在執行的程式,即正在執行的程式。它包含程式程式碼、程式計數器、程序棧、暫存器等。
程序狀態
程序在其執行期間所處的不同狀態使用下圖說明:
- 新建- 程序在剛建立時處於新建狀態。
- 就緒- 程序正在等待由短期排程程式分配處理器。
- 執行- 程序指令正在由處理器執行。
- 等待- 程序正在等待某些事件發生,例如 I/O 操作。
- 終止- 程序已完成執行。
程序控制塊
每個程序都關聯一個程序控制塊。它包含有關該特定程序的重要詳細資訊。如下所示:
- 程序狀態- 指定程序狀態,即新建、就緒、執行、等待或終止。
- 程序號- 顯示特定程序的編號。
- 程式計數器- 包含程序中需要執行的下一條指令的地址。
- 暫存器- 指定程序使用的暫存器。它們可能包括累加器、索引暫存器、堆疊指標、通用暫存器等。
- 檔案列表- 這些是與程序關聯的不同檔案。
程序排程
有許多排程佇列用於處理程序。當程序進入系統時,它們被放入作業佇列。準備在主記憶體中執行的程序儲存在就緒佇列中。等待 I/O 裝置的程序儲存在裝置佇列中。
用於程序排程的不同調度程式為
長期排程程式
作業排程程式或長期排程程式從儲存池中選擇程序並將其載入到記憶體中以執行。作業排程程式必須選擇 I/O 繫結和 CPU 繫結程序的謹慎混合,以產生最佳的系統吞吐量。如果它選擇了太多 CPU 繫結程序,則 I/O 裝置處於空閒狀態,如果它選擇了太多 I/O 繫結程序,則處理器將無事可做。
短期排程程式
短期排程程式從就緒佇列中選擇一個程序並將其安排執行。短期排程程式比長期排程程式執行得更頻繁,因為一個程序可能只執行幾毫秒。
中期排程程式
中期排程程式將程序從主記憶體中交換出去。它可以稍後從停止執行的地方再次交換入程序。這有助於降低多道程式設計的程度。交換也有助於改善記憶體中 I/O 繫結和 CPU 繫結程序的組合。
上下文切換
從 CPU 中刪除一個程序並排程另一個程序需要儲存舊程序的狀態並載入新程序的狀態。這稱為上下文切換。程序的上下文儲存在程序控制塊 (PCB) 中,幷包含程序暫存器資訊、程序狀態和記憶體資訊。
排程程式負責上下文切換。它儲存舊程序的上下文,並將 CPU 的控制權交給短期排程程式選擇的程序。
廣告