CPU 排程
短期排程器(short-term scheduler)
想像一個忙碌計程車招呼站的調度員:許多車排隊空轉著(就緒),每隔幾秒調度員就揮手讓下一台開向等候的乘客。短期排程器就是 CPU 的這個決策調度員——它是作業系統中那個極為頻繁、挑出下一個讓哪個就緒行程拿到處理器的部分。它叫「短期」,是因為它在毫秒尺度上一再執行,不像長期排程器只偶爾決定哪些工作才准進入系統。
它何時執行?只要目前的行程無法再保住 CPU 時:它結束了、它因 I/O 而阻塞、它的時間配量到期、或一個更高優先權的行程變為就緒。在這每一個時刻,短期排程器都會檢視就緒佇列並套用它的政策——先到先服務、輪轉、優先權,不論作業系統用的是哪種——選出一個行程。它本身並不執行切換;它只做選擇,接著由分派器去執行。正因為它執行得這麼頻繁,排程器必須很快:花在做決定的時間,就是 CPU 沒做有用工作的時間。
值得區分三種經典排程器。長期排程器(工作排程器)藉由緩慢地納入新行程來控制多元程式規劃的程度;在多數現代互動系統上它並不存在。中期排程器可能把整個行程置換出記憶體以紓解壓力。短期排程器才是人們口中通常所指的「排程器」,也是 CPU 排程的核心。
行程 A 正在執行時呼叫了 read() 並阻塞等待磁碟。這個事件觸發了短期排程器,它掃描就緒佇列、依政策挑出行程 B,並通知分派器切換到 B——全部在數微秒內完成,所以 CPU 幾乎不會閒置。
短期排程器在每次阻塞、先佔或結束時觸發——每秒許多次。
排程器只負責「決定」;真正的交接(儲存與還原暫存器、切換位址空間)是分派器的工作。把兩者混為一談是初學者常見的失誤。
又称
另见