Rekommenderas, 2024

Redaktionen

Skillnad mellan Preemptive och Non-Preemptive Scheduling i OS

Det är ansvaret för CPU-schemaläggaren att tilldela en process till CPU när CPU-enheten är i viloläge. CPU-schemaläggaren väljer en process från färdig kö och fördelar processen till CPU. Schemaläggningen som sker när en process växlar från löpande tillstånd till färdigt tillstånd eller från vänteläge till färdigt tillstånd kallas förebyggande schemaläggning . På händerna kallas schemaläggningen som sker när en process slutar eller växlar från att springa till väntan på tillståndet. Denna typ av CPU-schemaläggning kallas icke-förebyggande schemaläggning . Den grundläggande skillnaden mellan preemptive och non-preemptive schemaläggning ligger i själva namnet. Det är en förebyggande schemaläggning kan föregås; processerna kan schemaläggas. I icke-förebyggande schemaläggning kan processerna inte schemaläggas.

Låt oss diskutera skillnaderna mellan både Preemptive och Non-Preemptive Scheduling i korthet med hjälp av jämförelse diagrammet som visas nedan.

Jämförelsediagram

Grunder för jämförelsePreemptive SchedulingNon Preemptive Scheduling
GrundläggandeResurserna tilldelas en process för en begränsad tid.När resurser är tilldelade till en process håller processen processen tills den fullbordar sin brastid eller byter till väntetillståndet.
AvbrytaProcessen kan avbrytas däremellan.Processen kan inte avbrytas tills den avslutas eller växlar till vänteläge.
SvältOm en process med hög prioritet kommer ofta i färdkön, kan processen med låg prioritet svälta.Om en process med lång utbrottstid körs med CPU, kan en annan process med mindre CPU-bursttid svälta.
Över huvudetPreemptive schemaläggning har överhuvudtaget att schemalägga processerna.Icke-förebyggande schemaläggning har ingen omkostnader.
FlexibilitetPreemptive schemaläggning är flexibel.Non-preemptive schemaläggning är rigid.
KostaPreliminär schemaläggning är kostnadsrelaterad.Icke-förebyggande schemaläggning är inte kostnadssammanhangande.

Definition av förebyggande planering

Preemptive scheduling är en som kan göras under omständigheter när en process växlar från driftläge till färdigt tillstånd eller från väntande till färdigt tillstånd . Här allokeras resurserna (CPU-cykler) till processen under den begränsade tiden och tas sedan bort, och processen läggs tillbaka i färdkön igen om den fortfarande har kvarvarande CPU-bursttid. Processen stannar i färdig kö tills det blir nästa chans att utföra.

Om en process med hög prioritet anländer till färdkön, behöver den inte vänta på den aktuella processen för att slutföra sin bursttid. Istället avbryts den pågående processen i mitten av körningen och placeras i färdkön tills processen med hög prioritet utnyttjar CPU-cyklerna. På så sätt får varje process i färdkön en tid att köra CPU. Det gör den förebyggande schemaläggningen flexibel men ökar överhuvudet för att växla processen från löpande tillstånd till färdigt tillstånd och vise-vers.

Algoritmer som arbetar med förebyggande schemaläggning är Round Robin. Kortaste jobbet först (SJF) och Prioritering schemaläggning kan eller kanske inte komma under preemptive schemaläggning.

Låt oss ta ett exempel på Preemptive Scheduling, se på bilden nedan. Vi har fyra processer P0, P1, P2, P3. Varav P2 ankommer vid tidpunkten 0. Så CPU: n tilldelas processen P2 eftersom det inte finns någon annan process i köen. Under tiden utfördes P2, P3 anländer vid tidpunkt 1, nu återstående tid för process P2 (5 millisekunder), vilket är större än tiden som krävs av P3 (4 millisekunder). Så CPU är allokerad till processorn P3.

Under tiden utfördes P3, processen P1 anländer vid tid 2. Nu är återstående tid för P3 (3 millisekunder) mindre än tiden som krävs av processerna P1 (4 millisekunder) och P2 (5 millisekunder). Så P3 får fortsätta. Medan P3 fortsätter kommer process P0 vid tidpunkt 3, nu är återstående tid för P3 (2 millisekunder) lika med tiden som krävs av P0 (2 millisekunder). Så P3 fortsätter och efter P3 slutar CPU: n allokeras till P0 eftersom den har mindre bristtid än andra. När P0 slutar, tilldelas CPU-enheten till Pl och sedan till P2.

Definition av icke-förebyggande planering

Icke-preemptive Scheduling är en som kan tillämpas under omständigheterna när en process slutar, eller en processväxling från körning till väntande tillstånd . I icke-förebyggande planering, när resurserna (CPU) är allokerade till en process, håller processen CPU-enheten tills den blir avslutad eller den når en väntetillstånd.

Till skillnad från förebyggande schemaläggning avbryter icke-förebyggande schemaläggning en process som kör CPU i mitten av exekveringen. Istället väntar det på att processen ska slutföra sin CPU-bursttid och då kan den allokera CPU-en till en annan process.

Vid icke-förebyggande schemaläggning, om en process med lång CPU-utbrottstid exekveras, måste den andra processen vänta länge som ökar den genomsnittliga väntetiden för processerna i färdkön. Den icke-förebyggande schemaläggningen har emellertid inget överhuvud för att byta processerna från färdkö till CPU men det gör schemaläggningen styv eftersom processen i körning inte ens förutspås för en process med högre prioritet.

Låt oss lösa ovanstående schemaläggningsexempel på icke-förebyggande sätt. Såsom initialt kommer processen P2 vid tidpunkten 0, så CPU tilldelas processen P2 det tar 6 millisekunder att exekvera. Mellan alla processer, dvs P0, P1, P3, kommer i färdig kö. Men allt väntar tills process P2 fullbordar sin CPU-bursttid. Sedan bearbetar det som kommer efter P2, dvs P3 tilldelas sedan CPU tills det slutar det är brastiden. På liknande sätt utförs P1, och CPU ges senare till process P0.

Viktiga skillnader mellan förebyggande och icke-förebyggande planering

  1. Den grundläggande skillnaden mellan förebyggande och icke-förebyggande schemaläggning är att CPU: n vid preemptive scheduling tilldelas processerna för den begränsade tiden. Under icke-preemptive schemaläggning tilldelas processorn till processen tills den slutar eller växlar till vänteläge .
  2. Exekveringsprocessen i förebyggande schemaläggning avbryts i mitten av utförandet medan körprocessen i icke-förebyggande schemaläggning inte avbryts mitt i utförandet.
  3. Preemptive Scheduling har överhuvudtaget att växla processen från färdigt tillstånd till löpande tillstånd, vise-vers och upprätthålla färdkön. Å andra sidan har icke-förebyggande schemaläggning inget överhuvud för att växla processen från löpande tillstånd till färdigt tillstånd.
  4. Vid förebyggande schemaläggning, om en process med hög prioritet ofta kommer i färdkön, måste processen med låg prioritet vänta länge, och det kan behöva svälta. Å andra sidan, i den icke-förebyggande schemaläggningen, om CPU är allokerad till processen med större utbrottstid, kan processerna med liten bristtid kanske svälta.
  5. Preemptive scheduling är ganska flexibel eftersom de kritiska processerna får komma åt CPU när de kommer in i redokön, oavsett vilken process som körs för närvarande. Icke-förebyggande schemaläggning är rigid, eftersom även om en kritisk process går in i färdkön är processen som kör CPU inte störd.
  6. Preemptive Scheduling är kostnadssammanhangande eftersom det måste upprätthålla integriteten hos delade data, vilket inte är fallet med icke-förebyggande schemaläggning.

Slutsats:

Det är inte så att förebyggande schemaläggning är bättre än icke-förebyggande schemaläggning eller vers-vers. Allt beror på hur en schemaläggning minimerar processens genomsnittliga väntetid och maximerar CPU-utnyttjandet.

Top