Forskjell mellom Preemptive og Non-Preemptive Scheduling i Operativsystemer Forskjellen mellom
Prosessorplanlegging (eller CPU Scheduling ) bestemmer hvilke prosesser som er tildelt og fjernet fra CPU, basert på planleggingsmodeller som Preemptive og Non Forberedende planlegging (også kjent som Samarbeidsplanlegging ).
Eldre systemer kunne fungere i enkle frittstående modus, men med den økende Behov for responsive, fleksible systemer, samt virtualisering, styring av multi-prosessering gir rask respons til alle forespørselsbehandlingsforespørsler.
Planleggingsenhetene refereres ofte til som en oppgave , og det er planleggerens jobb å kjøre og administrere disse oppgavene når det er nødvendig, planleggeren velger oppgaven som skal fjernes og tilordnes CPUen for behandling, til den planlagte modellen som ble brukt.
Hvordan kjenner Planleggeren hvilke oppgaver som er prioritert?
Planleggeren trenger å drive en rettferdig og effektiv utvalgsprosess, tatt hensyn til variable, dynamiske behandlingsforespørsler og få mest mulig ut av CPU-syklusene.
Oppgaver kan være i to tilstander mens de behandles:
- I en CPU Burst hvor CPU utfører beregninger for å behandle oppgaven (perioden for en CPU Burst varierer fra oppgave til oppgave, og program for å programmere).
- I en Input / Output (I / O) Burst venter på data som skal mottas eller sendes fra systemet.
Når CPUen er ledig, leser Planleggeren Klar køen, og velger neste oppgave som skal kjøres. Da er det Dispatcher som gir den valgte oppgavestyringen til CPUen, så det må være raskt! Eventuell tid opptatt av Dispatcher er kjent som Dispatch Latency .
Det finnes forskjellige strukturer og tilpassede parametere for å definere Klar kø, samt flere metoder som kan brukes til å håndtere kompleksiteten i planleggingsprosessen.
Planleggeren må selv ta en avgjørelse i ett av følgende trinn:
Når oppgaven endres fra en
- Running til en ventende stat (for eksempel venter under en I / O-forespørsel). Når oppgaven endres fra
- Kjører til Klar (for eksempel å svare på et avbrudd). Når oppgaven endres fra
- Venter til Klar (for eksempel er en I / O-forespørsel fullført). Når
- Oppgave En ny oppgave må velges hvis trinn 1 eller 4 skjer for å sikre full utnyttelse av CPU, og i begge trinn 2 og 3, kan oppgaven fortsette å løpe eller en ny er valgt.
Etter å ha forstått hvordan en oppgave behandles, la oss se på to planleggingsmodeller som omhandler CPU-avbrudd.
Begge har lignende funksjoner med oppgavene, oppgavestatene, køene og prioritetene (statisk eller dynamisk):
Non-Preemptive Scheduling
- er når en oppgave kjører til den stopper (frivillig) eller avsluttes. Windows® hadde ikke-forebyggende planlegging til Windows 3. x, hvorefter det ble endret til Preemptive fra Windows 95. Preemptive Scheduling
- er der en oppgave kan bli tvunget til å bli suspendert av en CPU-avbrudd, i motsetning til ikke-forebyggende hvor oppgaven løper til den frigjør kontroll av CPU. Non-Preemptive Scheduling
Oppgaver innen et ikke-forebyggende system vil løpe til det er fullført.
Planleggeren kontrollerer deretter alle oppgavene og planlegger neste høyeste prioritetsoppgave med en
Klar -stat. Med en ikke-forebyggende planlegging, når en oppgave har sitt oppdrag til CPU, kan den ikke tas bort, selv om korte oppgaver må vente på lengre oppgaver å fullføre.
Planleggingsadministrasjonen på tvers av alle oppgaver er "rettferdig" og responstidene er forutsigbare, da høye prioriterte oppgaver ikke kan bremse ventende oppgaver lenger ned i køen.
Planleggeren sørger for at hver oppgave får sin andel av CPUen, og unngår forsinkelse med enhver oppgave. Den tidsmengden som er tildelt CPUen, kan ikke nødvendigvis være lik, da det avhenger av hvor lang tid oppgaven tar for å fullføre.
Preemptive Scheduling
Denne planleggingsmodellen tillater oppgaver å bli avbrutt - i motsetning til ikke-forebyggende planlegging som har en "run-to-completion" -tilgang.
Avbruddene, som kan initieres fra eksterne samtaler, påkaller Scheduler å stoppe en løpende oppgave for å administrere en annen høyere prioritetsoppgave - slik at kontrollen av CPUen kan forhåndsføres.
Den høyeste prioritetsoppgaven i en
Klar -stat er utført, noe som gir rask respons til sanntidsbegivenheter. Noen av ulempene med Preemptive Scheduling innebærer økning av overhead på ressurser ved bruk av avbrudd, og det kan oppstå problemer med to dataoppgaver som kan avbrytes mens du oppdaterer delte datastrukturer, og det kan påvirke dataintegriteten negativt.
På den annen side er det praktisk å kunne stoppe en oppgave å administrere en annen som kan være kritisk.
I sammendrag
Mange avvik og avhengigheter i ulike politikker kan defineres, for eksempel bruk av en
Round Robin-policy [i] " hvor hver oppgave (med lik prioritet) kjøres en gang, og deretter plassert på slutten av køen, for neste syklus. Andre retningslinjer inkluderer
Først i første omgang , Kortest-jobb-først , Kortest-jobb-Neste , Korteste gjenværende tid , etc. Analyse av historiske data kan gi informasjon om aspekter, som hastigheten der nye arbeidsoppgaver kommer, CPU og I / O Bursts etc, så sannsynlighetsfordelinger kan beregne karakteristikkene for oppgavenees ventetider, og dermed aktivere administratorer med relevante data for å definere planleggingsmodeller.