Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Isigaba 2: I-Abstract: Inkqubo (uguqulelo)

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 apha. Nceda uqaphele ukuba uguqulelo lwenziwe ngokungenamsebenzi (ngokukhululekileyo kakhulu), kodwa ndiyathemba ukuba ndiyigcinile intsingiselo ngokubanzi.

Umsebenzi waseLebhu ngalo mbandela unokufumaneka apha:

Amanye amalungu:

Ungajonga kwakhona itshaneli yam ku yocingo =)

Makhe sijonge okona kutsalwayo kusisiseko esibonelelwa yi-OS kubasebenzisi: inkqubo. Inkcazo yenkqubo ilula kakhulu - injalo inkqubo esebenzayo. Inkqubo ngokwayo yinto engaphiliyo ebekwe kwidiski - yiseti yemiyalelo kwaye mhlawumbi enye idatha engatshintshiyo elindele ukusungulwa. Yi-OS ethatha ezo bytes kwaye iziqhube, iguqula inkqubo ibe yinto eluncedo.
Amaxesha amaninzi, abasebenzisi bafuna ukuqhuba ngaphezulu kwenkqubo enye ngexesha elinye, umzekelo, unokuqhuba isikhangeli, umdlalo, isidlali semidiya, umhleli wombhalo, kunye nokunye okunjalo kwilaptop yakho. Enyanisweni, inkqubo eqhelekileyo inokuqhuba amashumi okanye amakhulu eenkqubo ngaxeshanye. Le nyaniso yenza inkqubo ibe lula ukuyisebenzisa, awuze ube nexhala malunga nokuba i-CPU isimahla, uqhuba iinkqubo nje.

Oku kuphakamisa ingxaki: indlela yokubonelela ngenkohliso yee-CPU ezininzi? Ingayenza njani i-OS inkohliso malunga nenani elingenasiphelo le-CPU, nokuba une-CPU enye kuphela yomzimba?

I-OS idala le nkohliso ngokusebenzisa i-CPU virtualization. Ngokuqala inkqubo enye, emva koko uyeke, ukuqala enye inkqubo, njalo njalo, i-OS inokugcina inkohliso yokuba kukho ii-CPU ezininzi ezibonakalayo, xa ngokwenene kuya kuba neprosesa enye okanye ngaphezulu. Obu buchule bubizwa ngokuba ulwahlulo lwezixhobo ze-CPU ngexesha. Le ndlela ivumela abasebenzisi ukuba baqhube iinkqubo ezininzi ngaxeshanye njengoko benqwenela. Iindleko zesi sisombululo kukusebenza - kuba ukuba i-CPU yabelwana ngeenkqubo ezininzi, inkqubo nganye iya kuqhutyelwa phambili ngokucothayo.
Ukuphumeza i-CPU virtualization, kwaye ngokukodwa ukuyenza kakuhle, i-OS idinga inkxaso ephantsi kunye nenqanaba eliphezulu. Inkxaso yenqanaba eliphantsi libizwa iindlela ziindlela zomgangatho ophantsi okanye iiprothokholi eziphumeza inxalenye efunekayo yokusebenza. Umzekelo womsebenzi onjalo kukutshintsha umxholo, onika i-OS amandla okumisa inkqubo enye kwaye iqhube enye inkqubo kwiprosesa. Olu lwahlulo lwexesha luphunyezwa kuzo zonke iinkqubo zokusebenza zanamhlanje.
Ngaphezulu kwezi ndlela kukho ingqiqo eyakhelwe kwi-OS, ngendlela "yemigaqo-nkqubo". umgaqo-nkqubo yialgorithm ethile yokwenza izigqibo kwinkqubo yokusebenza. Imigaqo-nkqubo enjalo, umzekelo, yenza isigqibo sokuba yeyiphi inkqubo ekufuneka iqaliswe (ukusuka kuluhlu lwemiyalelo) kuqala. Ngoko, umzekelo, le ngxaki iya kusonjululwa ngumgaqo-nkqubo obizwa ngokuba umcwangcisi (umgaqo-nkqubo wokucwangcisa) kwaye xa ukhetha isisombululo, siya kukhokelwa yidatha efana ne: imbali yokuqalisa (yeyiphi inkqubo eyasungulwa ixesha elide kwimizuzu yokugqibela), yintoni umthwalo othwalwa yile nkqubo (zeziphi iintlobo zeenkqubo ezaqaliswayo), imilinganiselo yokusebenza (nokuba inkqubo yenzelwe intsebenziswano edibeneyo okanye i-output ) njalo njalo.

Ukuthabatha: inkqubo

Ukutsalwa kwenkqubo esebenzayo eyenziwa yinkqubo yokusebenza yinto esiyibizayo процесс. Njengoko bekutshiwo ngaphambili, inkqubo yinkqubo eqhutywayo, nangaliphi na ixesha elikhawulezileyo. Inkqubo esinokufumana ngayo ulwazi olusisishwankathelo kwimithombo eyahlukeneyo yenkqubo ethi le nkqubo ifikelele okanye ichaphazele ngexesha lokwenziwa kwayo.
Ukuqonda amacandelo enkqubo, kufuneka uqonde amazwe enkqubo: yintoni inkqubo enokufunda okanye itshintshe ngexesha lokusebenza kwayo. Ngalo naliphi na ixesha, kufuneka uqonde ukuba zeziphi izinto zenkqubo ezibalulekileyo ekuqhutyweni kweprogram.
Enye yezinto ezicacileyo zenkqubo ithi inkqubo ibandakanya imemori. Imiyalelo ibekwe kwinkumbulo. Idatha efundwayo okanye ebhalwa yiprogram ikwafumaneka kwimemori. Ngaloo ndlela, imemori enokuthi inkqubo ikwazi ukujongana nayo (ebizwa ngokuba yindawo yedilesi) yinxalenye yenkqubo.
Kwakhona inxalenye yenkqubo karhulumente ziirejista. Imiyalelo emininzi ijolise ekutshintsheni ixabiso leerejista okanye ukufunda ixabiso labo, kwaye ngoko ke iirejista nazo zibe yinxalenye ebalulekileyo yokusebenza kwenkqubo.
Kufuneka kuqatshelwe ukuba imeko yomatshini nayo yenziwe kwezinye iirejista ezikhethekileyo. Umzekelo, IP - isalathisi somyalelo - isalathiso kumyalelo oqhutywa yinkqubo ngoku. Kukho kwakhona Isikhombisi kwaye inxulumene nayo isalathi sesakhelo, ezisetyenziselwa ukulawula: iiparameters zomsebenzi, iinguqu zasekuhlaleni kunye needilesi zokubuyisela.
Ekugqibeleni, iinkqubo zihlala zifikelela kwi-ROM (imemori yokufunda kuphela). Olu lwazi lwe-"I/O" (igalelo/imveliso) kufuneka lubandakanye uluhlu lweefayile ezivulwe ngoku yinkqubo.

Inkqubo API

Ukuze siphucule ukuqonda kwethu indlela inkqubo esebenza ngayo, masifunde imizekelo yeefowuni zesistim ekufuneka zibandakanywe kuyo nayiphi na inkqubo yojongano olusebenzayo. Ezi APIs zifumaneka ngendlela enye okanye enye kuyo nayiphi na i-OS.

dala (ukudala): I-OS kufuneka ibandakanye indlela ethile evumela ukuba wenze iinkqubo ezintsha. Xa ufaka umyalelo kwi-terminal okanye uqalise isicelo ngokucofa kabini kwi-icon, umnxeba uthunyelwa kwi-OS ukwenza inkqubo entsha kwaye uqalise inkqubo ekhankanyiweyo.
Ukususwa: Ekubeni kukho i-interface yokudala inkqubo, i-OS kufuneka inike amandla okunyanzela ukususwa kwenkqubo. Uninzi lweenkqubo ziya kuqala kwaye ziphelise ngokwazo njengoko ziqhuba. Kungenjalo umsebenzisi angathanda ukukwazi ukubabulala kwaye ke ujongano lokumisa inkqubo luya kuba luncedo.
Yima (ilindile): Ngamanye amaxesha kuluncedo ukulinda inkqubo ukuba igqitywe, ngoko ke ujongano oluthile lunikiwe olubonelela ngokukwazi ukulinda.
Ulawulo Olululo (ulawulo olwahlukeneyo): Ukongeza ekubulaleni nasekulindeni inkqubo, kukho nezinye iindlela ezahlukeneyo zolawulo. Umzekelo, uninzi lweenkqubo zokusebenza zibonelela ngokukwazi ukumisa inkqubo (ukumisa ukuphunyezwa kwayo kangangexesha elithile) kwaye emva koko iqalise kwakhona (qhubeka uphumezo)
isimo (Ilizwe): Kukho ujongano olwahlukeneyo lokufumana ulwazi malunga nobume benkqubo, njengokuthi iqhube ixesha elingakanani okanye ikwesiphi na imeko ngoku.

Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Isigaba 2: I-Abstract: Inkqubo (uguqulelo)

Ukudalwa kweNkqubo: Iinkcukacha

Enye yezinto ezinomdla yindlela kanye iinkqubo eziguqulwa ngayo zibe ziinkqubo. Ngokukodwa indlela i-OS ethatha ngayo kwaye iqhube inkqubo. Yenziwa njani ngokuchanekileyo inkqubo.
Okokuqala, i-OS kufuneka ilayishe ikhowudi yeprogram kunye nedatha engatshintshiyo kwimemori (kwindawo yedilesi yenkqubo). Iinkqubo zihlala zibekwe kwidiski okanye kwi-slid-state drive kwifomati ethile ephunyezwayo. Ngaloo ndlela, inkqubo yokulayisha inkqubo kunye nedatha engatshintshiyo kwimemori idinga i-OS ukuba ikwazi ukufunda ezo bytes kwidiski kwaye zibeke kwindawo ethile kwimemori.

Kwiinkqubo zokuqala zokusebenza, inkqubo yokulayisha yenziwe ngokulangazela, oku kuthetha ukuba yonke ikhowudi ilayishwe kwimemori ngaphambi kokuba inkqubo iqaliswe. Iinkqubo zokusebenza zanamhlanje zenza oku ngobuvila, oko kukuthi, ukulayisha iziqwenga zekhowudi okanye idatha kuphela xa inkqubo ifuna ngexesha lokuphunyezwa kwayo.

Nje ukuba ikhowudi kunye nedatha engatshintshiyo ilayishwe kwimemori ye-OS, kukho ezinye izinto ezimbalwa ekufuneka zenziwe ngaphambi kokuba inkqubo iqhube. Isixa esithile sememori kufuneka sabelwe istaki. Iinkqubo zisebenzisa istaki kwizinto eziguquguqukayo zendawo, iiparamitha zokusebenza, kunye needilesi zokubuyisela. I-OS yabela le nkumbulo kwaye iyinike inkqubo. Isitaki singakwabelwa ngezinye iimpikiswano, ngokukodwa igcwalisa iparameters yowona () umsebenzi, umzekelo ngoluhlu lwe argc kunye ne argv.

Inkqubo yokusebenza inokwabela inkumbulo ethile kwimfumba yenkqubo. Imfumba isetyenziswa ziinkqubo ukucela ngokucacileyo idatha eyabiweyo ngokuguquguqukayo. Iinkqubo zicela le ndawo ngokubiza umsebenzi imalloc () kwaye icoca ngokucacileyo ngokubiza umsebenzi simahla (). Imfumba iyafuneka kulwakhiwo lwedatha njengamaphepha adityanisiweyo, iitafile zehashi, imithi kunye nezinye. Ekuqaleni, inani elincinci lememori labelwe imfumba, kodwa ekuhambeni kwexesha, njengoko inkqubo iqhuba, imfumba inokucela imemori engakumbi ngelayibrari API call malloc (). Inkqubo yokusebenza ibandakanyeka kwinkqubo yokwabiwa kwememori eyongezelelweyo ukunceda ukwanelisa ezi fowuni.

Inkqubo yokusebenza iya kwenza kwakhona imisebenzi yokuqalisa, ngakumbi leyo inxulumene ne-I/O. Umzekelo, kwiinkqubo zeUNIX, inkqubo nganye ngokungagqibekanga ineenkcazelo zefayile ezi-3 ezivulekileyo, zongeniso olusemgangathweni, isiphumo, kunye nempazamo. Ezi ziphatho zivumela iinkqubo ukuba zifunde igalelo kwi-terminal kunye nokubonisa ulwazi kwisikrini.

Ngaloo ndlela, ngokulayisha ikhowudi kunye nedatha ye-static kwimemori, ukudala kunye nokuqaliswa kwe-stack, kunye nokwenza omnye umsebenzi onxulumene nokwenza imisebenzi ye-I / O, i-OS ilungiselela isigaba senkqubo yokwenza. Okokugqibela, kukho umsebenzi wokugqibela oseleyo: ukuqhuba inkqubo ngendawo yokungena, ebizwa ngokuba ngowona () umsebenzi. Ngokuphumeza umsebenzi ongundoqo (), i-OS idlulisela ulawulo lwe-CPU kwinkqubo entsha eyenziwe, ngoko inkqubo iqala ukuphumeza.

Inkqubo yelizwe

Ngoku sinokuqonda okuthile malunga nokuba yintoni inkqubo kwaye yenziwa njani, makhe sidwelise inkqubo echaza ukuba inokuba kuyo. Ngeyona ndlela ilula, inkqubo ingaba kwenye yezi ndawo:
Ubaleko. Xa usebenza, inkqubo iqhuba kwiprosesa. Oku kuthetha ukuba imiyalelo iyaphunyezwa.
lungele. Kwimeko ekulungeleyo, inkqubo ilungele ukusebenza, kodwa ngenxa yesizathu esithile i-OS ayikwenzi ngexesha elichaziweyo.
eziThintelweyo. Kwimeko evaliweyo, inkqubo yenza imisebenzi ethile eyithintela ekubeni ilungele ukuphunyezwa de kwenzeke isiganeko. Umzekelo omnye oqhelekileyo kuxa inkqubo iqalisa ukusebenza kwe-IO, iyavalwa ukuze enye inkqubo isebenzise iprosesa.

Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Isigaba 2: I-Abstract: Inkqubo (uguqulelo)

Unokuba nomfanekiso-ngqondweni wala mazwe ngendlela yegrafu. Njengoko sibona emfanekisweni, inkqubo yenkqubo inokutshintsha phakathi kwe-RUNNING kunye ne-READY ngokubona kwe-OS. Xa imeko yenkqubo itshintsha ukusuka KULUNGILE ukuya kwi-RUNNING, oko kuthetha ukuba inkqubo icwangcisiwe. Kwicala elichaseneyo - lisuswe kwi-layout. Okwangoku xa inkqubo iBLOCKED, umzekelo, ndiqala ukusebenza kwe-IO, i-OS iya kuyigcina kule meko de kwenzeke isiganeko esithile, umzekelo ukugqitywa kwe-IO. ngalo mzuzu uguqulo ukuya kwimo EKULUNGILEYO kwaye ngokunokwenzeka ngokukhawuleza kwimo ye-RUNNING ukuba i-OS igqiba njalo.
Makhe sijonge umzekelo wendlela iinkqubo ezimbini ezihamba ngayo kula mazwe. Ukuqala, makhe sicinge ukuba zombini iinkqubo ziyasebenza, kwaye nganye isebenzisa i-CPU kuphela. Kule meko, iimeko zabo ziya kujongeka ngolu hlobo.

Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Isigaba 2: I-Abstract: Inkqubo (uguqulelo)

Kulo mzekelo ulandelayo, inkqubo yokuqala, emva kwexesha elithile isebenza, icela i-IO kwaye ingene kwi-BLOCKED state, ivumela enye inkqubo ukuba iqhube (FIG 1.4). I-OS ibona ukuba inkqubo 0 ayisebenzisi i-CPU kwaye iqala inkqubo 1. Ngelixa inkqubo ye-1 isebenza, i-IO igqityiwe kwaye isimo senkqubo 0 sitshintsha kwi-READY. Ekugqibeleni, inkqubo yoku-1 igqityiwe, kwaye ekugqityweni kwayo, inkqubo engu-0 iqala, iphumeze, kwaye igqibezela umsebenzi wayo.

Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Isigaba 2: I-Abstract: Inkqubo (uguqulelo)

Ubume bedatha

I-OS ngokwayo yinkqubo, kwaye njengayo nayiphi na enye inkqubo, inezakhiwo zedatha eziphambili ezigcina umkhondo weenkcukacha ezahlukeneyo ezifanelekileyo. Ukulandelela imeko yenkqubo nganye, i-OS iya kuxhasa ezinye uluhlu lwenkqubo kuzo zonke iinkqubo ezikwimeko ye- READY kunye nolunye ulwazi olongezelelweyo ukulandelela iinkqubo ezisebenzayo ngoku. Kwakhona, i-OS kufuneka ibeke iliso kwiinkqubo ezivaliweyo. Emva kokuba i-IO igqityiwe, i-OS kufuneka ivuse inkqubo efunekayo kwaye iyibeke kwimeko elungele ukusebenza.

Ngokomzekelo, i-OS kufuneka igcine imeko yeerejista zeprosesa. Okwangoku inkqubo iyeka, imeko yeerejista igcinwa kwindawo yedilesi yenkqubo, kwaye okwangoku ukusebenza kwayo kuyaqhubeka, amaxabiso erejista abuyiselwa kwaye ke aqhubeke nokwenziwa kwale nkqubo.

Ukongeza kwindawo ekulungeleyo, evaliweyo, eqhubayo, kukho amanye amazwe. Ngamanye amaxesha, ngexesha lokudala, inkqubo inokuba kwimeko ye-INIT. Ekugqibeleni, inkqubo inokubekwa kwi-FINAL state xa sele igqityiwe, kodwa ulwazi lwayo ayikacaciswa. Kwiinkqubo zeUNIX le meko ibizwa ngokuba inkqubo zombie. Le meko iluncedo kwiimeko apho inkqubo yomzali ifuna ukwazi ikhowudi yokubuyisela yomntwana, umzekelo, ngokuqhelekileyo u-0 ubonisa impumelelo kunye ne-1 impazamo, kodwa abadwelisi beprogram banokukhupha iikhowudi zemveliso ezongezelelweyo ukubonisa iingxaki ezahlukeneyo. Xa inkqubo yomzali iphela, yenza umnxeba wokugqibela wenkqubo, njengokulinda (), ukulinda inkqubo yomntwana ukuphelisa kunye nokubonisa i-OS ukuba inokucima nayiphi na idatha ehambelana nenkqubo ephelisiwe.

Iinkqubo zokuSebenza: Iziqwenga eziNtathu eziLula. Isigaba 2: I-Abstract: Inkqubo (uguqulelo)

Amanqaku aphambili kwintetho:

Inkqubo -ukukhutshwa okuphambili kwenkqubo esebenzayo kwi-OS. Ngaliphi na ixesha, inkqubo inokuchazwa kwimeko yayo: imixholo yememori kwindawo yayo yedilesi, imixholo yeerejista zeprosesa, kubandakanywa isalathisi somyalelo kunye ne-stack pointer, kunye nolwazi lwe-IO, njengeefayile ezivulekileyo ezifundwayo okanye ezibhaliweyo.
Inkqubo API iqulathe iminxeba enokwenziwa ziinkqubo kwiinkqubo. Ngokuqhelekileyo ezi ziyila, cima, okanye ezinye iifowuni.
● Inkqubo ikwelinye lamazwe amaninzi, kuquka ukubaleka, ukulungeleka, ukuvalwa. Iziganeko ezahlukeneyo ezifana nokucwangcisa, ngaphandle kokucwangcisa, okanye ukulinda kunokutshintsha imeko yenkqubo ukusuka kwenye ukuya kwenye.
Uluhlu lwenkqubo inolwazi malunga nazo zonke iinkqubo kwinkqubo. Ukungena ngalunye kuyo kubizwa ngokuba yibhloko yokulawula inkqubo, eyona nto iyisakhiwo esiqulethe lonke ulwazi oluyimfuneko malunga nenkqubo ethile. 

umthombo: www.habr.com

Yongeza izimvo