Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 1: Hordhac (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:

Waxa kale oo aad ka hubin kartaa kanaalkayga telegram =)

Hawlgalka barnaamijka

Maxaa dhacaya marka barnaamijku socdo? Barnaamijka socda wuxuu sameeyaa hal shay oo fudud - wuxuu fuliyaa tilmaamaha. Ilbiriqsi kasta, malaayiin iyo xitaa balaayiin tilmaamo ah ayaa processor-ku ka soo celiya RAM, isna wuu kala saaraa (tusaale ahaan, wuxuu aqoonsanayaa nooca tilmaamahan ay leeyihiin) wuuna fulinayaa. Tani waxay noqon kartaa in lagu daro laba lambar, helitaanka xusuusta, hubinta xaalad, u boodi shaqo, iyo wixii la mid ah. Kadib fulinta hal tilmaam, processor-ku wuxuu sii wadaa inuu fuliyo mid kale. Oo sidaas darteed tilmaamaha ka dib edbinta, waxaa la fuliyay ilaa barnaamijku ka dhammaanayo.

Tusaalahan si dabiici ah ayaa loo tixgaliyaa in la fududeeyay - dhab ahaantii, si loo dedejiyo processor-ka, qalabka casriga ah wuxuu kuu oggolaanayaa inaad fuliso tilmaamaha, xisaabinta natiijooyinka suurtagalka ah, fuliso tilmaamaha isku mar, iyo tabaha la midka ah.

Von Neumann qaabka xisaabinta

Qaabka shaqada ee la fududeeyay ee aan ku sharaxnay waxay la mid tahay qaabka Von Neumann ee xisaabinta. Von Neumann waa mid ka mid ah hormuudka nidaamyada kombiyuutarada, sidoo kale waa mid ka mid ah qorayaasha aragtida ciyaarta.. Inta barnaamijku socdo, waxaa dhacaya dhacdooyin kale oo fara badan, habab kale oo badan iyo shaqo macquul ah oo dhinac saddexaad ah, ujeedada ugu weyn ee taas oo ah in la fududeeyo bilaabista, hawlgalka iyo dayactirka nidaamka.

Waxa jira barnaamij kombuyuutar ah oo ka masuul ah samaynta barnaamijyada si fudud loo socodsiin karo (ama xitaa u oggolaada barnaamijyo badan inay isku mar wada shaqeeyaan), taas oo u oggolaanaysa barnaamijyadu inay wadaagaan xusuusta isku mid ah, iyo inay la xidhiidhaan aalado kala duwan. Qalabka softiweerka ah (software) waxaa asal ahaan loogu yeeraa nidaamka hawlgalka, hawlihiisana waxaa ka mid ah la socodka in nidaamku si sax ah oo hufan u shaqeeyo, iyo sidoo kale hubinta in nidaamku fudud yahay in la maareeyo.

nidaamka hawlgalka

Nidaamka hawlgalka, oo loo soo gaabiyo OS, waa barnaamij isku xidhan oo loogu talagalay in lagu maareeyo agabka kombayutarka iyo habaynta isdhexgalka isticmaalaha kombiyuutarka..

OS-gu wuxuu ku guuleystaa waxtarkiisa marka hore, iyada oo loo marayo farsamada ugu muhiimsan - farsamada mala-awaalid. OS-gu waxa uu la falgalaa agab jidheed (processor, memory, disk, iwm.) oo waxa uu u beddelaa mid guud, ka xoog badan, oo si sahlan loo isticmaali karo laftiisa. Sidaa darteed, fahamka guud, waxaad si aad ah u barbar dhigi kartaa nidaamka qalliinka iyo mashiinka farsamada.

Si loogu oggolaado dadka isticmaala inay amarro ku siiyaan nidaamka hawlgalka oo ay sidaas u isticmaalaan awoodda mashiinka farsamada (sida socodsiinta barnaamijka, qoondaynta xusuusta, gelitaanka faylka, iyo wixii la mid ah), nidaamka qalliinka wuxuu bixiyaa qaar ka mid ah interface loo yaqaan. API (application programming interface) oo aad wici karto (waci karto). Nidaamka hawlgalka caadiga ah wuxuu u oggolaanayaa boqolaal wicitaan oo habaysan in la sameeyo.

Ugu dambeyntiina, maadaama qaab-dhismeedka ay u ogolaato barnaamijyo badan inay socodsiiyaan (sidaas la wadaago CPU), isla markaana isla mar ahaantaana u galaan tilmaamahooda iyo xogtooda (sidaas la wadaaga xusuusta), iyo helitaanka saxanadaha (sidaas la wadaago aaladaha I/O)), nidaamka hawlgalka waxaa sidoo kale loo yaqaan maamulaha kheyraadka. Processor kasta, disk kasta iyo xusuusta waa kaydka nidaamka, sidaas darteed mid ka mid ah doorarka nidaamka hawlgalka ayaa noqda hawsha maaraynta agabyadaas, u samaynta si hufan, daacad ah, ama lid ku ah, iyada oo ku xidhan hawsha uu nidaamkan ku shaqaynayo. ayaa loo qaabeeyey.

Farsamaynta CPU

Tixgeli barnaamijkan soo socda:
(https://www.youtube.com/watch?v=zDwT5fUcki4)

Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 1: Hordhac (tarjumaad)

Ma qabato wax ficil ah oo gaar ah, dhab ahaantii, waxa kaliya ee ay qabato waa shaqo Lataliyihii(), kuwaas oo hawshoodu tahay in ay wareegaan wakhtiga hubinta oo ay soo noqdaan ka dib hal ilbiriqsi ka dib. Markaa, waxay si aan xad lahayn ugu soo noqnoqonaysaa xadhigga isticmaaluhu u gudbiyay dood ahaan.

Aan socodsiino barnaamijkan oo aan u gudbinno jilaha "A" oo dood ahaan ah. Natiijadu maaha mid xiiso gaar ah leh - nidaamku si fudud ayuu u fuliyaa barnaamij kaas oo xilliyada qaarkood muujinaya dabeecadda "A".

Hadda aan isku dayno ikhtiyaarka marka dhacdooyin badan oo isku mid ah ay socdaan, laakiin soo saarista xarfo kala duwan si aan u caddayno. Xaaladdan, natiijadu waxay noqon doontaa waxoogaa ka duwan. In kasta oo xaqiiqda ah in aan leenahay hal processor, barnaamijka waa la fuliyay isku mar. Sidee u dhacdaa? Laakiin waxay soo baxday in nidaamka hawlgalka, ma aha iyada oo aan la helin caawinta awoodaha qalabka, waxay abuurtaa dhalanteed. dhalanteedka ah in nidaamku leeyahay soo-saareyaal badan oo farsamaysan, isaga oo hal processor-ka u beddelaya tiro aan la qiyaasi karin oo aragti ahaan, taas oo u oggolaanaysa barnaamijyada u muuqda inay isku mar wada socdaan. dhalanteedkan waxaa la yiraahdaa Farsamaynta CPU.

Sawirkaani wuxuu dhalinayaa su'aalo badan, tusaale ahaan, haddii dhowr barnaamij ay rabaan inay isku mar wada shaqeeyaan, keebaa la bilaabayaa? "siyaasadaha" OS ayaa ka mas'uul ah su'aashan. Siyaasadaha waxaa lagu isticmaalaa meelo badan oo OS ah waxayna ka jawaabaan su'aalaha sidan oo kale ah, waana hababka aasaasiga ah ee OS uu fuliyo. Markaa doorka OS maamule kheyraad ahaan.

Farsamaynta xusuusta

Hadda aynu eegno xusuusta. Qaabka jireed ee xusuusta ee hababka casriga ah waxaa lagu matalaa sida soo koobid bytes.. Si aad wax uga akhrido xusuusta, waxaad u baahan tahay inaad qeexdo cinwaanka unuggasi ay u helaan. Si aad u qorto ama aad u cusboonaysiiso xogta, waa in aad sidoo kale sheegtaa xogta iyo ciwaanka unugga halka laga qorayo.

Xusuusta si joogto ah ayaa loo galaa inta barnaamijka la fulinayo. Barnaamijku wuxuu kaydiyaa qaab-dhismeedkiisa xogta oo dhan xusuusta wuxuuna geliyaa isagoo fulinaya tilmaamo kala duwan. Tilmaamaha, dhanka kale, sidoo kale, waxaa lagu kaydiyaa xusuusta, sidaas darteed waxaa sidoo kale la geliyaa codsi kasta ee tilmaamaha soo socda.

malloc() wac

Tixgeli barnaamijka soo socda, kaas oo u qoondaynaya gobolka xusuusta adoo isticmaalaya wicitaanka malloc () (https://youtu.be/jnlKRnoT1m0):

Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 1: Hordhac (tarjumaad)

Barnaamijku wuxuu qabtaa dhowr waxyaalood. Marka hore, waxay u qoondaysaa xoogaa xusuusta ah (line 7), ka dibna waxay daabacdaa ciwaanka unugga la qoondeeyay (line 9), wuxuu u qoraa eber booska koowaad ee xusuusta loo qoondeeyay. Marka xigta, barnaamijku wuxuu galaa wareeg ah kaas oo uu ku kordhinayo qiimaha lagu kaydiyo xusuusta ee ciwaanka ku jira doorsoomiyaha "p". Waxa kale oo ay daabacdaa aqoonsiga habka laftiisa. Aqoonsiga nidaamku waa mid gaar u ah geedi socod kasta. Ka dib markii la bilaabay dhowr nuqul, waxaan ku turunturoon doonaa natiijo xiiso leh: Xaaladda ugu horeysa, haddii aadan waxba samayn oo kaliya dhowr nuqul ka mid ah, ka dibna ciwaanadu way ka duwanaan doonaan. Laakiin tani kuma hoos dhacayso aragtidayada! Sax, maadaama qaybinta casriga ahi ay leedahay kala-soocidda xusuusta oo si toos ah u suurtogelisay. Haddii ay naafo tahay, waxaan helnaa natiijada la filayo - cinwaannada xusuusta ee laba barnaamij oo isku mar wada socda ayaa iswaafajin doona.

Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 1: Hordhac (tarjumaad)

Natiijo ahaan, waxay soo baxday in laba barnaamij oo madax-bannaan ay ku shaqeeyaan meelo ciwaankooda gaarka ah, kuwaas oo iyaguna lagu sawiray nidaamka hawlgalka ee xusuusta jireed.. Sidaa darteed, adeegsiga cinwaannada xusuusta hal barnaamij gudaheeda sinaba uma saameynayso dadka kale, waxayna ula muuqataa barnaamij kasta inuu leeyahay qayb xusuusta jirka ah, oo gebi ahaanba la siiyay. Xaqiiqdu, si kastaba ha ahaatee, waa in xusuusta jireed ay tahay kheyraad la wadaago oo uu maamulo nidaamka hawlgalka.

Joogteynta

Mid ka mid ah mawduucyada muhiimka ah ee nidaamyada hawlgalka waa - joogtayn. Ereygan waxaa loo isticmaalaa marka laga hadlayo dhibaatooyinka nidaamka ee dhici kara marka la shaqeynayo waxyaabo badan oo isku mid ah isla barnaamijka dhexdiisa. Arrimaha joogtada ah ayaa ka soo baxa xitaa nidaamka hawlgalka laftiisa. Tusaalooyinka xusuusta hore iyo processor-ka, waxaan ogaanay in OS-gu uu wax badan maamulo isla waqti isku mid ah - wuxuu bilaabaa habka ugu horreeya, ka dibna kan labaad, iyo wixii la mid ah. Sida ay soo baxday, dhaqankani wuxuu u horseedi karaa dhibaatooyin qaar. Marka, tusaale ahaan, barnaamijyada casriga ah ee taxanaha badan waxay la kulmaan dhibaatooyinkan oo kale.

Tixgeli barnaamijkan soo socda:

Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 1: Hordhac (tarjumaad)

Barnaamijka ku jira shaqada ugu weyn wuxuu abuuraa laba xadhig isagoo isticmaalaya wicitaanka phread_abuur (). Tusaalahan, duntu waxa loo malayn karaa inay tahay shaqo ku dhex socota isla meel xusuusta ah oo ay barbar socoto hawlo kale, iyada oo si cad ay in ka badan hal shaqo u socoto isku mar. Tusaalahan, dun kastaa waxay bilaabataa oo fulinaysaa shaqada shaqaale () taas oo iyana si fudud u kordhinaysa doorsoomayaasha,.

Aan ku wadno barnaamijkan doodda 1000. Sida aad qiyaasi lahayd, natiijadu waa inay noqotaa 2000 sababtoo ah dun kasta waxay kordhisay doorsoomiyaha 1000 jeer. Si kastaba ha ahaatee, wax walba maahan mid fudud. Aynu isku dayno in aan barnaamijka ku socodsiino sida ay u kala horreeyaan ku celcelin badan.

Nidaamyada Hawlaha: Saddex Qaybood oo Fudud. Qaybta 1: Hordhac (tarjumaad)

Marka la gelinayo nambar, tusaale ahaan, 100000, waxaan fileynaa inaan u aragno wax soo saarka lambarka 200000. Si kastaba ha ahaatee, haddii aan wadno lambarka 100000 dhowr jeer, kaliya ma arki doonno jawaabta saxda ah, laakiin sidoo kale waxaan heleynaa jawaabo khaldan oo kala duwan. Jawaabtu waxay ku jirtaa xaqiiqda ah in tirada la kordhiyo, saddex hawlgal ayaa loo baahan yahay - ka soo saarida lambarka xusuusta, kordhinta, ka dibna dib u qor lambarka. Maadaama dhammaan tilmaamahan aan loo fulin atomically (dhammaantood isku mar), waxyaabo yaab leh oo sidan oo kale ah ayaa dhici kara. Dhibaatadan waxaa lagu magacaabaa barnaamijka xaalad jinsiyadeed. Marka xoogag aan la garanayn wakhti aan la garanayn waxay saamayn ku yeelan karaan waxqabadka mid kasta oo ka mid ah hawlgalladaada.

Source: www.habr.com

Add a comment