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örelse | Preemptive Scheduling | Non Preemptive Scheduling |
---|---|---|
Grundläggande | Resurserna 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. |
Avbryta | Processen kan avbrytas däremellan. | Processen kan inte avbrytas tills den avslutas eller växlar till vänteläge. |
Svält | Om 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 huvudet | Preemptive schemaläggning har överhuvudtaget att schemalägga processerna. | Icke-förebyggande schemaläggning har ingen omkostnader. |
Flexibilitet | Preemptive schemaläggning är flexibel. | Non-preemptive schemaläggning är rigid. |
Kosta | Preliminä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.
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.
Viktiga skillnader mellan förebyggande och icke-förebyggande planering
- 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 .
- 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.
- 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.
- 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.
- 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.
- 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.