Pūnaha Whakahaere: E toru nga waahanga ngawari. Wāhanga 2: Tangohanga: Tukanga (whakamaori)

He Kupu Whakataki ki nga Pūnaha Whakahaere

Hei Habr! E hiahia ana ahau ki te kawe mai ki a koe he raupapa tuhinga-whakamaoritanga o tetahi tuhinga whakamere ki taku whakaaro - OSTEP. Ka tino matapakihia e tenei rauemi nga mahi o nga punaha whakahaere rite-unix, ara, te mahi me nga tikanga, nga momo kaihōtaka, mahara, me etahi atu waahanga rite e hanga ana i te OS hou. Ka taea e koe te kite i te taketake o nga rawa katoa i konei konei. Kia mahara ko te whakamaoritanga he mea kore noa (he tino kore noa), engari ko taku tumanako ka mau tonu te tikanga whanui.

Ko nga mahi taiwhanga mo tenei kaupapa ka kitea i konei:

Ko etahi atu waahanga:

Ka taea hoki e koe te tirotiro i taku hongere i waea waea =)

Kia titiro tatou ki te tangohanga tino nui e whakaratohia ana e te OS ki nga kaiwhakamahi: te tukanga. Ko te whakamaramatanga o te tukanga he tino ngawari - he whakahaere hōtaka. Ko te hotaka tonu he mea ora kei runga i te kōpae - he huinga tohutohu me etahi raraunga pateko e tatari ana kia whakarewahia. Ko te OS te tango i aua paita ka whakahaere, ka huri i te kaupapa hei mea whai hua.
Ko te nuinga o nga wa, e hiahia ana nga kaiwhakamahi ki te whakahaere i te kaupapa neke atu i te kotahi i te wa kotahi, hei tauira, ka taea e koe te whakahaere i te kaitirotiro, i te keemu, i te kaitoro pāpāho, i te ētita tuhinga, me era atu mea i runga i to pona. Inaa, ka taea e te punaha angamaheni te whakahaere i nga mahi tekau, rau ranei i te wa kotahi. Ma tenei ka ngawari ake te whakamahi i te punaha, kaore koe e awangawanga mena he kore utu te PTM, ka whakahaere noa koe i nga kaupapa.

Ka ara ake te raruraru: me pehea te whakarato i te pohehe o te maha o nga PTM? Me pehea e taea ai e te OS te hanga pohehe o te maha o nga PTM tata, ahakoa he kotahi noa to PTM tinana?

Ka hangaia e te OS tenei pohehe na roto i te mariko CPU. Ma te timata i tetahi tukanga, ka mutu, ka timata i tetahi atu tukanga, me etahi atu, ka taea e te OS te pupuri i te pohehe he maha nga PTM mariko, i te mea ka kotahi, neke atu ranei nga tukatuka tinana. Ka kiia tenei tikanga te wehewehenga o nga rauemi CPU i te wa. Ma tenei tikanga ka taea e nga kaiwhakamahi te whakahaere i te maha o nga tukanga rite ki ta ratou e hiahia ana. Ko te utu mo tenei otinga he mahinga - na te mea ka tohatohahia te PTM e te maha o nga tukanga, ka tere ake te tukatuka o ia tukanga.
Hei whakatinana i te marikotanga PTM, ina koa ki te mahi pai, me tautoko te OS i nga taumata iti me te taumata teitei. Ka karangahia te tautoko taumata iti tikanga he tikanga taumata-iti, kawa ranei e whakatinana ana i te waahanga e hiahiatia ana o te mahi. Ko tetahi tauira o taua mahi ko te huri i te horopaki, ka taea e te OS te aukati i tetahi papatono me te whakahaere i tetahi atu papatono i runga i te tukatuka. Ka whakatinanahia tenei wehenga wa ki nga punaha whakahaere hou katoa.
Kei runga ake o enei tikanga ko etahi arorau i hangaia ki te OS, i te ahua o nga "kaupapa here". kaupapa here Ko tetahi algorithm whakatau-whakatau mo te punaha whakahaere. Ko enei kaupapa here, hei tauira, ka whakatau ko wai te kaupapa me whakarewahia (mai i te rarangi o nga whakahau) i te tuatahi. Na, hei tauira, ka whakatauhia tenei raruraru ma te kaupapa here e kiia nei kaihōtaka (kaupapa kaupapahere) a, i te wa e whiriwhiri ana i tetahi otinga, ka arahina e nga raraunga penei: te hitori o te tiimata (ko tehea kaupapa i whakarewahia te roa rawa atu i nga meneti whakamutunga), he aha te kawenga e mauria ana e tenei mahi (he aha nga momo kaupapa i whakarewahia), inenga mahi (ahakoa te punaha kua arotauhia mo te taunekeneke tauwhitiwhiti, mo te whakaputa ranei ) me etahi atu.

Te tangohanga: tukanga

Ko te tangohanga o te hotaka whakahaere e mahia ana e te punaha whakahaere te mea e kiia nei e matou tukanga. Ka rite ki te korero i mua ake nei, he kaupapa whakahaere noa te tukanga, i nga wa katoa. He kaupapa e taea ai e tatou te tiki korero whakarāpopoto mai i nga momo rauemi punaha ka uru atu, ka pa ranei tenei papatono i te wa e mahia ana.
Kia mohio koe ki nga waahanga o te tukanga, me mohio koe ki nga ahuatanga o te punaha: he aha te panui ka taea e te papatono te whakarereke i te wa e mahi ana. I nga wa katoa, me mohio koe ko nga waahanga o te punaha he mea nui mo te whakatinanatanga o te kaupapa.
Ko tetahi o nga mea tino kitea o te punaha e kii ana kei roto te mahinga ko te mahara. Kei te maumahara nga tohutohu. Ko nga raraunga ka panuihia, ka tuhia ranei e te papatono kei roto i te mahara. No reira, ko te mahara ka taea e tetahi tukanga te whakatutuki (e kiia ana ko te waahi waahi) he waahanga o te tukanga.
Ko tetahi waahanga o te punaha punaha he rehita. He maha nga tohutohu e whai ana ki te whakarereke i te uara o nga rehita, ki te panui ranei i o raatau uara, na reira ka waiho nga rehita hei waahanga nui o te mahi o te mahi.
Me tohu ko te ahua miihini i hangaia mai i etahi rehita motuhake. Hei tauira, IP - tohutohu tohutohu — he tohutohu ki te tohutohu kei te mahia e te papatono. Kei reira ano Paratene paepae me te hononga ki a ia tohu anga, e whakamahia ana ki te whakahaere: tawhā mahi, taurangi rohe me nga wahitau whakahoki.
Ka mutu, he maha nga wa ka uru atu nga papatono ki te ROM (marama panui-anake). Ko enei korero "I/O" (whakauru/putanga) me whakauru he rarangi o nga konae e tuwhera ana i tenei wa.

API Tukatuka

Kia pai ake ai to maatau mohio ki te mahi o te tukanga, me ako nga tauira o nga waea punaha me whakauru ki roto i tetahi atanga punaha whakahaere. Kei te waatea enei API i tetahi ahua, i tetahi atu ranei i runga i tetahi OS.

Waihanga (hanga): Me whakauru e te OS etahi tikanga e taea ai e koe te hanga tukanga hou. Ina whakauru koe i tetahi whakahau ki roto i te tauranga, ka whakarewahia ranei he tono ma te paato-rua i runga i te ata, ka tukuna he waea ki te OS ki te hanga i tetahi mahi hou katahi ka whakarewahia te kaupapa kua tohua.
Mukua: Mai i te mea he atanga mo te hanga i tetahi tukanga, me whakarato ano e te OS te kaha ki te kaha ki te tango i tetahi tukanga. Ko te nuinga o nga kaupapa ka tiimata ka mutu i a raatau ano e rere ana. Ki te kore ka hiahia te kaiwhakamahi ki te patu i a raatau na reira ka whai hua te atanga hei aukati i te mahi.
tatari (tatari): I etahi wa he pai ki te tatari kia oti te mahi, na reira ka whakaratohia etahi atanga e taea ai te tatari.
Mana Misc (te whakahaere rereke): I tua atu i te patu me te tatari mo te mahi, tera ano etahi atu tikanga whakahaere. Hei tauira, ko te nuinga o nga punaha whakahaere e whakarato ana i te kaha ki te whakatio i tetahi mahi (ka mutu tana mahi mo tetahi waa) katahi ka whakaara ano (haere tonu te mahi)
Tūnga (state): He maha nga atanga mo te tiki korero mo te mana o te mahi, penei i te roa o te whakahaere, kei te pehea ranei te ahua o tenei wa.

Pūnaha Whakahaere: E toru nga waahanga ngawari. Wāhanga 2: Tangohanga: Tukanga (whakamaori)

Te Tukatuka: Nga Taipitopito

Ko tetahi o nga mea whakamere ko te ahua o te hurihanga o nga hotaka hei mahi. Ina koa me pehea te tango a te OS me te whakahaere i te kaupapa. Me pehea te hanga o te tukanga.
Tuatahi, me utaina e te OS te waehere hotaka me nga raraunga pateko ki roto i te mahara (ki roto i te waahi wahitau tukanga). Kei te nuinga o nga wa ka noho nga papatono ki runga i te kōpae, i te puku totika ranei i etahi whakatakotoranga ka taea te whakahaere. No reira, ko te tukanga o te uta i te hotaka me nga raraunga pateko ki roto i te mahara ka hiahia te OS ki te panui i aua paita mai i te kōpae me te whakanoho ki tetahi waahi ki te mahara.

I roto i nga punaha whakahaere moata, i tino kaha te mahi uta, ko te tikanga kua utaina te waehere katoa ki te mahara i mua i te whakarewatanga o te kaupapa. Ko nga punaha whakahaere o naianei kei te mahi mangere, ara, te uta i nga waahanga waehere, raraunga ranei ina hiahia ana te papatono i te wa e mahia ana.

Kia utaina te waehere me nga raraunga pateko ki roto i te mahara OS, he iti noa atu nga mea hei mahi i mua i te rere o te tukanga. Me toha etahi rahinga mahara mo te puranga. Ka whakamahia e nga papatono te puranga mo nga taurangi o te rohe, nga tawhā mahi, me nga wahitau whakahoki. Ka tohatohahia e te OS tenei mahara ka hoatu ki te tukanga. Ka taea hoki te tohatoha i te puranga me etahi tohenga, inaa ka whakakiia e ia nga tawhā o te mahi matua(), hei tauira me te huinga o te argc me te argv.

Ka tohatoha pea te punaha whakahaere i etahi mahara ki te puranga o te papatono. Ka whakamahia te puranga e nga papatono ki te tono i nga raraunga kua tohatohahia. Ka tono nga papatono i tenei waahi ma te waea i te mahi malloc () ka whakawātea mārika mā te karanga i te mahi kore utu(). Ko te puranga e hiahiatia ana mo nga hanganga raraunga penei i nga pepa hono, nga ripanga hash, nga rakau me etahi atu. I te tuatahi, he iti te mahara ka tohatohahia ki te puranga, engari ka roa te wa, i te wa e haere ana te papatono, ka taea e te puranga te tono mahara ake ma te whare pukapuka API karanga malloc(). Kei te whai waahi te punaha whakahaere ki te mahi toha atu mahara hei awhina i enei waea.

Ka mahia ano e te punaha whakahaere nga mahi arawhiti, ina koa ko nga mea e pa ana ki te I/O. Hei tauira, i runga i nga punaha UNIX, ko ia mahinga ma te taunoa e 3 nga kaiwhakaahua konae tuwhera, mo te whakaurunga paerewa, te putanga, me te hapa. Ko enei kakau ka taea e nga papatono te panui i te whakauru mai i te tauranga me te whakaatu korero ki te mata.

Na, ma te uta i nga waehere me nga raraunga pateko ki roto i te mahara, te hanga me te arawhiti i te puranga, me te mahi i etahi atu mahi e pa ana ki te mahi I/O, ka whakareri te OS i te waahi mo te mahi ki te mahi. Ka mutu, kotahi te mahi whakamutunga e toe ana: ko te whakahaere i te hotaka ma tona waahi urunga, ka kiia ko te mahi matua(). Ma te mahi i te mahi matua(), ka whakawhitia e te OS te mana CPU ki te mahi hou i hangaia, na reira ka timata te kaupapa ki te mahi.

Tukatuka ahua

Inaianei kua mohio tatou he aha te tukanga me te pehea i hangaia ai, me whakarārangihia te tukanga e kii ana ka uru ki roto. I roto i tona ahua ngawari, ka taea te mahi i tetahi o enei ahuatanga:
rere. I te wa e rere ana, ka rere te tukanga i runga i te tukatuka. Ko te tikanga kei te mahia nga tohutohu.
rite. I roto i te ahua rite, kua rite te tukanga ki te whakahaere, engari mo etahi take kaore te OS e mahi i te waa kua tohua.
āraia. I roto i te ahua kua aukatihia, ka mahia e tetahi tukanga etahi mahi e kore ai e reri ki te mahi kia puta ra ano etahi kaupapa. Ko tetahi tauira noa ko te wa ka timata tetahi tukanga i te mahi IO, ka aukatihia kia taea e etahi atu tukanga te whakamahi i te tukatuka.

Pūnaha Whakahaere: E toru nga waahanga ngawari. Wāhanga 2: Tangohanga: Tukanga (whakamaori)

Ka taea e koe te whakaaro i enei ahuatanga i roto i te ahua o te kauwhata. Ka taea e tatou te kite i te pikitia, ka huri te ahua o te tukanga i waenga i te RUNNING me te READY i runga i te whakaaro o te OS. Ina huri te ahua o te tukanga mai i READY ki RUNNING, ko te tikanga kua whakaritea te tukanga. I te huarahi rereke - tangohia mai i te whakatakotoranga. I te wa ka KAUPAPAhia tetahi tukanga, hei tauira, ka timata ahau i te mahi IO, ka noho tonu te OS ki tenei ahua kia puta ra ano etahi huihuinga, hei tauira ko te whakaotinga o te IO. i tenei wa ko te whakawhiti ki te ahua READY a tera pea ki te ahua RUNNING mena ka whakatauhia e te OS.
Ka titiro tatou ki tetahi tauira mo te neke o nga tukanga e rua i roto i enei whenua. Hei timata, me whakaaro tatou kei te whakahaere nga mahi e rua, a kei te whakamahi ia i te PTM anake. I tenei keehi, ka penei te ahua o o raatau whenua.

Pūnaha Whakahaere: E toru nga waahanga ngawari. Wāhanga 2: Tangohanga: Tukanga (whakamaori)

I roto i te tauira e whai ake nei, ko te tukanga tuatahi, i muri i etahi wa e rere ana, ka tono ki a IO ka uru ki te ahua KAUPAPA, ka taea te whakahaere i tetahi atu tukanga (FIG 1.4). Ka kite te OS ko te tukanga 0 kaore i te whakamahi i te PTM ka timata i te tukanga 1. I te wa e whakahaere ana te tukanga 1, kua oti te IO me te mana o te tukanga 0 ka huri ki READY. Ka mutu, kua oti te tukanga 1, ka mutu, ka timata te tukanga 0, ka mahia, ka mutu tana mahi.

Pūnaha Whakahaere: E toru nga waahanga ngawari. Wāhanga 2: Tangohanga: Tukanga (whakamaori)

Hanganga raraunga

Ko te OS ake he hotaka, he pera ano ki etahi atu kaupapa, kei a ia etahi hanganga raraunga matua e pupuri ana i nga momo korero e tika ana. Hei aroturuki i te ahua o ia tukanga, ka tautokohia e te OS etahi rārangi tukanga mo nga tukanga katoa i roto i te ahua READY me etahi atu korero hei whai i nga tukanga e whakahaere ana i tenei wa. Ano, me aroturuki te OS i nga tukanga aukati. I muri i te otinga o te IO, me whakaoho e te OS te tukanga e hiahiatia ana ka waiho ki roto i te ahua kua rite ki te whakahaere.

Hei tauira, me tiaki e te OS te ahua o nga rehita tukatuka. I te wa ka mutu te mahi, ka penapena te ahua o nga rehita ki te waahi waahi o te mahi, a i te wa e haere tonu ana tana mahi, ka whakahokia mai nga uara o nga rehita, na reira ka haere tonu te mahi o tenei mahi.

I tua atu i nga ahuatanga kua rite, kua aukati, kua rere, tera ano etahi atu whenua. I etahi wa, i te wa o te orokohanga, kei te ahua INIT tetahi tukanga. Ka mutu, ka taea te whakauru i tetahi tukanga ki te ahua WHAKAMUTUNGA ina kua oti kee, engari kaore ano ana korero kia whakakorehia. I runga i nga punaha UNIX ka kiia tenei ahua tukanga zombie. He pai tenei ahua mo nga keehi e hiahia ana te tukanga matua ki te mohio ki te waehere whakahoki o te tamaiti, hei tauira, ko te tikanga 0 ka tohu he angitu me te 1 he hapa, engari ka taea e nga kaitakataka te whakaputa etahi atu waehere whakaputa hei tohu i nga raru rereke. Ka mutu te tukanga matua, ka puta he waea punaha whakamutunga, penei i te tatari (), ki te tatari mo te tukanga tamaiti ki te whakamutu me te tohu ki te OS ka taea e ia te whakakore i nga raraunga e pa ana ki te tukanga kua mutu.

Pūnaha Whakahaere: E toru nga waahanga ngawari. Wāhanga 2: Tangohanga: Tukanga (whakamaori)

Nga kaupapa matua o te kauhau:

tukanga — te tangohanga matua o te kaupapa whakahaere i te OS. I nga wa katoa, ka taea te whakaahua i tetahi tukanga e tona ahua: nga ihirangi o te mahara i roto i tona waahi wahitau, nga ihirangi o nga rehita tukatuka, tae atu ki te tohu tohutohu me te tohu tohu, me nga korero IO, penei i nga konae tuwhera e panuihia ana, e tuhia ana ranei.
API Tukatuka kei roto ko nga waea ka taea e nga papatono te mahi ki nga tukanga. Ko te tikanga ko enei ko te hanga, te muku, me etahi atu waea.
● Ko te tukanga kei roto i tetahi o nga kawanatanga maha, tae atu ki te rere, te reri, te aukati. Ka taea e nga momo huihuinga penei i te whakahōtaka, te rereke mai i te whakarite, te tatari ranei te whakarereke i te ahua o te tukanga mai i tetahi ki tetahi.
Rarangi tukanga kei roto nga korero mo nga tukanga katoa o te punaha. Ko ia urunga kei roto ka kiia ko te poraka mana whakahaere, i te mea he hanganga kei roto nga korero katoa e tika ana mo tetahi tukanga motuhake. 

Source: will.com

Tāpiri i te kōrero