作業系統CPU排程


在像MS DOS這樣的單程式設計系統中,當進程等待任何I/O操作完成時,CPU仍然是空閒的。 這是一個開銷,因為它浪費時間並導致飢餓問題。 但是,在多程式系統中,CPU在進程的等待時間內不會保持空閒狀態,而是開始執行其他進程。 作業系統必須定義CPU將被給予哪個進程。

在多程式系統中,作業系統排程CPU上的進程以獲得最大的利用率,此過程稱為CPU排程。 作業系統使用各種排程演算法來排程過程。

這是短期排程程式的一項任務,用於排程CPU以查詢作業池中存在的進程數量。 每當執行進程請求某個I/O操作時,短期排程程式就會儲存進程的當前上下文(也稱為PCB)並將其狀態從執行狀態更改為等待狀態。 在此期間,進程處於等待狀態; 短期排程程式從就緒佇列中選擇另一個進程並將CPU分配給此進程。 這個過程被稱為上下文切換。

過程控制塊中儲存了什麼?

作業系統在進程的生命週期中維護一個過程控制塊。 進程終止或終止時,過程控制塊將被刪除。 有以下資訊儲存在過程控制塊中,並隨過程狀態而變化。

為什麼需要排程?

在多道程式中,如果長期排程程式選擇更多的I/O系結進程,那麼大多數時候CPU仍然是空閒的。 作業系統的任務是優化資源的利用。

如果大多數正在執行的進程將其狀態從執行狀態更改為等待狀態,那麼系統中可能始終存在死鎖。 因此,為了減少這種開銷,作業系統需要排程作業以獲得CPU的最佳利用率並避免死鎖的可能性。