Pulogalamu ya ProHoster > Blog > Ulamuliro > Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 5: Kukonzekera: Mndandanda wa Ndemanga za Magawo Ambiri (kumasulira)
Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 5: Kukonzekera: Mndandanda wa Ndemanga za Magawo Ambiri (kumasulira)
Chiyambi cha Operating Systems
Pa Habr! Ndikufuna kubweretsa kwa inu mndandanda wa zolemba-zomasulira za buku limodzi losangalatsa m'malingaliro anga - OSTEP. Nkhaniyi ikufotokoza mozama za ntchito zamakina ogwiritsira ntchito ngati unix, mwachitsanzo, kugwira ntchito ndi njira, ma scheduler osiyanasiyana, kukumbukira, ndi zina zofananira zomwe zimapanga OS yamakono. Mutha kuwona choyambirira cha zida zonse apa apa. Chonde dziwani kuti kumasuliraku kudapangidwa mopanda ntchito (mwaulere), koma ndikhulupilira kuti ndidasunga tanthauzo lake.
Kutengera zomwe tafotokozazi, zinthu zofunika pakukonza MLFQ
ndizo zofunika kwambiri. M'malo mopereka patsogolo chokhazikika kwa aliyense
ntchito, MLFQ imasintha kufunikira kwake kutengera zomwe zimawonedwa.
Mwachitsanzo, ngati ntchito nthawi zonse ikuponya ntchito pa CPU podikirira kulowetsa kiyibodi,
MLFQ idzaika patsogolo ntchito chifukwa ndi momwemo
njira yolumikizirana iyenera kugwira ntchito. Ngati, m'malo mwake, ntchitoyo nthawi zonse ndi
amagwiritsa ntchito CPU kwambiri kwa nthawi yayitali, MLFQ imatsitsa
chofunika kwambiri. Chifukwa chake, MLFQ iphunzira momwe zimakhalira zikuyenda
ndi kugwiritsa ntchito makhalidwe.
Tiyeni tijambule chitsanzo cha momwe mizere ingawonekere nthawi ina
nthawi ndipo mupeza chinthu chonga ichi:
Pachiwembu ichi, njira ziwiri A ndi B zili pamzere wapamwamba kwambiri. Njira
C ali penapake pakati, ndipo ndondomeko D ili kumapeto kwenikweni kwa mzere. Malinga ndi pamwamba
Malinga ndi kufotokozera kwa algorithm ya MLFQ, wokonza mapulani azigwira ntchito ndi apamwamba kwambiri
Zofunikira molingana ndi RR, ndi ntchito C, D sizigwira ntchito.
Mwachilengedwe, chithunzithunzi chokhazikika sichingapereke chithunzi chonse cha momwe MLFQ imagwirira ntchito.
Ndikofunika kumvetsetsa bwino momwe chithunzicho chimasinthira pakapita nthawi.
Kuyesera 1: Momwe mungasinthire zofunikira
Pakadali pano muyenera kusankha momwe MLFQ ingasinthire gawo loyambirira
ntchito (ndipo momwe ntchitoyo ilili pamzere) pamene ikupita patsogolo pa moyo wake. Za
izi ndizofunikira kukumbukira kayendetsedwe ka ntchito: kuchuluka kwa ndalama
ntchito zolumikizana ndi nthawi yayitali (ndipo kumasulidwa pafupipafupi
CPU) ndi ntchito zingapo zazitali zomwe zimagwiritsa ntchito CPU nthawi yawo yonse yogwira ntchito, pomwe
Nthawi yoyankhira si yofunika pa ntchito zoterezi. Ndipo mwanjira iyi mutha kuyesa koyamba
gwiritsani ntchito algorithm ya MLFQ ndi malamulo awa:
Rule4b: Ngati Ntchito itulutsa CPU nthawi yake isanathe, ndiye
imakhalabe ndi cholinga chomwecho.
Chitsanzo 1: Ntchito imodzi yokhalitsa
Monga tikuwonera mu chitsanzo ichi, ntchito yovomerezeka imayikidwa ndi apamwamba kwambiri
chofunika kwambiri. Pambuyo pa zenera la 10ms, njirayi imatsitsidwa patsogolo
wokonza. Pambuyo pawindo lotsatira, ntchitoyi imatsitsidwa
otsika kwambiri mu dongosolo, kumene amakhala.
Chitsanzo 2: Anapereka ntchito yaifupi
Tsopano tiyeni tiwone chitsanzo cha momwe MLFQ ingayesere kuyandikira SJF. Mu zimenezo
Mwachitsanzo, ntchito ziwiri: A, yomwe ndi ntchito yayitali nthawi zonse
kukhala ndi CPU ndi B, yomwe ndi ntchito yochepa yolumikizana. Tiyerekeze
kuti A anali atagwira kale ntchito kwakanthawi pomwe ntchito B idafika.
Chithunzichi chikuwonetsa zotsatira za zochitikazo. Ntchito A, monga ntchito iliyonse,
Kugwiritsa ntchito CPU kunali pansi kwambiri. Ntchito B idzafika nthawi T=100 ndipo idzafika
ayikidwa pamzere wapamwamba kwambiri. Popeza nthawi yake yogwira ntchito ndi yochepa, ndiye
idzamaliza isanafike pamzere womaliza.
Kuchokera ku chitsanzo ichi, cholinga chachikulu cha algorithm chiyenera kumveka: popeza ndondomekoyi sichitha
amadziwa ngati ntchitoyo ndi yayitali kapena yaifupi, ndiye choyamba amaona kuti ntchitoyo ndi yaitali
mwachidule ndipo amachipereka patsogolo kwambiri. Ngati iyi ndi ntchito yayifupi, ndiye
idzamalizidwa mwamsanga, apo ayi ngati ili ntchito yaitali, idzayenda pangβonopangβono
patsogolo ndipo posachedwa adzatsimikizira kuti iye ndi ntchito yayitali yomwe siili
amafuna kuyankha.
Chitsanzo 3: Nanga I/O?
Tsopano tiyeni tiwone chitsanzo cha I/O. Monga tanenera mu lamulo 4b,
ngati ndondomeko imatulutsa purosesa popanda kugwiritsa ntchito nthawi yake yonse,
ndiye imakhalabe pamlingo womwewo wofunikira. Cholinga cha lamuloli ndi chophweka
- ngati ntchito yolumikizana imagwira ntchito zambiri za I / O, mwachitsanzo, kuyembekezera
kuchokera pa kiyi ya wosuta kapena makina osindikizira a mbewa, ntchito yotereyi idzamasula purosesa
pamaso pa zenera lopatsidwa. Sitikufuna kutsitsa ntchito yotereyi,
ndipo motero idzakhalabe pamlingo womwewo.
Chitsanzochi chikuwonetsa momwe ma algorithm angagwirire ntchito ndi njira zotere - ntchito yolumikizirana B, yomwe imangofunika CPU ya 1ms isanachitike.
Njira ya I/O ndi Job A yanthawi yayitali, yomwe imathera nthawi yake yonse pogwiritsa ntchito CPU.
MLFQ imayika ndondomeko B patsogolo kwambiri chifukwa ikupitirira
kumasula CPU. Ngati B ndi ntchito yolumikizana, ndiye kuti algorithm yakwaniritsa
Cholinga chanu ndikuyendetsa ntchito zolumikizana mwachangu.
Mavuto ndi algorithm yamakono ya MLFQ
M'zitsanzo zam'mbuyomu tidapanga mtundu woyambira wa MLFQ. Ndipo zikuwoneka kuti iye
imagwira ntchito yake bwino komanso moona mtima, kugawa nthawi ya CPU mwachilungamo pakati
ntchito zazitali komanso kulola ntchito zazifupi kapena zazitali
gwiritsani ntchito I/O mwachangu. Tsoka ilo, njira iyi ili ndi zingapo
mavuto aakulu. Choyamba, vuto la njala: ngati dongosololi liri ndi zambiri zogwirizana
ntchito, ndiye kuti adzawononga nthawi yonse ya purosesa ndipo motero palibe imodzi kwa nthawi yayitali
ntchitoyo siitheka (akufa ndi njala).
Muchitsanzo ichi pali ntchito ziwiri zomwe zidagwira ntchito pa mzere 2
ms, yogawidwa m'mawindo a 10ms. 40ms pamzere wapakati (20ms zenera) komanso poyambira kwambiri
Zenera la nthawi ya mzere lidakhala 40ms pomwe ntchito zidamaliza ntchito yawo.
Kukhazikitsa kwa Solaris OS kwa MLFQ ndi gulu la ogawana nthawi.
Wokonza adzapereka mndandanda wa matebulo omwe amatanthauzira ndendende momwe ayenera
Chofunika kwambiri cha ndondomekoyi chimasintha pa nthawi ya moyo wake, zomwe ziyenera kukhala kukula kwake
zenera lopatsidwa ndi kangati muyenera kukweza ntchito zofunika. Woyang'anira
machitidwe amatha kuyanjana ndi tebulo ili ndikupangitsa wokonza kuti azichita
mosiyana. Mwachikhazikitso, tebulo ili lili ndi mizere 60 ndikuwonjezeka pang'onopang'ono
kukula kwazenera kuchokera ku 20ms (zofunika kwambiri) mpaka mazana angapo ms (zotsika kwambiri), ndi
komanso ndi mphamvu ya ntchito zonse kamodzi pa sekondi.
Okonza ena a MLFQ sagwiritsa ntchito tebulo kapena chilichonse
malamulo omwe akufotokozedwa mu phunziro ili, m'malo mwake, amawerengera zoyambira kugwiritsa ntchito
masamu masamu. Mwachitsanzo, pulogalamu ya FreeBSD imagwiritsa ntchito fomula
werengerani zomwe zili patsogolo pakalipano za ntchito kutengera nthawi yayitali bwanji
CPU yogwiritsidwa ntchito. Kuphatikiza apo, kugwiritsidwa ntchito kwa CPU kumawola pakapita nthawi, ndi zina zotero
Chifukwa chake, kuwonjezereka koyambirira kumachitika mosiyana ndi momwe tafotokozera pamwambapa. Izi ndi Zow
amatchedwa decay algorithms. Kuyambira mtundu 7.1, FreeBSD yagwiritsa ntchito ULE scheduler.
Pomaliza, okonza mapulani ambiri ali ndi zina. Mwachitsanzo, ena
ma schedulers amasunga milingo yayikulu kwambiri yogwiritsira ntchito makina ogwiritsira ntchito motero
Chifukwa chake, palibe njira yogwiritsira ntchito yomwe ingalandire patsogolo kwambiri
dongosolo. Machitidwe ena amakulolani kuti mupereke malangizo othandizira
wokonzekera akhoza kuyika zofunika patsogolo molondola. Mwachitsanzo, kugwiritsa ntchito lamulo zabwino
mukhoza kuwonjezera kapena kuchepetsa kufunika kwa ntchito ndipo motero kuonjezera kapena
chepetsa mwayi wa pulogalamu yogwiritsa ntchito nthawi ya CPU.
MLFQ: Chidule
Talongosola njira yokonzekera yotchedwa MLFQ. Dzina lake
yotsekedwa mu mfundo ya ntchito - ili ndi mizere ingapo ndipo imagwiritsa ntchito ndemanga
kudziwa kuti ntchito ndi yofunika.
Njira yomaliza ya malamulowo idzakhala motere: