
Arutagem lühidalt nii eel- kui ka mitte-eelseisva ajakava vahelisi erinevusi allpool toodud võrdluskaardi abil.
Võrdluskaart
Võrdluse alus | Ennustav planeerimine | Mitte-eelne ajastamine |
---|---|---|
Põhiline | Ressursid eraldatakse protsessile piiratud ajaks. | Kui ressursid on eraldatud protsessile, hoiab protsess seda seni, kuni see lõpetab purunemisaja või lülitub ooterežiimile. |
Vahele segama | Protsessi võib katkestada. | Protsessi ei saa katkestada enne, kui see lõpetab või ooterežiimi lülitub. |
Nälg | Kui kõrge prioriteediga protsess jõuab sageli valmisjärjekorda, võib madala prioriteediga protsess nälgida. | Kui protsess, millel on pikk purunemisaeg, töötab CPU-s, siis võib teine protsess, millel on vähem CPU-lõhkumisaega, nälgida. |
Üldkulud | Eelnev ajastamine sisaldab protsesside ajastamise üldkulusid. | Mitte-eelne ajastamine ei sisalda üldkulusid. |
Paindlikkus | Eelnev ajastamine on paindlik. | Mitte-eelne ajakava on jäik. |
Maksumus | Eelnev ajastamine on seotud kuludega. | Mitte-eelne ajastamine ei ole kulude assotsiatsioon. |
Ennustava ajakava määratlus
Eelnev ajastamine on selline, mida saab teha olukorras, kus protsess lülitub tööolekust valmisolekusse või ooterežiimist valmisolekusse . Siin eraldatakse ressursid (CPU tsüklid) protsessile piiratud aja jooksul ja seejärel võetakse ära ning protsess asetatakse uuesti valmis järjekorda, kui sellel on veel CPU lõhkemisaeg. Protsess jääb valmisjärjekorda, kuni see saab järgmise võimaluse.
Kui kõrge prioriteediga protsess jõuab valmisjärjekorda, ei pea ta ootama, kuni praegune protsess lõpetab purunemisaja. Selle asemel katkestatakse praegune protsess teostamise keskel ja paigutatakse valmisjärjekorda, kuni kõrge prioriteediga protsess kasutab CPU tsükleid. Sel moel saab iga valmisprotsessi protsess CPU käivitamiseks aega. See muudab paindliku ajastamise paindlikuks, kuid suurendab protsessi ülekandmist jooksvalt olekusse valmisolekusse ja vise-salmi.
Algoritmid, mis töötavad eelvõistluse ajal, on Round Robin. Lühim töö esimene (SJF) ja prioriteedi ajastamine võivad olla või ei pruugi kuuluda eelvõistlusele.
Võtame näiteks eelkehtiva ajastamise, vaadake allolevat pilti. Meil on neli protsessi P0, P1, P2, P3. Sellest P2 saabub ajal 0. Nii et CPU eraldatakse protsessile P2, kuna järjekorda ei ole muid protsesse. Vahepeal käivitus P2, P3 jõuab ajal 1, nüüd on protsess P2 (5 millisekundit), mis on suurem kui P3 (4 mil-sek) vajalik aeg. Seega on protsessorile P3 määratud CPU.

Mitte-preemptiivse ajakava määratlus
Mitte-eelne ajastamine on selline, mida saab rakendada olukorras, kus protsess lõpeb, või protsess lülitub töötamisest ooterežiimile . Mitte-eelne ajastamisel, kui ressursid (protsessor) on protsessile eraldatud, hoiab protsess protsessorit, kuni see lõpetatakse või jõuab ooterežiimi.
Erinevalt eelnevast ajastamisest ei katkesta mitte-eelne ajastamine protsessis, mis töötab protsessori keskel. Selle asemel ootab see protsessi, et protsess lõpetaks oma CPU purunemisaja ja seejärel saaks CPU teisele protsessile eraldada.
Kui mitte-eelne ajastus, kui protsess, millel on pikk CPU purunemisaeg, käivitub, peab teine protsess ootama pikka aega, mis suurendab valmis järjekordade protsesside keskmist ooteaega. Siiski ei ole mitte-eelne ajastamine üldjuhul protsesside ümberlülitamiseks valmisjärjekorrast CPU-le, kuid see muudab ajastamise jäigaks, kuna protsess ei ole isegi eelistatud kõrgema prioriteediga protsessile.

Peamised erinevused eel- ja mittesündiva ajakava vahel
- Põhieelne eeljaotuse ja mitte-eelseisva ajakava vahel on see, et eelvõistluses on CPU eraldatud protsessidele piiratud ajaks. Mitte-preemptive planeerimisel on protsessor eraldatud protsessile, kuni see lõpetab või lülitub ooterežiimile .
- Täitmisprotsess eelvõimelisel ajastamisel katkeb teostamise keskel, samas kui täitmisprotsess mitte-eelvõistluses ei katkesta teostamise keskel.
- Preemptive Scheduling'il on üleüldine protsess, mis lülitab protsessi valmisolekust töörežiimile, vise-salmile ja valmis järjekorda. Teisest küljest ei ole mitte-preemptiivne ajastamine üldjuhul protsessi muutmine jooksvast olekust valmisolekusse.
- Eelnevalt planeerides, kui suure prioriteediga protsess saabub sageli valmis järjekorda, siis peab madala prioriteediga protsess ootama kaua ja võib-olla peab nälgima. Teisest küljest, kui mitte-eelne ajastamine on protsessorile eraldatud suurema purunemisajaga, siis võivad väikese purunemisajaga protsessid nälgida.
- Eelnev ajastamine on üsna paindlik, sest kriitilised protsessid lubavad juurdepääsu CPU-le, kui nad saabuvad valmisjärjekorda, olenemata sellest, milline protsess praegu toimub. Mitte-preemptiivne ajastamine on jäik, isegi kui kriitiline protsess siseneb valmisjärjekorda, ei ole protsessoriga töötav protsess häiritud.
- Preemptive Scheduling on kulude assotsiatsioon, kuna see peab säilitama jagatud andmete terviklikkuse, mis ei ole mitte-preemptive Scheduling puhul.
Järeldus:
See ei ole see, et ennetav ajastamine on parem kui mitte-eelne ajakava või vise-salm. Kõik sõltub sellest, kuidas ajastamine vähendab protsesside keskmist ooteaega ja maksimeerib protsessori kasutamist.