Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 1: Intro (unuhi)

Hoʻolauna i nā ʻōnaehana hana

E Habr! Makemake au e hoʻopuka i kou manaʻo i nā ʻatikala-unuhi o kahi palapala hoihoi i koʻu manaʻo - OSTEP. Kūkākūkā hohonu kēia mea i ka hana o nā ʻōnaehana unix-like, ʻo ia hoʻi, ka hana me nā kaʻina hana, nā mea hoʻonohonoho like ʻole, ka hoʻomanaʻo a me nā mea like ʻē aʻe i kūkulu i kahi OS hou. Hiki iā ʻoe ke ʻike i ke kumu o nā mea a pau ma aneʻi maanei. E ʻoluʻolu e hoʻomaopopo ʻoe ua hana ʻia ka unuhi me ka ʻole o ka ʻoihana (me ke kūʻokoʻa), akā ke manaʻo nei au ua paʻa ka manaʻo nui.

Hiki ke loaʻa ka hana lab ma kēia kumuhana ma aneʻi:
- kumu: pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- kumu: github.com/remzi-arpacidusseau/ostep-code
- koʻu hoʻololi pilikino: github.com/bykvaadm/OS/tree/master/ostep

Hiki iā ʻoe ke nānā i kaʻu channel ma telegram =)

Hana papahana

He aha ka hana ke holo ka polokalamu? Hoʻokahi mea maʻalahi kahi polokalamu holo - hoʻokō i nā kuhikuhi. I kēlā me kēia kekona, miliona a hiki i nā piliona o nā ʻōlelo aʻoaʻo e kiʻi ʻia e ka kaʻina hana mai RAM, a laila e hoʻokaʻawale iā lākou (no ka laʻana, ʻike ia i ke ʻano o kēia mau kuhikuhi) a hoʻokō iā lākou. Hiki i kēia ke hoʻohui i ʻelua helu, ke komo ʻana i ka hoʻomanaʻo, nānā i kahi kūlana, lele i kahi hana, a pēlā aku. Ma hope o ka hoʻokō ʻana i hoʻokahi aʻo, hoʻomaka ka mea hana i ka hoʻokō ʻana o kekahi. A pēlā ke aʻo ʻana ma hope o ke aʻo ʻana, hoʻokō ʻia lākou a pau ka papahana.
ʻO kēia hiʻohiʻona i manaʻo maoli ʻia he maʻalahi - ʻoiaʻiʻo, no ka wikiwiki ʻana i ka kaʻina hana, ʻae nā lako hana hou iā ʻoe e hoʻokō i nā ʻōlelo aʻoaʻo ma waho o ka huli ʻana, helu i nā hopena hiki, hoʻokō i nā kuhikuhi i ka manawa like, a me nā hoʻopunipuni like.

ʻO Von Neumann kumu hoʻohālikelike

ʻO ke ʻano maʻalahi o ka hana i wehewehe ʻia e mākou e like me ke ʻano hoʻohālikelike Von Neumann o ka helu. ʻO Von Neumann kekahi o nā paionia o nā ʻōnaehana kamepiula, ʻo ia kekahi o nā mea kākau o ka manaʻo pāʻani. ʻOiai e holo ana ka papahana, hana ʻia kahi pūʻulu o nā hanana ʻē aʻe, nui nā kaʻina hana ʻē aʻe a me nā hana logic ʻaoʻao ʻekolu, ʻo ke kumu nui o ia e hoʻomaʻamaʻa i ka hoʻomaka ʻana, ka hana a me ka mālama ʻana i ka ʻōnaehana.
Aia kekahi pūʻulu lako polokalamu i kuleana no ka hana maʻalahi o nā polokalamu e holo (a i ʻole ka ʻae ʻana i nā polokalamu he nui e holo i ka manawa hoʻokahi), e hiki ai i nā polokalamu ke kaʻana like i ka hoʻomanaʻo like, a ke kamaʻilio pū me nā mea like ʻole. ʻO ia pūʻulu polokalamu (polokalamu) i kapa ʻia ʻo ka ʻōnaehana hana a me kāna mau hana e pili ana i ka nānā ʻana i ka hana pololei a me ka maikaʻi o ka ʻōnaehana, a me ka hōʻoia ʻana i ka maʻalahi o ka hoʻokele ʻana i kēia ʻōnaehana.

pae'ōnaehana nenoaiu

ʻO kahi ʻōnaehana hana, i hoʻopau ʻia ma ke ʻano he OS, he pūʻulu o nā papahana pili i hoʻolālā ʻia e mālama i nā kumuwaiwai kamepiula a hoʻonohonoho i ka pilina mea hoʻohana me kahi kamepiula..
Loaʻa ka OS i kona pono ma ka mua, ma o ka ʻenehana koʻikoʻi - ka ʻenehana virtualization. Hoʻopili ka OS me kahi kumuwaiwai kino (mea hana, hoʻomanaʻo, disk, a me nā mea ʻē aʻe) a hoʻololi iā ia i ʻano maʻamau, ʻoi aku ka ikaika, a me ka maʻalahi o ka hoʻohana ʻana iā ia iho. No laila, no ka ʻike maʻamau, hiki iā ʻoe ke hoʻohālikelike i ka ʻōnaehana hana me kahi mīkini virtual.
I mea e ʻae ai i nā mea hoʻohana e hāʻawi i nā kauoha i ka ʻōnaehana hana a pēlā e hoʻohana ai i nā hiki o ka mīkini virtual (e like me ka holo ʻana i kahi papahana, ka hoʻokaʻawale ʻana i ka hoʻomanaʻo, ke komo ʻana i kahi faila, a pēlā aku), hāʻawi ka ʻōnaehana hana i kekahi interface i kapa ʻia. API (ka polokalamu polokalamu polokalamu) a i hiki iā ʻoe ke kelepona (kahea). Hiki i kahi ʻōnaehana hana maʻamau ke hana i nā haneli o nā kelepona ʻōnaehana.
ʻO ka mea hope loa, no ka mea hiki i ka virtualization ke holo i nā polokalamu he nui (pēlā e kaʻana like i ka CPU), a komo i kā lākou mau ʻōlelo aʻoaʻo a me nā ʻikepili i ka manawa like (pēlā kaʻana like ʻana i ka hoʻomanaʻo), a me ka loaʻa ʻana o nā disks (pēlā e kaʻana like i nā polokalamu I/O). ), kapa ʻia ka ʻōnaehana hana he luna waiwai. ʻO kēlā me kēia kaʻina hana, disk a me ka hoʻomanaʻo he kumu waiwai ia o ka ʻōnaehana, a no laila ua lilo kekahi o nā kuleana o ka ʻōnaehana hana i ka hana o ka hoʻokele ʻana i kēia mau kumuwaiwai, e hana maikaʻi ana, ʻoiaʻiʻo, a i ʻole, ma muli o ka hana a kēia ʻōnaehana hana. ua hoʻolālā ʻia.

ʻO ka hoʻonaʻauao CPU

E noʻonoʻo i kēia polokalamu:
(https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be)

Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 1: Intro (unuhi)

ʻAʻole ia e hana i nā hana kūikawā, ʻoiaʻiʻo, ʻo nā mea a pau e kapa ʻia he hana milo(), ʻo kāna hana ke kaʻapuni i ka nānā manawa a hoʻi ma hope o ka hala ʻana o hoʻokahi kekona. No laila, hoʻopaʻa mau ʻo ia i ke kaula i hala i ka mea hoʻohana.
E holo kāua i kēia polokalamu a hāʻawi i ke ʻano "A" ma ke ʻano he hoʻopaʻapaʻa. ʻAʻole hoihoi loa ka hopena - hoʻokō wale ka ʻōnaehana i kahi papahana e hōʻike pinepine i ke ʻano "A".
I kēia manawa, e hoʻāʻo kāua i ke koho inā e holo ana nā manawa he nui o ka papahana like, akā e hoʻopuka ana i nā leka ʻokoʻa i mea e maopopo ai. I kēia hihia, ʻokoʻa ka hopena. ʻOiai ka loaʻa iā mākou hoʻokahi kaʻina hana, hoʻokō ʻia ka papahana i ka manawa like. Pehea e hiki mai ai? Akā ua hoʻololi ʻia ka ʻōnaehana hana, ʻaʻole me ke kōkua ʻole o nā mana lako, hana i kahi hoʻopunipuni. ʻO ka manaʻo hoʻopunipuni he nui nā kaʻina hana virtual, e hoʻohuli i kahi kaʻina hana kino hoʻokahi i kahi helu theoretically pau ʻole a laila e ʻae i nā polokalamu e holo like i ka manawa like. Kapa ʻia kēia hoʻopunipuni ʻO ka hoʻopololei CPU.
Ke hāpai nei kēia kiʻi i nā nīnau he nui, no ka laʻana, inā makemake kekahi mau polokalamu e holo i ka manawa like, ʻo wai ka mea e hoʻomaka? ʻO nā "kulekele" o ka OS ke kuleana no kēia nīnau. Hoʻohana ʻia nā kulekele ma nā wahi he nui i ka OS a pane i nā nīnau e like me kēia, a ʻo ia nā ʻano hana kumu a ka OS e hoʻokō ai. No laila ke kuleana o ka OS ma ke ʻano he mea hoʻokele waiwai.

ʻO ka hoʻomanaʻo virtualization

I kēia manawa e nānā kākou i ka hoʻomanaʻo. Hōʻike ʻia ke ʻano hoʻohālike kino o ka hoʻomanaʻo i nā ʻōnaehana hou ma ke ʻano he ʻano bytes.. No ka heluhelu ʻana mai ka hoʻomanaʻo, pono ʻoe e wehewehe helu keleponae komo aku. No ke kākau a hoʻohou i ka ʻikepili, pono ʻoe e kuhikuhi i ka ʻikepili a me ka helu wahi o ke kelepona kahi e kākau ai.
Hoʻohana mau ʻia ka hoʻomanaʻo i ka wā e hoʻokō ai ka papahana. Mālama kekahi polokalamu i kona ʻano ʻikepili holoʻokoʻa i ka hoʻomanaʻo a loaʻa iā ia ma ka hoʻokō ʻana i nā ʻōlelo kuhikuhi like ʻole. ʻO nā ʻōlelo aʻo, ʻo ia hoʻi, mālama ʻia i ka hoʻomanaʻo, no laila ke komo pū ʻia no kēlā me kēia noi no ke aʻo aʻe.

malloc() kelepona

E noʻonoʻo i ka papahana aʻe, e hoʻokaʻawale i kahi ʻāpana o ka hoʻomanaʻo me ka hoʻohana ʻana i ke kelepona malloc () (https://youtu.be/jnlKRnoT1m0):

Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 1: Intro (unuhi)

Hana ka polokalamu i kekahi mau mea. ʻO ka mua, hoʻokaʻawale i kahi hoʻomanaʻo (laina 7), a laila paʻi i ka helu wahi o ka cell i hoʻokaʻawale ʻia (laina 9), kākau ʻole i ka slot mua o ka hoʻomanaʻo i hāʻawi ʻia. A laila, hoʻokomo ka polokalamu i kahi loop kahi e hoʻonui ai i ka waiwai i mālama ʻia i ka hoʻomanaʻo ma ka helu wahi ma ka helu "p". Paʻi pū ia i ka ID kaʻina hana nona iho. He kū hoʻokahi ka ID kaʻina no kēlā me kēia kaʻina holo. Ma hope o ka hoʻokuʻu ʻana i kekahi mau kope, e hina mākou i kahi hopena hoihoi: I ka hihia mua, inā ʻaʻole ʻoe e hana a holo wale i nā kope, a laila ʻokoʻa nā ʻōlelo. Akā ʻaʻole hāʻule kēia ma lalo o kā mākou kumumanaʻo! Pololei, no ka mea, ua hoʻohana ʻia ka hoʻomanaʻo randomization ma ka paʻamau. Inā paʻa ʻole, loaʻa iā mākou ka hopena i manaʻo ʻia - e kūlike nā helu hoʻomanaʻo o nā papahana ʻelua e holo ana i ka manawa like.

Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 1: Intro (unuhi)

ʻO ka hopena, ua ʻike ʻia ʻelua mau papahana kūʻokoʻa e hana pū me kā lākou mau wahi kikoʻī pilikino, a ma ka ʻaoʻao e kahakaha ʻia e ka ʻōnaehana hana i ka hoʻomanaʻo kino.. No laila, ʻo ka hoʻohana ʻana i nā helu hoʻomanaʻo i loko o ka papahana hoʻokahi, ʻaʻole ia e hoʻopilikia i nā mea ʻē aʻe ma kekahi ʻano, a me he mea lā i kēlā me kēia papahana aia kāna ʻāpana hoʻomanaʻo kino, hāʻawi piha ʻia iā ia. ʻO ka mea ʻoiaʻiʻo, ʻo ka hoʻomanaʻo kino he kumu waiwai i mālama ʻia e ka ʻōnaehana hana.

Kūlike

ʻO kekahi o nā kumuhana koʻikoʻi i loko o nā ʻōnaehana hana ʻo − kūlike. Hoʻohana ʻia kēia huaʻōlelo i ka wā e kamaʻilio ai e pili ana i nā pilikia i loko o ka ʻōnaehana hiki ke hana i ka wā e hana ai me nā mea he nui i ka manawa like i loko o ka papahana like. Hiki mai nā pilikia kūlike i loko o ka ʻōnaehana hana ponoʻī. I ka hoʻomanaʻo mua a me ka processor virtualization examples, ua ʻike mākou e hoʻokele ka OS i nā mea he nui i ka manawa like - hoʻomaka ia i ka hana mua, a laila ka lua, a pēlā aku. E like me ka mea i ʻike ʻia, hiki i kēia ʻano ke alakaʻi i kekahi mau pilikia. No laila, no ka laʻana, ʻike nā papahana multi-threaded i kēia mau pilikia.

E noʻonoʻo i kēia polokalamu:

Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 1: Intro (unuhi)

Hoʻokumu ka papahana i ka hana nui i ʻelua mau kaula me ka hoʻohana ʻana i ke kelepona pthread_create(). Ma kēia laʻana, hiki ke noʻonoʻo ʻia kahi pae ma ke ʻano he hana e holo ana ma ka lumi hoʻomanaʻo like me nā hana ʻē aʻe, me ka maopopo o nā hana ʻoi aku ma mua o hoʻokahi i ka manawa like. Ma kēia laʻana, hoʻomaka kēlā me kēia pae a hoʻokō i ka hana worker() e hoʻonui wale i ka loli,.

E holo kāua i kēia polokalamu me ka hoʻopaʻapaʻa o 1000. E like me kāu i manaʻo ai, ʻo ka hopena he 2000 no ka mea ua hoʻonui kēlā me kēia pae i ka loli 1000 manawa. Eia naʻe, ʻaʻole maʻalahi nā mea a pau. E ho'āʻo kākou e holo i ka papahana me kahi ʻano o ka nui o nā hana hou.

Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 1: Intro (unuhi)

Ma ka hoʻokomo ʻana i kahi helu, no ka laʻana, 100000, manaʻo mākou e ʻike i ka hopena e like me ka helu 200000. Eia naʻe, inā mākou e holo i ka helu 100000 i nā manawa he nui, ʻaʻole mākou e ʻike wale i ka pane pololei, akā loaʻa pū kekahi mau pane hewa ʻole. Aia ka pane ma ka ʻoiaʻiʻo e hoʻonui i ka helu, pono ʻekolu mau hana - e unuhi i ka helu mai ka hoʻomanaʻo, hoʻonui, a laila kākau i ka helu i hope. No ka mea, ʻaʻole hoʻokō ʻia kēia mau ʻōlelo aʻoaʻo a pau i ka manawa hoʻokahi, hiki ke hana ʻia nā mea like ʻole. Kapa ʻia kēia pilikia ma ka hoʻolālā kūlana lāhui. Inā hiki i nā pūʻali ʻike ʻole i ka manawa ʻike ʻole ke hoʻopilikia i ka hana o kekahi o kāu mau hana.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka