Amasistimu Okusebenza: Izingcezu Ezintathu Ezilula. Ingxenye 1: Isingeniso (ukuhumusha)

Isingeniso Sezinhlelo Zokusebenza

Sawubona Habr! Ngingathanda ukukukhumbuza uchungechunge lwezihloko-ukuhumusha kwencwadi eyodwa ethokozisayo ngokombono wami - i-OSTEP. Le nto idingida ngokujulile umsebenzi wezinhlelo zokusebenza ezifana ne-unix, okungukuthi, ukusebenza ngezinqubo, abahleli abahlukahlukene, inkumbulo nezinye izingxenye ezifanayo ezakha i-OS yesimanje. Ungabona okwangempela kwazo zonke izinto lapha lapha. Sicela uqaphele ukuthi ukuhumusha kwenziwe ngokungafanele (ngokukhululekile impela), kodwa ngithemba ukuthi ngiyigcinile incazelo evamile.

Umsebenzi walebhu ngale ndaba ungatholakala lapha:
- okwangempela: amakhasi.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- okwangempela: github.com/remzi-arpacidusseau/ostep-code
- ukujwayela kwami ​​​​komuntu siqu: github.com/bykvaadm/OS/tree/master/ostep

Futhi ungabheka isiteshi sami ku yocingo =)

Ukusebenza kohlelo

Kwenzekani uma uhlelo lusebenza? Uhlelo olusebenzayo lwenza into eyodwa elula - lwenza imiyalelo. Njalo ngomzuzwana, izigidi kanye nezigidigidi zemiyalo zitholwa iphrosesa ku-RAM, yona iyazikhipha (isibonelo, ibona ukuthi le miyalo ingeyaluphi uhlobo) futhi isebenzise. Lokhu kungaba ukwengeza izinombolo ezimbili, ukufinyelela inkumbulo, ukuhlola isimo, ukugxumela kumsebenzi, njalonjalo. Ngemva kokwenziwa komyalelo owodwa, iprosesa iqhubekela ekubulaweni komunye. Ngakho-ke iziyalezo emva komyalelo, zenziwa kuze kuphele uhlelo.
Lesi sibonelo ngokwemvelo sibhekwa njengesilula - empeleni, ukusheshisa iphrosesa, ihadiwe yesimanje ikuvumela ukuthi wenze iziyalezo ngokushintshana, ubale imiphumela engenzeka, ukhiphe imiyalo kanye kanye, namaqhinga afanayo.

Von Neumann imodeli yokubala

Ifomu lomsebenzi elenziwe lula elichazwe yithi lifana nemodeli yekhompyutha kaVon Neumann. UVon Neumann ungomunye wamavulandlela wezinhlelo zamakhompiyutha, futhi ungomunye wababhali bethiyori yomdlalo.. Ngenkathi lolu hlelo lusaqhubeka, inqwaba yezinye izehlakalo zenzeka, ezinye izinqubo eziningi kanye nomsebenzi wokucabanga ovela eceleni, inhloso eyinhloko okuwukwenza kube lula ukwethulwa, ukusebenza nokugcinwa kwesistimu.
Kukhona isethi yesofthiwe enesibopho sokwenza izinhlelo zisebenze kalula (noma ngisho nokuvumela izinhlelo eziningi ukuthi zisebenze ngesikhathi esisodwa), evumela izinhlelo ukwabelana ngenkumbulo efanayo, kanye nokuxhumana namadivayisi ahlukene. Isethi enjalo yesofthiwe (isofthiwe) empeleni ibizwa ngokuthi isistimu yokusebenza futhi imisebenzi yayo ihlanganisa ukuqapha ukuthi uhlelo lusebenza ngendlela efanele nangempumelelo, kanye nokuqinisekisa ukuphatha kalula kwalolu hlelo.

operating system

Isistimu yokusebenza, efushanisiwe njenge-OS, iyisethi yezinhlelo ezihlobene eziklanyelwe ukuphatha izinsiza zekhompyutha nokuhlela ukusebenzisana komsebenzisi nekhompyutha..
I-OS ifinyelela ukusebenza kwayo kwasekuqaleni, ngokusebenzisa inqubo ebaluleke kakhulu - inqubo i-virtualization. I-OS isebenzisana nensiza ebonakalayo (iphrosesa, inkumbulo, idiski, njll.) futhi iyiguqule ibe uhlobo olujwayelekile, olunamandla kakhulu, futhi olusebenziseka kalula. Ngakho-ke, ukuze uthole ukuqonda okujwayelekile, ungakwazi cishe ukuqhathanisa isistimu yokusebenza nomshini obonakalayo.
Ukuze uvumele abasebenzisi ukuthi banikeze imiyalo ohlelweni lokusebenza futhi ngaleyo ndlela basebenzise amakhono omshini we-virtual (njengokusebenzisa uhlelo, ukwaba inkumbulo, ukufinyelela ifayela, njalonjalo), isistimu yokusebenza inikeza isixhumi esibonakalayo esibizwa ngokuthi. API (isixhumi esibonakalayo sohlelo lokusebenza) futhi lapho ungenza khona izingcingo (shayela). Isistimu yokusebenza evamile ivumela amakhulukhulu ezingcingo zesistimu ukuthi zenziwe.
Okokugcina, njengoba i-virtualization ivumela izinhlelo eziningi ukuthi zisebenze (ngaleyo ndlela yabelana nge-CPU), futhi ngesikhathi esisodwa zifinyelela imiyalelo nedatha yazo (ngaleyo ndlela ukwabelana ngememori), kanye nokufinyelela kumadiski (ngaleyo ndlela kwabelwana ngamadivayisi e-I/O). ), uhlelo lokusebenza lubizwa nangokuthi umphathi wensiza. Iprosesa ngayinye, idiski kanye nenkumbulo iyinsiza yesistimu, ngakho-ke enye yezindima zesistimu yokusebenza iba ngumsebenzi wokuphatha lezi zinsiza, ikwenze kahle, ngokwethembeka, noma ngokuphambene nalokho, kuye ngomsebenzi lolu hlelo lokusebenza. yakhelwe.

Ukusebenza kwe-CPU

Cabangela lolu hlelo olulandelayo:
(https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be)

Amasistimu Okusebenza: Izingcezu Ezintathu Ezilula. Ingxenye 1: Isingeniso (ukuhumusha)

Ayenzi noma yiziphi izenzo ezikhethekile, empeleni, konke ekwenzayo ukubiza umsebenzi Spin(), umsebenzi wakhe kuwukuzungeza ukuhlola isikhathi nokubuya ngemva komzuzwana owodwa usudlulile. Ngakho, iphinda unomphela iyunithi yezinhlamvu edluliswe ngumsebenzisi njengengxabano.
Masiluqhube lolu hlelo futhi siludlulisele uhlamvu "A" njengengxabano. Umphumela awuthakazelisi ikakhulukazi - isistimu imane yenze uhlelo olubonisa ngezikhathi ezithile uhlamvu "A".
Manje ake sizame inketho lapho izimo eziningi zohlelo olufanayo zisebenza, kodwa sikhipha izinhlamvu ezihlukene ukuze sikwenze kucace. Kulokhu, umphumela uzohluka ngandlela thize. Naphezu kweqiniso lokuthi sinephrosesa eyodwa, uhlelo lwenziwa kanyekanye. Kwenzeka kanjani? Kodwa kuvela ukuthi uhlelo lokusebenza, hhayi ngaphandle kosizo lwamakhono we-hardware, ludala inkohliso. Inkohliso yokuthi uhlelo lunamaphrosesa amaningi abonakalayo, aguqule iphrosesa eyodwa ephathekayo ibe inombolo engapheli ngokomcabango futhi ngaleyo ndlela ivumele izinhlelo ezibonakala sengathi zisebenza ngesikhathi esisodwa. Le nkohliso ibizwa ngokuthi Ukusebenza kwe-CPU.
Lesi sithombe siphakamisa imibuzo eminingi, isibonelo, uma izinhlelo eziningana zifuna ukusebenza ngesikhathi esisodwa, iyiphi ezokwethulwa? "Izinqubomgomo" ze-OS zinesibopho salo mbuzo. Izinqubomgomo zisetshenziswa ezindaweni eziningi ku-OS futhi ziphendula imibuzo efana nalena, futhi ziyizindlela eziyisisekelo ezisetshenziswa yi-OS. Ngakho-ke indima ye-OS njengomphathi wezisetshenziswa.

I-memory virtualization

Manje ake sibheke inkumbulo. Imodeli ebonakalayo yenkumbulo kumasistimu esimanje imelwe njengohlu lwamabhayithi.. Ukuze ufunde kumemori, udinga ukucacisa ikheli leselulaukuze uyifinyelele. Ukuze ubhale noma ubuyekeze idatha, kufanele ucacise idatha kanye nekheli leseli lapho uzoyibhalela khona.
Inkumbulo ifinyelelwa njalo ngesikhathi sokwenziwa kohlelo. Uhlelo lugcina lonke uhlaka lwayo lwedatha kumemori futhi lufinyelela kuyo ngokwenza iziqondiso ezihlukahlukene. Imiyalo, ngakolunye uhlangothi, nayo igcinwe enkumbulweni, ngakho futhi ifinyelelwa esicelweni ngasinye somyalelo olandelayo.

malloc() ucingo

Cabangela uhlelo olulandelayo, olunikeza indawo yememori usebenzisa ucingo i-malloc () (https://youtu.be/jnlKRnoT1m0):

Amasistimu Okusebenza: Izingcezu Ezintathu Ezilula. Ingxenye 1: Isingeniso (ukuhumusha)

Uhlelo lwenza izinto ezimbalwa. Okokuqala, yabela inkumbulo ethile (umugqa wesi-7), bese iphrinta ikheli leseli elabelwe (umugqa 9), ibhala uziro kusikhala sokuqala senkumbulo eyabiwe. Okulandelayo, uhlelo lufaka iluphu lapho lukhulisa khona inani eligcinwe kumemori ekhelini elikuguquguqukayo elithi “p”. Iphinde iphrinte i-ID yenqubo ngokwayo. I-ID yenqubo ihlukile kunqubo ngayinye esebenzayo. Ngemva kokwethula amakhophi amaningana, sizoba nomphumela othakazelisayo: Esimweni sokuqala, uma ungenzi lutho futhi uvele usebenzise amakhophi amaningana, khona-ke amakheli azohluka. Kodwa lokhu akuweli ngaphansi kwethiyori yethu! Kulungile, njengoba ukusabalalisa kwesimanje kunokungahleliwe kwememori okunikwe amandla ngokuzenzakalela. Uma ikhutshaziwe, sithola umphumela olindelekile - amakheli ememori wezinhlelo ezimbili ezisebenza ngasikhathi sinye azofana.

Amasistimu Okusebenza: Izingcezu Ezintathu Ezilula. Ingxenye 1: Isingeniso (ukuhumusha)

Ngenxa yalokho, kuvela ukuthi izinhlelo ezimbili ezizimele zisebenza nezikhala zazo zamakheli eziyimfihlo, ezibuye zenziwe imephu ngohlelo olusebenzayo kwinkumbulo yomzimba.. Ngakho-ke, ukusetshenziswa kwamakheli enkumbulo ngaphakathi kohlelo olulodwa ngeke kuthinte abanye nganoma iyiphi indlela, futhi kubonakala kuhlelo ngalunye ukuthi lunocezu lwalo lwenkumbulo yomzimba, olunikezwe ngokuphelele. Iqiniso, nokho, ukuthi inkumbulo yomzimba iyinsiza okwabelwana ngayo ephethwe uhlelo lokusebenza.

Ukuvumelana

Esinye sezihloko ezibalulekile ngaphakathi kwezinhlelo zokusebenza yilesi − ukungaguquguquki. Leli gama lisetshenziswa uma kukhulunywa ngezinkinga ohlelweni ezingase zenzeke uma usebenza nezinto eziningi ngesikhathi esisodwa ngaphakathi kohlelo olufanayo. Izinkinga zokungaguquguquki zivela ngisho nangaphakathi kwesistimu yokusebenza ngokwayo. Emikhumbulweni edlule kanye nezibonelo ze-virtualization ye-processor, saqaphela ukuthi i-OS ilawula izinto eziningi ngesikhathi esisodwa - iqala inqubo yokuqala, bese kuba eyesibili, njalonjalo. Njengoba kwenzeka, lokhu kuziphatha kungaholela ezinkingeni ezithile. Ngakho-ke, isibonelo, izinhlelo zesimanje ezinezintambo eziningi zithola ubunzima obunjalo.

Cabangela lolu hlelo olulandelayo:

Amasistimu Okusebenza: Izingcezu Ezintathu Ezilula. Ingxenye 1: Isingeniso (ukuhumusha)

Uhlelo kumsebenzi oyinhloko lwakha imicu emibili kusetshenziswa ucingo i-pthread_create(). Kulesi sibonelo, intambo ingacatshangwa njengomsebenzi osebenza endaweni efanayo yememori eceleni kweminye imisebenzi, ngokusobala okungaphezu kokukodwa okusebenzayo ngesikhathi esisodwa. Kulesi sibonelo, intambo ngayinye iqala futhi yenze umsebenzi worker() yona imane ikhulise okuguquguqukayo,.

Masiqhube lolu hlelo ngempikiswano ka-1000. Njengoba ungase uqagele, umphumela kufanele ube ngu-2000 ngoba uchungechunge ngalunye lukhulise okuguquguqukayo izikhathi ezingu-1000. Nokho, yonke into ayilula kangako. Ake sizame ukuqalisa uhlelo ngohlelo lokuphindaphinda okungaphezulu.

Amasistimu Okusebenza: Izingcezu Ezintathu Ezilula. Ingxenye 1: Isingeniso (ukuhumusha)

Ngokufaka inombolo, isibonelo, i-100000, silindele ukubona okukhiphayo njengenombolo engu-200000. Kodwa-ke, uma sigijima inombolo engu-100000 izikhathi eziningana, ngeke nje sibone impendulo efanele, kodwa futhi sithole izimpendulo ezingalungile ezihlukile. Impendulo itholakala eqinisweni lokuthi ukwandisa inombolo, imisebenzi emithathu iyadingeka - ukukhipha inombolo esikhumbuzweni, ukukhushulwa, bese ubhala inombolo emuva. Njengoba yonke le miyalo ingenziwanga nge-athomu (konke ngasikhathi sinye), izinto eziyinqaba ezinjengalezi zingenzeka. Le nkinga ibizwa nge-programming isimo somjaho. Lapho amandla angaziwa ngesikhathi esingaziwa angathinta ukusebenza kwanoma yimiphi imisebenzi yakho.

Source: www.habr.com

Engeza amazwana