Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 1: Intro (eadar-theangachadh)

Ro-ràdh gu siostaman-obrachaidh

Hi Habr! Bu mhath leam sreath de artaigilean a thoirt nad aire - eadar-theangachadh de aon litreachas inntinneach nam bheachd-sa - OSTEP. Tha an stuth seo a’ beachdachadh gu domhainn air obair shiostaman obrachaidh coltach ri unix, is e sin, obair le pròiseasan, diofar chlàran, cuimhne agus co-phàirtean eile den aon seòrsa a tha a’ dèanamh suas OS ùr-nodha. Chì thu an stuth tùsail uile an seo an seo. Thoir an aire gun deach an eadar-theangachadh a dhèanamh gu neo-phroifeasanta (gu math saor), ach tha mi an dòchas gun do ghlèidh mi am brìgh coitcheann.

Gheibhear obair-lann air a’ chuspair seo an seo:
- tùsail: pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- tùsail: github.com/remzi-arpacidusseau/ostep-code
- an atharrachadh pearsanta agam: github.com/bykvaadm/OS/tree/master/ostep

Faodaidh tu cuideachd sùil a thoirt air an t-sianal agam aig teileagram =)

Obrachadh prògram

Dè thachras nuair a bhios prògram a’ ruith? Bidh prògram ruith a 'dèanamh aon rud sìmplidh - bidh e a' cur an gnìomh stiùireadh. A h-uile diog, bidh am pròiseasar a ’faighinn milleanan agus eadhon is dòcha billeanan de stiùiridhean bho RAM, agus an uair sin bidh e gan còdachadh (mar eisimpleir, tha e ag aithneachadh dè an seòrsa a bhuineas don stiùireadh seo) agus gan cur an gnìomh. Dh’ fhaodadh seo a bhith a’ cur dà àireamh ris, a’ faighinn cothrom air cuimhne, a’ sgrùdadh suidheachadh, a’ leum gu gnìomh, agus mar sin air adhart. Às deidh aon stiùireadh a chuir an gnìomh, bidh am pròiseasar a ’dol air adhart gu bhith a’ coileanadh fear eile. Agus mar sin stiùireadh às deidh an stiùireadh, thèid an cur gu bàs gus an tig am prògram gu crìch.
Tha an eisimpleir seo air a mheas gu nàdarrach nas sìmplidhe - gu dearbh, gus am pròiseasar a luathachadh, leigidh bathar-cruaidh ùr-nodha leat stiùireadh a chuir an gnìomh a-mach à tionndadh, obrachadh a-mach toraidhean a dh’ fhaodadh a bhith ann, stiùireadh a chuir an gnìomh aig an aon àm, agus cleasan coltach ris.

Modail àireamhachd Von Neumann

Tha an cruth obrach nas sìmplidhe a mhìnich sinn coltach ris a’ mhodail coimpiutaireachd Von Neumann. Tha Von Neumann air aon de na tùsairean ann an siostaman coimpiutair, tha e cuideachd mar aon de na h-ùghdaran air teòiridh geama. Fhad ‘s a tha am prògram a’ ruith, bidh dòrlach de thachartasan eile a ’gabhail àite, mòran phròiseasan eile agus obair loidsig treas-phàrtaidh, is e am prìomh adhbhar aca cur air bhog, obrachadh agus cumail suas an t-siostam a dhèanamh nas sìmplidhe.
Tha seata de bhathar-bog ann a tha an urra ri prògraman a dhèanamh furasta an ruith (no eadhon leigeil le grunn phrògraman ruith aig an aon àm), a leigeas le prògraman an aon chuimhne a cho-roinn, agus conaltradh le diofar innealan. Canar an siostam obrachaidh ris a leithid de sheata de bhathar-bog (bathar-bog) agus tha na gnìomhan aige a’ toirt a-steach sgrùdadh gu bheil an siostam ag obair gu ceart agus gu h-èifeachdach, a bharrachd air dèanamh cinnteach gu bheil e furasta an siostam seo a riaghladh.

siostam-obrachaidh

Tha siostam obrachaidh, air a ghiorrachadh mar OS, na sheata de phrògraman eadar-cheangailte air an dealbhadh gus goireasan coimpiutair a riaghladh agus eadar-obrachadh luchd-cleachdaidh le coimpiutair a chuir air dòigh..
Bidh an OS a 'coileanadh a h-èifeachdais sa chiad àite, tron ​​​​innleachd as cudromaiche - an dòigh-obrach virtualization. Bidh an OS ag eadar-obrachadh le goireas fiosaigeach (pròiseasaran, cuimhne, diosc, msaa) agus ga thionndadh gu cruth dheth fhèin nas fharsainge, nas cumhachdaiche agus nas fhasa a chleachdadh. Mar sin, airson tuigse choitcheann, faodaidh tu gu math coimeas a dhèanamh eadar an siostam obrachaidh le inneal mas-fhìor.
Gus leigeil le luchd-cleachdaidh òrdughan a thoirt don t-siostam obrachaidh agus mar sin comasan an inneal brìgheil a chleachdadh (leithid a bhith a ’ruith prògram, a’ riarachadh cuimhne, a ’faighinn cothrom air faidhle, agus mar sin air adhart), tha an siostam obrachaidh a’ toirt seachad beagan eadar-aghaidh ris an canar API (eadar-aghaidh prògramadh tagraidh) agus ris an urrainn dhut fiosan a dhèanamh (gairm). Tha siostam obrachaidh àbhaisteach a’ ceadachadh ceudan de ghairmean siostam a dhèanamh.
Mu dheireadh, leis gu bheil virtualization a ’leigeil le grunn phrògraman ruith (mar sin a’ roinneadh an CPU), agus aig an aon àm faighinn chun stiùireadh agus an dàta aca (mar sin a ’roinneadh cuimhne), agus faighinn gu diosgan (mar sin a’ roinneadh innealan I / O). ), canar cuideachd an siostam obrachaidh mar a manaidsear ghoireasan. Tha gach pròiseasar, diosc agus cuimhne na ghoireas den t-siostam, agus mar sin bidh aon de dhleastanasan an t-siostaim obrachaidh gu bhith na dhleastanas air na goireasan sin a riaghladh, ga dhèanamh gu h-èifeachdach, gu h-onarach, no a chaochladh, a rèir na h-obrach airson a bheil an siostam obrachaidh seo. air a dhealbhadh.

Virtualization CPU

Beachdaich air a’ phrògram a leanas:
( https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be )

Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 1: Intro (eadar-theangachadh)

Cha bhith e a’ coileanadh gnìomhan sònraichte sam bith, gu dearbh, chan eil ann ach gnìomh a ghairm snìomh(), aig a bheil e mar dhleastanas rothaireachd tron ​​​​t-seic ùine agus tilleadh às deidh diog a dhol seachad. Mar sin, bidh e ag ath-aithris gun chrìoch an t-sreang a chuir an neach-cleachdaidh seachad mar argamaid.
Feuch an ruith sinn am prògram seo agus an caractar "A" a thoirt dha mar argamaid. Chan eil an toradh gu sònraichte inntinneach - bidh an siostam dìreach a ’cur an gnìomh prògram a bhios a’ taisbeanadh an caractar “A” bho àm gu àm.
A-nis feuchaidh sinn ris an roghainn nuair a tha iomadh suidheachadh den aon phrògram a’ ruith, ach a’ cur a-mach diofar litrichean gus a dhèanamh nas soilleire. Anns a 'chùis seo, bidh an toradh beagan eadar-dhealaichte. A dh 'aindeoin gu bheil aon phròiseasar againn, tha am prògram air a chur gu bàs aig an aon àm. Ciamar a tha e a’ tachairt? Ach tha e a 'tionndadh a-mach gu bheil an siostam-obrachaidh, chan ann às aonais cuideachadh bathar-cruaidh comasan, a' cruthachadh mealladh. An mealladh gu bheil grunn phròiseasan brìgheil aig an t-siostam, a ’tionndadh aon phròiseasar fiosaigeach gu àireamh gun chrìoch gu teòiridheach agus mar sin a’ leigeil le prògraman a rèir coltais ruith aig an aon àm. Canar am mealladh seo Virtualization CPU.
Tha an dealbh seo a’ togail mòran cheistean, mar eisimpleir, ma tha grunn phrògraman ag iarraidh ruith aig an aon àm, dè am fear a thèid a chuir air bhog? Tha uallach air “poileasaidhean” an OS airson a’ cheist seo. Tha poileasaidhean air an cleachdadh ann an iomadh àite san t-Suirbhidh Òrdanais agus freagair ceistean mar seo, agus is iad na dòighean bunaiteach a bhios an OS a’ cur an gnìomh. Mar sin tha dreuchd an OS mar mhanaidsear ghoireasan.

Virtualization cuimhne

A-nis leig dhuinn sùil a thoirt air cuimhne. Tha am modal corporra cuimhne ann an siostaman an latha an-diugh air a riochdachadh mar raon de bytes.. Gus leughadh bho chuimhne, feumaidh tu sònrachadh seòladh ceallagus faighinn thuige. Gus dàta a sgrìobhadh no ùrachadh, feumaidh tu cuideachd an dàta agus seòladh na cealla far an sgrìobh thu e a shònrachadh.
Bithear a’ faighinn cothrom air cuimhne an-còmhnaidh nuair a thèid am prògram a chur an gnìomh. Bidh prògram a’ stòradh a structar dàta gu lèir mar chuimhneachan agus a’ faighinn thuige le bhith a’ cur an gnìomh diofar stiùiridhean. Tha an stiùireadh, aig an aon àm, cuideachd air a stòradh mar chuimhne, agus mar sin gheibhear thuige airson gach iarrtas airson an ath stiùireadh.

malloc() call

Beachdaich air a’ phrògram a leanas, a bhios a’ riarachadh sgìre de chuimhne a’ cleachdadh a’ ghairm malloc () (https://youtu.be/jnlKRnoT1m0):

Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 1: Intro (eadar-theangachadh)

Bidh am prògram a’ dèanamh grunn rudan. An toiseach, bidh e a’ riarachadh beagan cuimhne (loidhne 7), an uairsin a’ clò-bhualadh seòladh na cealla ainmichte (loidhne 9), a’ sgrìobhadh neoni chun chiad slot den chuimhne ainmichte. An uairsin, bidh am prògram a’ dol a-steach do lùb anns am bi e ag àrdachadh an luach a tha air a stòradh sa chuimhne aig an t-seòladh anns a’ chaochladair “p”. Bidh e cuideachd a 'clò-bhualadh ID pròiseas fhèin. Tha an ID pròiseas gun samhail airson gach pròiseas ruith. Às deidh grunn leth-bhreacan a chuir air bhog, gheibh sinn toradh inntinneach: Anns a ’chiad chùis, mura dèan thu dad agus dìreach a’ ruith grunn leth-bhreacan, bidh na seòlaidhean eadar-dhealaichte. Ach chan eil seo a 'tighinn fo ar teòiridh! Ceart, leis gu bheil cuairteachadh cuimhne air a chomasachadh gu bunaiteach ann an sgaoilidhean an latha an-diugh. Ma tha e ciorramach, gheibh sinn an toradh ris a bheil dùil - bidh seòlaidhean cuimhne dà phrògram a bhios a’ ruith aig an aon àm a’ maidseadh.

Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 1: Intro (eadar-theangachadh)

Mar thoradh air an sin, tha e coltach gu bheil dà phrògram neo-eisimeileach ag obair leis na h-àiteachan seòlaidh prìobhaideach aca fhèin, a tha iad fhèin air am mapadh leis an t-siostam obrachaidh ann an cuimhne corporra.. Mar sin, cha toir cleachdadh seòlaidhean cuimhne taobh a-staigh aon phrògram buaidh air daoine eile ann an dòigh sam bith, agus tha e coltach do gach prògram gu bheil a phìos cuimhne corporra fhèin aige, gu tur air a thoirt dha. Is e an fhìrinn, ge-tà, gu bheil cuimhne corporra na ghoireas co-roinnte air a riaghladh leis an t-siostam obrachaidh.

Co-chòrdadh

Is e fear eile de na cuspairean cudromach taobh a-staigh siostaman obrachaidh - cunbhalachd. Tha an teirm seo air a chleachdadh nuair a bhios tu a’ bruidhinn mu dhuilgheadasan san t-siostam a dh’ fhaodadh tachairt nuair a bhios tu ag obair le mòran rudan aig an aon àm taobh a-staigh an aon phrògram. Bidh cùisean cunbhalachd ag èirigh eadhon taobh a-staigh an t-siostam obrachaidh fhèin. Anns na h-eisimpleirean virtualization cuimhne agus pròiseasar roimhe, thuig sinn gu bheil an OS a ’riaghladh mòran rudan aig an aon àm - bidh e a’ tòiseachadh a ’chiad phròiseas, an uairsin an dàrna fear, agus mar sin air adhart. Mar a thionndaidh e, faodaidh an giùlan seo leantainn gu cuid de dhuilgheadasan. Mar sin, mar eisimpleir, bidh prògraman ioma-snàithlean an latha an-diugh a’ faighinn duilgheadasan mar sin.

Beachdaich air a’ phrògram a leanas:

Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 1: Intro (eadar-theangachadh)

Bidh am prògram sa phrìomh ghnìomh a’ cruthachadh dà snàithlean a’ cleachdadh a’ ghairm pthread_cruthaich(). Anns an eisimpleir seo, faodar smaoineachadh air snàithlean mar ghnìomh a’ ruith san aon àite cuimhne ri taobh gnìomhan eile, le gu soilleir barrachd air aon gnìomh a’ ruith aig an aon àm. Anns an eisimpleir seo, bidh gach snàithlean a 'tòiseachadh agus a' coileanadh a 'ghnìomh neach-obrach () a tha an uair sin dìreach ag àrdachadh an caochladair,.

Feuch an ruith sinn am prògram seo le argamaid de 1000. Mar a shaoileadh tu, bu chòir gum biodh an toradh 2000 oir mheudaich gach snàthainn an caochlaideach 1000 uair. Ach, chan eil a h-uile dad cho sìmplidh. Feuchaidh sinn ris a 'phrògram a ruith le òrdugh meudachd barrachd ath-aithris.

Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 1: Intro (eadar-theangachadh)

Le bhith a 'toirt a-steach àireamh, mar eisimpleir, 100000, tha sinn an dùil an toradh fhaicinn mar an àireamh 200000. Ach, ma ruitheas sinn an àireamh 100000 grunn thursan, chan e a-mhàin gum faic sinn am freagairt ceart, ach cuideachd gheibh sinn freagairtean ceàrr eadar-dhealaichte. Tha am freagairt na laighe anns an fhìrinn gu bheil feum air trì obrachaidhean airson an àireamh àrdachadh - a 'toirt a-mach an àireamh bho chuimhne, àrdachadh, agus an uairsin a' sgrìobhadh an àireamh air ais. Leis nach eil na stiùiridhean sin uile air an cur an gnìomh gu atamach (uile aig an aon àm), faodaidh rudan neònach mar seo tachairt. Canar an duilgheadas seo ann am prògramadh suidheachadh rèis. Nuair a dh’ fhaodadh feachdan neo-aithnichte aig àm neo-aithnichte buaidh a thoirt air coileanadh na h-obrach agad.

Source: www.habr.com

Cuir beachd ann