什麼是排程佇列?
進入系統的程序儲存在**作業佇列**中。如果程序處於就緒狀態,則通常將其放入**就緒佇列**。
等待裝置的程序將被放置在**裝置佇列**中。每個I/O裝置都有唯一的裝置佇列。
首先將新程序放入**就緒佇列**,然後它在就緒佇列中等待,直到被選中執行。
一旦程序被分配給CPU並正在執行,就會發生以下事件之一:
程序發出I/O請求,然後被放入I/O佇列。
程序可能會建立一個新的子程序並等待其終止。
程序可能會被強制從CPU中移除(中斷),並將其放回就緒佇列。

在前兩種情況下,程序從等待狀態切換到就緒狀態,然後將其放回就緒佇列。程序繼續這個迴圈,直到它終止,此時它將從所有佇列中移除,並釋放其PCB和資源。
排程程式型別
有三種類型的排程程式:
長期排程程式
當建立新程序時,如果就緒佇列中就緒程序的數量變得非常高,則執行長期排程。然後,作業系統在維護長列表方面會有開銷,切換和排程增加。因此,長期排程程式只允許有限數量的程序進入就緒佇列。
長期排程程式執行頻率較低。它決定哪個程式必須進入作業佇列。作業處理器從作業佇列中選擇程序,並將它們載入到記憶體中以執行。
作業排程程式的主要目標是保持良好程度的多道程式設計。多道程式設計的程度意味著程序建立的平均速率等於程序從執行記憶體中離開的平均速率。
長期和短期排程程式的示意圖如下:

短期排程程式
短期排程程式稱為CPU排程程式,執行頻率非常高。排程程式的目標是提高CPU效能並提高程序執行速率。
中期排程程式
這種型別的排程將程序從記憶體中移除,從而降低多道程式設計的程度。稍後,程序將重新引入記憶體,並繼續其執行。這稱為**交換**。程序被交換出去,稍後由中期排程程式交換進來。
中期排程程式的示意圖如下:

廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP