Sistemụ arụ ọrụ: Mpekere atọ dị mfe. Akụkụ 3: API Usoro (nsụgharị)

Okwu Mmalite nke Sistemụ Ọrụ

Hey Habr! Ọ ga-amasị m iwetara gị ntị usoro isiokwu-nsụgharị nke otu akwụkwọ na-atọ ụtọ n'uche m - OSTEP. Nke a ihe onwunwe na-atụle nnọọ miri emi ọrụ nke unix-dị ka sistemụ arụmọrụ, ya bụ, na-arụ ọrụ na usoro, dị iche iche schedulers, ebe nchekwa, na ndị ọzọ yiri components na-emejupụta a ọgbara ọhụrụ OS. Ị nwere ike ịhụ mbụ nke ihe niile ebe a ebe a. Biko mara na e mere ntụgharị asụsụ ahụ n'amaghị ama (n'efu), mana enwere m olileanya na m jigidere nkọwa izugbe.

Enwere ike ịchọta ọrụ ụlọ nyocha na isiokwu a ebe a:

Akụkụ ndị ọzọ:

Ị nwekwara ike lelee ọwa m na telegram =)

Mkpu! Enwere ụlọ nyocha maka nkuzi a! Lee anya github

API usoro

Ka anyị leba anya n'ihe atụ nke ịmepụta usoro na usoro UNIX. Ọ na-eme site na oku sistemụ abụọ ndụdụ () и exec().

Kpọọ ndụdụ()

Sistemụ arụ ọrụ: Mpekere atọ dị mfe. Akụkụ 3: API Usoro (nsụgharị)

Tụlee mmemme na-eme oku ndụdụ (). Nsonaazụ nke ogbugbu ya ga-abụ dị ka ndị a.

Sistemụ arụ ọrụ: Mpekere atọ dị mfe. Akụkụ 3: API Usoro (nsụgharị)

Nke mbụ, anyị na-abanye ọrụ isi () ma bipụta eriri na ihuenyo. Ahịrị nwere njirimara usoro nke a na-akpọ na mbụ PID ma ọ bụ njirimara usoro. A na-eji njirimara a na UNIX iji rụtụ aka na usoro. Iwu na-esote ga-akpọ ndụdụ(). N'ebe a, a na-emepụta ihe fọrọ nke nta ka ọ bụrụ kpọmkwem otu usoro. Maka OS, ọ dị ka enwere mbipụta 2 nke otu mmemme na-arụ ọrụ na sistemụ, nke n'aka nke ya ga-apụ na ọrụ ndụdụ (). Usoro ụmụaka emepụtara ọhụrụ (n'ihe metụtara usoro nne na nna kere ya) agaghịzi eme ya, malite na isi () ọrụ. Ekwesiri icheta na usoro nwata abughi ihe nnomi nke usoro nne na nna nke oma, o nwere oghere adrees nke ya, akwukwo nke aka ya, ihe nleba anya nke ntuziaka na ihe ndi ozo. Ya mere, uru eweghachiri onye na-akpọ ọrụ ndụdụ () ga-adị iche. Karịsịa, usoro nne na nna ga-enweta uru PID nke usoro nwatakịrị ahụ dị ka nlọghachi, nwatakịrị ahụ ga-enwetakwa uru ruru 0. Iji koodu nloghachi ndị a, ị nwere ike kewaa usoro ma mee ka onye ọ bụla n'ime ha rụọ ọrụ nke ya. . Agbanyeghị, akọwapụtaghị ogbugbu nke mmemme a. Mgbe ekewachara n'ime usoro 2, OS na-amalite nyochaa ha, yana ịhazi ọrụ ha. Ọ bụrụ na e gburu na otu-isi processor, otu n'ime usoro, na nke a, nne na nna, ga-anọgide na-arụ ọrụ, mgbe ahụ, usoro nwatakịrị ga-enweta njikwa. Mgbe ịmalitegharị, ọnọdụ ahụ nwere ike ịdị iche.

Nchere oku()

Sistemụ arụ ọrụ: Mpekere atọ dị mfe. Akụkụ 3: API Usoro (nsụgharị)

Tụlee ihe omume na-esonụ. N'ime mmemme a, n'ihi ọnụnọ oku chere() Usoro nne na nna ga-eche mgbe niile ka usoro nwatakịrị ahụ rụchaa. N'okwu a, anyị ga-enweta nsonaazụ ederede akọwapụtara nke ọma na ihuenyo

Sistemụ arụ ọrụ: Mpekere atọ dị mfe. Akụkụ 3: API Usoro (nsụgharị)

exec() oku

Sistemụ arụ ọrụ: Mpekere atọ dị mfe. Akụkụ 3: API Usoro (nsụgharị)

Tụlee ihe ịma aka ahụ exec(). Oku usoro a bara uru mgbe anyị chọrọ ịme mmemme dị iche iche kpamkpam. Ebe a ka anyị ga-akpọ execvp() iji mee mmemme wc nke bụ mmemme ịgụta okwu. Kedu ihe na-eme mgbe a na-akpọ exec()? A na-ebufe oku a aha faịlụ nwere ike ime yana ụfọdụ param dị ka arụmụka. Mgbe nke ahụ gasịrị, a na-ebunye koodu na data static sitere na faịlụ a na-arụ ọrụ ma degharịa akụkụ nke ya na koodu ahụ. Ebe nchekwa ndị fọdụrụ, dị ka mkpọkọ na ikpo, na-amaliteghachi. Mgbe nke ahụ gasịrị, OS na-eme mmemme ahụ, na-ebufe ya usoro arụmụka. Yabụ na anyị emepụtaghị usoro ọhụrụ, naanị anyị gbanwere mmemme na-agba ugbu a ka ọ bụrụ mmemme na-agba ọsọ ọzọ. Mgbe emechara oku exec () n'ime nwa, ọ dị ka a ga-asị na mmemme mbụ emeghị ma ọlị.

Mgbagwoju mmalite mmalite a bụ ihe zuru oke maka shei Unix, ma na-enye ohere ka shei ahụ mebie koodu mgbe ọ kpọchara ya ndụdụ (), ma tupu oku a exec(). Ihe atụ nke koodu dị otú ahụ ga-abụ ịhazigharị gburugburu shei na mkpa nke mmemme a na-amalite, tupu ịmalite ya.

Shell - naanị mmemme onye ọrụ. Ọ ga-egosi gị ahịrị ịkpọ òkù ahụ wee chere ka ị dee ihe na ya. N'ọtụtụ ọnọdụ, ọ bụrụ na ị dee aha mmemme n'ebe ahụ, shei ahụ ga-achọta ebe ọ dị, kpọọ usoro ndụdụ (), wee kpọọ ụfọdụ ụdị exec () iji mepụta usoro ọhụrụ wee chere ka ọ mezue site na iji a. chere() oku. Mgbe usoro nwatakịrị ahụ na-apụ, shei ahụ ga-alọghachi site na oku echere () wee bipụta ngwa ngwa ọzọ wee chere ka abanye n'iwu na-esote.

Nkewa () & exec() na-enye ohere ka shei ahụ mee ihe ndị a, dịka ọmụmaatụ:
wc faịlụ> new_file.

N'ihe atụ a, a na-atụgharị mmepụta nke mmemme wc na faịlụ. Ụzọ shea ahụ si enweta nke a dị nnọọ mfe - site n'ịmepụta usoro nwatakịrị tupu ọ kpọọ exec(), shei ahụ na-emechi mmepụta ọkọlọtọ wee mepee faịlụ ahụ new_file, Ya mere, mmepụta niile sitere na mmemme na-agba ọsọ ọzọ wc a ga-atụgharị gaa na faịlụ kama ihuenyo.

Unix ọkpọkọ na-emejuputa atumatu n'otu aka ahụ, na ihe dị iche na ha na-eji ọkpọkọ () oku. N'okwu a, a ga-ejikọta usoro mmepụta nke usoro ahụ na eriri ọkpọkọ dị na kernel, nke a ga-ejikọta ntinye ntinye nke usoro ọzọ.

isi: www.habr.com

Tinye a comment