Skillnad mellan Preemptive och Non-Preemptive Scheduling i Operativsystem

Processor Schemaläggning (eller CPU Schemaläggning) bestämmer vilka processer som tilldelas till och tas bort från CPU, baserat på schemaläggningsmodeller som Förebyggande och Non-Preemptive Scheduling (också känd som Samarbetsplanering).

Äldre system kan fungera i enkla fristående lägen, men med det ökande behovet av lyhörda, flexibla system, liksom virtualisering, ger effektiv hantering av flera behandlingar ett snabbt svar på alla uppgiftsbehandlingsförfrågningar.

Schemaläggningsenheter kallas ofta som a uppgift och det är schemaläggarens jobb att springa och hantera dessa uppgifter när det behövs Scheduler väljer uppgiften som ska tas bort och tilldelas CPU-enheten för bearbetning, enligt den använda schemaläggningsmodellen.

Hur vet Scheduler vilka uppgifter som är prioriterade?

Schemaläggaren behöver driva en rättvis och effektiv urvalsprocess, med hänsyn till variabla, dynamiska bearbetningsförfrågningar och utnyttja CPU-cyklerna mest.

Uppgifter kan vara i två tillstånd medan de bearbetas:

  1. I en CPU Burst där CPU: n utför beräkningar för att bearbeta uppgiften (perioden för en CPU Burst varierar från uppgift till uppgift och programmerar till program).
  2. I en Input / Output (I / O) Burst väntar på att data ska tas emot eller skickas från systemet.

När CPUen är ledig läser schemaläggaren Klar kö, och väljer nästa uppgift som ska köras. Då är det Avsändare som ger den valda uppgiften kontroll av CPU, så det måste vara snabbt! Varje tid som upptagits av Dispatcher är känd som Dispatch Latency.

Det finns olika strukturer och anpassade parametrar för att definiera Klar kö, samt flera metoder som kan användas för att hantera komplexiteten i schemaläggningsprocessen.

Generellt handlar det om att optimera och maximera CPU-utnyttjande, genomströmning etc..

Schemaläggaren måste fatta ett beslut under ett av följande steg:

  1. När uppgiften ändras från en Löpning till a Väntar staten (till exempel väntar under en I / O-begäran).
  2. När uppgiften ändras från Löpning till Redo (till exempel svara på ett avbrott).
  3. När uppgiften ändras från Väntar till Redo (till exempel en I / O-begäran är klar).
  4. När Uppgift

En ny uppgift måste väljas om steg 1 eller 4 händer för att säkerställa fullt utnyttjande av CPU, och i både steg 2 och 3 kan uppgiften fortsätta springa eller en ny är vald.

Efter att ha förstått hur en uppgift behandlas, låt oss titta på två schemaläggningsmodeller som handlar om CPU-avbrott.

Båda har liknande funktioner med uppgifter, uppgiftstillstånd, köer och prioriteringar (statisk eller dynamisk):

  • Non-Preemptive Scheduling är när en uppgift körs tills den stannar (frivilligt) eller slutar. Windows® hade icke-förebyggande schemaläggning till Windows 3.x, varefter den ändrats till Preemptive från Windows 95.
  • Preemptive Scheduling är där en uppgift kan tvingas avbrytas av en CPU-avbrytning, till skillnad från icke-förebyggande, där uppgiften körs tills den släpper kontrollen över CPU-enheten.

Non-Preemptive Scheduling

Uppgifter inom ett icke-förebyggande system kommer att köras tills det är klart.

Scheduler kontrollerar sedan alla uppgifter states och scheman nästa högsta prioriterade uppgift med a Redo stat.

Med icke-förebyggande schemaläggning kan en gång en uppgift ha sitt uppdrag till CPU: n, det kan inte tas bort, även om korta uppgifter måste vänta på längre uppdrag att slutföra.

Schemaläggningshanteringen över alla uppgifter är "rättvis" och svarstiderna är förutsägbara eftersom högprioriterade uppgifter inte kan stötta väntande uppgifter längre ner i kön.

Scheduler säkerställer att varje uppgift får sin del av CPU: n, vilket undviker eventuell fördröjning med någon uppgift. Den tid som tilldelas CPUen kanske inte nödvändigtvis är lika, eftersom det beror på hur lång tid uppgiften tar för att slutföra.

Preemptive Scheduling

Denna schemaläggningsmodell gör det möjligt att avbryta uppgiften - i motsats till icke-förebyggande planering som har en "run-to-completion" -strategi.

Avbrotten, som kan initieras från externa samtal, åberopar schemaläggaren att pausa en löpande uppgift för att hantera en annan högre prioritetsuppgift - så att kontrollen av CPU-enheten kan föregås.

Den högsta prioriterade uppgiften i a Redo tillståndet körs, vilket möjliggör snabbt svar på realtidshändelser.

Några av nackdelarna med Preemptive Scheduling innebär en ökning av kostnader för resurser vid användning av avbrott och problem kan uppstå med två uppgifter som delar uppgifter, eftersom man kan avbrytas när man uppdaterar delade datastrukturer och kan påverka dataintegriteten negativt.

Å andra sidan är det praktiskt att kunna pausa en uppgift att hantera en annan som kan vara kritisk.

Sammanfattningsvis

Många avvikelser och beroenden i olika policyer kan definieras, såsom att använda a "Round Robin Policy [i]" där varje uppgift (med samma prioritet) kör en gång och sedan placeras i slutet av kön, för nästa cykel.

Andra policyer inkluderar Först in först ut, Kortaste Job-First, Kortaste Job-Next, Kortaste återstående tid, etc.

Analys av historiska data kan ge information om aspekter, till exempel hur mycket nya uppdrag kommer, CPU- och I / O-burst etc, så sannolikhetsfördelningar kan beräkna egenskaper av uppgifternas väntetider och därigenom aktivera administratörer med relevanta uppgifter för att definiera schemaläggningsmodeller.