Nidaamyada Hawlgelinta: Saddex Qaybood oo Fudud. Qaybta 2: Soo koobid: Habka (tarjumaada)

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

Aynu eegno nuxurka aasaasiga ah ee OS-gu siiyo isticmaaleyaasha: habka. Qeexida habsocodka waa mid fudud - waa barnaamijka socda. Barnaamijku laftiisu waa shay aan naf lahayn oo ku yaal saxanka - waa hab-tilmaameedyo iyo suurtagal ahaan xog sugan oo sugaysa in la bilaabo. Waa OS-ka qaata bytes-kaas oo socodsiiya, barnaamijka u beddelaya wax faa'iido leh.
Inta badan, isticmaalayaashu waxay rabaan inay ku shaqeeyaan wax ka badan hal barnaamij isku mar, tusaale ahaan, waxaad ku wadi kartaa browserka, game, media player, editor text, iyo wixii la mid ah laptop kaaga. Dhab ahaantii, nidaamka caadiga ah wuxuu wadi karaa tobanaan ama boqollaal geeddi-socod isku mar ah. Xaqiiqadani waxay fududaynaysaa isticmaalka nidaamka, waligaa kama welweli kartid in CPU-gu bilaash yahay, kaliya waxaad waddaa barnaamijyo.

Tani waxay kor u qaadaysaa dhibaatada: sida loo bixiyo dhalanteedka CPUs badan? Sidee OS u abuuri karaa dhalanteed ah tiro aan la koobi karin oo CPUs ah, xitaa haddii aad leedahay hal CPU oo kaliya?

OS-gu waxa uu ku abuuraa dhalanteedkan iyada oo loo marayo qaabaynta CPU. Marka la bilaabo hal hab, ka dibna la joojiyo, bilaabaya hab kale, iyo wixii la mid ah, OS-ku wuxuu ilaalin karaa khiyaaliga ah in ay jiraan CPUs badan oo muuqaal ah, marka dhab ahaantii ay jiri doonaan hal ama in ka badan oo soo-saareyaal jireed. Farsamadan waxaa loo yaqaan qaybinta khayraadka CPU waqti ahaan. Farsamadani waxay u ogolaanaysaa isticmaalayaasha inay socodsiiyaan habab badan oo isku mid ah inta ay rabaan. Qiimaha xalkani waa waxqabadka - maadaama haddii CPU la wadaago habab dhowr ah, nidaam kasta ayaa loo shaqeyn doonaa si tartiib tartiib ah.
Si loo hirgeliyo farsamada casriga ah ee CPU, iyo gaar ahaan si loo sameeyo si wanaagsan, OS wuxuu u baahan yahay taageero heer hoose iyo mid sare labadaba. Taageero heer hoose ah ayaa loo yaqaan hababka waa habab ama hab-maamuusyo heer hoose ah oo hirgeliya qaybta loo baahan yahay ee shaqaynta. Tusaale ahaan shaqaynta noocaas ah waa beddelka macnaha guud, taas oo siinaysa OS awood uu ku joojiyo hal barnaamij oo uu barnaamij kale ku socodsiiyo processor-ka. Waqtigan qaybinta waxaa laga hirgeliyay dhammaan nidaamyada hawlgalka casriga ah.
Hababkan dushooda waxa ku jira xoogaa caqli-gal ah oo lagu dhisay OS-ka, qaab ahaan “siyaasadaha”. siyaasadda waa algorithm go'aan gaar ah oo loogu talagalay nidaamka qalliinka. Siyaasadaha noocaan ah, tusaale ahaan, ayaa go'aamiya barnaamijka la bilaabayo (laga bilaabo liiska amarrada) marka hore. Marka, tusaale ahaan, dhibaatadan waxaa lagu xallin doonaa siyaasad la yiraahdo jadwalka (siyaasadda jadwalka) iyo marka la dooranayo xalka, waxaa hagi doona xogta sida: taariikhda bilawga ah (barnaamijka la bilaabay kii ugu dheeraa daqiiqadihii ugu dambeeyay), waxa culeyska habkani xambaarsan yahay (nooca barnaamijyada la bilaabay), cabbirada waxqabadka (haddii nidaamka waxaa loo habeeyay isdhexgalka isdhexgalka ama wax soo saarka) iyo wixii la mid ah.

Abstraction: habka

Soo saarista barnaamijka socda ee uu fuliyo nidaamka hawlgalka waa waxa aan u yeerno habka. Sidaan hore u soo sheegnay, nidaamku waa barnaamij socda, wakhti kasta oo degdeg ah. Barnaamij aan ka heli karno macluumaad kooban oo laga helayo ilaha nidaamka kala duwan ee barnaamijkani galo ama saameeya inta uu socdo.
Si aad u fahamto qaybaha nidaamka, waxaad u baahan tahay inaad fahamto xaaladaha nidaamka: waxa barnaamijku akhrin karo ama bedeli karo inta lagu jiro hawlgalkiisa. Waqti kasta, waxaad u baahan tahay inaad fahamto qaybaha nidaamka ee muhiimka u ah fulinta barnaamijka.
Mid ka mid ah walxaha muuqda ee nidaamka ayaa sheegaya in habka uu ku jiro xusuusta. Tilmaamuhu waxay ku yaalliin xusuusta. Xogta uu barnaamijku akhriyo ama qorayo waxay sidoo kale ku yaalliin xusuusta. Haddaba, xusuusta uu hab-socodku wax ka qaban karo (oo loo yaqaanno cinwaanka goobta) waa qayb ka mid ah hannaanka.
Sidoo kale qayb ka mid ah nidaamka gobolka waa diiwaan. Tilmaamo badan ayaa loogu talagalay in lagu beddelo qiimaha diiwaannada ama akhrinta qiimahooda, sidaas darteed diiwaangelintu waxay sidoo kale noqotaa qayb muhiim ah oo ka mid ah hawlgalka habka.
Waa in la ogaadaa in gobolka mashiinka sidoo kale laga sameeyay diiwaannada gaarka ah qaarkood. Tusaale ahaan, IP - tilmaame tilmaame - tilmaame tilmaamaha uu barnaamijku hadda fulinayo. Waxaa kaloo jira tilmaame xidhmooyin oo la xidhiidha tilmaame jir, kuwaas oo loo isticmaalo in lagu maareeyo: cabbirrada shaqada, doorsoomayaasha maxalliga ah iyo cinwaannada soo celinta.
Ugu dambeyntii, barnaamijyadu waxay inta badan galaan ROM-ka (xasuusta-akhriska-kaliya). Macluumaadkan "I/O" (ku-soo-gelinta/soo-saarka) waa in ay ku jiraan liiska faylalka hadda u furan habka.

Habka API

Si aan u wanaajino fahamkayaga ku saabsan sida hawshu u shaqeyso, aan baranno tusaalayaal ku saabsan wicitaannada nidaamka kuwaas oo ay tahay in lagu daro interface kasta oo nidaamka hawlgalka. API-yadan waxaa laga heli karaa hal qaab ama mid kale OS kasta.

Abuur (abuurista): OS-ku waa inuu ku jiraa hab kuu ogolaanaya inaad abuurto habab cusub. Markaad amar gasho terminalka ama aad bilowdo codsi adigoo laba jeer gujinaya astaanta, wicitaan ayaa loo soo diraa OS si uu u sameeyo nidaam cusub ka dibna uu bilaabo barnaamijka la cayimay.
Tirtir: Maadaama uu jiro interface ah abuurista habka, OS sidoo kale waa inuu bixiyaa awood uu ku qasbo ka saarida habka. Barnaamijyada intooda badani waxay si dabiici ah u bilaabi doonaan oo joojinayaan iskood markay socdaan. Haddii kale isticmaaluhu wuxuu jeclaan lahaa inuu awoodo inuu dilo iyaga oo sidaas awgeed interface si loo joojiyo habka ayaa faa'iido leh.
Sug (sugitaan): Mararka qaarkood waa faa'iido leh in la sugo habka si loo dhammeeyo, sidaas darteed qaar ka mid ah interfaces ayaa la bixiyaa kuwaas oo bixiya awood lagu sugo.
Xakamaynta Kala duwan (xakamaynta kala duwan): Ka sokow dilka iyo sugitaanka habka, waxaa sidoo kale jira habab kale oo kala duwan oo xakameyn ah. Tusaale ahaan, nidaamyada hawlgalka intooda badani waxay bixiyaan awoodda lagu qaboojinayo habka (joojinta fulinteeda muddo cayiman) ka dibna dib loo bilaabo (sii wad fulinta)
Xaaladda (state): Waxaa jira meelo kala duwan oo lagu helo macluumaad ku saabsan heerka hawsha, sida muddada ay socotay ama xaaladda ay hadda ku sugan tahay.

Nidaamyada Hawlgelinta: Saddex Qaybood oo Fudud. Qaybta 2: Soo koobid: Habka (tarjumaada)

Habka Abuuritaanka: Faahfaahin

Mid ka mid ah waxyaabaha xiisaha leh ayaa ah sida saxda ah ee barnaamijyada loogu beddelo habab. Gaar ahaan sida OS-gu u soo qaado oo uu u wado barnaamijka. Sida saxda ah ee habka loo abuuray.
Marka hore, OS waa inuu ku shubaa koodhka barnaamijka iyo xogta joogtada ah ee xusuusta (la geli booska ciwaanka habka). Barnaamijyadu inta badan waxay ku yaaliin saxan ama darawal adag oo dawladeed oo qaab la fulin karo. Haddaba, habka loo raraynayo barnaamijka iyo xogta taagan ee xusuusta waxay u baahan tahay OS-gu inuu awood u yeesho inuu akhriyo bytes-kaas diskooga oo uu dhigo meel xusuusta ah.

Nidaamyadii hore ee hawlgalka, habka rarista ayaa loo sameeyay si xamaasad leh, taas oo macnaheedu yahay in dhammaan koodka lagu shubay xusuusta ka hor inta aan barnaamijka la bilaabin. Nidaamyada hawlgalka casriga ah ayaa tan u sameeya caajisnimo, taas oo ah, ku shubida qaybo ka mid ah koodka ama xogta kaliya marka barnaamijku u baahan yahay inta lagu jiro fulinta.

Marka koodhka iyo xogta static lagu shubo xusuusta OS, waxaa jira dhawr waxyaalood oo kale oo loo baahan yahay in la sameeyo ka hor inta aan hawsha la socon. Waxoogaa xusuusta ah waa in loo qoondeeyaa xidhmada. Barnaamijyadu waxay u isticmaalaan xidhmada doorsoomayaasha maxalliga ah, cabbirrada shaqada, iyo cinwaannada soo celinta. OS-gu wuxuu u qoondeeyaa xusuustan wuxuuna siinayaa habka. Xirmada waxa kale oo lagu meelayn karaa doodaha qaarkood, gaar ahaan waxa ay buuxinaysaa cabbirrada shaqada () ugu weyn, tusaale ahaan isku xidhka argc iyo argv.

Nidaamka qalliinka ayaa sidoo kale laga yaabaa inuu u qoondeeyo xoogaa xusuusta ah kaydka barnaamijka. Tuullada waxa isticmaala barnaamijyadu si ay si cad u codsadaan xogta firfircoonida loo qoondeeyey. Barnaamijyadu waxay codsadaan booskan iyagoo wacaya shaqada malloc () oo si cad u nadiifiya adoo wacaya shaqada bilaash (). Taallada ayaa looga baahan yahay qaab-dhismeedka xogta sida go'yaal isku xiran, miisaska xashiishka, geedaha iyo kuwa kale. Marka ugu horeysa, qadar yar oo xusuusta ah ayaa loo qoondeeyaa tuubada, laakiin waqti ka dib, marka uu barnaamijku socdo, tuubada waxay codsan kartaa xasuus badan iyada oo loo marayo API call malloc (). Nidaamka qalliinka wuxuu ku lug leeyahay habka qoondaynta xusuusta dheeraad ah si ay uga caawiso qancinta wicitaannadan.

Nidaamka qalliinka ayaa sidoo kale qaban doona hawlaha bilowga ah, gaar ahaan kuwa la xiriira I/O. Tusaale ahaan, nidaamyada UNIX, habraac kastaa sida caadiga ah wuxuu leeyahay 3 sharraxayaayaal fayl furan, oo loogu talagalay gelinta caadiga ah, soo saarista, iyo khaladka. Gacan-qabayaashani waxay u oggolaanayaan barnaamijyadu inay akhriyaan gelinta terminalka iyo sidoo kale inay soo bandhigaan macluumaadka shaashadda.

Markaa, adoo ku shubaya koodka iyo xogta taagan ee xusuusta, abuurista iyo bilaabista xidhmada, iyo samaynta shaqo kale oo la xidhiidha fulinta hawlaha I/O, OS-gu wuxuu diyaarinayaa marxaladda hawsha lagu fulinayo. Ugu dambeyntii, waxaa haray hal shaqo oo ugu dambeysay: ku socodsiinta barnaamijka iyada oo la marayo barta laga soo galo, oo loo yaqaan shaqada () ugu weyn. Isagoo fulinaya shaqada () ugu weyn, OS-gu wuxuu ku wareejinayaa kantaroolka CPU habka cusub ee la abuuray, sidaas darteed barnaamijku wuxuu bilaabaa inuu fuliyo.

Habka habka

Haddaba, innaga oo fahmnay hab-socodka waxa uu yahay iyo sida loo unkayo, aynu taxno hannaanka ay ku jiri karto. Qaabka ugu fudud, nidaamku wuxuu noqon karaa mid ka mid ah kuwan:
Running. Marka la ordo, habraaca wuxuu ku socdaa processor-ka. Tani waxay ka dhigan tahay in tilmaamaha la fulinayo.
Ready. Xaaladda diyaarka ah, geeddi-socodku wuxuu diyaar u yahay inuu socdo, laakiin sababo qaar OS-gu ma fuliyo wakhtiga la cayimay.
Four. Xaaladda xanniban, nidaamku wuxuu fuliyaa hawlgallo ka hortagaya inuu diyaar u yahay inuu fuliyo ilaa ay dhacdo qaar ka mid ah. Mid ka mid ah tusaalaha caadiga ah ayaa ah marka hab-socodku bilaabo hawlgalka IO, wuxuu noqdaa mid xannibmay si hab kale oo kale uu u isticmaalo processor-ka.

Nidaamyada Hawlgelinta: Saddex Qaybood oo Fudud. Qaybta 2: Soo koobid: Habka (tarjumaada)

Waxaad qiyaasi kartaa goboladan qaab garaaf ah. Sida aan ku arki karno sawirka, nidaamka nidaamku wuxuu isku bedeli karaa inta u dhaxaysa RUNNING iyo READY ee go'aanka OS. Marka xaalada hawshu ay ka badasho DIYAAR U NOQOTO, waxay la macno tahay in habka loo qorsheeyay. Jihada ka soo horjeeda - laga saaray qaabka. Waqtigan xaadirka ah marka nidaamku noqdo mid la xannibay, tusaale ahaan, waxaan bilaabay hawlgalka IO, OS-gu wuxuu ku hayn doonaa xaaladdan ilaa ay dhacdo qaar ka mid ah, tusaale ahaan dhammaystirka IO. wakhtigan xaadirka ah u gudbida gobolka DIYAAR oo ay suurtogal tahay isla markiiba in loo gudbo gobolka RUNNING haddii OS uu go'aansado.
Bal aynu eegno tusaale sida ay laba hab-raac u maraan goboladan. Si aan u bilowno, aan qiyaasno in labada hab-raac ay socdaan, mid walbana uu isticmaalayo CPU-da oo keliya. Xaaladdan oo kale, gobolladoodu waxay u ekaan doonaan sidan.

Nidaamyada Hawlgelinta: Saddex Qaybood oo Fudud. Qaybta 2: Soo koobid: Habka (tarjumaada)

Tusaalaha soo socda, geeddi-socodka ugu horreeya, ka dib markii uu muddo socday, wuxuu codsadaa IO oo wuxuu galayaa gobolka LA XIRIYAY, taasoo u oggolaanaysa hab kale inuu socdo (FIG 1.4). OS-gu wuxuu arkayaa in habka 0 uusan isticmaalin CPU-ga oo uu bilaabo habka 1. Inta uu socdo habka 1, IO waa la dhammeeyaa oo heerka habka 0 wuxuu isu beddelaa READY. Ugu dambeyntii, habka 1 waa la dhammeeyey, marka la dhammeeyo, habka 0 wuxuu bilaabmaa, fuliyo, oo dhameeyaa shaqadiisa.

Nidaamyada Hawlgelinta: Saddex Qaybood oo Fudud. Qaybta 2: Soo koobid: Habka (tarjumaada)

Qaab dhismeedka xogta

OS laftiisu waa barnaamij, iyo sida barnaamij kasta oo kale, waxa uu leeyahay qaab-dhismeedka xogta muhiimka ah kuwaas oo la socda qaybaha kala duwan ee macluumaadka khuseeya. Si loola socdo xaaladda hab-socod kasta, OS-gu wuxuu taageeri doonaa qaar liiska habsocodka dhammaan geeddi-socodyada ka jira gobolka DIYAARIGA ah iyo xoogaa macluumaad dheeraad ah si loola socdo hababka hadda socda. Sidoo kale, OS-gu waa inuu la socdaa hababka xanniban. Ka dib marka IO la dhammeeyo, OS waa in uu toosiyaa habka loo baahan yahay oo uu geliyaa xaalad diyaar u ah in uu shaqeeyo.

Tusaale ahaan, OS waa inuu ilaaliyaa xaaladda diiwaannada processor-ka. Waqtigan xaadirka ah geeddi-socodku istaago, xaaladda diiwaannada ayaa lagu kaydiyaa goobta ciwaanka ee geeddi-socodka, iyo wakhtigan hawl-galkeedu sii socdo, qiyamka diiwaannada ayaa dib loo soo celiyay oo sidaas awgeed sii wadida fulinta habkan.

Marka laga soo tago maamul goboleedyada diyaarsan, xanniban, maamulaya, waxaa jira gobollo kale. Mararka qaarkood, wakhtiga abuurista, habraac ayaa laga yaabaa inuu ku jiro gobolka INIT. Ugu dambeyntii, nidaamka waxaa lagu dhejin karaa gobolka FINAL marka uu horey u dhammeeyey, laakiin xogtiisa weli lama nadiifin. Nidaamyada UNIX gobolkan waxaa loogu yeeraa habka zombie. Gobolkani wuxuu faa'iido u leeyahay kiisaska halka habka waalidku rabo inuu ogaado koodka soo celinta ilmaha, tusaale ahaan, badanaa 0 waxay calaamad u tahay guusha iyo 1 qalad, laakiin barnaamij-sameeyayaashu waxay soo saari karaan koodh wax soo saar oo dheeraad ah si ay u muujiyaan dhibaatooyin kala duwan. Marka nidaamka waalidku dhamaado, wuxuu sameeyaa wicitaanka ugu dambeeya, sida sugitaanka(), si loo sugo nidaamka ubadku dhameeyo oo ay u calaamadiyaan OS-ka inay nadiifin karaan xog kasta oo la xidhiidha habka la joojiyay.

Nidaamyada Hawlgelinta: Saddex Qaybood oo Fudud. Qaybta 2: Soo koobid: Habka (tarjumaada)

Qodobbada muhiimka ah ee muxaadarada:

habka - nuxurka ugu weyn ee barnaamijka socda ee OS. Waqti kasta, habka waxaa lagu sifeyn karaa xaaladdiisa: nuxurka xusuusta ee goobta ciwaanka, waxa ku jira diiwaanka processor-ka, oo ay ku jiraan tilmaame iyo tilmaame, iyo macluumaadka IO, sida faylasha furan oo la akhriyo ama la qoro.
Habka API wuxuu ka kooban yahay wicitaano ay barnaamijyadu sameyn karaan si ay u socodsiiyaan. Caadi ahaan kuwani waa abuur, tirtir, ama wicitaano kale.
Nidaamku waa mid ka mid ah gobollo badan, oo ay ku jiraan socodsiinta, diyaarsan, xanniban. Dhacdooyin kala duwan sida jadwalka, ka reebista jadwalka, ama sugitaanka ayaa bedeli kara xaalada geedi socodka midba midka kale.
Liiska habraaca ka kooban yahay macluumaadka ku saabsan dhammaan hababka nidaamka. Gelitaan kasta oo ka mid ah waxaa loo yaqaan block kantaroolka habka, taas oo dhab ahaantii ah qaab dhismeed ka kooban dhammaan macluumaadka lagama maarmaanka ah ee ku saabsan habka gaarka ah. 

Source: www.habr.com

Add a comment