Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 1: Introduzzjoni (traduzzjoni)

Introduzzjoni għas-Sistemi Operattivi

Ħej Habr! Nixtieq inġib għall-attenzjoni tiegħek sensiela ta' artikli-traduzzjonijiet ta' letteratura waħda interessanti fl-opinjoni tiegħi - OSTEP. Dan il-materjal jiddiskuti pjuttost fil-fond ix-xogħol ta 'sistemi operattivi unix-like, jiġifieri, xogħol bi proċessi, skedaturi varji, memorja u komponenti oħra simili li jiffurmaw OS moderna. Tista 'tara l-oriġinal tal-materjali kollha hawn hawn. Jekk jogħġbok innota li t-traduzzjoni saret b'mod mhux professjonali (pjuttost liberament), iżda nittama li żammejt it-tifsira ġenerali.

Xogħol tal-laboratorju dwar dan is-suġġett jista’ jinstab hawn:
- oriġinali: pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- oriġinali: github.com/remzi-arpacidusseau/ostep-code
- l-adattament personali tiegħi: github.com/bykvaadm/OS/tree/master/ostep

Tista 'wkoll tiċċekkja l-kanal tiegħi fuq telegramma =)

Operazzjoni tal-programm

X'jiġri meta programm ikun qed jaħdem? Programm li jaħdem jagħmel ħaġa waħda sempliċi - tesegwixxi struzzjonijiet. Kull sekonda, miljuni u anki possibilment biljuni ta 'struzzjonijiet jiġu rkuprati mill-proċessur mir-RAM, imbagħad jiddekodifikahom (per eżempju, jirrikonoxxi għal liema tip jappartjenu dawn l-istruzzjonijiet) u jesegwixxihom. Dan jista 'jkun li żżid żewġ numri, aċċess għall-memorja, verifika ta' kundizzjoni, jaqbeż għal funzjoni, eċċ. Wara l-eżekuzzjoni ta 'struzzjoni waħda, il-proċessur jipproċedi għall-eżekuzzjoni ta' ieħor. U għalhekk istruzzjoni wara l-istruzzjoni, huma esegwiti sakemm jintemm il-programm.
Dan l-eżempju huwa naturalment meqjus bħala ssimplifikat - fil-fatt, biex tħaffef il-proċessur, ħardwer modern jippermettilek tesegwixxi struzzjonijiet bla dewmien, tikkalkula r-riżultati possibbli, tesegwixxi struzzjonijiet simultanjament, u tricks simili.

Von Neumann mudell ta 'komputazzjoni

Il-forma simplifikata ta 'xogħol deskritta minna hija simili għall-mudell Von Neumann ta' komputazzjoni. Von Neumann huwa wieħed mill-pijunieri tas-sistemi tal-kompjuter, huwa wkoll wieħed mill-awturi tat-teorija tal-logħob. Waqt li l-programm ikun qed jaħdem, iseħħu mazz ta 'avvenimenti oħra, ħafna proċessi oħra u xogħol ta' loġika ta 'parti terza, li l-għan ewlieni tagħhom huwa li jissimplifika t-tnedija, it-tħaddim u l-manutenzjoni tas-sistema.
Hemm sett ta 'softwer li huwa responsabbli biex jagħmel il-programmi faċli biex jitmexxew (jew saħansitra jippermettu li programmi multipli jaħdmu fl-istess ħin), li jippermetti lill-programmi jaqsmu l-istess memorja, u li jikkomunikaw ma' apparati differenti. Tali sett ta 'softwer (software) jissejjaħ essenzjalment is-sistema operattiva u l-kompiti tiegħu jinkludu l-monitoraġġ li s-sistema taħdem b'mod korrett u effiċjenti, kif ukoll li tiżgura faċilità ta' ġestjoni ta 'din is-sistema.

Sistema operattiva

Sistema operattiva, imqassra bħala OS, hija sett ta' programmi interrelatati ddisinjati biex jimmaniġġjaw ir-riżorsi tal-kompjuter u jorganizzaw l-interazzjoni tal-utent ma' kompjuter..
L-OS jikseb l-effettività tiegħu fl-ewwel lok, permezz tal-iktar teknika importanti - it-teknika virtwalizzazzjoni. L-OS jinteraġixxi ma 'riżors fiżiku (proċessur, memorja, disk, eċċ.) u jittrasformaha f'forma aktar ġenerali, aktar qawwija, u aktar faċli biex tużah innifsu. Għalhekk, għal fehim ġenerali, tista 'tqabbel bejn wieħed u ieħor is-sistema operattiva ma' magna virtwali.
Sabiex l-utenti jkunu jistgħu jagħtu kmandi lis-sistema operattiva u b'hekk jużaw il-kapaċitajiet tal-magna virtwali (bħal tmexxija ta 'programm, allokazzjoni ta' memorja, aċċess għal fajl, eċċ), is-sistema operattiva tipprovdi xi interface imsejħa API (interface tal-ipprogrammar tal-applikazzjoni) u li għalih tista’ tagħmel sejħiet (sejħa). Sistema operattiva tipika tippermetti li jsiru mijiet ta’ sejħiet tas-sistema.
Fl-aħħarnett, peress li l-virtwalizzazzjoni tippermetti li jitħaddmu programmi multipli (għalhekk jaqsmu s-CPU), u fl-istess ħin jaċċessaw l-istruzzjonijiet u d-dejta tagħhom (għalhekk jaqsmu l-memorja), u jaċċessaw diski (għalhekk jaqsmu apparati I/O). ), is-sistema operattiva tissejjaħ ukoll a maniġer tar-riżorsi. Kull proċessur, disk u memorja hija riżorsa tas-sistema, u b'hekk wieħed mir-rwoli tas-sistema operattiva jsir il-kompitu li jamministra dawn ir-riżorsi, jagħmel dan b'mod effiċjenti, onest, jew viċi versa, skond il-kompitu li għalih din is-sistema operattiva hija mfassla.

Virtualization tas-CPU

Ikkunsidra l-programm li ġej:
(https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be)

Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 1: Introduzzjoni (traduzzjoni)

Ma twettaq l-ebda azzjonijiet speċjali, fil-fatt, kull ma tagħmel hu li ssejjaħ funzjoni spin(), li l-kompitu tiegħu huwa li jiċċirkola mill-kontroll tal-ħin u jirritorna wara li tkun għaddiet sekonda. Għalhekk, jirrepeti b'mod indefinit is-sekwenza li l-utent għadda bħala argument.
Ejja nħaddmu dan il-programm u għaddih il-karattru "A" bħala argument. Ir-riżultat mhuwiex partikolarment interessanti - is-sistema sempliċement tesegwixxi programm li perjodikament juri l-karattru "A".
Issa ejja nippruvaw l-għażla meta jkunu qed jaħdmu ħafna każijiet tal-istess programm, iżda joħorġu ittri differenti biex jagħmluha aktar ċara. F'dan il-każ, ir-riżultat se jkun kemmxejn differenti. Minkejja l-fatt li għandna proċessur wieħed, il-programm huwa esegwit simultanjament. Kif jiġri? Iżda jirriżulta li s-sistema operattiva, mhux mingħajr l-għajnuna tal-kapaċitajiet tal-hardware, toħloq illużjoni. L-illużjoni li s-sistema għandha proċessuri virtwali multipli, li ddawwar proċessur fiżiku wieħed f'numru teoretikament infinit u b'hekk tippermetti li apparentement programmi jaħdmu simultanjament. Din l-illużjoni tissejjaħ Virtualization tas-CPU.
Din l-istampa tqajjem ħafna mistoqsijiet, pereżempju, jekk diversi programmi jridu jitħaddmu fl-istess ħin, liema wieħed se jitnieda? Il-"politiki" tal-OS huma responsabbli għal din il-mistoqsija. Il-politiki jintużaw f'ħafna postijiet fl-OS u jwieġbu mistoqsijiet bħal dawn, u huma l-mekkaniżmi bażiċi li timplimenta l-OS. Għalhekk ir-rwol tal-OS bħala maniġer tar-riżorsi.

Virtualization tal-memorja

Issa ejja nħarsu lejn il-memorja. Il-mudell fiżiku tal-memorja fis-sistemi moderni huwa rappreżentat bħala firxa ta 'bytes.. Biex taqra mill-memorja, trid tispeċifika indirizz taċ-ċellulabiex taċċessaha. Biex tikteb jew taġġorna d-dejta, trid tispeċifika wkoll id-dejta u l-indirizz taċ-ċellula fejn tiktebha.
Il-memorja tiġi aċċessata kontinwament waqt l-eżekuzzjoni tal-programm. Programm jaħżen l-istruttura tad-dejta kollha tiegħu fil-memorja u jaċċessaha billi jesegwixxi diversi struzzjonijiet. L-istruzzjonijiet, sadanittant, huma wkoll maħżuna fil-memorja, għalhekk hija wkoll aċċessata għal kull talba għall-istruzzjoni li jmiss.

malloc() sejħa

Ikkunsidra l-programm li ġej, li jalloka reġjun tal-memorja bl-użu tas-sejħa malloc () (https://youtu.be/jnlKRnoT1m0):

Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 1: Introduzzjoni (traduzzjoni)

Il-programm jagħmel diversi affarijiet. L-ewwel, jalloka xi memorja (linja 7), imbagħad jistampa l-indirizz taċ-ċellula allokata (linja 9), jikteb żero fl-ewwel slot tal-memorja allokata. Sussegwentement, il-programm jidħol f'linja li fiha jżid il-valur maħżun fil-memorja fl-indirizz fil-varjabbli "p". Jipprintja wkoll l-ID tal-proċess minnu nnifsu. L-ID tal-proċess huwa uniku għal kull proċess li qed jaħdem. Wara li nediet diversi kopji, aħna se nidħlu fuq riżultat interessanti: Fl-ewwel każ, jekk ma tagħmel xejn u tmexxi biss diversi kopji, allura l-indirizzi jkunu differenti. Imma dan ma jaqax taħt it-teorija tagħna! Ikkoreġi, peress li d-distribuzzjonijiet moderni għandhom randomization tal-memorja ppermettiet awtomatikament. Jekk tkun diżattivata, niksbu r-riżultat mistenni - l-indirizzi tal-memorja ta 'żewġ programmi li jaħdmu fl-istess ħin jaqblu.

Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 1: Introduzzjoni (traduzzjoni)

Bħala riżultat, jirriżulta li żewġ programmi indipendenti jaħdmu bl-ispazji tal-indirizzi privati ​​tagħhom stess, li min-naħa tagħhom huma mmappjati mis-sistema operattiva fil-memorja fiżika. Għalhekk, l-użu tal-indirizzi tal-memorja fi ħdan programm wieħed mhu se jaffettwa lill-oħrajn bl-ebda mod, u lil kull programm jidher li għandu l-biċċa memorja fiżika tiegħu, mogħtija lilha għal kollox. Ir-realtà, madankollu, hija li l-memorja fiżika hija riżorsa kondiviża ġestita mis-sistema operattiva.

Konsistenza

Suġġetti oħra importanti fi ħdan is-sistemi operattivi hija − konsistenza. Dan it-terminu jintuża meta wieħed jitkellem dwar problemi fis-sistema li jistgħu jseħħu meta taħdem ma 'ħafna affarijiet fl-istess ħin fi ħdan l-istess programm. Kwistjonijiet ta 'konsistenza jinqalgħu anke fi ħdan is-sistema operattiva nnifisha. Fl-eżempji preċedenti tal-memorja u l-virtwalizzazzjoni tal-proċessur, indunajna li l-OS jamministra ħafna affarijiet fl-istess ħin - jibda l-ewwel proċess, imbagħad it-tieni, eċċ. Kif irriżulta, din l-imġieba tista 'twassal għal xi problemi. Allura, pereżempju, programmi moderni b'ħafna kamini jesperjenzaw diffikultajiet bħal dawn.

Ikkunsidra l-programm li ġej:

Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 1: Introduzzjoni (traduzzjoni)

Il-programm fil-funzjoni prinċipali joħloq żewġ ħjut bl-użu tas-sejħa pthread_create(). F'dan l-eżempju, ħajta tista' titqies bħala funzjoni li taħdem fl-istess spazju tal-memorja flimkien ma' funzjonijiet oħra, b'aktar minn funzjoni waħda taħdem fl-istess ħin. F'dan l-eżempju, kull ħajta tibda u tesegwixxi l-funzjoni worker() li mbagħad sempliċement iżid il-varjabbli,.

Ejja nħaddmu dan il-programm b'argument ta '1000. Kif forsi guessted, ir-riżultat għandu jkun 2000 minħabba li kull ħajt inkrementat il-varjabbli 1000 darba. Madankollu, kollox mhux daqshekk sempliċi. Ejja nippruvaw imexxu l-programm b'ordni ta 'kobor aktar ripetizzjonijiet.

Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 1: Introduzzjoni (traduzzjoni)

Billi ddaħħal numru, pereżempju, 100000, nistennew li naraw l-output bħala n-numru 200000. Madankollu, jekk inħaddmu n-numru 100000 diversi drabi, mhux biss ma narawx it-tweġiba t-tajba, iżda wkoll niksbu tweġibiet differenti żbaljati. It-tweġiba tinsab fil-fatt li biex jiżdied in-numru, huma meħtieġa tliet operazzjonijiet - estrazzjoni tan-numru mill-memorja, inkrementazzjoni, u mbagħad tikteb in-numru lura. Peress li dawn l-istruzzjonijiet kollha mhumiex esegwiti atomikament (kollha fl-istess ħin), affarijiet strambi bħal dan jistgħu jiġru. Din il-problema tissejjaħ fl-ipprogrammar kundizzjoni tat-tellieqa. Meta forzi mhux magħrufa f'mument mhux magħruf jistgħu jaffettwaw il-prestazzjoni ta 'kwalunkwe operazzjonijiet tiegħek.

Sors: www.habr.com

Żid kumment