Soovitatav, 2020

Toimetaja Valik

Erinevus eelvõimelise ja mitte-eelseisva ajakava vahel operatsioonisüsteemis

CPU planeerija vastutab protsessile CPU-le, kui CPU on ooterežiimis. CPU planeerija valib protsessi valmisjärjekorrast ja eraldab protsessi protsessorile. Planeerimist, mis toimub siis, kui protsess lülitub tööolekust valmisolekusse või ooteseisundist valmisolekusse, nimetatakse eelkehtivaks ajastamiseks . Käedel nimetatakse ajastamist, mis toimub siis, kui protsess lõpeb või lülitub jooksvalt ootama olekut, seda tüüpi CPU sõiduplaani nimetatakse mitte-eelkehtivaks ajastamiseks . Põhieelne eel- ja eelvõtmata ajakava vahel seisneb nende enda nimes. See on eelvõistluse ajakava koostamine; protsesse saab planeerida. Mitte-eelne ajastamisel ei saa protsesse ajastada.

Arutagem lühidalt nii eel- kui ka mitte-eelseisva ajakava vahelisi erinevusi allpool toodud võrdluskaardi abil.

Võrdluskaart

Võrdluse alusEnnustav planeerimineMitte-eelne ajastamine
PõhilineRessursid 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 segamaProtsessi võib katkestada.Protsessi ei saa katkestada enne, kui see lõpetab või ooterežiimi lülitub.
NälgKui 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.
ÜldkuludEelnev ajastamine sisaldab protsesside ajastamise üldkulusid.Mitte-eelne ajastamine ei sisalda üldkulusid.
PaindlikkusEelnev ajastamine on paindlik.Mitte-eelne ajakava on jäik.
MaksumusEelnev 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.

Vahepeal toimus P3, protsess P1 saabus 2. ajal. Nüüd jääb P3-le järelejäänud aeg (3 millisekundit) vähem kui protsesside P1 (4 millisekundit) ja P2 (5 millisekundit) nõutav aeg. Seega võib P3 jätkata. Kuigi P3 jätkub protsess P0 saabub ajahetkel 3, nüüd on P3 järelejäänud aeg (2 millisekundit) võrdne P0-ga nõutava ajaga (2 millisekundit). Seega P3 jätkub ja pärast P3 lõpetamist jaotatakse CPU P0-le, kuna sellel on vähem purunemisaega kui teised. Pärast P0 lõppemist eraldatakse protsessor P1-le ja seejärel P2-le.

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.

Lahendagem ülaltoodud ajakava näiteks mitte-preemptive viisil. Kuna algul saabub protsess P2 ajal 0, nii et protsessorile P2 eraldatakse protsess, mille teostamiseks kulub 6 millisekundit. Kõigi protsesside vahel, st P0, P1, saab P3 valmisjärjekorda. Kuid kõik ootavad, kuni protsess P2 lõpeb oma CPU lõhkemiseni. Seejärel jaotatakse P2-le, st P3 saabuv protsess protsessorile, kuni see lõpetab selle purunemisaja. Samamoodi käivitub P1 ja CPU antakse hiljem protsessile P0.

Peamised erinevused eel- ja mittesündiva ajakava vahel

  1. 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 .
  2. Täitmisprotsess eelvõimelisel ajastamisel katkeb teostamise keskel, samas kui täitmisprotsess mitte-eelvõistluses ei katkesta teostamise keskel.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

Top