Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 1: Chiyambi (kumasulira)

Chiyambi cha Operating Systems

Moni, Habr! Ndikufuna kukuwonetsani mndandanda wa zolemba-zomasulira za buku limodzi lomwe ndi losangalatsa m'malingaliro anga - OSTEP. Nkhaniyi imayang'ana mozama kwambiri ntchito ya machitidwe opangira unix, monga, ntchito ndi ndondomeko, ma scheduler osiyanasiyana, kukumbukira ndi zigawo zina zofanana 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:
- choyambirira: masamba.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- choyambirira: github.com/remzi-arpacidusseau/ostep-code
- Kusintha kwanga: github.com/bykvaadm/OS/tree/master/ostep

Mutha kuyang'ananso njira yanga pa uthengawo =)

Ntchito ya pulogalamu

Kodi chimachitika ndi chiyani pulogalamu ikayamba? Pulogalamu yothamanga imachita chinthu chimodzi chophweka - imapanga malangizo. Sekondi iliyonse, mamiliyoni ndipo mwina mabiliyoni a malangizo amatengedwa ndi purosesa kuchokera ku RAM, kenako imawamasulira (mwachitsanzo, imazindikira kuti malangizowa ndi amtundu wanji) ndikuwachita. Izi zitha kukhala kuwonjezera manambala awiri, kulowa kukumbukira, kuyang'ana momwe zilili, kulumphira kuntchito, ndi zina zotero. Pambuyo pochita malangizo amodzi, purosesa imapitilira kupha wina. Ndipo kotero malangizo pambuyo pa malangizo, amachitidwa mpaka pulogalamuyo itatha.
Chitsanzochi mwachibadwa chimaonedwa kuti ndi chosavuta - kwenikweni, kuti mufulumizitse purosesa, hardware yamakono imakulolani kuti mupereke malangizo motsatira, kuwerengera zotsatira zomwe zingatheke, perekani malangizo nthawi imodzi, ndi zidule zofanana.

Von Neumann chitsanzo cha computation

Ntchito yosavuta yomwe tafotokozayi ndi yofanana ndi ya Von Neumann yowerengera. Von Neumann ndi m'modzi mwa omwe adayambitsa makina apakompyuta, komanso ndi m'modzi mwa olemba chiphunzitso chamasewera. Pamene pulogalamuyo ikugwira ntchito, zochitika zina zambiri zimachitika, njira zina zambiri ndi ntchito zomveka za gulu lachitatu, cholinga chachikulu chomwe ndi kuchepetsa kukhazikitsidwa, kugwira ntchito ndi kukonza dongosolo.
Pali gulu la mapulogalamu omwe ali ndi udindo wopanga mapulogalamu kuti azitha kuyendetsa (kapena kulola kuti mapulogalamu angapo azigwira nthawi imodzi), kulola mapulogalamu kugawana kukumbukira komweko, komanso kulumikizana ndi zida zosiyanasiyana. Pulogalamu yotereyi (mapulogalamu) imatchedwa kuti makina ogwiritsira ntchito ndipo ntchito zake zimaphatikizapo kuyang'anira kuti dongosololi likugwira ntchito moyenera komanso moyenera, komanso kuonetsetsa kuti kayendetsedwe kake kamakhala kosavuta.

opaleshoni dongosolo

Dongosolo lothandizira, lofupikitsidwa ngati OS, ndi gulu la mapulogalamu ogwirizana omwe amapangidwa kuti azitha kuyang'anira zida zamakompyuta ndikuwongolera kulumikizana kwa ogwiritsa ntchito ndi kompyuta..
Os amakwaniritsa mphamvu zake poyamba, kudzera mu njira yofunika kwambiri - njira virtualization. Os amalumikizana ndi gwero lakuthupi (purosesa, kukumbukira, disk, ndi zina zotero) ndikusintha kukhala mawonekedwe owonjezereka, amphamvu, komanso osavuta kugwiritsa ntchito. Chifukwa chake, kuti mumvetsetse, mutha kufananiza makina ogwiritsira ntchito ndi makina enieni.
Kuti alole ogwiritsa ntchito kuti apereke malamulo ku makina ogwiritsira ntchito ndipo motero agwiritse ntchito mphamvu zamakina (monga kuyendetsa pulogalamu, kugawa kukumbukira, kupeza fayilo, ndi zina zotero), makina ogwiritsira ntchito amapereka mawonekedwe otchedwa API (mawonekedwe a pulogalamu yamapulogalamu) ndi komwe mungathe kuyimbira foni (kuyimbirani). Makina ogwiritsira ntchito amalola mazana a mafoni amtundu kuti ayimbidwe.
Pomaliza, popeza virtualization imalola mapulogalamu angapo kuthamanga (kotero kugawana CPU), ndikupeza malangizo ndi deta nthawi imodzi (motero amagawana kukumbukira), ndi ma disks ofikira (potero amagawana zida za I / O).), makina ogwiritsira ntchito amatchedwanso a woyang'anira zothandizira. Purosesa iliyonse, disk ndi kukumbukira ndi chida cha dongosolo, motero gawo limodzi la machitidwe ogwiritsira ntchito limakhala ntchito yoyang'anira zinthuzi, kuchita bwino, moona mtima, kapena mosemphanitsa, malingana ndi ntchito yomwe dongosololi limagwirira ntchito. adapangidwa.

CPU virtualization

Ganizirani pulogalamu iyi:
(https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be)

Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 1: Chiyambi (kumasulira)

Sichichita chilichonse chapadera, kwenikweni, zonse zomwe zimachita ndikuyitanitsa ntchito sapota(), omwe ntchito yake ndikuzungulira cheke ndikubwerera pakadutsa sekondi imodzi. Chifukwa chake, imabwereza mpaka kalekale chingwe chomwe wogwiritsa ntchito adadutsa ngati mkangano.
Tiyeni tiyendetse pulogalamuyi ndikuyipereka "A" ngati mkangano. Zotsatira zake sizosangalatsa kwenikweni - makinawo amangochita pulogalamu yomwe nthawi ndi nthawi imawonetsa "A".
Tsopano tiyeni tiyese njirayo pamene nthawi zambiri za pulogalamu yomweyi ikugwira ntchito, koma kutulutsa zilembo zosiyanasiyana kuti zimveke bwino. Pankhaniyi, zotsatira zake zidzakhala zosiyana. Ngakhale tili ndi purosesa imodzi, pulogalamuyo imachitika nthawi imodzi. Kodi zimachitika bwanji? Koma zikuoneka kuti opaleshoni dongosolo, osati popanda thandizo la hardware mphamvu, zimapanga chinyengo. Lingaliro loti dongosololi lili ndi mapurosesa angapo, kutembenuza purosesa imodzi yokha kukhala nambala yopanda malire ndikulola kuti mapulogalamu aziwoneka nthawi imodzi. Chinyengo ichi chimatchedwa CPU virtualization.
Chithunzichi chimabweretsa mafunso ambiri, mwachitsanzo, ngati mapulogalamu angapo akufuna kuyendetsa nthawi imodzi, ndi iti yomwe idzayambitsidwe? "Malamulo" a OS ali ndi udindo pafunsoli. Ndondomeko zimagwiritsidwa ntchito m'malo ambiri mu OS ndikuyankha mafunso ngati awa, ndipo ndi njira zoyambira zomwe OS amagwiritsa ntchito. Chifukwa chake udindo wa OS ngati woyang'anira zida.

Memory virtualization

Tsopano tiyeni tione kukumbukira. Chitsanzo chakuthupi cha kukumbukira m'machitidwe amakono chikuyimiridwa ngati mndandanda wa ma byte.. Kuti muwerenge kuchokera pamtima, muyenera kufotokoza adilesi yam'manjakuti mupeze. Kuti mulembe kapena kusinthiratu deta, muyenera kufotokozeranso deta ndi adilesi ya selo komwe mungalembe.
Memory imafikiridwa nthawi zonse panthawi ya pulogalamu. Pulogalamu imasunga dongosolo lake lonse la data mu kukumbukira ndikuipeza potsatira malangizo osiyanasiyana. Malangizowo, panthawiyi, amasungidwanso kukumbukira, kotero amapezedwanso pa pempho lililonse la malangizo otsatirawa.

malloc () kuyitana

Ganizirani pulogalamu yotsatirayi, yomwe imagawa gawo la kukumbukira pogwiritsa ntchito kuyimba malloc () (https://youtu.be/jnlKRnoT1m0):

Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 1: Chiyambi (kumasulira)

Pulogalamuyi imachita zinthu zingapo. Choyamba, imagawa kukumbukira (mzere 7), kenako imasindikiza adilesi ya cell yomwe yapatsidwa (mzere wa 9), imalemba zero kugawo loyamba la kukumbukira komwe adapatsidwa. Kenako, pulogalamuyo imalowetsamo chipika chomwe chimawonjezera mtengo womwe umasungidwa pamtima pa adilesi ya "p" yosinthika. Komanso kusindikiza ndondomeko ID palokha. ID ya ndondomekoyi ndi yapadera pazochitika zilizonse. Titayambitsa makope angapo, tidzakumana ndi zotsatira zosangalatsa: Poyamba, ngati simukuchita kalikonse ndikungoyendetsa makope angapo, maadiresi adzakhala osiyana. Koma izi sizikugwera pansi pa chiphunzitso chathu! Zolondola, popeza kugawa kwamakono kumakhala ndi kukumbukira kosasintha komwe kumathandizidwa mwachisawawa. Ngati ili yolephereka, timapeza zotsatira zomwe tikuyembekezera - maadiresi okumbukira a mapulogalamu awiri omwe akuyendetsa nthawi imodzi adzafanana.

Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 1: Chiyambi (kumasulira)

Zotsatira zake, zikuwoneka kuti mapulogalamu awiri odziyimira pawokha amagwira ntchito ndi malo awoawo achinsinsi, omwe amapangidwa ndi makina ogwiritsira ntchito pokumbukira thupi.. Chifukwa chake, kugwiritsa ntchito ma adilesi okumbukira mkati mwa pulogalamu imodzi sikungakhudze ena mwanjira iliyonse, ndipo zikuwoneka ku pulogalamu iliyonse kuti ili ndi gawo lake la kukumbukira kwakuthupi, koperekedwa kwathunthu. Chowonadi, komabe, ndikuti kukumbukira kwakuthupi ndi gawo lomwe limayendetsedwa ndi opareshoni.

Kusasinthasintha

Mitu ina yofunika kwambiri pamakina ogwiritsira ntchito ndi - kusasinthasintha. Mawuwa amagwiritsidwa ntchito pokamba za mavuto mu dongosolo lomwe lingathe kuchitika pogwira ntchito ndi zinthu zambiri panthawi imodzi mkati mwa pulogalamu imodzi. Kusasinthika kumachitika ngakhale mkati mwa makina opangira okha. M'makumbukidwe am'mbuyomu ndi zitsanzo za processor virtualization, tazindikira kuti OS imayendetsa zinthu zambiri nthawi imodzi - imayamba njira yoyamba, kenako yachiwiri, ndi zina zotero. Monga momwe zinakhalira, khalidweli lingayambitse mavuto ena. Chifukwa chake, mwachitsanzo, mapulogalamu amakono amitundu yambiri amakumana ndi zovuta zotere.

Ganizirani pulogalamu iyi:

Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 1: Chiyambi (kumasulira)

Pulogalamu mu ntchito yayikulu imapanga ulusi iwiri pogwiritsa ntchito kuyimba pthread_create(). Muchitsanzo ichi, ulusi ukhoza kuganiziridwa ngati ntchito yomwe ikuyenda mu malo omwewo a kukumbukira pamodzi ndi ntchito zina, ndi ntchito yoposa imodzi yomwe ikuyenda nthawi imodzi. Mu chitsanzo ichi, ulusi uliwonse umayamba ndikugwira ntchitoyo worker() zomwe zimangowonjezera kusinthika,.

Tiyeni tiyendetse pulogalamuyi ndi mkangano wa 1000. Monga momwe mungaganizire, zotsatira zake ziyenera kukhala 2000 chifukwa ulusi uliwonse udawonjezera nthawi 1000. Komabe, zonse sizophweka. Tiyeni tiyese kuyendetsa pulogalamuyi ndi dongosolo la kubwereza mobwerezabwereza.

Njira Zogwirira Ntchito: Zidutswa Zitatu Zosavuta. Gawo 1: Chiyambi (kumasulira)

Polowetsa nambala, mwachitsanzo, 100000, tikuyembekeza kuwona zotsatira ngati chiwerengero cha 200000. Komabe, ngati tithamanga nambala 100000 kangapo, sitidzawona yankho lolondola, komanso kupeza mayankho olakwika osiyanasiyana. Yankho lagona pa mfundo yakuti kuwonjezera chiwerengero, ntchito zitatu zofunika - kuchotsa nambala pamtima, incrementing, ndiyeno kulemba nambala mmbuyo. Popeza malangizo onsewa sakuchitidwa ma atomu (onse nthawi imodzi), zinthu zachilendo ngati izi zitha kuchitika. Vutoli limatchedwa mu mapulogalamu mtundu chikhalidwe. Pamene mphamvu zosadziwika panthawi yosadziwika zingakhudze magwiridwe antchito anu aliwonse.

Source: www.habr.com

Kuwonjezera ndemanga