Multilevel Feedback Queue

Den här artikeln behöver källhänvisningar för att kunna verifieras. (2023-07)
Åtgärda genom att lägga till pålitliga källor (gärna som fotnoter). Uppgifter utan källhänvisning kan ifrågasättas och tas bort utan att det behöver diskuteras på diskussionssidan.

Multilevel Feedback Queue (MFQ) kan på svenska översättas till "flernivåskö med återkoppling" och är en schemaläggningsalgoritm som används inom datavetenskap.

Algoritmen fungerar så att alla processer blir placerade i en kö baserat på den prioritet den har. Första processen i kön får sedan köra en viss tidsperiod. När denna tidsperiod uppnåtts flyttas inte processen längst bak i kön, som i fallet med Round Robin, utan placeras in i kön på den plats där dess ursprungliga prioritet placerar den. Därefter ökas alla processers prioriteter på med ett och nästa process får köra.

Exempel

Fyra processer har olika prioriteter och ska köra:

Process Ursprungsprioritet Prioritet
P 1 {\displaystyle P_{1}} 5 5
P 2 {\displaystyle P_{2}} 4 4
P 3 {\displaystyle P_{3}} 3 3
P 4 {\displaystyle P_{4}} 1 1

P 1 {\displaystyle P_{1}} kör först en stund. Sedan ökas alla prioriteter på och P 1 {\displaystyle P_{1}} sätts in igen, fortfarande på första plats:

Process Ursprungsprioritet Prioritet
P 1 {\displaystyle P_{1}} 5 5
P 2 {\displaystyle P_{2}} 4 5
P 3 {\displaystyle P_{3}} 3 4
P 4 {\displaystyle P_{4}} 1 2

Efter att P 1 {\displaystyle P_{1}} fått köra igen ökas alla prioriteter på igen, och P 1 {\displaystyle P_{1}} sätts in. Nu hamnar den däremot på andra plats, och P 2 {\displaystyle P_{2}} får därför köra.

Process Ursprungsprioritet Prioritet
P 2 {\displaystyle P_{2}} 4 6
P 1 {\displaystyle P_{1}} 5 5
P 3 {\displaystyle P_{3}} 3 5
P 4 {\displaystyle P_{4}} 1 3

Därefter ökas prioriteterna, och P 2 {\displaystyle P_{2}} hamnar ända nere på 3:je plats. P 1 {\displaystyle P_{1}} får köra igen.

Process Ursprungsprioritet Prioritet
P 1 {\displaystyle P_{1}} 5 6
P 3 {\displaystyle P_{3}} 3 6
P 2 {\displaystyle P_{2}} 4 4
P 4 {\displaystyle P_{4}} 1 4

Och så vidare. Resultatet kommer att bli följande ordning:

P 1 {\displaystyle P_{1}} , P 1 {\displaystyle P_{1}} , P 2 {\displaystyle P_{2}} , P 1 {\displaystyle P_{1}} , P 3 {\displaystyle P_{3}} , P 1 {\displaystyle P_{1}} , P 2 {\displaystyle P_{2}} , P 4 {\displaystyle P_{4}} , P 1 {\displaystyle P_{1}} , P 3 {\displaystyle P_{3}} osv...