La oss diskutere forskjellene mellom både Preemptive og Non-Preemptive Scheduling i korthet ved hjelp av sammenligning diagram vist nedenfor.
Sammenligningstabel
Grunnlag for sammenligning | Preemptive Scheduling | Non Preemptive Scheduling |
---|---|---|
grunn~~POS=TRUNC | Ressursene 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. |
Avbryte | Prosessen kan avbrytes i mellom. | Prosessen kan ikke avbrytes før den avsluttes eller bytter til ventetilstand. |
Sult | Hvis 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. |
overhead | Preemptive scheduling har overhead av planlegging av prosessene. | Ikke-preemptive planlegging har ingen kostnader. |
fleksibilitet | Preemptive planlegging er fleksibel. | Ikke-preemptive planlegging er stiv. |
Koste | Preemptive 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.
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 å gå 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.
Viktige forskjeller mellom forebyggende og ikke-forebyggende planlegging
- 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 .
- Utførelsesprosessen i preemptive planlegging avbrytes midt i utførelsen, mens utføringsprosessen i ikke-preemptive planlegging ikke avbrytes midt i utførelsen.
- 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.
- 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.
- 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.
- 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.