FCFS-planningsalgoritme: wat is, voorbeeldprogramma

⚡ Slimme samenvatting

Bij FIFO-planning (First Come First Serve) worden processen uitgevoerd in de exacte volgorde waarin ze in de wachtrij terechtkomen. Dit gebeurt met behulp van een eenvoudige, niet-preëmptieve aanpak, waardoor het het gemakkelijkste CPU-planningsalgoritme is dat een besturingssysteem kan implementeren.

  • 🔄 Definitie: FCFS wijst de CPU toe aan het proces dat er als eerste om vraagt, waarbij de wachtrij met gereedstaande processen wordt beheerd volgens het first-in, first-out (FIFO) principe.
  • ⚙️ Natuur: FCFS is een niet-preëmptief principe, wat betekent dat een actief proces de CPU bezet houdt totdat de volledige bursttijd is verstreken.
  • ️ Analogie: Net als bij een wachtrij bij een ticketbalie, wordt degene die het eerst arriveert als eerste geholpen, en moeten latere aankomelingen wachten.
  • 📊 Berekening: De gemiddelde wachttijd wordt berekend door subtracDe aankomsttijd van elk proces wordt afgetrokken van de starttijd, waarna het gemiddelde over alle processen wordt berekend.
  • ???? Konvooi-effect: Een langdurig proces aan de voorkant zorgt ervoor dat kortere taken moeten wachten, waardoor de gemiddelde wachttijd toeneemt en de prestaties achteruitgaan.
  • 🤖 AI-hoek: Machine learning voorspelt piektijden om de planning te verbeteren, en Copilot helpt bij het snel schrijven en testen van FCFS-code.

FCFS-planningsalgoritme in Operating-systeem

Wat is de First Come First Serve-methode?

Wie het eerst komt, het eerst maalt (FCFS) FCFS is een planningsalgoritme voor besturingssystemen dat automatisch in de wachtrij geplaatste verzoeken en processen uitvoert in de volgorde van binnenkomst. Het is het eenvoudigste en meest efficiënte CPU-planningsalgoritme. Bij dit type algoritme krijgt het proces dat als eerste een CPU aanvraagt, deze ook als eerste toegewezen. Dit wordt beheerd met een FIFO-wachtrij. FCFS staat voor First Come First Serve (eerste komt, eerste serveert).

Zodra een proces in de wachtrij komt, wordt de bijbehorende PCB (Process Control Block) gekoppeld aan het einde van de wachtrij. Wanneer de CPU dus vrijkomt, wordt deze toegewezen aan het proces aan het begin van de wachtrij.

Kenmerken van de FCFS-methode

De belangrijkste kenmerken van de 'wie het eerst komt, het eerst maalt'-methode staan ​​hieronder vermeld:

  • Het is een niet-preëmptief Een planningsalgoritme zorgt ervoor dat een proces de CPU behoudt totdat de toegewezen tijd is verstreken.
  • Taken worden altijd uitgevoerd op basis van wie het eerst komt, het eerst maalt.
  • Het is gemakkelijk te implementeren en te gebruiken.
  • Deze methode presteert slecht en de algemene wachttijd is vrij hoog.

Voorbeeld van FCFS-planning

Een praktijkvoorbeeld van de FCFS-methode is het kopen van een bioscoopkaartje aan de kassa. Bij dit planningsalgoritme wordt een persoon geholpen op basis van de volgorde in de wachtrij. De persoon die als eerste aankomt, koopt als eerste het kaartje, en vervolgens de volgende. Dit gaat door totdat de laatste persoon in de rij een kaartje heeft gekocht. Met behulp van dit algoritme werkt het CPU-proces op een vergelijkbare manier.

Hoe FCFS werkt? Berekening van de gemiddelde wachttijd

Om te begrijpen hoe het algoritme processen plant, volgt hier een voorbeeld van vijf processen die op verschillende tijdstippen aankomen. Elk proces heeft een andere bursttijd.

Proces Burst-tijd Aankomsttijd
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Met behulp van het FCFS-planningsalgoritme worden deze processen als volgt afgehandeld.

Stap 1) Het proces begint met P4, die een aankomsttijd van 0 heeft.

Voorbeeld van FCFS-planning, stap 1

Stap 2) Op tijdstip=1 arriveert P3. P4 wordt nog steeds uitgevoerd. Daarom wordt P3 in een wachtrij gehouden.

Voorbeeld van FCFS-planning, stap 2

Stap 3) Op tijdstip t=2 arriveert P1 en wordt in de wachtrij geplaatst.

Voorbeeld van FCFS-planning, stap 3

Stap 4) Op tijdstip t=3 is de uitvoering van het P4-proces voltooid.

Voorbeeld van FCFS-planning, stap 4

Stap 5) Op tijdstip=4 begint P3, die als eerste in de wachtrij staat, met de uitvoering.

Voorbeeld van FCFS-planning, stap 5

Stap 6) Op tijdstip 5 arriveert P2 en wordt in een wachtrij geplaatst.

Voorbeeld van FCFS-planning, stap 6

Stap 7) Op tijdstip 11 voltooit P3 zijn uitvoering.

Voorbeeld van FCFS-planning, stap 7

Stap 8) Op tijdstip 11 start P1 met de uitvoering. Het heeft een bursttijd van 6, dus de uitvoering is voltooid op tijdstip 17.

Voorbeeld van FCFS-planning, stap 8

Stap 9) Op tijdstip 17 start P5 met de uitvoering. Het heeft een bursttijd van 4, dus de uitvoering is voltooid op tijdstip 21.

Voorbeeld van FCFS-planning, stap 9

Stap 10) Op tijdstip 21 start P2 met de uitvoering. Het heeft een bursttijd van 2, dus de uitvoering is voltooid op tijdstip 23.

Voorbeeld van FCFS-planning, stap 10

Stap 11) Laten we nu de gemiddelde wachttijd voor het bovenstaande voorbeeld berekenen.

Gemiddelde wachttijd bij FCFS-planning

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

Gemiddelde wachttijd = (0 + 2 + 9 + 13 + 16) / 5 = 40 / 5 = 8

FCFS-planning gemiddelde wachttijdberekening

Voordelen van FCFS

Hieronder volgen de voordelen van het gebruik van het FCFS-planningsalgoritme:

  • Het is de eenvoudigste vorm van een CPU-planningsalgoritme.
  • Het is eenvoudig te programmeren.
  • Het werkt volgens een eenvoudig principe: wie het eerst komt, het eerst maalt.

Nadelen van FCFS

Hieronder volgen de nadelen van het gebruik van het FCFS-planningsalgoritme:

  • Het is een niet-preëmptief CPU-planningsalgoritme, wat betekent dat zodra een proces aan de CPU is toegewezen, de CPU pas wordt vrijgegeven nadat het de uitvoering heeft voltooid.
  • De gemiddelde wachttijd is hoog.
  • Korte processen achteraan in de wachtrij moeten wachten tot het lange proces vooraan is afgerond.
  • Het is geen ideale techniek voor timeshare-systemen.
  • Vanwege zijn eenvoud is FCFS niet erg efficiënt.

Veelgestelde vragen

First Come First Serve is een niet-preëmptief algoritme. Zodra een proces de CPU krijgt, draait het totdat de toegewezen tijd is verstreken. De scheduler kan het dus niet onderbreken om een ​​nieuw of korter proces uit te voeren.

Het konvooi-effect treedt op wanneer meerdere korte processen achter één lang proces vooraan in de wachtrij wachten. Deze ene lange taak verhoogt de gemiddelde wachttijd en verlaagt de algehele CPU-doorvoer.

De doorlooptijd is gelijk aan de voltooiingstijd min de aankomsttijd voor elk proces. Het meet de totale tijd die een proces in het systeem doorbrengt, vanaf het moment van aankomst tot het moment dat de uitvoering op de CPU is voltooid.

Wie het eerst komt, het eerst maalt, wordt bediend op volgorde van binnenkomst. Kortste baan eerst serveert eerst de kleinste porties om de wachttijd te verkorten, en Round Robin geeft elk proces een vast tijdslot voor tijddeling.

Een puur FCFS-principe leidt niet tot uithongering, omdat elk proces uiteindelijk vooraan in de FIFO-wachtrij terechtkomt. Lange taken kunnen echter nog steeds korte taken aanzienlijk vertragen door het zogenaamde 'konvooieffect'.

FCFS werkt in O(n) tijd wanneer processen al geordend zijn op aankomsttijd, aangezien elk proces slechts één keer wordt ingepland. Het sorteren van ongesorteerde aankomsten op aankomsttijd voegt eerst een O(n log n) stap toe.

Machine learning-modellen voorspellen de piektijden van processen en selecteren of optimaliseren planningsbeleid om de gemiddelde wachttijd en het energieverbruik te verlagen. Onderzoekers passen deze AI-gestuurde planners toe in cloudservers en datacenters.

Ja. GitHub Copilot kan FCFS-code genereren in C. Javaof Python met berekeningen van wachttijd en doorlooptijd. Controleer altijd de formules voor het sorteren op aankomsttijd, het oplossen van gelijkstanden en het berekenen van het gemiddelde voordat u de resultaten vertrouwt.

Vat dit bericht samen met: