Aanbevolen, 2020

Editor'S Choice

Verschil tussen preventieve en niet-preventieve planning in OS

Het is de verantwoordelijkheid van de CPU-planner om een ​​proces toe te wijzen aan de CPU wanneer de CPU in de rusttoestand is. De CPU-planner selecteert een proces uit de klaar-wachtrij en wijst het proces toe aan de CPU. De planning die plaatsvindt wanneer een proces overschakelt van de actieve status naar de status Gereed of vanuit de status Ingeschakeld naar Klaar, heet Preemptive Scheduling . Aan de handen, de planning die plaatsvindt wanneer een proces wordt beëindigd of overschakelt van hardlopen naar wachten op status, dit soort CPU-planning wordt niet-preventieve planning genoemd . Het fundamentele verschil tussen preëmptieve en niet-preventieve planning ligt in hun naam zelf. Dat is een preventieve planning kan worden voorafgegaan; de processen kunnen worden gepland. In Niet-preventieve planning kunnen de processen niet worden gepland.

Laten we de verschillen tussen de preventieve en niet-preventieve planning kort samenvatten met behulp van de onderstaande vergelijkingsgrafiek.

Vergelijkingstabel

Basis voor vergelijkingPreemptive SchedulingNiet-preventieve planning
basis-De middelen worden voor een beperkte tijd aan een proces toegewezen.Nadat bronnen aan een proces zijn toegewezen, houdt het proces het vast tot het zijn burst-tijd voltooit of overschakelt naar de wachtstatus.
OnderbrekenHet proces kan tussentijds worden onderbroken.Het proces kan niet worden onderbroken totdat het wordt beëindigd of overschakelt naar de wachtstaat.
uithongeringAls een proces met hoge prioriteit vaak in de klaar-wachtrij arriveert, kan het proces met lage prioriteit verhongeren.Als een proces met lange burst-tijd de CPU uitvoert, kan een ander proces met minder CPU-burst-tijd verhongeren.
boven het hoofdPre-preventieve planning heeft overheadkosten voor het plannen van de processen.Niet-preventieve planning heeft geen overheadkosten.
FlexibiliteitPre-preventieve planning is flexibel.Niet-preventieve planning is rigide.
KostenPre-preventieve planning is kostengerelateerd.Niet-preventieve planning is geen kosten-associatieve.

Definitie van Preemptive Scheduling

Preemptive scheduling is er een die kan worden gedaan in de omstandigheden waarin een proces overschakelt van rij-status naar gereed-status of van wachttoestand naar gereed-status . Hier worden de bronnen (CPU-cycli) toegewezen aan het proces gedurende de beperkte tijd en worden deze vervolgens weggenomen en wordt het proces opnieuw in de klaar-wachtrij geplaatst als het nog CPU-burst-tijd over heeft. Het proces blijft in een wachtrij staan ​​totdat het de volgende kans krijgt om uit te voeren.

Als een proces met hoge prioriteit in de klaar-wachtrij arriveert, hoeft het niet te wachten totdat het huidige proces de burst-tijd voltooit. In plaats daarvan wordt het huidige proces midden in de uitvoering onderbroken en in de klaar-wachtrij geplaatst totdat het proces met hoge prioriteit de CPU-cycli gebruikt. Op deze manier krijgt elk proces in de wachtrij enige tijd om de CPU uit te voeren. Het maakt de preëmptieve planning flexibel, maar verhoogt de overhead van het overschakelen van het proces van de status naar de status en de status.

Algoritmen die werken aan preventieve planning zijn Round Robin. Shortest Job First (SJF) en Priority scheduling kunnen al dan niet onder preventieve planning vallen.

Laten we een voorbeeld van Preemptive Scheduling nemen, kijk in de onderstaande afbeelding. We hebben vier processen P0, P1, P2, P3. Waarvan P2 arriveert op tijdstip 0. Dus de CPU wordt toegewezen aan proces P2 omdat er geen ander proces in de wachtrij staat. Ondertussen was P2 aan het uitvoeren, P3 arriveert op tijdstip 1, nu is de resterende tijd voor proces P2 (5 milliseconden) wat groter is dan de tijd vereist voor P3 (4 milli-sec). Dus CPU is toegewezen aan processor P3.

Ondertussen was P3 aan het uitvoeren, proces P1 arriveert op tijdstip 2. Nu is de resterende tijd voor P3 (3 milliseconden) minder dan de tijd die vereist is voor processen P1 (4 milliseconden) en P2 (5 milliseconden). Dus P3 mag doorgaan. Terwijl P3 doorgaat, arriveert proces P0 op tijdstip 3, nu is de resterende tijd voor P3 (2 milliseconden) gelijk aan de tijd vereist voor P0 (2 milliseconden). Dus P3 gaat door en nadat P3 eindigt, wordt de CPU toegewezen aan P0 omdat deze minder burst-tijd heeft dan andere. Nadat P0 eindigt, wordt de CPU toegewezen aan P1 en vervolgens aan P2.

Definitie van niet-preventieve planning

Niet-preventieve planning is een planning die kan worden toegepast in de omstandigheden waarin een proces wordt beëindigd of een proces overschakelt van actieve naar wachtende status . In Non-Preemptive Scheduling houdt het proces, wanneer de resources (CPU) aan een proces zijn toegewezen, de CPU vast totdat deze wordt beëindigd of een wachtstaat bereikt.

In tegenstelling tot preëmptieve planning, onderbreekt niet-preventieve planning geen proces dat CPU draait in het midden van de uitvoering. In plaats daarvan wacht het totdat het proces de CPU-burst-tijd voltooit en kan het de CPU toewijzen aan een ander proces.

In Niet-preventieve planning, als een proces met lange CPU-burst-tijd wordt uitgevoerd, zal het andere proces lang moeten wachten, wat de gemiddelde wachttijd van de processen in de klaar-wachtrij verhoogt. De niet-preëmptieve planning heeft echter geen overhead van het omschakelen van de processen van de wachtrij naar de CPU, maar het maakt de planning onbuigzaam omdat het proces in uitvoering zelfs niet wordt gepredikt voor een proces met een hogere prioriteit.

Laten we het bovenstaande planningsvoorbeeld op niet-preventieve wijze oplossen. Zoals aanvankelijk arriveert het proces P2 op tijdstip 0, dus CPU wordt toegewezen aan het proces P2 en het duurt 6 milliseconden om uit te voeren. Tussen alle processen in, dwz P0, P1, P3 arriveert in de klaar-wachtrij. Maar iedereen wacht totdat proces P2 zijn CPU-burst-tijd voltooit. Vervolgens wordt het proces dat na P2 aankomt bereikt, dwz P3 krijgt dan de CPU toegewezen tot het klaar is met burst-tijd. Op dezelfde manier wordt P1 uitgevoerd en wordt CPU later aan proces PO gegeven.

Belangrijkste verschillen tussen preventieve en niet-preventieve planning

  1. Het basisverschil tussen preventieve en niet-preventieve planning is dat bij preëmptieve planning de CPU voor de beperkte tijd aan de processen wordt toegewezen. In niet-preventieve planning wordt de CPU toegewezen aan het proces totdat het wordt beëindigd of overschakelt naar de wachtstaat .
  2. Het uitvoeringsproces bij preëmptieve planning wordt midden in de uitvoering onderbroken terwijl het uitvoeringsproces bij niet-preventieve planning niet wordt onderbroken tijdens de uitvoering.
  3. Preemptive Scheduling heeft de overhead om het proces om te schakelen van 'ready state' naar 'running state', vise-vers en behoud van de klaar-wachtrij. Aan de andere kant heeft niet-preventieve planning geen overhead om het proces van status naar status te schakelen.
  4. Bij preventieve planning, als een proces met hoge prioriteit vaak in de klaar-wachtrij arriveert, moet het proces met lage prioriteit lang wachten en moet het misschien verhongeren. Aan de andere kant, in de niet-preëmptieve planning, als CPU wordt toegewezen aan het proces met grotere burst-tijd, moeten de processen met kleine burst-tijd mogelijk uithongeren.
  5. Pre-preventieve planning is vrij flexibel omdat de kritieke processen toegang hebben tot de CPU wanneer ze in de klaar-wachtrij komen, ongeacht welk proces momenteel wordt uitgevoerd. Niet-preventieve planning is onbuigzaam, zelfs als een kritisch proces in de wachtrij terechtkomt, wordt het CPU-proces niet gestoord.
  6. De Preemptive Scheduling is kosten-associërend omdat het de integriteit van gedeelde gegevens moet behouden, wat niet het geval is met Niet-preventieve planning.

Conclusie:

Het is niet zo dat preëmptieve planning beter is dan niet-preventieve planning of bankschroefvers. Alles hangt af van hoe een planning de gemiddelde wachttijd van de processen minimaliseert en het CPU-gebruik maximaliseert.

Top