Preventieve en niet-preventieve planning
Belangrijkste verschillen tussen preventieve en niet-preventieve planning
- Bij preventieve planning wordt de CPU voor een specifieke tijdsperiode aan de processen toegewezen, en wordt de niet-preventieve planning-CPU aan het proces toegewezen totdat deze wordt beëindigd.
- Bij preventieve planning worden taken gewisseld op basis van prioriteit, terwijl bij niet-preventieve planning geen wisseling plaatsvindt.
- Het preventieve algoritme heeft de overhead van het omschakelen van het proces van de gereed-status naar de actieve status, terwijl niet-preëmptieve planning geen dergelijke overhead heeft bij het schakelen.
- Preëmptieve planning is flexibel, terwijl niet-preventieve planning rigide is.

Wat is preventieve planning?
Preemptive Scheduling is een planningsmethode waarbij de taken meestal worden toegewezen met hun prioriteiten. Soms is het belangrijk om een taak met een hogere prioriteit uit te voeren vóór een andere taak met een lagere prioriteit, zelfs als de taak met een lagere prioriteit nog steeds actief is.
Op dat moment blijft de taak met lagere prioriteit enige tijd van kracht en wordt hervat wanneer de taak met hogere prioriteit zijn uitvoering beëindigt.
Wat is niet-preventieve planning?
Bij dit type planningsmethode is de CPU toegewezen aan een specifiek proces. Het proces dat de CPU bezig houdt, zal de CPU vrijgeven door van context te wisselen of te beëindigen.
Het is de enige methode die voor verschillende hardwareplatforms kan worden gebruikt. Dat komt omdat er geen gespecialiseerde hardware (bijvoorbeeld een timer) zoals preventieve planning nodig is.
Niet-preventieve planning vindt plaats wanneer een proces vrijwillig in de wachtstatus komt of wordt beëindigd.
Preventieve versus niet-preventieve planning: vergelijkingstabel
Hier vindt u een onderlinge vergelijking van preventieve en niet-preventieve planning. De belangrijkste verschillen tussen preventieve en niet-preventieve planning in OS zijn als volgt:
Preventieve planning | Niet-preventieve planning |
---|---|
Een processor kan worden bevooroordeeld om de verschillende processen uit te voeren tijdens een lopende procesuitvoering. | Zodra de processor met de uitvoering begint, moet hij deze voltooien voordat hij de andere uitvoert. Het kan niet halverwege worden onderbroken. |
Het CPU-gebruik is efficiënter vergeleken met niet-preventieve planning. | CPU-gebruik is minder efficiënt vergeleken met preventieve planning. |
De wacht- en responstijd van preventieve planning is korter. | De wacht- en responstijd van de niet-preventieve planningsmethode is hoger. |
Preventieve planning heeft prioriteit. Het proces met de hoogste prioriteit is een proces dat momenteel wordt gebruikt. | Wanneer een proces de status actief krijgt, wordt de status van dat proces nooit uit de planner verwijderd totdat het zijn taak heeft voltooid. |
Preventieve planning is flexibel. | Niet-preventieve planning is rigide. |
Voorbeelden: – Kortste resterende tijd eerst, Round Robin, etc. | Voorbeelden: Wie het eerst komt, het eerst maalt, Kortste taak eerst, Prioriteitsplanning, etc. |
Het preventieve planningsalgoritme kan worden geanticipeerd, dat wil zeggen dat het proces kan worden gepland | Bij een niet-preventieve planning kan het proces niet worden gepland |
Bij dit proces wordt de CPU voor een bepaalde periode aan de processen toegewezen. | In dit proces wordt CPU aan het proces toegewezen totdat het wordt beëindigd of naar de wachtstatus overschakelt. |
Een preventief algoritme heeft als overhead het omschakelen van het proces van de gereedstatus naar de actieve status en vice versa. | Bij niet-preventieve planning is er geen sprake van een overhead die het proces omschakelt van de status Gereed. |
Voordelen van preventieve planning
Hier zijn de voor- en voordelen van de preventieve planningsmethode:
- De preventieve planningsmethode is robuuster, zodat één proces de CPU niet kan monopoliseren
- De keuze van de lopende taak wordt na elke onderbreking heroverwogen.
- Elke gebeurtenis veroorzaakt een onderbreking van lopende taken
- Het besturingssysteem zorgt ervoor dat het CPU-gebruik door alle lopende processen hetzelfde is.
- Hierbij is het CPU-gebruik hetzelfde, dat wil zeggen dat alle lopende processen evenveel gebruik zullen maken van de CPU.
- Deze planningsmethode improviseert ook de gemiddelde responstijd.
- Preemptive Scheduling is nuttig wanneer we het gebruiken voor de multi-programmeeromgeving.
Voordelen van niet-preventieve planning
Hier volgen de voor- en voordelen van de niet-preventieve planningsmethode:
- Biedt lage planningskosten
- Heeft de neiging een hoge doorvoer te bieden
- Het is conceptueel een zeer eenvoudige methode
- Less computationele middelen nodig voor planning
Nadelen van preventieve planning
Hieronder staan de nadelen van preëmptieve planning:
- Er zijn beperkte computerbronnen nodig voor planning
- Het kost de planner meer tijd om de lopende taak op te schorten, de context te wijzigen en de nieuwe binnenkomende taak te verzenden.
- Het proces met een lage prioriteit moet langer wachten als er voortdurend processen met een hoge prioriteit binnenkomen.
Nadelen van niet-preventieve planning
Hier volgen de nadelen/nadelen van de niet-preventieve planningsmethode:
- Het kan tot uithongering leiden, vooral voor die realtime taken
- Bugs kunnen ervoor zorgen dat een machine vastloopt
- Het kan real-time en prioriteitsplanning moeilijk
- Slechte responstijd voor processen
Voorbeeld van niet-preventieve planning
Bij niet-preventieve SJF-planning houdt het proces, zodra de CPU-cyclus is toegewezen aan het proces, deze vast totdat deze een wachtstatus bereikt of wordt beëindigd.
Beschouw de volgende vijf processen, elk met zijn eigen unieke bursttijd en aankomsttijd.
Wachtrij verwerken | Burst-tijd | Aankomsttijd |
---|---|---|
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
Stap 0) Op tijdstip=0 arriveert P4 en begint met de uitvoering.
Stap 1) Op tijdstip = 1 arriveert proces P3. Maar P4 heeft nog steeds 2 uitvoeringseenheden nodig om te voltooien. De uitvoering zal worden voortgezet.
Stap 2) Op tijdstip =2 arriveert proces P1 en wordt toegevoegd aan de wachtrij. P4 zal de uitvoering voortzetten.
Stap 3) Op tijdstip = 3 zal proces P4 zijn uitvoering voltooien. De burst-tijd van P3 en P1 wordt vergeleken. Proces P1 wordt uitgevoerd omdat de burst-tijd ervan korter is vergeleken met P3.
Stap 4) Op tijdstip = 4 arriveert proces P5 en wordt toegevoegd aan de wachtrij. P1 zal de uitvoering voortzetten.
Stap 5) Op tijdstip = 5 arriveert proces P2 en wordt toegevoegd aan de wachtrij. P1 zal de uitvoering voortzetten.
Stap 6) Op tijdstip = 9 zal proces P1 zijn uitvoering voltooien. De burst-tijd van P3, P5 en P2 wordt vergeleken. Proces P2 wordt uitgevoerd omdat de burst-tijd het laagst is.
Stap 7) Op tijdstip=10 wordt P2 uitgevoerd en staan P3 en P5 in de wachtrij.
Stap 8) Op tijdstip = 11 zal proces P2 zijn uitvoering voltooien. De burst-tijd van P3 en P5 wordt vergeleken. Proces P5 wordt uitgevoerd omdat de burst-tijd ervan korter is.
Stap 9) Op tijdstip = 15 zal proces P5 zijn uitvoering voltooien.
Stap 10) Op tijdstip = 23 zal proces P3 zijn uitvoering voltooien.
Stap 11) Laten we de gemiddelde wachttijd voor bovenstaand voorbeeld berekenen.
Wait time P4= 0-0=0 P1= 3-2=1 P2= 9-5=4 P5= 11-4=7 P3= 15-1=14 Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
Voorbeeld van preventieve planning
Beschouw de volgende drie processen in Round-robin
Wachtrij verwerken | Burst-tijd |
---|---|
P1 | 4 |
P2 | 3 |
P3 | 5 |
Stap 1) De uitvoering begint met proces P1, dat burst-tijd 4 heeft. Hier wordt elk proces gedurende 2 seconden uitgevoerd. P2 en P3 staan nog in de wachtrij.
Stap 2) Op tijdstip =2 wordt P1 toegevoegd aan het einde van de wachtrij en begint P2 met uitvoeren
Stap 3) Op tijdstip=4 wordt P2 voorrang gegeven en aan het einde van de wachtrij toegevoegd. P3 begint met uitvoeren.
Stap 4) Op tijdstip=6 wordt P3 voorrang gegeven en aan het einde van de wachtrij toegevoegd. P1 begint met uitvoeren.
Stap 5) Op tijdstip=8 heeft P1 een burst-tijd van 4. De uitvoering is voltooid. P2 start de uitvoering
Stap 6) P2 heeft een burst-tijd van 3. Het is al gedurende 2 intervallen uitgevoerd. Op tijdstip=9 voltooit P2 de uitvoering. Vervolgens begint P3 met de uitvoering totdat deze is voltooid.
Stap 7) Laten we de gemiddelde wachttijd voor bovenstaand voorbeeld berekenen.
Wait time P1= 0+ 4= 4 P2= 2+4= 6 P3= 4+3= 7