Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 3: Habka API (tarjumaad)

Hordhaca Nidaamyada Hawlgelinta

Haye Habr! Waxaan jeclaan lahaa inaan kuu soo bandhigo maqaallo taxane ah - tarjumaad hal suugaan oo xiiso leh fikradayda - OSTEP. Qalabkani wuxuu si qoto dheer uga hadlayaa shaqada nidaamyada hawlgalka ee u eg, kuwaas oo ah, la shaqeynta hababka, jadwalayaasha kala duwan, xusuusta, iyo qaybaha kale ee la midka ah ee ka kooban OS casriga ah. Waxaad ku arki kartaa asalka dhammaan agabka halkan halkan. Fadlan ogow in tarjumaada loo sameeyay si aan xirfad lahayn (si xor ah), laakiin waxaan rajeynayaa inaan sii wado macnaha guud.

Shaqada shaybaadhka ee mawduucan waxaa laga heli karaa halkan:

Qaybaha kale:

Waxa kale oo aad ka hubin kartaa kanaalkayga telegram =)

Digniin! Waxaa jira shaybaar loogu talagalay muxaadaradan! Fiiri github

Habka API

Aynu eegno tusaale abuurista hab-socodka nidaamka UNIX. Waxay ku dhacdaa laba wicitaan oo habaysan fargeeto () ΠΈ exec().

Fargeeto wac ()

Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 3: Habka API (tarjumaad)

Tixgeli barnaamij sameeya fargeeto () wac. Natiijada fulinteedu waxay noqon doontaa sida soo socota.

Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 3: Habka API (tarjumaad)

Marka hore, waxaan galnaa shaqada ugu weyn () oo ku daabac xarigga shaashadda. Khadku waxa uu ka kooban yahay tilmaanta habka kaas oo asal ahaan loogu yeedho PID ama aqoonsiga habka. Aqoonsigan waxa loo isticmaalaa UNIX si loo tixraaco habsocod. Amarka soo socda ayaa wici doona fargeeto(). Halkaa marka ay marayso, koobi sax ah oo sax ah ayaa la abuurayaa. OS, waxay u egtahay inay jiraan 2 nuqul oo isla barnaamijka ah oo ku shaqeeya nidaamka, taas oo markaa ka bixi doonta shaqada fargeeto (). Habka cusub ee ubadka la abuuray (ee laxidhiidha habsocodka waalidka ee abuuray) mar dambe lama fulin doono, laga bilaabo shaqada () ugu weyn. Waa in la xasuusnaado in hab-socodka ilmahu aanu ahayn nuqul sax ah ee habka waalidka, gaar ahaan, waxa uu leeyahay meel ciwaan u gaar ah, diiwaankiisa u gaar ah, tilmaamihiisa u gaar ah tilmaamaha la fulin karo, iyo wixii la mid ah. Markaa, qiimaha lagu soo celiyay soo wacaha fargeetada () shaqada way ka duwanaan doontaa. Gaar ahaan, habka waalidku wuxuu heli doonaa qiimaha PID ee habka ubadku soo celin ahaan, ilmuhuna wuxuu heli doonaa qiime u dhigma 0. Adigoo isticmaalaya koodhadhkan soo celinta, waxaad kala saari kartaa hababka oo ku qasbi kartaa mid kasta oo iyaga ka mid ah inuu qabsado shaqadiisa. . Si kastaba ha ahaatee, fulinta barnaamijkan si adag looma qeexin. Ka dib markii loo qaybiyo 2 hannaan, OS wuxuu bilaabaa inuu la socdo iyaga, iyo sidoo kale qorshaynta shaqadooda. Haddii lagu fuliyo processor-ka hal-core, mid ka mid ah hababka, kiiskan waalidku, wuu sii wadi doonaa shaqada, ka dibna habka ilmuhu wuxuu heli doonaa xakameyn. Marka dib loo bilaabo, xaaladdu way ka duwanaan kartaa.

Wac sug()

Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 3: Habka API (tarjumaad)

Tixgeli barnaamijka soo socda. Barnaamijkan, iyadoo ay ugu wacan tahay joogitaanka wicitaanka sug() Nidaamka waalidku wuxuu had iyo jeer sugi doonaa habka ubadku inuu dhammaystiro. Xaaladdan oo kale, waxaan ku heli doonaa soo saarid qoraal ah oo si adag loo qeexay shaashadda

Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 3: Habka API (tarjumaad)

exec() wac

Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 3: Habka API (tarjumaad)

Tixgeli caqabadda exec(). Wicitaanka nidaamkani waa mid faa'iido leh marka aan rabno inaan wadno barnaamij gebi ahaanba ka duwan. Halkan ayaan wici doonaa execvp() si loo socodsiiyo barnaamijka wc oo ah barnaamij tirinta kelmado. Maxaa dhacaya marka exec() la yiraahdo? Wicitaankan waxaa loo gudbiyaa magaca faylka la fulin karo iyo cabbirrada qaarkood dood ahaan. Ka dib koodhka iyo xogta dhabta ah ee faylkan la fulin karo ayaa la raray oo qaybteeda gaarka ah ee koodka ayaa la qoraa. Meelaha xusuusta ee soo haray, sida xirmooyinka iyo tuubada, ayaa dib loo bilaabay. Taas ka dib OS-gu si fudud ayuu u fuliyaa barnaamijka, isaga oo u gudbinaya doodo kala duwan. Markaa maanu abuurin hanaan cusub, waxaanu si fudud u bedelnay barnaamijkii hadda socda oo aanu u bedelnay barnaamij kale oo socda. Ka dib marka la fuliyo wicitaanka () ee faraca, waxay u muuqataa sidii haddii barnaamijkii asalka ahaa uusan soconin gabi ahaanba.

Qalafsanaanta bilawga ahi gabi ahaanba waa wax caadi u ah qolofka Unix, waxayna u ogolaataa qolofkaas inuu fuliyo koodka ka dib marka uu soo waco fargeeto (), laakiin ka hor wicitaanka exec(). Tusaalaha koodka noocan oo kale ah ayaa ah in la isku hagaajiyo jawiga qolofka baahiyaha barnaamijka la bilaabay, ka hor inta aan la bilaabin.

Shell - kaliya barnaamij isticmaale. Waxay ku tusinaysaa khadka martiqaadka waxayna ku sugaysaa inaad wax ku qorto. Inta badan, haddii aad ku qorto magaca barnaamijka halkaas, qolofku wuxuu heli doonaa meesha uu ku yaal, wac habka () fargeetada, ka dibna wac nooc ka mid ah exec() si aad u abuurto hab cusub oo aad sugto inuu dhammaystiro adoo isticmaalaya sug() wac. Marka habka ilmahu ka baxo, qoloftu waxay ka soo noqon doontaa sugitaanka() wacitaanka oo daabici doonta mar labaad oo sugi doonta amarka xiga in la galo.

Fargeeto () & exec() kala qaybsanaantu waxay u ogolaataa qolofku inuu sameeyo waxyaalahan soo socda, tusaale ahaan:
wc file> new_file.

Tusaalahan, wax-soo-saarka barnaamijka wc waxa loo weeciyey fayl. Habka uu qolofku tan u gaaro waa mid sahlan - iyadoo la abuurayo habraaca ilmaha ka hor inta aan la wicin exec(), qoloftu waxay xidhaysaa wax soo saarka caadiga ah oo furaya faylka new_file, sidaas darteed, dhammaan wax soo saarka barnaamijka sii socda wc waxaa loo wareejin doonaa fayl halkii shaashada laga isticmaali lahaa.

dhuunta Unix waxaa loo fuliyaa si la mid ah, iyadoo ay ku kala duwan yihiin in ay isticmaalaan tuubada () wicista. Xaaladdan oo kale, qulqulka wax-soo-saarka geeddi-socodku wuxuu ku xidhmi doonaa safka tuubada ee ku dhex jira kernel-ka, kaas oo qulqulka wax-gelinta ee hab-socod kale lagu xidhi doono.

Source: www.habr.com

Add a comment