Anbefalet, 2024

Redaktørens Valg

Forskel mellem forebyggende og ikke-forebyggende planlægning i OS

Det er CPU-planlæggerens ansvar at tildele en proces til CPU, når CPU'en er i tomgangstilstand. CPU-scheduleren vælger en proces fra klar kø og tildeler processen til CPU. Den planlægning, der finder sted, når en proces skifter fra kørestatus til klar tilstand eller fra ventetilstand til klar tilstand, hedder Preemptive Scheduling . På hænderne kaldes planlægningen, der finder sted, når en proces slutter eller skifter fra at køre til at vente på stat denne type CPU-planlægning, kaldes ikke-forebyggende planlægning . Den grundlæggende forskel mellem preemptive og non-preemptive planlægning ligger i deres navn selv. Det er en forebyggende planlægning, der kan foregribes; processerne kan planlægges. I non-preemptive planlægning kan processerne ikke planlægges.

Lad os diskutere forskellene mellem både Preemptive og Non-Preemptive Scheduling i korte træk ved hjælp af sammenligning diagram vist nedenfor.

Sammenligningstabel

Grundlag for sammenligningPreemptive SchedulingNon Preemptive Scheduling
GrundlæggendeRessourcerne er afsat til en proces i en begrænset periode.Når ressourcerne er allokeret til en proces, bevarer processen processen, indtil den fuldender sin udbrudstid eller skifter til ventetilstand.
AfbrydeProcessen kan afbrydes i mellem.Processen kan ikke afbrydes, før den ophører eller skifter til ventetilstand.
SultHvis en højt prioriteret proces ofte ankommer i klar køen, kan den prioriterede proces sulte.Hvis en proces med lang udbrudstid kører CPU, så kan en anden proces med mindre CPU-udbrudstid sulte.
OverheadPreemptive scheduling har overhead af planlægning af processerne.Non-preemptive planlægning har ingen generalomkostninger.
FleksibilitetForebyggende planlægning er fleksibel.Non-preemptive planlægning er stiv.
KosteForebyggende planlægning er omkostningsrelateret.Ikke-præventiv planlægning er ikke omkostningsassocierende.

Definition af forebyggende planlægning

Preemptive scheduling er en, der kan gøres under omstændighederne, når en proces skifter fra kørestatus til klar tilstand eller fra ventetilstand til klar tilstand . Her tildeles ressourcerne (CPU-cyklusser) til processen i den begrænsede tid og derefter fjernes, og processen er placeret tilbage i klarkøen igen, hvis den stadig har CPU-udbrudstid tilbage. Processen forbliver i klar kø, indtil den får næste chance for at udføre.

Hvis en proces med høj prioritet ankommer i klarkøen, behøver den ikke at vente på den nuværende proces for at fuldføre sin udbrudstid. I stedet afbrydes den aktuelle proces i midten af ​​udførelsen og placeres i klarkøen, indtil processen med høj prioritet udnytter CPU-cyklusserne. På den måde får hver proces i klarkøen lidt tid til at køre CPU. Det gør den forudgående planlægning fleksibel, men øger overhead for at skifte processen fra løbende tilstand til klar tilstand og vise-vers.

Algoritmer, der arbejder på forebyggende planlægning er Round Robin. Korteste job først (SJF) og Prioriteret planlægning kan eller måske ikke komme under forudgående planlægning.

Lad os tage et eksempel på Preemptive Scheduling, se på billedet nedenfor. Vi har fire processer P0, P1, P2, P3. Hvoraf P2 ankommer til tidspunkt 0. Så CPU'en er allokeret til processen P2, da der ikke er nogen anden proces i køen. I mellemtiden blev P2 udført, P3 ankommer til tidspunkt 1, nu den resterende tid for proces P2 (5 millisekunder), som er større end den tid, der kræves af P3 (4 millisekunder). Så CPU tildeles til processor P3.

I mellemtiden blev P3 udført, processen P1 ankommer til tidspunkt 2. Nu er den resterende tid for P3 (3 millisekunder) mindre end den tid, der kræves af processer P1 (4 millisekunder) og P2 (5 millisekunder). Så P3 må fortsætte. Mens P3 fortsætter, kommer processen P0 til tidspunkt 3, nu er den resterende tid for P3 (2 millisekunder) lig med den tid, der kræves af P0 (2 millisekunder). Så P3 fortsætter og efter P3 slutter CPU'en tildeles P0, da den har mindre udbrudstid end andre. Efter at P0 slutter, tildeles CPU'en til Pl og derefter til P2.

Definition af ikke-forebyggende planlægning

Non-Preemptive Scheduling er en, der kan anvendes under omstændighederne, når en proces ophører, eller en proces skifter fra løbende til ventetilstand . Ved ikke-forebyggende planlægning, når ressourcerne (CPU) er allokeret til en proces, besidder processen CPU'en, indtil den afsluttes, eller den når en ventetilstand.

I modsætning til forudgående planlægning afbryder ikke-forebyggende planlægning en proces, der kører CPU i midten af ​​udførelsen. I stedet venter det på processen for at fuldføre sin CPU-udbrudstid, og så kan den tildele CPU'en til en anden proces.

I ikke-preemptive planlægning, hvis en proces med lang CPU-udbrudstid udføres, skal den anden proces vente i lang tid, hvilket øger den gennemsnitlige ventetid for processerne i klar køen. Den non-preemptive planlægning har imidlertid ikke nogen overhead for at skifte processerne fra klar kø til CPU, men det gør planlægningen stiv, da processen i udførelse ikke engang er forudset for en proces med højere prioritet.

Lad os løse det ovennævnte planlægningseksempel på uforudsigelig måde. Som oprindeligt kommer processen P2 til tidspunkt 0, så CPU tildeles processen P2 det tager 6 millisekunder at udføre. Mellem alle processer, dvs. P0, P1, P3 kommer i klar kø. Men alt venter indtil proces P2 fuldender sin CPU-udbrudstid. Derefter behandles, der ankommer efter P2, dvs. P3 bliver derefter tildelt CPU'en, indtil den er færdig, er det brastid. På samme måde udfører P1, og CPU gives senere til proces P0.

Nøgleforskelle mellem forebyggende og ikke-forebyggende planlægning

  1. Den grundlæggende forskel mellem preemptive og non-preemptive scheduling er, at CPU'en i preemptive scheduling er allokeret til processerne for den begrænsede tid. I forbindelse med ikke-preemptive planlægning tildeles CPU'en til processen, indtil den afslutter eller skifter til ventetilstand .
  2. Udførelsesprocessen i forebyggende planlægning afbrydes midt i udførelsen, mens fuldbyrdelsesprocessen i ikke-forudgående planlægning ikke afbrydes midt i udførelsen.
  3. Preemptive Scheduling har overhead til at skifte processen fra klar tilstand til løbende tilstand, vise-vers og vedligeholdelse af klar køen. På de andre hænder har ikke-forebyggende planlægning ingen overhead for at skifte processen fra løbende tilstand til klar tilstand.
  4. I forebyggende planlægning, hvis en proces med høj prioritet ofte ankommer i klar køen, må processen med lav prioritet vente på en lang, og det kan blive nødt til at sulte. På den anden side, hvis processoren er allokeret til processen med større udbrudstid, kan processerne med lille udbrudstid i den ikke-præventive planlægning være nødt til at sulte.
  5. Preemptive scheduling er ret fleksibel, fordi de kritiske processer får lov til at få adgang til CPU, da de kommer ind i klar kø, uanset hvilken proces der udføres i øjeblikket. Non-preemptive scheduling er stiv, som selvom en kritisk proces går ind i den færdige kø, er processen, der kører CPU, ikke forstyrret.
  6. Preemptive Scheduling er omkostningsassocierende, da den skal opretholde integriteten af ​​delte data, hvilket ikke er tilfældet med ikke-forebyggende planlægning.

Konklusion:

Det er ikke, at præemptive scheduling er bedre end ikke-præemptive planlægning eller vise-vers. Alt afhænger af, hvordan en planlægning minimerer den gennemsnitlige ventetid for processerne og maksimerer CPU-udnyttelsen.

Top