Forskel mellem Preemptive og Non-Preemptive Scheduling i Operativsystemer Forskellen mellem

Anonim

Processorplanlægning (eller CPU-planlægning ) bestemmer, hvilke processer der er tildelt og fjernet fra CPU'en, baseret på planlægningsmodeller som Preemptive og Non -Preventive Scheduling (også kendt som Samarbejdsprogrammering ).

Ældre systemer kunne fungere i enkle stand-alone tilstande, men med den stigende Behovet for lydhør, fleksible systemer samt virtualisering, der styrer multibearbejdning effektivt, giver hurtig respons til alle forespørgselsbehandlingsanmodninger.

Planlægningsenheder kaldes ofte som en opgave , og det er Scheduler's job at køre og styre disse opgaver, når det er nødvendigt, planlæggeren vælger opgaven, der skal fjernes og tildeles CPU'en til behandling til den anvendte planlægningsmodel.

Hvordan kender planlæggeren hvilke opgaver der prioriteres?

Scheduleren skal køre en retfærdig og effektiv udvælgelsesproces under hensyntagen til variable, dynamiske behandlingsanmodninger og få mest muligt ud af CPU-cyklusserne.

Opgaver kan være i to tilstande under behandling:

  1. I en CPU Burst hvor CPU'en udfører beregninger for at behandle opgaven (perioden for en CPU Burst varierer fra opgave til opgave, og program til program).
  2. I en Input / Output (I / O) Burst venter på data, der skal modtages eller sendes fra systemet.

Når CPU'en er inaktiv, læser Scheduler Klar køen, og vælger den næste opgave, der skal køres. Derefter er det Dispatcher , der giver den valgte processtyring af CPU'en, så det skal være hurtigt! Ethvert tidspunkt, der tages op af Dispatcher, kaldes Dispatch Latency .

Der er forskellige strukturer og brugerdefinerede parametre til at definere Klar køen, samt flere metoder, som kan bruges til at håndtere kompleksiteten i planlægningsprocessen.

Planlæggeren skal træffe en beslutning i et af følgende faser:

Når opgaven ændres fra en

  1. Running til en ventende tilstand (for eksempel venter under en I / O-anmodning). Når Opgaven skifter fra
  2. Kører til Klar (for eksempel at reagere på en afbrydelse). Når opgaven skifter fra
  3. Venter til Klar (for eksempel er en I / O-anmodning fuldført). Når
  4. Opgave En ny opgave skal vælges, hvis trin 1 eller 4 sker for at sikre fuld udnyttelse af CPU'en, og i både trin 2 og 3 kan opgaven fortsætte med at køre, eller en ny er valgte.

Lad os se på to planlægningsmodeller, der beskæftiger sig med CPU-afbrud, efter at have forstået, hvordan en opgave behandles.

Begge har lignende funktioner med opgaver, opgaver, køer og prioriteter (statisk eller dynamisk):

Ikke-forebyggende planlægning

  • er, når en opgave løber, indtil den stopper (frivilligt) eller slutter. Windows® havde ikke-forebyggende planlægning til Windows 3. x, hvorefter det blev ændret til Preemptive fra Windows 95. Preemptive Scheduling
  • er, hvor en opgave kan blive tvunget til at suspendere en CPU-afbrydelse, i modsætning til ikke-forebyggende opgaven kører, indtil den frigiver kontrol over CPU'en. Non-Preemptive Scheduling

Opgaver inden for et non-Preemptive system løber, indtil de er afsluttet.

Scheduleren kontrollerer derefter alle opgaver 'tilstande og planlægger den næsthøjeste prioritetsopgave med en tilstand

Klar. Med en ikke-forebyggende planlægning, når en opgave har sin opgave til CPU'en, kan den ikke tages væk, selvom korte opgaver skal vente på længere opgaver at fuldføre.

Planlægningsstyringen på tværs af alle opgaver er "fair" og svartider er forudsigelige, da højt prioriterede opgaver ikke kan bremse ventende opgaver længere nede i køen.

Scheduleren sikrer, at hver opgave får sin andel af CPU'en, idet man undgår forsinkelser med enhver opgave. Den tidsmængde, der er tildelt CPU'en, er ikke nødvendigvis ens, da det afhænger af, hvor lang tid opgaven tager for at fuldføre.

Tegningsplanlægning

Denne planlægningsmodel tillader opgaver at blive afbrudt - i modsætning til ikke-forebyggende planlægning, der har en "run-to-completion" -tilgang.

Afbrydelserne, som kunne indledes fra eksterne opkald, påberåber planlæggeren at sætte en løbende opgave i pause for at styre en anden højt prioriteret opgave - så styringen af ​​CPU'en kan forudføres.

Den højeste prioriterede opgave i en tilstand

Klar udføres, hvilket giver mulighed for hurtig respons til realtidsbegivenheder. Nogle af ulemperne med Preemptive Scheduling involverer stigningen i overhead på ressourcer, når der anvendes afbrydelser, og der kan opstå problemer med to opgaver, der deler data, da man kan afbrydes under opdatering af delte datastrukturer og kunne påvirke dataintegriteten negativt.

På den anden side er det praktisk at kunne standse en opgave for at styre en anden, der kan være kritisk.

I Sammenfatning

Der kan defineres mange afvigelser og afhængigheder i forskellige politikker, f.eks. Ved at bruge en

Round Robin-politik [i] " , hvor hver opgave (med samme prioritet) kører en gang og derefter placeret i slutningen af ​​køen for den næste cyklus. Andre politikker omfatter

Først i første gang , Kortest-job-først , Kortest-job-Næste , Korteste resterende tid mv. Analyse af historiske data kan give information om aspekter, som den hastighed, hvorpå nye opgaver ankommer, CPU og I / O-burst osv., Så sandsynlighedsfordelinger kan beregne karakteristika for opgavernes ventetider og dermed aktivere administratorer med relevante data til at definere planlægningsmodeller.