FCFS plánovací algoritmus: Co je, příklad programu

⚡ Chytré shrnutí

Plánování „kdo dřív přijde, ten dřív mele“ spouští procesy v přesném pořadí, v jakém se dostanou do fronty připravených procesů, a to pomocí jednoduchého nepreemptivního přístupu FIFO, díky kterému je to nejjednodušší algoritmus plánování CPU, který lze v operačním systému implementovat.

  • 🔄 Definice: FCFS přiřadí CPU procesu, který si o něj vyžádá první, a spravuje frontu připravenosti jako strukturu FIFO (first-in, first out).
  • ⚙️ Příroda: FCFS není preemptivní, takže běžící proces zadržuje CPU, dokud nedokončí celý svůj čas burst.
  • 🎟️ Analogie: Stejně jako u fronty u pokladny je obsloužen první proces a pozdější příchozí čekají na svou řadu.
  • 📊 Výpočet: Průměrnou dobu čekání zjistí subtracodečtením času příchodu každého procesu od jeho času zahájení a následným zprůměrováním napříč všemi procesy.
  • 🐢 Efekt konvoje: Jeden dlouhý proces v popředí nutí kratší úlohy čekat, což zvyšuje průměrnou dobu čekání a snižuje výkon.
  • 🤖 Úhel umělé inteligence: Strojové učení předpovídá časy shluků pro zlepšení plánování a Copilot pomáhá rychle psát a testovat kód FCFS.

Plánovací algoritmus FCFS v Operasystém

Co je metoda kdo dřív přijde, je dřív na řadě?

Kdo dřív přijde, ten dřív mele (FCFS) je plánovací algoritmus operačního systému, který automaticky spouští požadavky a procesy ve frontě v pořadí jejich příchodu. Je to nejjednodušší a nejjednodušší algoritmus pro plánování CPU. V tomto typu algoritmu proces, který si vyžádá CPU jako první, získá alokaci CPU jako první. Toto je spravováno pomocí fronty FIFO. Úplná forma FCFS je „kdo dřív přijde, ten dřív mele“.

Jakmile proces vstoupí do fronty připravených procesů, jeho PCB (procesní řídicí blok) je propojen s koncem fronty. Takže když se CPU uvolní, je přiřazen procesu na začátku fronty.

Charakteristiky metody FCFS

Hlavní charakteristiky metody „kdo dřív přijde, ten dřív mele“ jsou uvedeny níže:

  • Je nepreemptivní plánovací algoritmus, takže proces udržuje CPU aktivní, dokud nedokončí svůj čas burst.
  • Úkoly jsou vždy prováděny podle zásady „kdo dřív přijde, je dřív na řadě“.
  • Snadno se implementuje a používá.
  • Tato metoda má nízký výkon a obecná čekací doba je poměrně vysoká.

Příklad plánování FCFS

Reálným příkladem metody FCFS je nákup vstupenky do kina u pokladny. V tomto plánovacím algoritmu je osoba obsloužena podle pořadí ve frontě. Osoba, která dorazí do fronty jako první, si koupí vstupenku jako první a poté další. Toto pokračuje, dokud si vstupenku nezakoupí poslední osoba ve frontě. Při použití tohoto algoritmu funguje proces CPU podobným způsobem.

Jak FCFS funguje? Výpočet průměrné čekací doby

Abychom pochopili, jak algoritmus plánuje procesy, uvádíme příklad pěti procesů, které přicházejí v různých časech. Každý proces má jiný čas shluku.

Proces Čas prasknutí Čas příjezdu
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Pomocí plánovacího algoritmu FCFS jsou tyto procesy řešeny následovně.

Krok 1) Proces začíná s P4, který má čas příchodu 0.

Příklad plánování FCFS krok 1

Krok 2) V čase=1 přichází P3. P4 stále probíhá. P3 je tedy držen ve frontě.

Příklad plánování FCFS krok 2

Krok 3) V čase = 2 dorazí P1 a je zařazen do fronty.

Příklad plánování FCFS krok 3

Krok 4) V čase = 3 proces P4 dokončí své provádění.

Příklad plánování FCFS krok 4

Krok 5) V čase=4 zahájí provádění P3, který je první ve frontě.

Příklad plánování FCFS krok 5

Krok 6) V čase = 5 dorazí P2 a je zařazen do fronty.

Příklad plánování FCFS krok 6

Krok 7) V čase = 11 dokončí P3 své provádění.

Příklad plánování FCFS krok 7

Krok 8) V čase = 11 zahájí P1 provádění. Má dobu shlukování 6, takže provádění dokončí v časovém intervalu 17.

Příklad plánování FCFS krok 8

Krok 9) V čase = 17 zahájí P5 provádění. Má dobu shlukování 4, takže provádění dokončí v čase = 21.

Příklad plánování FCFS krok 9

Krok 10) V čase = 21 zahájí P2 provádění. Má dobu shlukování 2, takže provádění dokončí v časovém intervalu 23.

Příklad plánování FCFS krok 10

Krok 11) Nyní si vypočítáme průměrnou čekací dobu pro výše uvedený příklad.

Průměrná doba čekání v plánování FCFS

Waiting time = Start time - Arrival time

P4 = 0 – 0 = 0

P3 = 3 – 1 = 2

P1 = 11 – 2 = 9

P5 = 17 – 4 = 13

P2 = 21 – 5 = 16

Průměrná čekací doba = (0 + 2 + 9 + 13 + 16) / 5 = 40 / 5 = 8

Výpočet průměrné doby čekání pro plánování FCFS

Výhody FCFS

Zde jsou výhody a výhody použití plánovacího algoritmu FCFS:

  • Je to nejjednodušší forma CPU plánovací algoritmus.
  • Je snadné ho programovat.
  • Řídí se jednoduchým pořadím „kdo dřív přijde, ten dřív mele“.

Nevýhody FCFS

Zde jsou nevýhody a nevýhody použití plánovacího algoritmu FCFS:

  • Jedná se o nepreemptivní algoritmus plánování CPU, takže jakmile je proces přidělen CPU, nikdy jej neuvolní, dokud nedokončí své provádění.
  • Průměrná čekací doba je vysoká.
  • Krátké procesy na konci fronty musí čekat na dokončení dlouhého procesu na začátku.
  • Není to ideální technika pro systémy sdílení času.
  • Kvůli své jednoduchosti není FCFS příliš efektivní.

Nejčastější dotazy

Algoritmus „kdo dřív přijde, ten dřív mele“ je nepreemptivní algoritmus. Jakmile proces získá CPU, běží, dokud neskončí jeho burst, takže plánovač jej nemůže přerušit a spustit nově příchozí nebo kratší proces.

K efektu konvoje dochází, když několik krátkých procesů čeká za jedním dlouhým procesem na začátku fronty. Tato jediná dlouhá úloha zvyšuje průměrnou dobu čekání a snižuje celkovou propustnost CPU.

Doba zpracování se rovná době dokončení mínus době příchodu každého procesu. Měří celkový čas, který proces stráví v systému, od svého příchodu do dokončení provádění na CPU.

FCFS obsluhuje na základě pořadí příjezdu, Nejdříve nejkratší práce nejdříve obsluhuje nejmenší dávku, čímž se zkrátí čekací doba, a Round Robin dává každému procesu pevný časový úsek pro sdílení času.

Čistý FCFS nezpůsobuje hladovění, protože každý proces se nakonec dostane na začátek fronty FIFO. Dlouhé úlohy však mohou stále značně zpozdit krátké úlohy kvůli efektu konvoje.

FCFS běží v čase O(n), i když jsou procesy již seřazeny podle příchodu, protože každý je naplánován jednou. Seřazení neřazených příchodů podle času příchodu nejprve přidá krok O(n log n).

Modely strojového učení předpovídají doby stlačení procesů a vybírají nebo ladí plánovací zásady pro snížení průměrné doby čekání a spotřeby energie. Výzkumníci aplikují tyto plánovače řízené umělou inteligencí v cloudových serverech a datových centrech.

Ano. GitHub Copilot umí generovat kód FCFS v jazyce C. Javanebo Python s výpočty doby čekání a doby odezvy. Před důvěřováním výstupu vždy ověřte vzorce pro řazení podle doby doručení, rozhodování o remízách a průměrování.

Shrňte tento příspěvek takto: