Forskel mellem præemptiv og ikke-undtagelsesplanlægning i operativsystemer

Processorplanlægning (eller CPU-planlægning) bestemmer, hvilke processer der tildeles og fjernes fra CPU'en, baseret på planlægningsmodeller som f.eks Tegningsretter og Ikke-undtagelsesplanlægning (også kendt som Kooperativ planlægning).

Ældre systemer kunne fungere i enkle fristående tilstande, men med det stigende behov for lydhøre, fleksible systemer såvel som virtualisering giver administration af multi-behandling effektivt hurtig respons på alle anmodninger om opgavebehandling.

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

Hvordan ved planlæggeren, hvilke opgaver der er prioriterede?

Scheduler skal køre en fair og effektiv udvælgelsesproces under hensyntagen til variable, dynamiske behandlingsanmodninger og få mest muligt ud af CPU-cyklusser.

Opgaver kan være i to tilstande under behandling:

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

Når CPU'en er inaktiv, læser planlæggeren Klar kø, og vælger den næste opgave, der skal køres. Derefter er det Dispatcher der giver den valgte opgaveregulering af CPU'en, så den skal være hurtig! Enhver tid, der tages af Dispatcher, kaldes Send forsinkelse.

Der er forskellige strukturer og brugerdefinerede parametre til at definere Klar kø, samt flere metoder, der kan bruges til at styre kompleksiteten i planlægningsprocessen.

Generelt handler det om at optimere og maksimere CPU-udnyttelse, gennemstrømning osv.

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

  1. Når opgaven ændres fra a Løb til en Ventetilstand (f.eks. venter på en I / O-anmodning).
  2. Når opgaven ændres fra Løb til Parat (for eksempel at svare på en afbrydelse).
  3. Når opgaven ændres fra Venter til Parat (for eksempel er en I / O-anmodning afsluttet).
  4. Når 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 valgt.

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

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

  • Ikke-undtagelsesplanlægning er, når en opgave kører, indtil den stopper (frivilligt) eller afsluttes. Windows® havde ikke-præemptiv planlægning indtil Windows 3.x, hvorefter det skiftede til Preemptive fra Windows 95.
  • Forebyggende planlægning er, hvor en opgave med magt kan suspenderes af en CPU-afbrydelse, i modsætning til ikke-forebyggende, hvor opgaven kører, indtil den frigiver kontrol over CPU'en.

Ikke-undtagelsesplanlægning

Opgaver inden for et ikke-undtagelsessystem kører, indtil de er afsluttet.

Planlæggeren kontrollerer derefter alle opgaver 'tilstande og planlægger den næste højeste prioriterede opgave med en Parat stat.

Med ikke-præemptiv planlægning, når en opgave først har tildelt CPU'en, kan den ikke fjernes, selvom korte opgaver skal vente på, at længere opgaver er afsluttet.

Planlægningsstyring på tværs af alle opgaver er "fair", og responstider er forudsigelige, da opgaver med høj prioritet ikke kan støde venteopgaver længere nede i køen.

Scheduler sikrer, at hver opgave får sin 'andel af CPU'en og undgår enhver forsinkelse med enhver opgave. Den 'mængde tid', der er tildelt CPU'en, er nødvendigvis ikke nødvendigvis, da det afhænger af, hvor lang tid opgaven tager at udføre.

Forebyggende planlægning

Denne planlægningsmodel gør det muligt at afbryde opgaver - i modsætning til ikke-forebyggende planlægning, der har en "run-to-completing" -tilgang.

Afbrydelserne, som kunne initieres fra eksterne opkald, påkalder planlæggeren til at sætte en kørende opgave på pause for at administrere en anden opgave med højere prioritet - så kontrollen af ​​CPU'en kan undgås.

Den højeste prioriterede opgave i en Parat tilstand udføres, hvilket tillader hurtig respons på realtidsbegivenheder.

Nogle af ulemperne med præemptiv planlægning involverer øget omkostning på ressourcer, når der bruges afbrydelser og problemer kan forekomme med to opgaver, der deler data, da en kan blive afbrudt under opdatering af delte datastrukturer, og det kan have negativ indflydelse på dataintegriteten.

På den anden side er det praktisk at være i stand til at sætte en opgave på pause til at styre en anden, der kan være kritisk.

Sammenfattende

Der kan defineres mange afvigelser og afhængigheder i forskellige politikker, f.eks “Round Robin Policy [i]” hvor hver opgave (med lige høj prioritet) kører én gang og derefter placeres i slutningen af ​​køen til den næste cyklus.

Andre politikker inkluderer Først ind først ud, Kortest-Job-First, Kortest-Job-Næste, Korteste resterende tid, etc.

Analyse af historiske data kan give information om aspekter, som den hastighed, hvorpå nye opgaver ankommer, CPU- og I / O-bursts, så sandsynlighedsfordelinger kan beregne karakteristika for opgavernes ventetider og således bevæge administratorer med relevante data til at definere planlægningsmodeller.