
- 作業系統教程
- OS - 首頁
- OS - 需求
- OS - 概述
- OS - 歷史
- OS - 元件
- OS - 結構
- OS - 架構
- OS - 服務
- OS - 屬性
- OS - TAT & WAT
- OS 程序
- OS - 程序
- OS - 程序排程
- OS - 排程演算法
- 先來先服務排程演算法 (FCFS)
- 最短作業優先排程演算法 (SJF)
- 輪循排程演算法 (Round Robin)
- 最高響應比優先排程演算法 (HRRN)
- 優先順序排程演算法
- 多級佇列排程
- 上下文切換
- 程序操作
- 彩票程序排程
- 預測突發時間 SJF 排程
- 競爭條件漏洞
- 臨界區同步
- 互斥同步
- 程序控制塊
- 程序間通訊
- 搶佔式和非搶佔式排程
- OS 同步
- 程序同步
- OS 記憶體管理
- OS - 記憶體管理
- OS - 虛擬記憶體
- OS 儲存管理
- OS - 檔案系統
- OS 型別
- OS - 型別
- OS 其他
- OS - 多執行緒
- OS - I/O 硬體
- OS - I/O 軟體
- OS - 安全
- OS - Linux
- 考試題庫及答案
- 考試題庫及答案
作業系統 - 程序排程
定義
程序排程是程序管理器的一項活動,它負責根據特定策略從 CPU 中移除正在執行的程序並選擇另一個程序。
程序排程是多道程式設計作業系統的必要組成部分。此類作業系統允許同時將多個程序載入到可執行記憶體中,並且載入的程序使用時間複用共享 CPU。
排程類別
排程分為兩類:
- 非搶佔式:在此,資源在程序完成執行之前無法被搶佔。資源的切換髮生在正在執行的程序終止並進入等待狀態時。
- 搶佔式:在此,作業系統為程序分配固定時間量的資源。在資源分配期間,程序從執行狀態切換到就緒狀態或從等待狀態切換到就緒狀態。這種切換髮生是因為 CPU 可能會優先考慮其他程序,並用優先順序更高的程序替換正在執行的程序。
程序排程佇列
作業系統在程序排程佇列中維護所有程序控制塊 (PCB)。作業系統為每種程序狀態維護一個單獨的佇列,並且處於相同執行狀態的所有程序的 PCB 都放置在同一佇列中。當程序的狀態發生變化時,其 PCB 將從其當前佇列中解鏈並移動到其新的狀態佇列。
作業系統維護以下重要的程序排程佇列:
作業佇列 - 此佇列保留系統中的所有程序。
就緒佇列 - 此佇列保留駐留在主記憶體中、已準備好並等待執行的所有程序的集合。新建立的程序始終放入此佇列。
裝置佇列 - 由於 I/O 裝置不可用而被阻塞的程序構成此佇列。

作業系統可以使用不同的策略來管理每個佇列(FIFO、輪循、優先順序等)。作業系統排程程式決定如何將程序在就緒佇列和執行佇列之間移動,執行佇列在系統上每個處理器核心只能有一個條目;在上圖中,它已與 CPU 合併。
兩狀態程序模型
兩狀態程序模型指的是執行和非執行狀態,如下所述:
序號 | 狀態和描述 |
---|---|
1 | 執行 當建立新程序時,它以執行狀態進入系統。 |
2 | 未執行 未執行的程序儲存在佇列中,等待其執行機會。佇列中的每個條目都是指向特定程序的指標。佇列使用連結列表實現。排程程式的使用方式如下。當程序被中斷時,該程序被轉移到等待佇列。如果程序已完成或中止,則丟棄該程序。在這兩種情況下,排程程式都會從佇列中選擇一個程序來執行。 |
排程程式
排程程式是特殊的系統軟體,以各種方式處理程序排程。它們的主要任務是選擇要提交到系統的作業並決定執行哪個程序。排程程式有三種類型:
- 長期排程程式
- 短期排程程式
- 中期排程程式
長期排程程式
它也稱為作業排程程式。長期排程程式確定哪些程式被系統接受以進行處理。它從佇列中選擇程序並將它們載入到記憶體中以執行。程序載入到記憶體中以進行 CPU 排程。
作業排程程式的主要目標是提供均衡的作業組合,例如 I/O 繫結和處理器繫結。它還控制多道程式設計的程度。如果多道程式設計的程度是穩定的,則程序建立的平均速率必須等於離開系統的程序的平均離開速率。
在某些系統上,長期排程程式可能不可用或最少。分時作業系統沒有長期排程程式。當程序將狀態從新建更改為就緒時,則使用長期排程程式。
短期排程程式
它也稱為CPU 排程程式。其主要目標是根據所選的一組標準提高系統性能。它是程序從就緒狀態更改為執行狀態。CPU 排程程式從已準備好執行的程序中選擇一個程序,並將其分配給其中一個。
短期排程程式,也稱為排程程式,決定下一個要執行哪個程序。短期排程程式比長期排程程式快。
中期排程程式
中期排程是交換的一部分。它將程序從記憶體中移除。它降低了多道程式設計的程度。中期排程程式負責處理交換出的程序。
如果正在執行的程序發出 I/O 請求,則它可能會變為掛起狀態。掛起的程序無法朝著完成方向取得任何進展。在這種情況下,為了從記憶體中移除程序併為其他程序騰出空間,將掛起的程序移動到輔助儲存器。此過程稱為交換,並且該程序被稱為交換出或推出。交換可能是為了改善程序組合而必需的。
排程程式比較
序號 | 長期排程程式 | 短期排程程式 | 中期排程程式 |
---|---|---|---|
1 | 它是作業排程程式 | 它是 CPU 排程程式 | 它是程序交換排程程式。 |
2 | 速度低於短期排程程式 | 速度是其他兩個中最快的 | 速度介於短期和長期排程程式之間。 |
3 | 它控制多道程式設計的程度 | 它對多道程式設計的程度控制較少 | 它降低了多道程式設計的程度。 |
4 | 在分時系統中幾乎不存在或最少 | 在分時系統中也最少 | 它是分時系統的一部分。 |
5 | 它從池中選擇程序並將它們載入到記憶體中以執行 | 它選擇已準備好執行的程序 | 它可以將程序重新引入記憶體,並可以繼續執行。 |
上下文切換
上下文切換是一種機制,用於在程序控制塊中儲存和恢復 CPU 的狀態或上下文,以便稍後可以從同一點恢復程序執行。使用此技術,上下文切換器使多個程序能夠共享單個 CPU。上下文切換是多工作業系統功能的重要組成部分。
當排程程式將 CPU 從執行一個程序切換到執行另一個程序時,當前正在執行的程序的狀態將儲存到程序控制塊中。在此之後,下一個要執行的程序的狀態將從其自己的 PCB 中載入,並用於設定 PC、暫存器等。此時,第二個程序可以開始執行。

上下文切換在計算上非常密集,因為必須儲存和恢復暫存器和記憶體狀態。為了避免上下文切換時間,一些硬體系統使用兩組或多組處理器暫存器。當程序切換時,以下資訊將被儲存以供以後使用。
- 程式計數器
- 排程資訊
- 基址和界限暫存器值
- 當前使用的暫存器
- 更改的狀態
- I/O 狀態資訊
- 計費資訊