行程與行程抽象

就緒佇列(ready queue)

想像一間只有一臺咖啡櫃檯前排隊的人,他們都準備好要點餐,只差咖啡師有空。他們不是在逛、不是在講電話、不是猶豫不決;輪到他們的那一刻就能立刻開始。就緒佇列就是作業系統中處於就緒狀態的那一列行程:每一個現在都能執行,只在等一顆可用的 CPU。

具體來說,就緒佇列是一個資料結構(常是 PCB 的鏈結串列,或為不同優先權設的數個佇列),存放所有就緒但當前未在執行的行程。當一顆 CPU 空出來時,排程器從這個佇列挑一個行程,分派器載入它的狀態並讓它開始執行。當一個執行中的行程被搶佔或時間配量用完時,它回到就緒佇列。因等待輸入輸出而阻塞的行程不在就緒佇列中;它們待在各自獨立的等待佇列裡,直到它們的事件發生,屆時才被移進就緒佇列。

就緒佇列正是排程決策實際上演的地方:作業系統如何排序這個佇列(先到先服務、依優先權、輪轉等等)就是排程策略,並直接形塑反應性與公平性。一個值得釐清的點:在就緒佇列裡代表行程「準備好執行」,不代表它「正在執行」。每顆 CPU 可以有一個執行中的行程,但同時有一條長長的就緒佇列裝著其他行程,個個躍躍欲試、個個等著輪到自己。

若有一顆 CPU 與五個就緒行程,一個在執行,四個待在就緒佇列裡。當執行中那個的時間配量到期時,它回到佇列尾端,排程器再挑下一個來執行。

正在執行,或就緒並排隊:就緒佇列裝的是後者。

阻塞的行程不在就緒佇列裡。只有可執行的行程才在;等待輸入輸出的行程待在另一個等待佇列中,直到它的事件到來。

又称
run queueready list就緒佇列就緒清單