CPU 排程

多層佇列(multilevel queue)

想像一座機場,頭等、商務與經濟艙各有獨立的隊伍——每條隊伍有自己的規則,各艙等依固定的優先次序被服務。多層佇列排程器對行程做的就是這件事:它不是只有一個就緒佇列,而是保有好幾個獨立的佇列,各自容納不同類別的行程,且每個佇列可以有自己的排程演算法。

它的運作方式:行程依一個在啟動時就固定的屬性,被永久指派到某個佇列——例如系統行程放在最上層佇列、互動行程放在中層佇列、批次行程放在底層佇列。每個佇列跑自己的政策:互動佇列也許用輪轉以求靈敏反應,而批次佇列用先到先服務。接著一個更高層的規則在各佇列之間排程,常見是用固定優先權:較低佇列中的行程只有在所有較高佇列都空了才執行(這有餓死低層佇列的風險),或者改為每個佇列分到固定比例的 CPU 時間。

為什麼重要與它的限制:多層佇列乾淨地把需求確實不同的類別分開,於是前景互動工作永遠不必和背景批次工作排在同一條隊伍裡競爭。它的大弱點是僵硬——一個行程一輩子困在它被指派的佇列裡,即使行為改變也無法移動(比如一個變得吃 CPU 的互動行程)。這份不靈活正是多層回饋佇列被發明出來、藉由讓行程在佇列間遷移來修正的。

依固定優先權的三個佇列:系統(輪轉)、互動(輪轉)、批次(FCFS)。CPU 只有在系統佇列空了才服務互動佇列,只有在兩個較高佇列都空了才服務批次。一個啟動時被放進互動佇列的純運算工作會永遠待在那裡,即使它已不再互動。

每個類別各有獨立佇列、各有自己的政策——但行程永不換佇列。

多層佇列是固定指派的:行程無法在佇列間移動。若你看到行程因行為而被降級或升級,那是多層「回饋」佇列,一個不同(更靈活)的方案。

又称
multilevel queue scheduling多級佇列