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 sammenligning | Preemptive Scheduling | Non Preemptive Scheduling |
---|---|---|
Grundlæggende | Ressourcerne 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. |
Afbryde | Processen kan afbrydes i mellem. | Processen kan ikke afbrydes, før den ophører eller skifter til ventetilstand. |
Sult | Hvis 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. |
Overhead | Preemptive scheduling har overhead af planlægning af processerne. | Non-preemptive planlægning har ingen generalomkostninger. |
Fleksibilitet | Forebyggende planlægning er fleksibel. | Non-preemptive planlægning er stiv. |
Koste | Forebyggende 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.
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.
Nøgleforskelle mellem forebyggende og ikke-forebyggende planlægning
- 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 .
- 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.
- 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.
- 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.
- 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.
- 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.