Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Icandelo 1: Intshayelelo (inguqulelo)

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, inkumbulo kunye namanye amacandelo afanayo enza i-OS yanamhlanje. Ungayibona imvelaphi yazo zonke izixhobo apha apha. Nceda uqaphele ukuba uguqulelo lwenziwe ngokungenamsebenzi (ngokukhululekileyo kakhulu), kodwa ndiyathemba ukuba ndiyigcinile intsingiselo ngokubanzi.

Umsebenzi waseLebhu ngalo mbandela unokufumaneka apha:
- eyoqobo: amaphepha.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- eyoqobo: github.com/remzi-arpacidusseau/ostep-code
- uhlengahlengiso lwam lobuqu: github.com/bykvaadm/OS/tree/master/ostep

Ungajonga kwakhona itshaneli yam ku yocingo =)

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.
Kukho iseti yesoftware enoxanduva lokwenza iinkqubo zisebenze lula (okanye nokuvumela iinkqubo ezininzi ukuba zisebenze ngexesha elinye), evumela iinkqubo ukuba zabelane ngememori efanayo, kunye nokunxibelelana nezixhobo ezahlukeneyo. Iseti elolu hlobo yesoftware (isoftware) ibizwa ngokuba yinkqubo yokusebenza kwaye imisebenzi yayo ibandakanya ukubeka iliso ukuba inkqubo isebenza ngokuchanekileyo nangokufanelekileyo, kunye nokuqinisekisa ukukhululeka kolawulo lwale nkqubo.

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&feature=youtu.be)

Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Icandelo 1: Intshayelelo (inguqulelo)

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):

Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Icandelo 1: Intshayelelo (inguqulelo)

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.

Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Icandelo 1: Intshayelelo (inguqulelo)

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:

Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Icandelo 1: Intshayelelo (inguqulelo)

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.

Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Icandelo 1: Intshayelelo (inguqulelo)

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

Yongeza izimvo