Forskjell mellom Preemptive og Non-Preemptive Scheduling i operativsystemer

Prosessorplanlegging (eller CPU Planlegging) bestemmer hvilke prosesser som er tildelt og fjernet fra CPU, basert på planleggingsmodeller som forkjøpsrett og Ikke-forebyggende planlegging (også kjent som Samarbeidsplanlegging).

Eldre systemer kan fungere i enkle, frittstående moduser, men med det økende behovet for lydhør, fleksible systemer, samt virtualisering, gir effektiv behandling av flere prosesser rask respons til alle oppgavebehandlingsforespørsler.

Planleggingsenheter refereres ofte til som a 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, i henhold til den planlagte modellen som brukes.

Hvordan vet Scheduler hvilke oppgaver som er prioritert?

Scheduleren trenger å drive en rettferdig og effektiv utvalgsprosess, idet man tar hensyn til variable, dynamiske behandlingsforespørsler og få mest mulig ut av CPU-syklusene.

Oppgaver kan være i to tilstander mens de behandles:

  1. I en CPU Burst hvor CPUen utfører beregninger for å behandle oppgaven (perioden for en CPU Burst varierer fra oppgave til oppgave og programmerer til program).
  2. I en Input / Output (I / O) Burst venter på at data skal mottas eller sendes fra systemet.

Når CPUen er ledig, leser Planleggeren Klar kø, og velger neste oppgave som skal kjøres. Så er det Avsender som gir den valgte oppgavestyringen til CPUen, så det må være rask! Eventuell tid opptatt av Dispatcher er kjent som Leveringsforsinkelse.

Det er forskjellige strukturer og tilpassede parametere for å definere Klar kø, samt flere metoder som kan brukes til å håndtere kompleksiteten i planleggingsprosessen.

Generelt handler det om å optimalisere og maksimere CPU-utnyttelse, gjennomstrømning, etc..

Planleggeren må ta en avgjørelse i løpet av ett av følgende trinn:

  1. Når oppgaven endres fra en Løping til en Venterstat (for eksempel venter under en I / O-forespørsel).
  2. Når oppgaven endres fra Løping til Klar (for eksempel å svare på en avbrudd).
  3. Når oppgaven endres fra Venter til Klar (for eksempel er en I / O-forespørsel fullført).
  4. 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 oppgaver, oppgavestillinger, køer og prioriteringer (statisk eller dynamisk):

  • Ikke-forebyggende planlegging er når en oppgave løper til den stopper (frivillig), eller avsluttes. Windows® hadde ikke-forebyggende planlegging til Windows 3.x, hvorefter den ble endret til Preemptive fra Windows 95.
  • Preemptive Scheduling er hvor en oppgave kan bli tvunget til å bli suspendert av en CPU-avbrudd, i motsetning til ikke-forebyggende hvor oppgaven går til den frigjør kontroll av CPU.

Ikke-forebyggende planlegging

Oppgaver innen et ikke-forebyggende system vil løpe til det er fullført.

Planleggeren kontrollerer deretter alle oppgavens tilstander og planlegger neste høyeste prioritetsoppgave med a Klar stat.

Med ikke-forebyggende planlegging, når en oppgave har sitt oppdrag til CPU, kan det ikke bli tatt 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øyt 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" tilnærming.

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 prioriterte oppgaven i a Klar tilstanden utføres, slik at du raskt kan reagere på sanntidshendelser.

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 kan påvirke dataintegriteten negativt..

På den annen side er det praktisk å kunne stoppe en oppgave å administrere en annen som kan være kritisk.

Oppsummert

Mange avvik og avhengigheter i ulike politikker kan defineres, for eksempel ved bruk av a "Round Robin Policy [i]" hvor hver oppgave (med lik prioritet) kjøres en gang, og deretter plasseres på slutten av køen, for neste syklus.

Andre retningslinjer inkluderer Først inn først ut, Korteste-Job-First, Korteste-Job-Neste, Korteste gjenværende tid, etc.

Analyse av historiske data kan gi informasjon om aspekter, for eksempel hastigheten der nye oppgaver kommer, CPU og I / O Burst osv., Slik at sannsynlighetsfordelinger kan beregne egenskapene til oppgavenees ventetider, og dermed aktivere administratorer med relevante data for å definere planleggingsmodeller.