Operating Systems: Zvidimbu Zvitatu Zviri Nyore. Chikamu 1: Nhanganyaya (shanduro)

Nhanganyaya kune Operating Systems

Mhoro, Habr! Ndinoda kukupa pfungwa dzako nhevedzano yezvinyorwa-shanduro yeimwe bhuku inonakidza mumaonero angu - OSTEP. Ichi chinyorwa chinoongorora zvakadzama basa reunix-senge masisitimu anoshanda, anoti, kushanda nematanho, akasiyana marongero, ndangariro uye zvimwe zvakafanana zvinoumba OS yemazuva ano. Iwe unogona kuona yepakutanga yezvinhu zvese pano pano. Ndapota cherechedza kuti shanduro yakaitwa zvisina basa (zvakasununguka), asi ndinovimba kuti ndakachengeta zvazvinoreva.

Basa re laboratori panyaya iyi rinogona kuwanikwa pano:
- yepakutanga: pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- yepakutanga: github.com/remzi-arpacidusseau/ostep-code
- Kugadziriswa kwangu pachedu: github.com/bykvaadm/OS/tree/master/ostep

Unogonawo kutarisa chiteshi changu pa teregiramu =)

Chirongwa chekushanda

Chii chinoitika kana purogiramu ichishanda? Chirongwa chinomhanya chinoita chinhu chimwe chakareruka - chinoita mirairo. Sekondi yega yega, mamirioni uye kunyangwe angangoita mabhiriyoni emirairo anotorwa ne processor kubva ku RAM, yobva yaadhidha (semuenzaniso, inoziva kuti iyi mirairo ndeyapi) uye oita. Izvi zvinogona kunge zviri kuwedzera nhamba mbiri, kuwana ndangariro, kuyedza mamiriro, kusvetuka kune basa, zvichingodaro. Mushure mekupedza kuraira kumwe, processor inoenderera mberi nekuita imwe. Uye saka kuraira mushure mekuraira, ivo vanoitwa kusvika chirongwa chapera.
Uyu muenzaniso unowanzotariswa nenzira yakareruka - kutaura zvazviri, kumhanyisa processor, hardware yemazuva ano inokutendera kuti uite mirairo kunze kwekutevedzana, kuverenga zvinogoneka, kuita mirairo panguva imwe chete, uye matipi akafanana.

Von Neumann computation modhi

Maitiro akareruka ekushanda atakatsanangura akafanana neiyo Von Neumann modhi yekombuta. Von Neumann ndomumwe wemapiyona emakombuta masisitimu, ndiye zvakare mumwe wevanyori vedzidziso yemutambo. Panguva iyo chirongwa chiri kuita, boka rezvimwe zviitiko zvinoitika, mamwe akawanda maitiro uye yechitatu-bato logic iri kushanda, chinangwa chikuru chiri kurerutsa kutanga, kushanda uye kugadzirisa kwehurongwa.
Pane seti yesoftware ine basa rekuita kuti zvirongwa zvive nyore kuita (kana kunyange kubvumira akawanda mapurogiramu kuti ashande panguva imwe chete), achibvumira zvirongwa kugovana ndangariro imwe chete, pamwe nekutaurirana nemidziyo yakasiyana. Seti yakadai yesoftware (software) inodaidzwa kuti inoshanda sisitimu uye mabasa ayo anosanganisira kutarisa kuti sisitimu inoshanda nemazvo uye nemazvo, pamwe nekuona kureruka kwekutonga kweiyi system.

uchishandisa maitiro

Operating system, yakapfupikiswa seOS, seti yezvirongwa zvakabatana zvakagadzirirwa kubata zviwanikwa zvekombuta uye kuronga kusangana kwemushandisi nekombuta..
Iyo OS inowana kushanda kwayo zvakanyanya kuburikidza neiyo yakakosha nzira - tekinoroji virtualization. Iyo OS inodyidzana neyemuviri sosi (processor, memory, disk, nezvimwewo) uye inoishandura kuita yakajairika, inokwanisa, uye nyore kushandisa fomu pachayo. Naizvozvo, kuti unzwisise zvakazara, iwe unogona kunyatso kuenzanisa sisitimu yekushandisa nemuchina chaiwo.
Kuti ubvumire vashandisi kupa mirairo kune inoshanda sisitimu uye nekudaro shandisa kugona kweiyo chaiyo muchina (senge: kumhanya chirongwa, kugovera ndangariro, kuwana faira, zvichingodaro), iyo inoshanda sisitimu inopa chinongedzo chinodanwa. API (application programming interface) uye kune iyo mafoni anogona kuitwa. Iyo yakajairwa sisitimu yekushandisa inokutendera iwe kuita mazana emafoni ehurongwa.
Chekupedzisira, nekuti virtualization inobvumira akawanda mapurogiramu kuti ashande (nekudaro kugovera iyo CPU), uye panguva imwe chete kuwana mirairo yavo uye data (nekudaro kugovana ndangariro), uye kuwana madhisiki (nekudaro kugovera I / O zvishandiso)), iyo inoshanda sisitimu inonziwo sosi. maneja. Imwe neimwe processor, dhisiki uye ndangariro chinhu cheiyo sisitimu uye nekudaro rimwe remabasa eiyo sisitimu yekushandisa rinova basa rekutonga zviwanikwa izvi, uchizviita nemazvo, zvakanaka, kana, zvakasiyana, zvichienderana nebasa rinoitirwa sisitimu yekushandisa. yakagadzirwa.

CPU virtualization

Tarisa purogiramu inotevera:
(https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be)

Operating Systems: Zvidimbu Zvitatu Zviri Nyore. Chikamu 1: Nhanganyaya (shanduro)

Haiite chero zviito zvakakosha; kutaura zvazviri, zvese zvazvinoita kudaidza basa vhiririka(), ane basa rekutarisa nguva uye kudzoka mushure mesekondi imwe yapfuura. Saka, inodzokorora kusingaperi tambo yakapfuura nemushandisi senharo.
Ngatimhanyei chirongwa ichi tochipa chiratidzo β€œA” senharo. Mhedzisiro yacho haina kunyanya kunakidza - sisitimu inongoita chirongwa icho nguva nenguva chinoratidza chiratidzo "A" pachiratidziri.
Zvino ngatiedzei sarudzo kana zviitiko zvakawanda zvechirongwa chimwe chete zvatangwa, asi kuratidza mavara akasiyana, kuti zvijeke. Muchiitiko ichi, chigumisiro chichave chakasiyana zvishoma. Kunyangwe isu tine processor imwe chete, chirongwa chinomhanya panguva imwe chete. Izvi zvinoitika sei? Asi zvinozoitika kuti iyo inoshanda sisitimu, kwete pasina rubatsiro rwehuremu kugona, inogadzira fungidziro. Kunyepedzera kuti kune akati wandei ma processors musystem, achishandura processor imwe yemuviri kuita nhamba isingaperi uye nekudaro zvichibvumira zvirongwa kuita senge zvinomhanya panguva imwe chete. Kunyengerera uku kunonzi CPU virtualization.
Mufananidzo uyu unomutsa mibvunzo yakawanda, semuenzaniso, kana mapurogiramu akawanda achida kushanda panguva imwe chete, zvino ndeipi ichatangwa? OS "maitiro" ndiwo ane chekuita nenyaya iyi. Mitemo inoshandiswa munzvimbo dzakawanda muOS uye inopindura mibvunzo yakaita seiyi, pamwe nekuve nzira dzinoshandiswa neOS. Saka basa reOS semaneja wezvishandiso.

Memory virtualization

Zvino ngatitarisei ndangariro. Iyo yemuviri modhi yendangariro mumasisitimu emazuva ano inomiririrwa sebyte array. Kuti uverenge kubva mundangariro unofanirwa kutsanangura kero yeserokuiwana. Kunyora kana kugadzirisa data, iwe unofanirwawo kutsanangura iyo data uye kero yesero kwaunoinyorera.
Memory yekuwana inoitika nguva dzose panguva yekuitwa kwechirongwa. Chirongwa chinochengeta chimiro chayo che data mundangariro uye chinochiwana nekuita mirairo yakasiyana. Zvichakadaro, mirairo inochengetwawo mundangariro, saka inowanikwawo kune yega yega chikumbiro cherairo rinotevera.

Kufonera malloc ()

Funga nezvechirongwa chinotevera, chinogovera nzvimbo yendangariro uchishandisa kufona malloc () (https://youtu.be/jnlKRnoT1m0):

Operating Systems: Zvidimbu Zvitatu Zviri Nyore. Chikamu 1: Nhanganyaya (shanduro)

Purogiramu inoita zvinhu zvakawanda. Kutanga, inogovera imwe ndangariro (mutsara 7), yobva yadhinda kero yesero yakagoverwa (mutsara 9), inonyora zero kune yekutanga slot yendangariro yakagoverwa. Tevere, chirongwa chinopinda muchiuno umo chinowedzera kukosha kwakachengetwa mundangariro pakero mune inoshanduka "p". Iyo zvakare inoratidza iyo process ID yega. Iyo ID process yakasarudzika kune yega yega yekumhanya maitiro. Tatangisa makopi akati wandei, tinozosangana nemhedzisiro inonakidza: Muchiitiko chekutanga, kana tisina chataita uye nekungoburitsa akati wandei makopi, kero dzinosiyana. Asi izvi hazviwire pasi pedzidziso yedu! Ichokwadi, nekuti kugovera kwemazuva ano kune ndangariro randomization inogoneswa neiyo default. Kana iwe ukaidzima, tinowana mhedzisiro inotarisirwa - kero dzekurangarira dzemapurogiramu maviri panguva imwe chete anomhanya anopindirana.

Operating Systems: Zvidimbu Zvitatu Zviri Nyore. Chikamu 1: Nhanganyaya (shanduro)

Mhedzisiro yacho ndeyekuti mapurogiramu maviri akazvimirira anoshanda neavo ega kero nzvimbo, iyo inozoiswa mepu neiyo inoshanda sisitimu mundangariro yemuviri.. Naizvozvo, kushandiswa kwekero dzendangariro mukati mepurogiramu imwe hakuzokanganise vamwe munzira ipi neipi, uye purogiramu imwe neimwe inoratidzika kuva ine chidimbu chayo chendangariro chemuviri, chose chose pairi. Ichokwadi, zvisinei, ndechekuti ndangariro yemuviri chinhu chakagovaniswa chinotungamirwa neiyo inoshanda sisitimu.

Kuenderana

Imwe nyaya yakakosha mukati mekushandisa masisitimu ndeye kuwirirana. Iri izwi rinoshandiswa pakutaura nezve matambudziko ehurongwa anogona kuitika kana uchishanda nezvinhu zvakawanda kamwechete mukati mechirongwa chimwe chete. Consistency matambudziko anotoitika mukati meiyo yekushandisa system pachayo. Mumienzaniso yapfuura neyekuyeuka uye processor virtualization, takaona kuti OS inodzora zvinhu zvakawanda panguva imwe chete - inotangisa nzira yekutanga, yozotevera yechipiri, zvichingodaro. Sezvazvinoitika, maitiro aya anogona kutungamirira kune mamwe matambudziko. Semuenzaniso, mapurogiramu emazuva ano ane tambo dzakawanda anosangana nematambudziko akadaro.

Tarisa purogiramu inotevera:

Operating Systems: Zvidimbu Zvitatu Zviri Nyore. Chikamu 1: Nhanganyaya (shanduro)

Iyo purogiramu mune chikuru basa inogadzira tambo mbiri uchishandisa kufona Pthread_create(). Mumuenzaniso uyu, shinda inogona kufungidzirwa sebasa rinomhanya munzvimbo imwechete yekuyeuka pedyo nemamwe mabasa, uye zvakajeka kupfuura rimwe basa rinoshanda panguva imwe chete. Mumuenzaniso uyu, shinda imwe neimwe inotanga uye inoita basa worker () iyo inongowedzera kusiyanisa,.

Ngatimhanyei chirongwa ichi nenharo ye 1000. Sezvaungafungidzira, mhedzisiro inofanira kuva 2000, sezvo shinda imwe neimwe yakawedzera musiyano ka1000. Zvisinei, zvinhu zvose hazvisi nyore. Ngatiedzei kumhanyisa chirongwa nekurongeka kwehukuru kudzokorora.

Operating Systems: Zvidimbu Zvitatu Zviri Nyore. Chikamu 1: Nhanganyaya (shanduro)

Nekuisa nhamba, semuenzaniso, 100000 200000, tinotarisira kuona nhamba 100000 XNUMX pakubuda.Zvisinei, nekumhanyisa nhamba XNUMX XNUMX kakawanda, hatizongooni mhinduro chaiyo, asi tichawanawo mhinduro dzakasiyana dzisiridzo. Mhinduro iri pakuti kuwedzera nhamba kunoda maoparesheni matatu - kutora nhamba kubva mundangariro, kuiwedzera, uyezve kunyora nhamba kumashure. Sezvo mirairo iyi yese isingaitwe atomu (ese panguva imwe chete), zvinhu zvinoshamisa seizvi zvinogona kuitika. Dambudziko iri rinonzi muprogramming rudzi mamiriro - rudzi mamiriro. Kana masimba asingazivikanwe panguva isingazivikanwe anogona kukanganisa kuita kwechero mashandiro ako.

Source: www.habr.com

Voeg