什麼是進程排程,進程排程的來龍去脈

2020-07-16 10:04:36
多道程式設計的目標是,無論何時都有進程執行,從而最大化 CPU 利用率。分時系統的目的是在進程之間快速切換 CPU,以便使用者在程式執行時能與其互動。

為了滿足這些目標,進程排程器選擇一個可用進程(可能從多個可用進程集合中)到 CPU上執行。如果有多個進程,那麼餘下的需要等待 CPU 空閒並能重新排程。

排程佇列

進程在進入系統時,會被加到作業佇列,這個佇列包括系統內的所有進程。駐留在記憶體中的、就緒的、等待執行的進程儲存在就緒佇列上。

就緒佇列通常用連結串列實現;其頭節點有兩個指標,用於指向連結串列的第一個和最後一個 PCB 塊;每個 PCB 還包括一個指標,指向就緒佇列的下一個 PCB,如圖 1 所示。

系統還有其他佇列。當一個進程被分配了 CPU 後,它執行一段時間,最終退出,或被中斷,或等待特定事件發生如 I/O 請求的完成。假設進程向一個共用裝置如磁碟發出 I/O 請求。由於系統具有許多進程,磁碟可能忙於其他進程的 I/O 請求,因此該進程可能需要等待磁碟。等待特定 I/O 裝置的進程列表,稱為裝置佇列。每個裝置都有自己的裝置佇列(圖 1)。

就緒隊列和各種I/O設備隊列
圖 1 就緒佇列和各種I/O裝置佇列