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 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 wopangitsa kuti mapulogalamu aziyenda mosavuta (kapena kulola mapulogalamu angapo kuti azigwira nthawi imodzi), omwe amalola mapulogalamu kuti azitha kukumbukira zomwezo, komanso kulumikizana ndi zida zosiyanasiyana. Pulogalamu yotereyi (mapulogalamu) imatchedwa kuti makina ogwiritsira ntchito ndipo ntchito zake zikuphatikizapo kuyang'anira kuti dongosolo limagwira ntchito moyenera komanso moyenera, komanso kuonetsetsa kuti dongosololi ndi losavuta kuyendetsa.
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.
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.
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.
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:
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.