Verschil tussen preventieve en niet-preventieve planning in besturingssystemen Verschil tussen

Anonim

Processorplanning (of CPU-planning ) bepaalt welke processen worden toegewezen aan en verwijderd uit de CPU op basis van planningsmodellen zoals Preemptive en Non -Preemptive Scheduling (ook bekend als Co-operative Scheduling ).

Oudere systemen kunnen werken in eenvoudige stand-alone modi, maar met de toenemende behoefte aan responsieve, flexibele systemen, evenals aan virtualisatie, het efficiënt beheren van multi-processing biedt een snelle reactie op alle taakverwerkingsverzoeken.

Taakeenheden worden vaak een taak genoemd en het is de taak van de planner om deze taken uit te voeren en te beheren wanneer dat nodig is: de planner selecteert de taak die moet worden verwijderd en toegewezen aan de CPU voor verwerking, overeenstemming van het gebruikte planningsmodel.

Hoe weet de planner welke taken prioriteit hebben?

De planner moet een eerlijk en efficiënt selectieproces uitvoeren, rekening houdend met variabele, dynamische verwerkingsverzoeken en optimaal gebruik maken van de CPU-cycli.

Taken kunnen zich tijdens verwerking in twee toestanden bevinden:

  1. In een CPU-burst waarbij de CPU berekeningen uitvoert om de taak te verwerken (de periode voor een CPU-burst varieert van taak tot taak en programma om te programmeren).
  2. In een invoer / uitvoer (I / O) Burst wachtend tot gegevens worden ontvangen of verzonden vanuit het systeem.

Wanneer de CPU inactief is, leest de planner de wachtrij Gereed en selecteert hij de volgende taak die moet worden uitgevoerd. Vervolgens is het de Dispatcher die de geselecteerde taakbesturing van de CPU geeft, dus het moet snel zijn! De door de Dispatcher opgenomen tijd staat bekend als Dispatch Latency .

Er zijn verschillende structuren en aangepaste parameters om de Ready-wachtrij te definiëren, evenals verschillende methoden die kunnen worden gebruikt om de complexiteit van het planningsproces te beheren.

Over het algemeen gaat het om het optimaliseren en maximaliseren van CPU-gebruik, doorvoer, enz.

De planner moet een beslissing nemen tijdens een van de volgende fasen:

  1. Wanneer de taak verandert van wordt uitgevoerd naar een wachtstatus (bijvoorbeeld wachten tijdens een I / O-aanvraag).
  2. Wanneer de taak wordt gewijzigd van Running tot Ready (bijvoorbeeld reageren op een interrupt).
  3. Wanneer de taak verandert van Waiting tot Ready (bijvoorbeeld een I / O-aanvraag is voltooid).
  4. Wanneer de taak

een nieuwe taak moet worden geselecteerd als fase 1 of 4 plaatsvindt om volledig gebruik van de CPU te garanderen, en in fase 2 en 3, kan de taak worden voortgezet of een nieuwe taak worden uitgevoerd gekozen.

Laten we, nadat we hebben begrepen hoe een taak wordt verwerkt, naar twee planningsmodellen kijken die omgaan met CPU-interrupts.

Beide hebben vergelijkbare functies met taken, taakstatussen, wachtrijen en prioriteiten (statisch of dynamisch):

  • Niet-preventieve planning is wanneer een taak wordt uitgevoerd totdat deze stopt (vrijwillig) of eindigt. Windows® had Non-Preemptive Scheduling tot Windows 3. x, waarna het naar Preemptive van Windows 95 veranderde.
  • Preemptive Scheduling is waar een taak geforceerd kan worden opgeschort door een CPU-interrupt, in tegenstelling tot Non-Prepretive waar de taak wordt uitgevoerd totdat de besturing van de CPU wordt vrijgegeven.

Niet-preventieve planning

Taken binnen een niet-preventief systeem worden uitgevoerd totdat ze zijn voltooid.

De planner controleert vervolgens de status van alle taken en plant de taak met de volgende hoogste prioriteit in met een status Klaar.

Met niet-preventieve planning, als een taak eenmaal is toegewezen aan de CPU, kan deze niet worden weggenomen, zelfs als korte taken moeten wachten tot langere taken worden voltooid.

Het planningsbeheer voor alle taken is "redelijk" en reactietijden zijn voorspelbaar omdat taken met een hoge prioriteit geen wachttaken verderop in de wachtrij kunnen stoten.

De Scheduler zorgt ervoor dat elke taak zijn 'deel van de CPU krijgt, waardoor elke vertraging bij elke taak wordt voorkomen. De 'hoeveelheid tijd' die aan de CPU is toegewezen, hoeft niet noodzakelijk gelijk te zijn, omdat deze afhankelijk is van hoe lang de taak duurt om te voltooien.

Preemptive Scheduling

Met dit planningsmodel kunnen taken worden onderbroken - in tegenstelling tot Non-Preemptive Scheduling met een "run-to-completion" -aanpak.

De interrupts, die kunnen worden geïnitieerd door externe oproepen, roepen de Scheduler op een lopende taak te pauzeren om een ​​andere taak met hogere prioriteit te beheren - zodat de besturing van de CPU kan worden uitgeschakeld.

De taak met de hoogste prioriteit in een staat Gereed wordt uitgevoerd, zodat snel kan worden gereageerd op real-time gebeurtenissen.

Sommige van de nadelen van Preemptive Scheduling zijn dat de overheadkosten voor resources toenemen bij het gebruik van interrupts en dat er problemen kunnen optreden bij twee taken voor het delen van gegevens, omdat de gegevens tijdens het bijwerken van gedeelde gegevensstructuren kunnen worden onderbroken en de gegevensintegriteit negatief kan worden beïnvloed.

Aan de andere kant is het praktisch om een ​​taak te kunnen pauzeren om een ​​andere taak te beheren die mogelijk van kritiek belang is.

Samenvattend

Veel varianties en afhankelijkheden in verschillende beleidsregels kunnen worden gedefinieerd, zoals het gebruik van een "Round Robin-beleid [i]" waarbij elke taak (met dezelfde prioriteit) één keer wordt uitgevoerd en vervolgens aan het einde van de wachtrij geplaatst, voor de volgende cyclus.

Andere beleidsregels zijn First-in-first-out , Shortest-job-first , Shortest-job-volgende , Shortest Remaining Time , etc.

Analyse van historische gegevens kan informatie verschaffen over aspecten, zoals de snelheid waarmee nieuwe taken aankomen, de CPU en I / O-bursts enz. Zodat kansverdelingen de kenmerken van de wachttijden van taken kunnen berekenen, waardoor beheerders met relevante gegevens om planningsmodellen te definiëren.