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.
Chofunikira chavuto: Momwe mungapangire ndondomeko ya scheduler
Kodi ndondomeko zoyendetsera ndondomeko ziyenera kupangidwa bwanji? Mfundo zazikuluzikulu ziyenera kukhala zotani? Ndi miyeso iti yomwe ili yofunika? Kodi ndi njira zotani zoyambira zomwe zidagwiritsidwa ntchito poyambira makompyuta?
Malingaliro a Ntchito
Tisanakambirane mfundo zomwe zingatheke, tiyeni tiyambe tikambirane pang'ono pang'onopang'ono za ndondomeko zomwe zikuyenda mu dongosolo, zomwe zimatchedwa pamodzi. kuchuluka kwa ntchito. Kufotokozera za ntchito ndi gawo lofunika kwambiri la ndondomeko zomanga, ndipo mukamadziwa zambiri za ntchitoyo, ndondomeko yomwe mungalembe ndi yabwino.
Tiyeni tipange malingaliro awa okhudza njira zomwe zikuyenda mu dongosolo, nthawi zina amatchedwanso ntchito (ntchito). Pafupifupi malingaliro onsewa sali enieni, koma ndi ofunikira pakukula kwa malingaliro.
Ntchito iliyonse imayendera nthawi yofanana,
Ntchito zonse zimayikidwa nthawi imodzi,
Ntchito yomwe wapatsidwa imagwira ntchito mpaka kumaliza,
Ntchito zonse zimagwiritsa ntchito CPU yokha,
Nthawi yoyendetsa ntchito iliyonse imadziwika.
Scheduler Metrics
Kuphatikiza pamalingaliro ena okhudzana ndi katunduyo, chida china chofananizira ndondomeko zamadongosolo chimafunikira: ma metric owerengera. Metric ndi muyeso wina chabe wa chinachake. Pali ma metric angapo omwe angagwiritsidwe ntchito kufananiza okonza mapulani.
Algorithm yofunikira kwambiri yomwe titha kugwiritsa ntchito imatchedwa FIFO kapena bwerani koyamba (kulowa), kuperekedwa koyamba (kutuluka). Algorithm iyi ili ndi zabwino zingapo: ndiyosavuta kukhazikitsa ndipo imagwirizana ndi zomwe tikuganiza ndipo imagwira ntchito bwino.
Tiyeni tione chitsanzo chosavuta. Tinene kuti ntchito zitatu zidakhazikitsidwa nthawi imodzi. Koma tiyeni tiyerekeze kuti ntchito A inafika kale pang'ono kuposa ena onse, kotero idzawonekera pamndandanda wakupha kale kuposa ena, monga B wachibale kwa C. Tiyerekeze kuti aliyense wa iwo adzaphedwa kwa masekondi 3. Kodi avareji ya nthawi yomaliza ntchitozi ikhala iti?
Powerengera zikhalidwe - 10+20+30 ndikugawa ndi 3, timapeza nthawi yochitira pulogalamu yofanana ndi masekondi 20.
Ndipo zikuoneka kuti aligorivimu STCF si bwino kwambiri pamene ntchito 3 kufika nthawi yomweyo - ayenera kudikira mpaka ntchito zazing'ono anamaliza. Chifukwa chake ma aligorivimu ndi abwino pamiyeso yanthawi yosinthira, koma yoyipa pamakina olumikizana. Tangoganizani mutakhala pa terminal mukuyesera kulemba zilembo mumkonzi ndikudikirira masekondi opitilira 10 chifukwa ntchito ina inali kutenga CPU. Sizosangalatsa kwambiri.
Ndiye tikukumana ndi vuto lina - tingapange bwanji ndandanda yomwe imakhudzidwa ndi nthawi yoyankha?
Kuzungulira Robin
Algorithm idapangidwa kuti ithetse vutoli Kuzungulira Robin (RR). Lingaliro loyambirira ndi losavuta: m'malo mogwira ntchito mpaka zitatsirizidwa, tidzayendetsa ntchitoyi kwa nthawi inayake (yotchedwa kagawo ka nthawi) ndikusinthira ku ntchito ina kuchokera pamzere. Algorithm imabwereza ntchito zake mpaka ntchito zonse zitamalizidwa. Pankhaniyi, nthawi yoyendetsera pulogalamuyo iyenera kukhala yochulukirapo pambuyo pake pomwe chowerengera chidzasokoneza ndondomekoyi. Mwachitsanzo, ngati chowerengera chisokoneza ndondomeko x=10ms iliyonse, ndiye kuti kukula kwazenera la ndondomekoyo kuyenera kukhala kuchulukitsa kwa 10 ndikukhala 10,20 kapena x*10.
Tiyeni tiwone chitsanzo: Ntchito za ABC zimafika nthawi imodzi mudongosolo ndipo iliyonse ikufuna kuthamanga kwa masekondi asanu. Algorithm ya SJF idzamaliza ntchito iliyonse isanayambe ina. Mosiyana ndi izi, RR aligorivimu yokhala ndi zenera loyambitsa = 5s idzadutsa ntchito motere (mkuyu 1):
(SJF Apanso (Yoyipa pa Nthawi Yoyankha)
(Round Robin (Zabwino Nthawi Yoyankha)
Avereji ya nthawi yoyankhira ma aligorivimu a RR ndi (0+1+2)/3=1, pomwe ya SJF (0+5+10)/3=5.
Ndizomveka kuganiza kuti zenera la nthawi ndi gawo lofunikira kwambiri la RR; yaying'ono ndi yaying'ono, imakweza nthawi yoyankha. Komabe, simuyenera kuyipanga kukhala yaying'ono kwambiri, chifukwa kusintha kwa nthawi kumathandiziranso magwiridwe antchito onse. Chifukwa chake, nthawi yosankha nthawi yazenera imayikidwa ndi womanga OS ndipo zimadalira ntchito zomwe zakonzedwa kuti zichitike mmenemo. Kusintha mawu si ntchito yokhayo yomwe imawononga nthawi - pulogalamu yothamanga imagwira ntchito pazinthu zina zambiri, mwachitsanzo, ma cache osiyanasiyana, ndipo ndi kusintha kulikonse ndikofunikira kupulumutsa ndikubwezeretsa chilengedwe ichi, chomwe chingatengenso zambiri. nthawi.
RR ndiwokonzekera bwino ngati timangolankhula za nthawi yoyankha. Koma kodi metric yosinthira ntchito ikhala bwanji ndi algorithm iyi? Taganizirani chitsanzo pamwamba, pamene ntchito nthawi A, B, C = 5s ndi kufika nthawi yomweyo. Ntchito A idzatha pa 13, B pa 14, C pa 15s ndipo nthawi yosinthira idzakhala 14s. Chifukwa chake, RR ndiye njira yoyipa kwambiri pazachuma.
Mwachidule, algorithm yamtundu uliwonse wa RR ndi yabwino; imagawa nthawi ya CPU mofanana pakati pa njira zonse. Chifukwa chake, ma metric awa nthawi zonse amatsutsana wina ndi mnzake.
Chifukwa chake, tili ndi ma aligorivimu angapo osiyanitsa ndipo nthawi yomweyo pali malingaliro angapo omwe atsalira - kuti nthawi yantchitoyo imadziwika komanso kuti ntchitoyi imangogwiritsa ntchito CPU.
Nthawi yomwe ndondomeko iliyonse ikupempha ntchito ya I / O, ndondomekoyi imalowa m'malo otsekedwa, kuyembekezera kuti I / O imalize. Ngati I / O itumizidwa ku hard drive, ndiye kuti ntchito yotereyi imatha kutenga ma ms angapo kapena kupitilira apo, ndipo purosesa idzakhala yopanda pake pakadali pano. Panthawiyi, wokonza mapulani amatha kukhala ndi purosesa ndi njira ina iliyonse. Chisankho chotsatira chomwe wokonza adzayenera kupanga ndi nthawi yomwe ntchitoyi idzamalize I/O yake. Izi zikachitika, kusokoneza kudzachitika ndipo OS idzayika njira yomwe idatcha I / O kukhala yokonzeka.
Tiyeni tione chitsanzo cha mavuto angapo. Aliyense wa iwo amafuna 50ms ya CPU nthawi. Komabe, woyamba adzapeza I/O pa 10ms iliyonse (yomwe idzachitidwanso 10ms iliyonse). Ndipo ndondomeko B imangogwiritsa ntchito purosesa ya 50ms popanda I/O.
Mu chitsanzo ichi tidzagwiritsa ntchito STCF scheduler. Kodi wopangayo azichita bwanji ngati njira ngati A ikhazikitsidwa pamenepo? Adzachita izi: choyamba adzakonza ndondomeko A, ndiyeno B.
Njira yachikhalidwe yothetsera vutoli ndikutenga gawo lililonse la 10 ms la process A ngati ntchito yosiyana. Choncho, poyambira ndi algorithm ya STJF, kusankha pakati pa ntchito ya 50 ms ndi ntchito ya 10 ms ndizodziwikiratu. Kenako, gawo laling'ono A likamalizidwa, ndondomeko B ndi I/O idzayambika. I / O ikamaliza, idzakhala yachizolowezi kuyambitsanso ndondomeko ya 10ms A kachiwiri m'malo mwa ndondomeko B. Mwanjira iyi, ndizotheka kugwiritsa ntchito kuphatikizika, kumene CPU imagwiritsidwa ntchito ndi ndondomeko ina pamene yoyamba ikuyembekezera. Ine/O. Ndipo chifukwa chake, dongosololi limagwiritsidwa ntchito bwino - panthawi yomwe njira zolumikizirana zikudikirira I / O, njira zina zitha kuchitidwa pa purosesa.
Oracle kulibenso
Tsopano tiyeni tiyese kuchotsa kuganiza kuti nthawi yogwira ntchitoyo imadziwika. Ili ndilo lingaliro loipitsitsa komanso losatheka pa mndandanda wonsewo. M'malo mwake, mu OS wamba, OS palokha nthawi zambiri sadziwa pang'ono za nthawi yogwira ntchito, ndiye mungapangire bwanji ndandanda popanda kudziwa kuti ntchitoyi itenga nthawi yayitali bwanji? Mwina tingagwiritse ntchito mfundo za RR kuthetsa vutoli?
Zotsatira
Tidayang'ana malingaliro oyambira pakukonza ntchito ndikuyang'ana mabanja a 2 a schedulers. Yoyamba imayamba ntchito yayifupi kwambiri ndipo motero imawonjezera nthawi yosinthira, pomwe yachiwiri imang'ambika pakati pa ntchito zonse mofanana, ndikuwonjezera nthawi yoyankha. Ma aligorivimu onse ndi oyipa pomwe ma aligorivimu a banja lina ndiabwino. Tidawonanso momwe kugwiritsa ntchito kofananira kwa CPU ndi I/O kungathandizire magwiridwe antchito, koma sikunathetse vutoli ndi OS clairvoyance. Ndipo m’phunziro lotsatira tiona wokonza mapulani amene amayang’ana m’mbuyo ndi kuyesa kulosera zam’tsogolo. Ndipo imatchedwa mizere ya mayankho osiyanasiyana.