Anbefalt, 2024

Redaksjonens

Forskjellen mellom Preemptive og Non-Preemptive Scheduling i OS

Det er ansvaret for CPU scheduler å tildele en prosess til CPU når CPUen er i tomgangstilstand. CPU-planleggeren velger en prosess fra klar kø og tildeler prosessen til CPU. Planleggingen som finner sted når en prosess skifter fra løpestatus til klar tilstand eller fra ventetilstand til klar tilstand kalles Preemptive Scheduling . På hendene kalles planlegging som finner sted når en prosess avsluttes eller bytter fra å kjøre til å vente på statlig denne typen CPU-planlegging, kalt ikke-forebyggende planlegging . Den grunnleggende forskjellen mellom preemptive og non-preemptive planlegging ligger i deres navn selv. Det er en Preemptive planlegging kan forutsettes; prosessene kan planlegges. I ikke-preemptive planlegging kan prosessene ikke planlegges.

La oss diskutere forskjellene mellom både Preemptive og Non-Preemptive Scheduling i korthet ved hjelp av sammenligning diagram vist nedenfor.

Sammenligningstabel

Grunnlag for sammenligningPreemptive SchedulingNon Preemptive Scheduling
grunn~~POS=TRUNCRessursene er allokert til en prosess for en begrenset periode.Når ressursene er allokert til en prosess, holder prosessen den til den fullfører sin utbruddstid eller bytter til ventetilstand.
AvbryteProsessen kan avbrytes i mellom.Prosessen kan ikke avbrytes før den avsluttes eller bytter til ventetilstand.
SultHvis en høy prioritetsprosess ofte kommer i klar kø, kan lavprioritetsprosessen sulte.Hvis en prosess med lang utbruddstid kjører CPU, kan en annen prosess med mindre CPU-utbruddstid sulte.
overheadPreemptive scheduling har overhead av planlegging av prosessene.Ikke-preemptive planlegging har ingen kostnader.
fleksibilitetPreemptive planlegging er fleksibel.Ikke-preemptive planlegging er stiv.
KostePreemptive planlegging er kostnadsrelatert.Ikke-preemptive planlegging er ikke kostnadsassosiativ.

Definisjon av Preemptive Scheduling

Preemptive scheduling er en som kan gjøres under omstendigheter når en prosess skifter fra løpestatus til klar tilstand eller fra ventetilstand til klar tilstand . Her blir ressursene (CPU-sykluser) allokert til prosessen for den begrensede tid og deretter tatt bort, og prosessen blir plassert tilbake i klar køen igjen hvis den fortsatt har CPU-bursttid igjen. Prosessen forblir i klar kø til det blir neste sjanse til å utføre.

Hvis en prosess med høy prioritet kommer i klar kø, trenger den ikke å vente på den nåværende prosessen for å fullføre sin utbruddstid. I stedet forstyres den nåværende prosessen i midten av utførelsen og plasseres i klar køen til prosessen med høy prioritet bruker CPU-syklusene. På denne måten får hver prosess i klarkøen litt tid til å kjøre CPU. Det gjør den forebyggende planleggingen fleksibel, men øker overhead for å bytte prosessen fra løpestatus til klar tilstand og vise-vers.

Algoritmer som arbeider med preemptive planlegging er Round Robin. Korteste jobb først (SJF) og Prioritetsplanlegging kan eller ikke komme under preemptive planlegging.

La oss ta et eksempel på Preemptive Scheduling, se på bildet nedenfor. Vi har fire prosesser P0, P1, P2, P3. Hvorav kommer P2 til klokkeslett 0. Så CPUen er allokert til prosessen P2 da det ikke er noen annen prosess i køen. I mellomtiden ble P2 utført, P3 ankommer til tidspunkt 1, nå gjenværende tid for prosess P2 (5 millisekunder), som er større enn tiden som kreves av P3 (4 millisekunder). Så CPU er allokert til prosessor P3.

I mellomtiden ble P3 utført, prosess P1 kommer til tidspunkt 2. Nå er gjenværende tid for P3 (3 millisekunder) mindre enn tiden som kreves av prosesser P1 (4 millisekunder) og P2 (5 millisekunder). Så P3 får lov til å fortsette. Mens P3 fortsetter, kommer prosessen P0 til klokka 3, nå er gjenværende tid for P3 (2 millisekunder) lik tiden som kreves av P0 (2 millisekunder). Så P3 fortsetter, og etter at P3 er avsluttet, blir CPU allokert til P0 da den har mindre utbruddstid enn andre. Etter at P0 er avsluttet, blir CPU allokert til Pl og deretter til P2.

Definisjon av ikke-forebyggende planlegging

Ikke-preemptive Scheduling er en som kan brukes under omstendighetene når en prosess avsluttes, eller en prosess bytter fra å til ventetilstand . I ikke-forebyggende planlegging, når ressursene (CPU) er allokert til en prosess, holder prosessen CPUen til den blir avsluttet, eller den når en ventetilstand.

I motsetning til preemptive planlegging, avbryter ikke-preemptive planlegging en prosess som kjører CPU i midten av utførelsen. I stedet venter det på prosessen for å fullføre sin CPU burst tid, og da kan den tildele CPUen til en annen prosess.

I ikke-preemptive planlegging, hvis en prosess med lang CPU-utbruddstid utføres, må den andre prosessen vente lenge, noe som øker gjennomsnittlig ventetid for prosessene i klar køen. Imidlertid har ikke-preemptive planlegging ingen overhead for å bytte prosessene fra klar kø til CPU, men det gjør planleggingen stiv da prosessen i utførelse ikke engang er preempted for en prosess med høyere prioritet.

La oss løse det ovennevnte planleggingseksemplet på en ikke-formativ måte. Som først kommer prosessen P2 til klokken 0, så CPU er allokert til prosessen P2 det tar 6 millisekunder å utføre. I mellom alle prosessene, dvs. P0, P1, P3, kommer i klar kø. Men alt venter til prosessen P2 fullfører sin CPU burst tid. Så prosess som kommer etter P2, dvs. P3 blir deretter tildelt CPUen til den fullfører det er brastid. På lignende måte utfører P1, og CPU blir senere gitt til prosessering av P0.

Viktige forskjeller mellom forebyggende og ikke-forebyggende planlegging

  1. Den grunnleggende forskjellen mellom preemptive og non-preemptive scheduling er at CPUen i preemptive planlegging er allokert til prosessene for den begrensede tiden. Under ikke-preemptive planlegging blir CPUen tilordnet prosessen til den avsluttes eller bytter til ventetilstand .
  2. Utførelsesprosessen i preemptive planlegging avbrytes midt i utførelsen, mens utføringsprosessen i ikke-preemptive planlegging ikke avbrytes midt i utførelsen.
  3. Preemptive Scheduling har overhead for å bytte prosessen fra klar tilstand til løpestatus, vise-vers, og opprettholde klar køen. På de andre hendene har ikke-preemptive planlegging ingen overhead for å bytte prosessen fra løpestatus til klar tilstand.
  4. I preemptive planlegging, hvis en prosess med høy prioritet ofte kommer i klar kø, må prosessen med lav prioritet vente lenge, og det må kanskje sulte. På de andre hendene, i den ikke-preemptive planlegging, hvis CPU er allokert til prosessen med større utbruddstid, kan prosessene med liten utbruddstid måtte sulte.
  5. Preemptive scheduling er ganske fleksibel fordi de kritiske prosessene får tilgang til CPU når de kommer inn i klientkøen, uansett hvilken prosess som kjøres nå. Ikke-preemptive planlegging er stiv som selv om en kritisk prosess går inn i klar køen, kjører prosessen som kjører CPU ikke forstyrres.
  6. Preemptive Scheduling er kostnadsassosiativ som den har til å opprettholde integriteten til delte data som ikke er tilfelle med ikke-preemptive planlegging.

Konklusjon:

Det er ikke at preemptive planlegging er bedre enn ikke-preemptive planlegging eller vise-vers. Alt avhenger av hvordan en planlegging minimerer gjennomsnittlig ventetid for prosessene og maksimerer CPU-utnyttelsen.

Top