Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 2: Abstraction: Kaʻina hana (unuhi)

Hoʻolauna i nā ʻōnaehana hana

E Habr! Makemake wau e lawe i kou manaʻo i kahi ʻ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 hana 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:

Nā ʻāpana ʻē aʻe:

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

E nānā kākou i ka abstraction kumu nui loa a ka OS e hāʻawi ai i nā mea hoʻohana: ke kaʻina hana. He mea maʻalahi ka wehewehe ʻana o ke kaʻina hana - ʻo ia papahana holo. ʻO ka polokalamu ponoʻī he mea ola ʻole i loaʻa ma ka disk - he hoʻonohonoho ia o nā ʻōlelo aʻoaʻo a hiki paha i kekahi mau static data e kali nei e hoʻokuʻu ʻia. ʻO ia ka OS e lawe i kēlā mau bytes a holo iā lākou, e hoʻololi i ka papahana i mea pono.
ʻO ka pinepine, makemake nā mea hoʻohana e holo ʻoi aku ma mua o hoʻokahi papahana i ka manawa like, no ka laʻana, hiki iā ʻoe ke holo i kahi polokalamu kele, pāʻani, mea pāʻani media, hoʻoponopono kikokikona, a me nā mea like ma kāu kamepiula. ʻO ka ʻoiaʻiʻo, hiki i kahi ʻōnaehana maʻamau ke holo i nā ʻumi a i ʻole haneli mau kaʻina hana i ka manawa like. ʻO kēia ʻoiaʻiʻo e maʻalahi ka hoʻohana ʻana i ka ʻōnaehana, ʻaʻole ʻoe e hopohopo e pili ana inā manuahi ka CPU, holo wale ʻoe i nā polokalamu.

Hoʻonui kēia i ka pilikia: pehea e hāʻawi ai i ka hoʻopunipuni o nā CPU he nui? Pehea e hiki ai i ka OS ke hana i ka hoʻopunipuni o ka helu kokoke pau ʻole o nā CPU, ʻoiai inā hoʻokahi wale nō CPU kino kāu?

Hoʻokumu ka OS i kēia hoʻopunipuni ma o ka virtualization CPU. Ma ka hoʻomaka ʻana i hoʻokahi kaʻina hana, a laila hoʻōki iā ia, hoʻomaka i kahi kaʻina hana, a pēlā aku, hiki i ka OS ke mālama i ka illusion he nui nā CPU virtual, inā ʻoiaʻiʻo e loaʻa i hoʻokahi a i ʻole nā ​​​​mea hana kino. Kapa ʻia kēia ʻenehana mahele o ka CPU waiwai ma ka manawa. Hāʻawi kēia ʻenehana i nā mea hoʻohana e holo i nā kaʻina hana like e like me kā lākou makemake. ʻO ke kumukūʻai o kēia hoʻonā ka hana - no ka mea inā e kaʻana like ka CPU e nā kaʻina hana, e hoʻolohi ʻia kēlā me kēia kaʻina hana.
No ka hoʻokō ʻana i ka virtualization CPU, a ʻoi aku ka maikaʻi o ka hana ʻana, pono ka OS i ke kākoʻo haʻahaʻa a me ke kākoʻo kiʻekiʻe. Kāhea ʻia ke kākoʻo haʻahaʻa haʻahaʻa nā mīkini he mau ala haʻahaʻa a i ʻole protocol e hoʻokō i ka ʻāpana pono o ka hana. ʻO kahi hiʻohiʻona o ia hana ʻo ka hoʻololi ʻana i ka pōʻaiapili, kahi e hāʻawi ai i ka OS i ka hiki ke hoʻōki i kahi papahana a holo i kahi papahana ʻē aʻe ma ka papa hana. Hoʻokō ʻia kēia māhele manawa i nā ʻōnaehana hana hou a pau.
Aia ma luna o kēia mau ʻenehana kekahi loiloi i kūkulu ʻia i loko o ka OS, ma ke ʻano o "nā kulekele". ʻikepili he algorithm hoʻoholo no ka ʻōnaehana hana. ʻO ia mau kulekele, no ka laʻana, e hoʻoholo i ka papahana e hoʻomaka mua (mai kahi papa inoa o nā kauoha). No laila, no ka laʻana, e hoʻopau ʻia kēia pilikia e kahi kulekele i kapa ʻia mea hoʻonohonoho (kulekele hoʻonohonoho) a i ke koho ʻana i kahi hoʻonā, e alakaʻi ʻia ia e nā ʻikepili e like me: moʻolelo hoʻomaka (ʻo ia ka papahana i hoʻokuʻu ʻia i ka lōʻihi loa i nā minuke hope), he aha ka ukana a kēia kaʻina hana (he aha nā ʻano o nā papahana i hoʻokuʻu ʻia), nā metric hana (inā paha ka ʻōnaehana. ʻoi aku ka maikaʻi no ka launa pū ʻana a i ʻole ka throughput ) a pēlā aku.

Abstraction: kaʻina hana

ʻO ka abstraction o kahi papahana holo i hoʻokō ʻia e ka ʻōnaehana hana ka mea a mākou i kapa ai kaʻina. E like me ka mea i ʻōlelo mua ʻia, ʻo ke kaʻina hana he polokalamu holo wale nō, i kēlā me kēia manawa koke. He polokalamu e hiki ai iā mākou ke loaʻa ka ʻike hōʻuluʻulu mai nā kumuwaiwai ʻōnaehana like ʻole i komo ai kēia polokalamu i ka wā e hoʻokō ai.
No ka hoʻomaopopo ʻana i nā ʻāpana o ke kaʻina hana, pono ʻoe e hoʻomaopopo i nā mokuʻāina o ka ʻōnaehana: ka mea hiki ke heluhelu a hoʻololi paha ka papahana i kāna hana. I kēlā me kēia manawa, pono ʻoe e hoʻomaopopo i nā mea o ka ʻōnaehana i mea nui no ka hoʻokō ʻana i ka papahana.
ʻO kekahi o nā mea i ʻike ʻia o ka ʻōnaehana e hōʻike ana i ke kaʻina hana hoʻomanaʻo. Aia nā kuhikuhi ma ka hoʻomanaʻo. Aia ka ʻikepili i heluhelu ʻia a kākau ʻia e ka papahana ma ka hoʻomanaʻo. No laila, ʻo ka hoʻomanaʻo e hiki ai i kahi kaʻina ke hoʻoponopono (i kapa ʻia ʻo address space) he ʻāpana o ke kaʻina hana.
ʻO kekahi ʻāpana o ka mokuʻāina ʻo nā papa inoa. Nui nā ʻōlelo kuhikuhi e hoʻololi i ka waiwai o nā papa inoa a i ʻole ka heluhelu ʻana i ko lākou waiwai, a no laila ua lilo nā papa inoa i mea nui o ka hana o ke kaʻina hana.
Pono e hoʻomaopopo ʻia ua hoʻokumu ʻia ka mokuʻāina mīkini mai kekahi mau papa inoa kūikawā. ʻo kahi laʻana, IP - kuhikuhi kuhikuhi - he kuhikuhi i ke aʻo a ka papahana e hoʻokō nei. Aia kekahi ahu kuhikuhi a pili pū me ia kuhi kuhi, i hoʻohana ʻia no ka hoʻokele ʻana: nā ʻāpana hana, nā mea hoʻololi kūloko a me nā helu hoʻihoʻi.
ʻO ka hope, loaʻa pinepine nā polokalamu iā ROM (memo heluhelu-wale). Pono kēia ʻike "I/O" (input/output) i kahi papa inoa o nā faila i wehe ʻia e ke kaʻina hana.

API hana

I mea e hoʻomaikaʻi ai i ko mākou ʻike i ke ʻano o ke kaʻina hana, e aʻo kākou i nā hiʻohiʻona o nā kelepona ʻōnaehana pono e hoʻokomo ʻia i loko o kēlā me kēia kikowaena ʻōnaehana hana. Loaʻa kēia mau API ma kahi ʻano a i ʻole ma kekahi OS.

Hoʻoulu (hana): Pono ka OS e hoʻokomo i kekahi ala e hiki ai iā ʻoe ke hana i nā kaʻina hana hou. Ke hoʻokomo ʻoe i kahi kauoha i ka pahu a hoʻomaka paha i kahi noi ma ke kaomi pālua ʻana i kahi ikona, hoʻouna ʻia kahi kelepona i ka OS e hana i kahi kaʻina hana hou a laila hoʻomaka i ka papahana i kuhikuhi ʻia.
Hoʻopau: No ka loaʻa ʻana o kahi kikowaena no ka hana ʻana i kahi kaʻina hana, pono e hāʻawi ka OS i ka hiki ke hoʻoikaika i ka wehe ʻana i kahi kaʻina hana. ʻO ka hapa nui o nā polokalamu e hoʻomaka a hoʻopau iā lākou iho ke holo lākou. A i ʻole, makemake ka mea hoʻohana e pepehi iā lākou a no laila e pono ai kahi interface e hoʻōki i ke kaʻina hana.
kali (kali): I kekahi manawa he mea pono ke kali i kahi kaʻina hana, no laila ua hāʻawi ʻia kekahi mau interface e hāʻawi i ka hiki ke kali.
Manaʻo Misc (ka mana like ʻole): Ma waho aʻe o ka pepehi ʻana a me ke kali ʻana i ke kaʻina hana, aia kekahi mau ʻano hoʻokele like ʻole. No ka laʻana, hāʻawi ka hapa nui o nā ʻōnaehana hana i ka hiki ke hoʻokuʻu i kahi kaʻina hana (hoʻopau i kāna hana no kekahi manawa) a laila hoʻomaka hou (e hoʻomau i ka hana)
kūlana (ka mokuʻāina): Aia nā ʻokoʻa like ʻole no ka loaʻa ʻana o kekahi ʻike e pili ana i ke kūlana o kahi kaʻina hana, e like me ka lōʻihi o ka holo ʻana a i ʻole ke kūlana i kēia manawa.

Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 2: Abstraction: Kaʻina hana (unuhi)

Kaʻina Hana: Nā kikoʻī

ʻO kekahi o nā mea hoihoi, ʻo ia ke ʻano o ka hoʻololi ʻana o nā polokalamu i nā kaʻina hana. ʻOi aku ka maikaʻi o ke kiʻi ʻana o ka OS a holo i ka papahana. Pehea i hana ʻia ai ke kaʻina hana.
ʻO ka mea mua, pono ka OS e hoʻouka i ka code program a me ka ʻikepili static i loko o ka hoʻomanaʻo (i loko o ke kaʻina wahi address). Aia nā polokalamu ma kahi diski a i ʻole ka moku paʻa i kekahi ʻano hoʻokō. No laila, ʻo ke kaʻina o ka hoʻouka ʻana i ka polokalamu a me ka ʻikepili static i ka hoʻomanaʻo e pono ai i ka OS ke heluhelu i kēlā mau bytes mai ka disk a waiho iā lākou ma kahi o ka hoʻomanaʻo.

I nā ʻōnaehana hana mua, ua hana ʻia ka hoʻouka ʻana me ka makemake, ʻo ia hoʻi ua hoʻouka ʻia ke code holoʻokoʻa i ka hoʻomanaʻo ma mua o ka hoʻomaka ʻana o ka papahana. Hana nā ʻōnaehana hana hou i kēia me ka palaualelo, ʻo ia hoʻi, ka hoʻouka ʻana i nā ʻāpana code a i ʻole nā ​​​​ʻikepili wale nō ke koi ʻia ka papahana i ka wā e hoʻokō ai.

Ke hoʻouka ʻia ka code a me ka ʻikepili static i ka hoʻomanaʻo OS, aia kekahi mau mea e pono e hana ma mua o ka holo ʻana o ke kaʻina hana. Pono e hoʻokaʻawale ʻia kekahi nui o ka hoʻomanaʻo no ka waihona. Hoʻohana nā papahana i ka waihona no nā mea hoʻololi kūloko, nā ʻāpana hana, a me nā helu hoʻihoʻi. Hāʻawi ka OS i kēia hoʻomanaʻo a hāʻawi iā ia i ke kaʻina hana. Hiki ke hoʻokaʻawale ʻia ka waihona me kekahi mau hoʻopaʻapaʻa, ʻo ia hoʻi e hoʻopiha i nā ʻāpana o ka hana nui (), no ka laʻana me kahi ʻano argc a me argv.

Hiki i ka ʻōnaehana hana ke hoʻokaʻawale i kekahi hoʻomanaʻo i ka puʻu papahana. Hoʻohana ʻia ka puʻu e nā polokalamu e noi pono i ka ʻikepili i hoʻokaʻawale ʻia. Noi nā polokalamu i kēia wahi ma ke kāhea ʻana i ka hana malloc () a hoʻomaʻemaʻe maopopo ʻia ma ke kāhea ʻana i ka hana manuahi(). Pono ka puʻu no nā hale ʻikepili e like me nā lau i hoʻopili ʻia, nā papa hash, nā kumulāʻau a me nā mea ʻē aʻe. I ka wā mua, ua hoʻokaʻawale ʻia kahi hoʻomanaʻo liʻiliʻi i ka puʻu, akā i ka wā e holo ana ka papahana, hiki i ka puʻu ke noi hou aku i ka hoʻomanaʻo ma o ka waihona API call malloc(). Hoʻopili ka ʻōnaehana hana i ke kaʻina o ka hoʻokaʻawale ʻana i ka hoʻomanaʻo hou aʻe e kōkua i ka hoʻokō ʻana i kēia mau kelepona.

E hana pū ka ʻōnaehana hana i nā hana hoʻomaka, ʻoi aku ka pili i ka I/O. No ka laʻana, ma nā ʻōnaehana UNIX, loaʻa i kēlā me kēia kaʻina ma ke ʻano he 3 wehewehe wehewehe faila, no ka hoʻokomo maʻamau, ka hoʻopuka, a me ka hewa. Hāʻawi kēia mau lima i nā polokalamu e heluhelu i ka hoʻokomo mai ka pahu a me ka hōʻike ʻana i ka ʻike ma ka pale.

No laila, ma ka hoʻouka ʻana i nā code a me nā ʻikepili static i ka hoʻomanaʻo, ka hana ʻana a me ka hoʻomaka ʻana i ka waihona, a me ka hana ʻana i nā hana ʻē aʻe e pili ana i ka hana ʻana i nā hana I/O, hoʻomākaukau ka OS i ke kahua no ke kaʻina hana. ʻO ka hope, aia kahi hana hope i koe: e holo ana i ka papahana ma kona wahi komo, i kapa ʻia ʻo ka hana nui (). Ma ka hoʻokō ʻana i ka hana nui (), hoʻololi ka OS i ka mana CPU i ke kaʻina hana hou, no laila hoʻomaka ka papahana e hoʻokō.

Kaʻina hana

I kēia manawa ua ʻike mākou i ke ʻano o ke kaʻina hana a pehea i hana ʻia ai, e papa inoa i ke kaʻina hana i hiki ke komo i loko. Ma kāna ʻano maʻalahi, hiki ke hana i kekahi o kēia mau mokuʻāina:
holo. Ke holo nei, holo ke kaʻina hana ma luna o ka processor. ʻO ia hoʻi ke hoʻokō ʻia nei nā kuhikuhi.
makaukau. I ka mākaukau mākaukau, ua mākaukau ke kaʻina hana, akā no kekahi kumu ʻaʻole hoʻokō ka OS i ka manawa i ʻōlelo ʻia.
Kuʻeʻia. Ma ka moku'āina i ho'opa'a 'ia, hana kekahi ka'ina hana i mea e pale ai i ka mākaukau e ho'okō a hiki i kekahi hanana. ʻO kekahi laʻana maʻamau i ka wā e hoʻomaka ai kahi kaʻina hana i kahi hana IO, ua paʻa ia i hiki i kekahi kaʻina hana ke hoʻohana i ka kaʻina hana.

Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 2: Abstraction: Kaʻina hana (unuhi)

Hiki iā ʻoe ke noʻonoʻo i kēia mau mokuʻāina ma ke ʻano o ka pakuhi. E like me kā mākou e ʻike ai ma ke kiʻi, hiki ke loli ke kaʻina hana ma waena o RUNNING a READY ma ka manaʻo o ka OS. Ke hoʻololi ke kūlana o kahi kaʻina hana mai READY a RUNNING, ʻo ia hoʻi, ua hoʻonohonoho ʻia ke kaʻina hana. Ma ka ʻaoʻao ʻē aʻe - wehe ʻia mai ka hoʻolālā. I ka manawa i BLOCKED kahi kaʻina hana, no ka laʻana, hoʻomaka wau i kahi hana IO, e mālama ka OS i kēia mokuʻāina a hiki i kekahi hanana, no ka laʻana ka hoʻopau ʻana o IO. i kēia manawa ka hoʻololi ʻana i ke kūlana READY a hiki koke i ke kūlana RUNNING inā hoʻoholo ka OS.
E nānā kākou i kekahi laʻana o ka neʻe ʻana o nā kaʻina hana ʻelua ma kēia mau mokuʻāina. No ka hoʻomaka ʻana, e noʻonoʻo kākou e holo ana nā kaʻina ʻelua, a hoʻohana kēlā me kēia i ka CPU wale nō. Ma keia hihia, e like me keia ko lakou mokuaina.

Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 2: Abstraction: Kaʻina hana (unuhi)

Ma kēia laʻana, ʻo ke kaʻina hana mua, ma hope o ka holo ʻana o kekahi manawa, noi iā IO a komo i ka mokuʻāina BLOCKED, e ʻae i kahi kaʻina hana e holo (FIG 1.4). ʻIke ka OS i ka hoʻohana ʻole ʻana o ke kaʻina 0 i ka CPU a hoʻomaka i ke kaʻina hana 1. ʻOiai ke holo nei ke kaʻina hana 1, ua hoʻopau ʻia ʻo IO a hoʻololi ke kūlana o ke kaʻina 0 i READY. ʻO ka hope, ua pau ke kaʻina hana 1, a i ka pau ʻana, hoʻomaka ka hana 0, hoʻokō, a hoʻopau i kāna hana.

Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 2: Abstraction: Kaʻina hana (unuhi)

Hoʻolālā ʻikepili

He polokalamu ka OS pono'ī, a e like me nā papahana ʻē aʻe, aia kekahi mau ʻano ʻikepili koʻikoʻi e mālama i nā ʻāpana ʻike pili. No ka hahai ʻana i ke kūlana o kēlā me kēia kaʻina hana, e kākoʻo ka OS i kekahi papa inoa hana no nā kaʻina hana a pau ma ka mokuʻāina READY a me kekahi mau ʻike hou e nānā i nā kaʻina hana e holo nei. Eia kekahi, pono e nānā ka OS i nā kaʻina hana i hoʻopaʻa ʻia. Ma hope o ka hoʻopau ʻana o IO, pono e hoʻāla ka OS i ke kaʻina hana a hoʻokomo iā ia i kahi kūlana mākaukau e holo.

No ka laʻana, pono e mālama ka OS i ke kūlana o nā mea hoʻopaʻa inoa. I ka manawa e pau ai ke kaʻina hana, mālama ʻia ka mokuʻāina o nā papa inoa ma ka wahi o ke kaʻina hana, a i ka manawa e hoʻomau ai kāna hana, hoʻihoʻi ʻia nā waiwai o nā papa inoa a pēlā e hoʻomau ai i ka hoʻokō ʻana i kēia kaʻina hana.

Ma waho aʻe o ka mākaukau, paʻa, holo mokuʻāina, aia kekahi mau mokuʻāina ʻē aʻe. I kekahi manawa, i ka manawa o ka hana ʻana, aia paha kahi kaʻina hana ma ka mokuʻāina INIT. ʻO ka hope, hiki ke hoʻokomo i kahi kaʻina hana i ka mokuʻāina FINAL i ka wā i pau ai, akā ʻaʻole i holoi ʻia kāna ʻike. Ma nā pūnaewele UNIX ua kapa ʻia kēia mokuʻāina kaʻina hana zombie. Pono kēia moku'āina no nā hihia kahi e makemake ai ka hana makua e ʻike i ke code hoʻihoʻi o kahi keiki, no ka laʻana, ʻo ka maʻamau 0 ka hōʻailona i ka holomua a me ka 1 he hewa, akā hiki i nā mea polokalamu ke hoʻopuka i nā code hoʻopuka hou e hōʻailona i nā pilikia like ʻole. Ke hoʻopau ke kaʻina hana makua, hana ia i kahi kelepona ʻōnaehana hope loa, e like me ke kali (), e kali i ke kaʻina hana o ke keiki e hoʻopau a hōʻailona i ka OS hiki iā ia ke hoʻomaʻemaʻe i nā ʻikepili e pili ana i ke kaʻina hana.

Nā Pūnaehana Hana: ʻEkolu Māmā Māmā. Mahele 2: Abstraction: Kaʻina hana (unuhi)

Nā mea nui o ka haʻiʻōlelo:

kaʻina - ka abstraction nui o kahi papahana holo i ka OS. I kēlā me kēia manawa, hiki ke wehewehe ʻia ke kaʻina hana e kona mokuʻāina: nā ʻike o ka hoʻomanaʻo ma kāna wahi helu wahi, nā ʻike o nā papa inoa o ka mea hana, me ka pointer aʻoaʻo a me ka pointer stack, a me ka ʻike IO, e like me nā faila wehe e heluhelu ʻia a kākau ʻia paha.
API hana aia nā kelepona i hiki i nā polokalamu ke hana i nā kaʻina hana. ʻO ka mea maʻamau kēia mau mea hana, holoi, a i ʻole kelepona ʻē aʻe.
● Aia ke kaʻina hana ma kekahi o nā mokuʻāina he nui, me ka holo ʻana, mākaukau, paʻa. Hiki i nā hanana like ʻole e like me ka hoʻonohonoho ʻana, nā ʻokoʻa mai ka hoʻonohonoho ʻana, a i ʻole nā ​​kali ke hoʻololi i ke kūlana o kahi kaʻina hana mai kekahi i kekahi.
Papa papa hana loaʻa nā ʻike e pili ana i nā kaʻina hana āpau i ka ʻōnaehana. Ua kapa ʻia kēlā me kēia komo ʻana he papa hoʻomalu kaʻina hana, ʻo ia hoʻi he hale i loaʻa nā ʻike āpau e pili ana i kahi kaʻina hana. 

Source: www.habr.com

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