Intshayelelo kwiiNkqubo zokuSebenza
Hayi Habr! Ndingathanda ukuzisa ingqalelo yakho uluhlu lwamanqaku-iinguqulelo zoncwadi olulodwa olunomdla ngombono wam - i-OSTEP. Esi sixhobo sixoxa nzulu ngomsebenzi weenkqubo zokusebenza ezifana ne-unix, ezizezi, ukusebenza kunye neenkqubo, abacwangcisi abahlukeneyo, imemori, kunye namanye amacandelo afanayo enza i-OS yanamhlanje. Ungayibona imvelaphi yazo zonke izixhobo apha
Umsebenzi waseLebhu ngalo mbandela unokufumaneka apha:
- eyoqobo:
amaphepha.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html - eyoqobo:
github.com/remzi-arpacidusseau/ostep-code - ukuziqhelanisa kwam buqu:
github.com/bykvaadm/OS/tree/master/ostep
Ungajonga kwakhona itshaneli yam ku
Ukusebenza kwenkqubo
Kwenzeka ntoni xa inkqubo iqhuba? Inkqubo esebenzayo yenza into enye elula - yenza imiyalelo. Umzuzwana ngamnye, izigidi kunye nokuba iibhiliyoni zemiyalelo zifunyanwa yiprosesa evela kwi-RAM, yona iyazichaza (umzekelo, iyaqaphela ukuba loluphi uhlobo le miyalelo) kwaye iyenze. Oku kunokuba kudibanisa amanani amabini, ukufikelela kwimemori, ukujonga imeko, ukutsibela kumsebenzi, njalo njalo. Emva kokuphunyezwa komyalelo omnye, iprosesa iqhubela phambili ekuphunyezweni komnye. Kwaye ke umyalelo emva komyalelo, zenziwa de ucwangciso luphele.
Lo mzekelo ngokwemvelo uthathwa njengolula - enyanisweni, ukukhawulezisa iprosesa, i-hardware yanamhlanje ikuvumela ukuba wenze imiyalelo ngaphandle kokujika, ubale iziphumo ezinokwenzeka, wenze imiyalelo ngaxeshanye, kunye namaqhinga afanayo.
UVon Neumann imodeli yokubala
Uhlobo olulula lomsebenzi oluchazwe sithi lufana nomzekelo we-Von Neumann wokubala. UVon Neumann ngomnye woovulindlela benkqubo yekhompyuter, ukwangomnye wababhali bethiyori yomdlalo. Ngelixa inkqubo iqhuba, iqela lezinye iziganeko zenzeka, ezinye iinkqubo ezininzi kunye nomsebenzi wengqiqo yomntu wesithathu, eyona njongo iphambili kukwenza lula ukuqaliswa, ukusebenza kunye nokugcinwa kwenkqubo.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π°Π±ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π΅Π½ Π·Π° ΠΏΡΠΎΡΡΠΎΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ), ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΏΠ°ΠΌΡΡΡ, Π° ΡΠ°ΠΊ ΠΆΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ. Π’Π°ΠΊΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΠ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ) ΠΏΠΎ ΡΡΡΠΈ ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈ Π² Π΅Π³ΠΎ Π·Π°Π΄Π°ΡΠΈ Π²Ρ ΠΎΠ΄ΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π»Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ.
kwinkqubo yokusebenza
Inkqubo yokusebenza, efinyeziweyo njenge-OS, yiseti yeenkqubo ezinxulumeneyo ezilungiselelwe ukulawula izixhobo zekhompyuter kunye nokuququzelela ukusebenzisana komsebenzisi nekhompyuter..
I-OS ifezekisa ukusebenza kwayo kwindawo yokuqala, ngokusebenzisa eyona ndlela ibalulekileyo - ubuchule ukwenziwa kwezinto ezibonakalayo. I-OS isebenzisana nesixhobo somzimba (iprosesa, imemori, idiski, njl.) kwaye iyiguqule ibe yindlela eqhelekileyo, enamandla ngakumbi, kwaye kulula ukuyisebenzisa ngokwayo. Ke ngoko, ukuqonda ngokubanzi, unokuthelekisa kakhulu inkqubo yokusebenza kunye nomatshini wenyani.
Ukuze uvumele abasebenzisi ukuba banike imiyalelo kwinkqubo yokusebenza kwaye ngaloo ndlela basebenzise amandla omatshini wenyani (njengokuqhuba inkqubo, ukwaba inkumbulo, ukufikelela kwifayile, njalo njalo), inkqubo yokusebenza ibonelela ngojongano oluthile olubizwa ngokuba yi API (ujongano lwenkqubo yesicelo) kunye nalapho unokwenza khona iifowuni (umnxeba). Inkqubo yokusebenza eqhelekileyo ivumela amakhulu eefowuni zenkqubo ukuba zenziwe.
Ekugqibeleni, ekubeni i-virtualization ivumela iinkqubo ezininzi ukuba zisebenze (ngaloo ndlela ukwabelana nge-CPU), kwaye kwangaxeshanye ukufikelela kwimiyalelo kunye nedatha (ngaloo ndlela ukwabelana ngememori), kunye nokufikelela kwiidiski (ngaloo ndlela ukwabelana ngezixhobo ze-I / O) ), inkqubo yokusebenza ikwabizwa ngokuba umphathi wemithombo. Iprosesa nganye, idiski kunye nememori ngumthombo wenkqubo, kwaye ngoko enye yeendima zenkqubo yokusebenza iba ngumsebenzi wokulawula ezi zixhobo, iyenza ngokufanelekileyo, ngokunyaniseka, okanye ngokuphambeneyo, kuxhomekeke kumsebenzi owenziwe le nkqubo yokusebenza. iyilwe.
CPU virtualization
Qwalasela le nkqubo ilandelayo:
(https://www.youtube.com/watch?v=zDwT5fUcki4)
Ayenzi naziphi na izenzo ezikhethekileyo, enyanisweni, yonke into eyenzayo kukubiza umsebenzi spin(), umsebenzi wakhe ikukujikeleza kwitshekhi yexesha nokubuya emva kokuba umzuzwana omnye udlulile. Ke, iphinda ngokungenammiselo umtya ogqithiswe ngumsebenzisi njengengxabano.
Masiqhube le nkqubo kwaye siyidlulisele umlinganiswa "A" njengengxabano. Isiphumo asinomdla kakhulu - inkqubo imane iqhuba inkqubo ebonisa amaxesha ngamaxesha umlinganiswa "A" kwisikrini.
Ngoku makhe sizame ukhetho xa imizekelo emininzi yodweliso lwenkqubo enye iqhuba, kodwa ikhupha oonobumba abohlukeneyo ukuyenza icace. Kule meko, umphumo uya kuba yinto eyahlukileyo. Ngaphandle kwento yokuba sineprosesa enye, inkqubo iqhutywa ngaxeshanye. Kwenzeka njani? Kodwa kuvela ukuba inkqubo yokusebenza, kungekhona ngaphandle koncedo lwezakhono ze-hardware, idala inkohliso. Inkohliso yokuba inkqubo ineeprosesa ezininzi ezinenyani, ijika iprosesa enye yomzimba kwinani elingenasiphelo ngokwethiyori kwaye ngaloo ndlela ivumela iinkqubo ezibonakala ngathi zisebenza ngaxeshanye. Le nkohliso ibizwa ngokuba CPU virtualization.
Lo mfanekiso uphakamisa imibuzo emininzi, umzekelo, ukuba iinkqubo ezininzi zifuna ukuqhuba ngexesha elinye, yeyiphi eya kuqaliswa? "Imigaqo-nkqubo" ye-OS inoxanduva lwalo mbuzo. Imigaqo-nkqubo isetyenziswa kwiindawo ezininzi kwi-OS kwaye iphendula imibuzo efana nale, kwaye ziindlela ezisisiseko eziphunyezwa yi-OS. Yiyo loo nto indima ye-OS njengomphathi wemithombo.
Imemori ebonakalayo
Ngoku makhe sijonge inkumbulo. Imodeli ebonakalayo yememori kwiinkqubo zangoku imelwe njengoluhlu lweebytes.. Ukufunda kwimemori, kufuneka ucacise idilesi yeseliukufikelela kuyo. Ukubhala okanye ukuhlaziya idatha, kufuneka kwakhona ucacise idatha kunye nedilesi yeseli apho uyibhale khona.
Inkumbulo ifikelelwa rhoqo ngexesha lokwenziwa kwenkqubo. Inkqubo igcina ubume bayo bedatha yonke kwinkumbulo kwaye ifikelela kuyo ngokwenza imiyalelo eyahlukeneyo. Imiyalelo, okwangoku, igcinwe kwinkumbulo, ngoko ke iyafumaneka kwisicelo ngasinye somyalelo olandelayo.
malloc() umnxeba
Qwalasela le nkqubo ilandelayo, eyabela ummandla wememori usebenzisa umnxeba imalloc () (https://youtu.be/jnlKRnoT1m0):
Inkqubo yenza izinto ezininzi. Okokuqala, yabela imemori ethile (umgca 7), emva koko iprinte idilesi yeseli eyabelweyo (umgca 9), ibhala zero kwindawo yokuqala yokubeka imemori eyabelweyo. Emva koko, inkqubo ifaka i-loop apho inyusa ixabiso eligcinwe kwimemori kwidilesi kwi-"p" variable. Ikwaprinta inkqubo ye-ID ngokwayo. I-ID yenkqubo yahlukile kwinkqubo nganye yokuqhuba. Emva kokuba sikhuphe iikopi ezininzi, siya kukhubeka kwisiphumo esinomdla: Kwimeko yokuqala, ukuba awenzi nto kwaye uqhube iikopi ezininzi, iidilesi ziya kwahluka. Kodwa oku akuweli phantsi kwethiyori yethu! Kulungile, kuba unikezelo lwangoku lunenkumbulo engakhethiyo eyenziwe ngokuzenzekelayo. Ukuba ivaliwe, sifumana umphumo olindelekileyo - iidilesi zememori ezimbini zeenkqubo ezisebenza ngaxeshanye ziya kuhambelana.
Ngenxa yoko, kuvela ukuba iinkqubo ezimbini ezizimeleyo zisebenza kunye nezithuba zabo zeedilesi zabucala, ezithi zifakwe kwimephu yenkqubo yokusebenza kwimemori yomzimba.. Ngoko ke, ukusetyenziswa kweedilesi zeememori ngaphakathi kweprogram enye akuyi kuchaphazela abanye nangayiphi na indlela, kwaye kubonakala kwiprogram nganye ukuba ineqhekeza layo lememori yomzimba, linikwe ngokupheleleyo. Inyani, nangona kunjalo, kukuba inkumbulo yomzimba sisixhobo ekwabelwana ngaso esilawulwa yinkqubo yokusebenza.
Ukungqinelana
Esinye sezihloko ezibalulekileyo kwiisistim zokusebenza ngu- ukungaguquguquki. Eli gama lisetyenziswa xa uthetha ngeengxaki kwinkqubo enokuthi yenzeke xa usebenza nezinto ezininzi ngexesha elinye ngaphakathi kwenkqubo efanayo. Imiba yokuhambelana ivela nangaphakathi kwenkqubo yokusebenza ngokwayo. Kwimemori yangaphambili kunye nemizekelo yeprosesa ye-virtualization, saqonda ukuba i-OS ilawula izinto ezininzi ngexesha elifanayo - iqala inkqubo yokuqala, emva koko okwesibini, njalo njalo. Njengoko kwavela, le ndlela yokuziphatha inokukhokelela kwiingxaki ezithile. Ke, umzekelo, iinkqubo zanamhlanje ezinemisonto emininzi zifumana ubunzima obunjalo.
Qwalasela le nkqubo ilandelayo:
Inkqubo kumsebenzi oyintloko yenza imisonto emibini usebenzisa umnxeba umsonto_dala (). Kulo mzekelo, intambo inokucingelwa njengomsebenzi osebenza kwindawo enye yememori ecaleni kweminye imisebenzi, ngokucacileyo ngaphezu komsebenzi omnye osebenza ngexesha elinye. Kulo mzekelo, umsonto ngamnye uqala kwaye wenze umsebenzi worker() ethi yona inyuse ngokulula umahluko,.
Masiqhube lenkqubo ngengxoxo ka 1000. Njengoko uqikelele, isiphumo kufuneka sibe ngu 2000 kuba umsonto ngamnye unyusele umahluko ka 1000 amaxesha. Nangona kunjalo, yonke into ayilula kangako. Makhe sizame ukuqhuba inkqubo ngomyalelo wokuphindaphinda okungaphezulu.
Ngokufaka inombolo, umzekelo, i-100000, silindele ukubona imveliso njengenani le-200000. Nangona kunjalo, ukuba siqhuba inani le-100000 ngamaxesha amaninzi, asiyi kubona kuphela impendulo echanekileyo, kodwa sinokufumana iimpendulo ezahlukeneyo ezingalunganga. Impendulo ixhomekeke kwinto yokuba ukwandisa inani, kufuneka imisebenzi emithathu-ukukhupha inani kwimemori, ukunyusa, kwaye emva koko ubhala inani. Ekubeni yonke le miyalelo ingenziwanga nge-atom (zonke ngaxeshanye), izinto ezingaqhelekanga ezifana nale zinokwenzeka. Le ngxaki ibizwa ngokuba kukudweliswa kwenkqubo imeko yogqatso. Xa imikhosi engaziwayo ngexesha elingaziwayo inokuchaphazela ukusebenza kwayo nayiphi na imisebenzi yakho.
umthombo: www.habr.com