Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 2: Chidule: Njira (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.

Ntchito ya labu pankhaniyi ikupezeka apa:

Zigawo zina:

Mutha kuyang'ananso njira yanga pa uthengawo =)

Tiyeni tiwone zofunikira kwambiri zomwe OS imapereka kwa ogwiritsa ntchito: ndondomekoyi. Tanthauzo la ndondomekoyi ndi losavuta - ndilo pulogalamu yothamanga. Pulogalamuyo yokha ndi chinthu chopanda moyo chomwe chili pa disk - ndi ndondomeko ya malangizo ndipo mwinamwake deta yokhazikika yomwe ikuyembekezera kukhazikitsidwa. Ndi OS yomwe imatenga ma byte amenewo ndikuwayendetsa, ndikusintha pulogalamuyo kukhala yothandiza.
Nthawi zambiri, ogwiritsa ntchito amafuna kuyendetsa mapulogalamu angapo nthawi imodzi, mwachitsanzo, mutha kuyendetsa msakatuli, masewera, osewera media, mkonzi wamalemba, ndi zina zotere pa laputopu yanu. M'malo mwake, dongosolo lodziwika bwino limatha kuyendetsa makumi kapena mazana azinthu nthawi imodzi. Izi zimapangitsa kuti pulogalamuyo ikhale yosavuta kugwiritsa ntchito, simuyenera kuda nkhawa ngati CPU ndi yaulere, mumangoyendetsa mapulogalamu.

Izi zimabweretsa vuto: momwe mungaperekere chinyengo cha ma CPU ambiri? Kodi OS ingapange bwanji chinyengo cha ma CPU pafupifupi osawerengeka, ngakhale mutakhala ndi CPU imodzi yokha?

OS imapanga chinyengo ichi kudzera mu CPU virtualization. Poyambitsa ndondomeko imodzi, ndikuyimitsa, kuyambitsa ndondomeko ina, ndi zina zotero, OS ikhoza kusunga chinyengo chakuti pali ma CPU ambiri, pamene padzakhala mapurosesa amodzi kapena angapo. Njira imeneyi imatchedwa kugawikana kwa CPU chuma ndi nthawi. Njira iyi imalola ogwiritsa ntchito kuyendetsa njira zambiri nthawi imodzi momwe akufunira. Mtengo wa yankho ili ndikuchita - popeza ngati CPU ikugawidwa ndi njira zingapo, ndondomeko iliyonse idzakonzedwa pang'onopang'ono.
Kuti mugwiritse ntchito mawonekedwe a CPU, makamaka kuti muchite bwino, OS imafunikira chithandizo chapansi komanso chapamwamba. Thandizo lotsika limatchedwa njira ndi njira zotsika kapena ma protocol omwe amakwaniritsa gawo lofunikira la magwiridwe antchito. Chitsanzo cha magwiridwe antchito otere ndikusintha kwankhani, komwe kumapatsa OS kuthekera koyimitsa pulogalamu imodzi ndikuyendetsa pulogalamu ina pa purosesa. Gawo ili la nthawi likugwiritsidwa ntchito mu machitidwe onse amakono.
Pamwamba pa njirazi pali malingaliro ena opangidwa mu OS, mwa mawonekedwe a "ndondomeko". policy ndi algorithm yopangira zisankho zamakina ogwiritsira ntchito. Ndondomeko zotere, mwachitsanzo, zimasankha pulogalamu yomwe iyenera kukhazikitsidwa (kuchokera pamndandanda wa malamulo) poyamba. Kotero, mwachitsanzo, vutoli lidzathetsedwa ndi ndondomeko yotchedwa ndondomeko (ndondomeko ya ndondomeko) ndipo posankha yankho, lidzatsogoleredwa ndi deta monga: mbiri yoyambira (yomwe pulogalamuyo inakhazikitsidwa motalika kwambiri m'mphindi zomaliza), ndi katundu wotani umene ndondomekoyi imanyamula (ndi mitundu yanji ya mapulogalamu omwe adayambitsidwa), ma metrics ogwira ntchito (kaya dongosolo imakometsedwa pakuchita zinthu molumikizana kapena pakudutsa ) ndi zina zotero.

Kufotokozera: ndondomeko

Kuchotsedwa kwa pulogalamu yoyendetsedwa ndi opareshoni ndiyomwe timayitcha ndondomeko. Monga tanenera kale, ndondomeko ndi pulogalamu yothamanga, nthawi iliyonse. Pulogalamu yomwe titha kupeza zidziwitso zachidule kuchokera kuzinthu zosiyanasiyana zamakina zomwe pulogalamuyi imapeza kapena kukhudzidwa nayo panthawi yomwe ikugwiritsidwa ntchito.
Kuti mumvetse zigawo za ndondomekoyi, muyenera kumvetsetsa maiko a dongosolo: zomwe pulogalamuyo ingawerenge kapena kusintha pa ntchito yake. Nthawi iliyonse, muyenera kumvetsetsa kuti ndi zinthu ziti zadongosolo zomwe zili zofunika kuti pulogalamuyi ichitike.
Chimodzi mwa zinthu zodziwikiratu za dongosolo amanena kuti ndondomeko zikuphatikizapo ndi kukumbukira. Malangizo ali mu kukumbukira. Deta yomwe pulogalamuyo imawerenga kapena kulemba ilinso pamtima. Chifukwa chake, kukumbukira komwe njira imatha kuthana nayo (yotchedwa malo adilesi) ndi gawo la ndondomekoyi.
Komanso gawo la dongosolo la boma ndi zolembera. Malangizo ambiri ali ndi cholinga chosintha mtengo wa zolembera kapena kuwerenga mtengo wawo, motero zolembera zimakhalanso gawo lofunika kwambiri la ntchitoyo.
Tiyenera kukumbukira kuti makina a boma amapangidwanso kuchokera ku zolembera zapadera. Mwachitsanzo, IP - cholozera malangizo - cholozera ku malangizo omwe pulogalamuyo ikuchita pano. Palinso cholozera cha stack ndi zogwirizana ndi izo chimango pointer, zomwe zimagwiritsidwa ntchito kuyang'anira: magawo a ntchito, zosintha zapaderalo ndi ma adilesi obwerera.
Pomaliza, mapulogalamu nthawi zambiri amapeza ROM (kuwerenga-kukumbukira). Izi za "I/O" (zolowetsa/zotulutsa) ziyenera kukhala ndi mndandanda wamafayilo omwe atsegulidwa pano ndi ndondomekoyi.

Process API

Kuti timvetsetse bwino momwe ndondomekoyi imagwirira ntchito, tiyeni tiphunzire zitsanzo za mafoni amtundu uliwonse omwe akuyenera kuphatikizidwa munjira iliyonse yogwiritsira ntchito. Ma API awa amapezeka mwanjira imodzi kapena ina pa OS iliyonse.

Pangani (kulenga): OS iyenera kukhala ndi njira ina yomwe imakulolani kupanga njira zatsopano. Mukalowetsa lamulo mu terminal kapena kuyambitsa pulogalamu podina kawiri pa chithunzi, foni imatumizidwa ku OS kuti ipange njira yatsopano ndikuyambitsa pulogalamuyo.
Chotsani: Popeza pali mawonekedwe opangira njira, OS iyeneranso kupereka mphamvu yokakamiza kuchotsa ndondomeko. Mapulogalamu ambiri amangoyamba ndikuzimitsa okha akamayendetsa. Kupanda kutero wosuta angafune kuti athe kuwapha ndipo motero mawonekedwe oletsa njirayi angakhale othandiza.
Dikirani (kudikirira): Nthawi zina zimakhala zothandiza kudikirira kuti ntchito ithe, ndiye kuti malo ena olumikizirana amaperekedwa omwe amapereka mwayi wodikira.
Misc Control (kuwongolera kosiyanasiyana): Kuphatikiza pa kupha ndikudikirira ndondomekoyi, palinso njira zina zowongolera. Mwachitsanzo, machitidwe ambiri ogwiritsira ntchito amapereka mphamvu yoyimitsa ndondomeko (kuletsa kuchitidwa kwa nthawi inayake) ndikuyambiranso (pitirizani kuchita)
kachirombo (boma): Pali njira zingapo zolumikizirana zopezera zambiri za momwe ndondomekoyi ilili, monga nthawi yayitali bwanji kapena momwe ilili pano.

Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 2: Chidule: Njira (kumasulira)

Kupanga Njira: Zambiri

Chimodzi mwazinthu zosangalatsa ndi momwe ndondomeko zimasinthidwa kukhala ndondomeko. Makamaka momwe OS imatengera ndikuyendetsa pulogalamuyi. Momwe ndondomekoyi imapangidwira.
Choyamba, OS iyenera kuyika khodi ya pulogalamu ndi deta yosasunthika mu kukumbukira (mumalo adilesi). Mapulogalamu nthawi zambiri amakhala pa disk kapena solid-state drive mumtundu wina womwe ungathe kuchitika. Chifukwa chake, njira yotsitsa pulogalamu ndi static data mu kukumbukira imafuna OS kuti athe kuwerenga ma byte kuchokera pa disk ndikuyika kwinakwake kukumbukira.

M'makina oyambirira ogwiritsira ntchito, ndondomeko yotsegula inkachitidwa mwachidwi, zomwe zikutanthauza kuti code yonse idayikidwa mu kukumbukira pulogalamuyo isanayambe. Makina ogwiritsira ntchito amakono amachita izi mwaulesi, ndiko kuti, kukweza zidutswa za code kapena deta pokhapokha pulogalamuyo ikufuna panthawi yake.

Kachidindo ndi deta yosasunthika ikalowetsedwa mu kukumbukira kwa OS, pali zinthu zina zochepa zomwe ziyenera kuchitidwa ndondomekoyi isanayambe. Kuchuluka kwa kukumbukira kuyenera kuperekedwa kwa stack. Mapulogalamu amagwiritsa ntchito stack pazosintha zam'deralo, magawo a ntchito, ndi ma adilesi obwerera. OS imagawa kukumbukira uku ndikuipereka ku ndondomekoyi. Stack ingathenso kugawidwa ndi zifukwa zina, makamaka imadzaza magawo a main () ntchito, mwachitsanzo ndi argc ndi argv.

Makina ogwiritsira ntchito amathanso kugawa zokumbukira ku mulu wa pulogalamu. Muluwu umagwiritsidwa ntchito ndi mapulogalamu kuti apemphe mwachindunji deta yomwe yaperekedwa. Mapulogalamu amapempha malowa poyimba ntchitoyi malloc () ndikuziyeretsa momveka bwino poyitana ntchitoyi mfulu (). Muluwu ndi wofunikira pamapangidwe a data monga masamba olumikizidwa, matebulo a hashi, mitengo ndi zina. Poyamba, kukumbukira pang'ono kumaperekedwa kwa mulu, koma pakapita nthawi, pulogalamuyo ikatha, muluwu ukhoza kupempha kukumbukira zambiri kudzera mu library ya API call malloc (). Makina ogwiritsira ntchito akutenga nawo gawo pakugawa zokumbukira zambiri kuti zithandizire kukwaniritsa mafoni awa.

Makina ogwiritsira ntchito adzachitanso ntchito zoyambira, makamaka zokhudzana ndi I/O. Mwachitsanzo, pamakina a UNIX, njira iliyonse mwachisawawa imakhala ndi zofotokozera za mafayilo atatu otseguka, pazolowera, zotuluka, ndi zolakwika. Zogwirizirazi zimalola mapulogalamu kuti awerenge zolowa kuchokera ku terminal komanso kuwonetsa zambiri pazenera.

Choncho, poika ma code ndi static deta kukumbukira, kupanga ndi kuyambitsa stack, ndikuchita ntchito zina zokhudzana ndi kuchita ntchito za I / O, OS imakonzekera siteji kuti ndondomekoyi ichitike. Pomaliza, pali ntchito yomaliza yomwe yatsala: kuyendetsa pulogalamuyo polowera, yotchedwa main() ntchito. Pogwiritsa ntchito main() ntchito, OS imasamutsa kuwongolera kwa CPU kunjira yomwe yangopangidwa kumene, motero pulogalamuyo imayamba kuchita.

State process

Tsopano popeza tamvetsetsa momwe ndondomeko ndi momwe imapangidwira, tiyeni titchule ndondomeko yomwe ingakhalemo. Mwachidule chake, ndondomeko ikhoza kukhala mu imodzi mwa izi:
akuthamanga. Mukathamanga, ndondomekoyi imayenda pa purosesa. Izi zikutanthauza kuti malangizo akugwiritsidwa ntchito.
okonzeka. M'malo okonzeka, ndondomekoyi ndi yokonzeka, koma pazifukwa zina OS saichita pa nthawi yotchulidwa.
Yaletsedwa. M'malo otsekedwa, njira imagwira ntchito zina zomwe zimalepheretsa kuti isakonzekere mpaka chochitika china chichitike. Chitsanzo chimodzi chodziwika bwino ndi pamene ndondomeko imayambitsa ntchito ya IO, imatsekedwa kuti njira ina igwiritse ntchito purosesa.

Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 2: Chidule: Njira (kumasulira)

Mutha kulingalira izi mwa mawonekedwe a graph. Monga tikuonera pachithunzichi, ndondomekoyi ikhoza kusintha pakati pa RUNNING ndi READY pakufuna kwa OS. Pamene ndondomeko yasintha kuchoka ku READY kupita ku RUNNING, zikutanthauza kuti ndondomekoyi yakonzedwa. Kumbali ina - kuchotsedwa pamakonzedwe. Panthawi yomwe ndondomeko imatsekedwa, mwachitsanzo, ndikuyambitsa ntchito ya IO, OS idzasunga izi mpaka chochitika china chichitike, mwachitsanzo kukwaniritsidwa kwa IO. panthawiyi kusintha kwa READY state ndipo mwinamwake nthawi yomweyo ku RUNNING state ngati OS asankha choncho.
Tiyeni tiwone chitsanzo cha momwe njira ziwiri zimayendera m'maboma awa. Poyamba, tiyeni tiyerekeze kuti njira zonsezi zikuyenda, ndipo iliyonse ikugwiritsa ntchito CPU yokha. Pankhaniyi, maiko awo adzawoneka chonchi.

Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 2: Chidule: Njira (kumasulira)

Muchitsanzo chotsatirachi, ndondomeko yoyamba, patapita nthawi ikuthamanga, imapempha IO ndikulowa m'malo Otsekedwa, kulola kuti ndondomeko ina ichitike (FIG 1.4). Os akuwona kuti ndondomeko 0 sikugwiritsa ntchito CPU ndikuyamba ndondomeko 1. Pamene ndondomeko 1 ikugwira ntchito, IO yatsirizidwa ndipo chikhalidwe cha ndondomeko 0 chimasintha kukhala READY. Pomaliza, ndondomeko 1 yatha, ndipo ikamaliza, ndondomeko 0 ikuyamba, kuchita, ndi kumaliza ntchito yake.

Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 2: Chidule: Njira (kumasulira)

Mapangidwe a data

The OS palokha ndi pulogalamu, ndipo monga pulogalamu ina iliyonse, ili ndi zida zina zazikulu zomwe zimatsata zidziwitso zosiyanasiyana. Kuti muwone momwe ndondomeko iliyonse ilili, OS idzathandizira zina ndondomeko mndandanda panjira zonse zomwe zili mu READY state ndi zina zowonjezera zotsata zomwe zikuchitika pano. Komanso, OS iyenera kuyang'anira njira zoletsedwa. IO ikamalizidwa, OS iyenera kudzutsa njira yofunikira ndikuyiyika pamalo okonzeka kuthamanga.

Mwachitsanzo, OS iyenera kusunga mawonekedwe a ma processor olembetsa. Pomwe ndondomekoyi imayima, malo olembetsa amasungidwa mu malo adiresi ya ndondomekoyi, ndipo panthawi yomwe ntchito yake ikupitirirabe, zikhalidwe za zolembera zimabwezeretsedwa ndipo motero pitirizani kuchita izi.

Kuphatikiza pa okonzeka, otsekedwa, akuthamanga mayiko, palinso mayiko ena. Nthawi zina, panthawi yolenga, njira ikhoza kukhala mu INIT state. Pomaliza, ndondomeko ikhoza kuikidwa mu FINAL state ikatha kale, koma chidziwitso chake sichinachotsedwe. Pa machitidwe a UNIX boma limatchedwa ndondomeko ya zombie. Mkhalidwewu ndiwothandiza pazochitika zomwe makolo akufuna kudziwa nambala yobwerera kwa mwana, mwachitsanzo, nthawi zambiri 0 imawonetsa kupambana ndipo 1 cholakwika, koma opanga mapulogalamu amatha kutulutsa ma code owonjezera kuti awonetse zovuta zosiyanasiyana. Ntchito ya makolo ikatha, imapanga kuyimba komaliza, monga wait(), kudikirira kuti mwana athetsedwe ndikuwonetsa ku OS kuti atha kuchotsa deta iliyonse yokhudzana ndi zomwe zathetsedwa.

Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 2: Chidule: Njira (kumasulira)

Mfundo zazikuluzikulu za phunziroli:

ndondomeko - Chofunikira chachikulu cha pulogalamu yomwe ikuyenda mu OS. Pa nthawi iliyonse, ndondomeko ikhoza kufotokozedwa ndi chikhalidwe chake: zomwe zili m'makumbukidwe mu malo ake adiresi, zomwe zili m'mabuku a processor, kuphatikizapo pointer pointer ndi stack pointer, ndi chidziwitso cha IO, monga mafayilo otseguka akuwerengedwa kapena kulembedwa.
Process API imakhala ndi mafoni omwe mapulogalamu amatha kuyimbira. Nthawi zambiri awa amakhala kupanga, kufufuta, kapena mafoni ena.
● Njirayi ili mu umodzi mwa mayiko ambiri, kuphatikizapo kuthamanga, kukonzekera, kutsekedwa. Zochitika zosiyanasiyana monga kukonza, kuchotserapo pakukonzekera, kapena kudikirira zimatha kusintha momwe zinthu zimachitikira.
Mndandanda wa ndondomeko ili ndi chidziwitso chokhudza njira zonse mudongosolo. Chilichonse cholowa mmenemo chimatchedwa ndondomeko yoyendetsera ntchito, yomwe kwenikweni ndi dongosolo lomwe lili ndi zofunikira zonse zokhudza ndondomeko inayake. 

Source: www.habr.com

Kuwonjezera ndemanga