Córais Oibriúcháin: Trí Phíosa Éasca. Cuid 1: Intro (aistriúchán)

Réamhrá ar Chórais Oibriúcháin

Dia duit, Habr! Ba mhaith liom a chur i láthair d'aird sraith alt-aistriúcháin ar litríocht amháin atá suimiúil i mo thuairim - OSTEP. Scrúdaíonn an t-ábhar seo obair na gcóras oibriúcháin atá cosúil le unix go domhain, eadhon, obair le próisis, sceidealóirí éagsúla, cuimhne agus comhpháirteanna eile dá samhail a chomhdhéanann OS nua-aimseartha. Is féidir leat bunchóip na n-ábhar go léir a fheiceáil anseo anseo. Tabhair faoi deara go ndearnadh an t-aistriúchán go neamhghairmiúil (go leor faoi shaoirse), ach tá súil agam gur choinnigh mé an bhrí ghinearálta.

Is féidir obair saotharlainne ar an ábhar seo a fháil anseo:
- bunaidh: pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- bunaidh: github.com/remzi-arpacidusseau/ostep-code
- mo oiriúnú pearsanta: github.com/bykvaadm/OS/tree/master/ostep

Is féidir leat mo chainéal a sheiceáil freisin ag teileagram =)

Oibriú cláir

Cad a tharlaíonn nuair a bhíonn clár ar siúl? Déanann clár reatha rud simplí amháin - déanann sé treoracha. Gach soicind, déanann an próiseálaí na milliúin agus fiú b'fhéidir na billiúin treoracha a aisghabháil ó RAM, ina dhiaidh sin díchódaíonn sé iad (mar shampla, aithníonn sé cén cineál lena mbaineann na treoracha seo) agus déanann sé iad a fhorghníomhú. D’fhéadfaí dhá uimhir a shuimiú, rochtain a fháil ar chuimhne, riocht a thástáil, léim chuig feidhm, agus mar sin de. Tar éis treoir amháin a chríochnú, bogann an próiseálaí ar aghaidh go dtí ceann eile a fhorghníomhú. Agus mar sin teagasc tar éis an teagaisc, déantar iad a fhorghníomhú go dtí go dtiocfaidh deireadh leis an gclár.
Breathnaítear ar an sampla seo go nádúrtha ar bhealach simplithe - go deimhin, chun an próiseálaí a bhrostú, ligeann crua-earraí nua-aimseartha duit treoracha a fhorghníomhú as seicheamh, torthaí féideartha a ríomh, treoracha a fhorghníomhú ag an am céanna, agus cleasanna dá samhail.

Múnla ríomha Von Neumann

Tá an fhoirm oibríochta simplithe a bhfuil cur síos déanta againn uirthi cosúil le samhail ríomhaireachta Von Neumann. Tá Von Neumann ar dhuine de cheannródaithe na gcóras ríomhaireachta, tá sé ar dhuine de na húdair teoiric cluiche freisin. Cé go bhfuil an clár ar siúl, tarlaíonn go leor imeachtaí eile, tá go leor próisis eile agus loighic tríú páirtí ar siúl, agus is é an príomhchuspóir atá acu seoladh, oibriú agus cothabháil an chórais a shimpliú.
Tá sraith bogearraí ann atá freagrach as cláir a dhéanamh éasca le rith (nó fiú ligean do ilchláir a reáchtáil ag an am céanna), rud a ligeann do chláir an chuimhne chéanna a roinnt, chomh maith le cumarsáid a dhéanamh le gléasanna éagsúla. Tugtar córas oibriúcháin ar a leithéid de bhogearraí (bogearraí) go bunúsach agus áirítear lena chúraimí monatóireacht a dhéanamh go n-oibríonn an córas i gceart agus go héifeachtach, chomh maith le héascaíocht bhainistíocht an chórais seo a chinntiú.

Córas oibriúcháin

Is sraith de chláir idirnasctha é córas oibriúcháin, arna ghiorrú mar OS, atá deartha chun acmhainní ríomhaireachta a bhainistiú agus idirghníomhaíocht úsáideora leis an ríomhaire a eagrú..
Baineann an OS a éifeachtúlacht amach go príomha tríd an teicníc is tábhachtaí - teicneolaíocht fíorúlú. Idirghníomhaíonn an OS le hacmhainn fhisiciúil (próiseálaí, cuimhne, diosca, etc.) agus athraíonn sé go foirm de féin atá níos ginearálta, níos cumasaí agus níos éasca le húsáid. Mar sin, chun tuiscint ghinearálta a fháil, is féidir leat córas oibriúcháin a chur i gcomparáid go garbh le meaisín fíorúil.
D'fhonn ligean d'úsáideoirí orduithe a thabhairt don chóras oibriúcháin agus mar sin úsáid a bhaint as cumais an mheaisín fíorúil (mar: clár a rith, cuimhne a leithdháileadh, rochtain a fháil ar chomhad, agus mar sin de), soláthraíonn an córas oibriúcháin comhéadan ar a dtugtar API (comhéadan ríomhchláraithe feidhmchláir) agus ar féidir glaonna a dhéanamh chuige. Ligeann gnáthchóras oibriúcháin duit na céadta glaonna córais a dhéanamh.
Ar deireadh, toisc go gceadaíonn fíorúlú cláir iolracha a rith (ar an gcaoi sin an LAP a roinnt), agus rochtain a fháil ag an am céanna ar a dtreoracha agus ar a sonraí (ar an gcaoi sin cuimhne a roinnt), agus ar dhioscaí rochtana (feistí I/O a roinnt dá réir) ), tugtar acmhainn ar an gcóras oibriúcháin freisin. bainisteoir. Is acmhainn de chuid an chórais é gach próiseálaí, diosca agus cuimhne agus mar sin is é ceann de róil an chórais oibriúcháin an tasc a bhaineann leis na hacmhainní seo a bhainistiú, é a dhéanamh go héifeachtach, go cothrom nó, ar a mhalairt, ag brath ar an tasc a bhfuil an córas oibriúcháin ag baint leis. deartha.

Fíorúlú LAP

Smaoinigh ar an gclár seo a leanas:
( https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be )

Córais Oibriúcháin: Trí Phíosa Éasca. Cuid 1: Intro (aistriúchán)

Ní fheidhmíonn sé aon ghníomhartha speisialta; go deimhin, is é an rud a dhéanann sé ná feidhm a thabhairt casadh(), a bhfuil de chúram air an t-am a sheiceáil go timthriallach agus filleadh ar ais tar éis soicind amháin a bheith caite. Mar sin, déanann sé arís gan stad an teaghrán a rith an t-úsáideoir mar argóint.
Rithfimid an clár seo agus cuirimis an tsiombail “A” air mar argóint. Níl an toradh thar a bheith suimiúil - ní dhéanann an córas ach clár a thaispeánann an tsiombail “A” ar an scáileán go tréimhsiúil.
Anois, déanaimis iarracht an rogha nuair a sheoltar go leor cásanna den chlár céanna, ach ag taispeáint litreacha éagsúla, chun é a dhéanamh níos soiléire. Sa chás seo, beidh an toradh beagán difriúil. In ainneoin go bhfuil próiseálaí amháin againn, ritheann an clár ag an am céanna. Conas a tharlaíonn sé seo? Ach tharlaíonn sé go raibh an córas oibriúcháin, ní gan cabhair ó na cumais crua-earraí, cruthaíonn illusion. Is é an míthuiscint go bhfuil ilphróiseálaithe fíorúla i gcóras, ag iompú próiseálaí fisiceach amháin go uimhir atá gan teorainn go teoiriciúil agus mar sin a ligeann do chláir rith go comhuaineach de réir dealraimh. Tugtar an illusion seo Fíorúlú LAP.
Ardaíonn an pictiúr seo go leor ceisteanna, mar shampla, má tá roinnt clár ag iarraidh a reáchtáil ag an am céanna, ansin cén ceann a sheolfar? Tá “polasaithe” OS freagrach as an gceist seo. Úsáidtear beartais i go leor áiteanna san OS agus freagraíonn siad ceisteanna mar seo, chomh maith le bheith mar mheicníochtaí bunúsacha a chuireann an OS i bhfeidhm. Mar sin ról an OS mar bhainisteoir acmhainní.

Fíorúlú cuimhne

Anois, déanaimis breathnú ar chuimhne. Léirítear samhail fhisiciúil na cuimhne i gcórais nua-aimseartha mar eagar beart. Chun léamh ó chuimhne ní mór duit a shonrú seoladh cillechun rochtain a fháil air. Chun sonraí a scríobh nó a nuashonrú, ní mór duit na sonraí agus seoladh na cille a shonrú freisin.
Tarlaíonn rochtain chuimhne i gcónaí le linn cur i gcrích an chláir. Stórálann clár a struchtúr sonraí iomlán i gcuimhne agus faigheann sé rochtain air trí threoracha éagsúla a fhorghníomhú. Idir an dá linn, déantar treoracha a stóráil sa chuimhne freisin, mar sin tá rochtain air freisin le haghaidh gach iarratas ar an gcéad teagasc eile.

Ag glaoch ar malloc()

Smaoinigh ar an gclár seo a leanas, a leithdháileann réimse cuimhne ag baint úsáide as an glaoch malloc () ( https://youtu.be/jnlKRnoT1m0 ):

Córais Oibriúcháin: Trí Phíosa Éasca. Cuid 1: Intro (aistriúchán)

Déanann an clár roinnt rudaí. Gcéad dul síos, leithdháileann sé roinnt cuimhne (líne 7), priontaí ansin seoladh na cille leithdháilte (líne 9), scríobhann nialas go dtí an chéad sliotán den chuimhne leithdháilte. Ansin, téann an clár lúb isteach ina ardaíonn sé an luach atá stóráilte sa chuimhne ag an seoladh san athróg “p”. Taispeánann sé freisin ID an phróisis féin. Tá ID an phróisis uathúil do gach próiseas reatha. Tar éis roinnt cóipeanna a sheoladh, tiocfaimid ar thoradh suimiúil: Sa chéad chás, mura ndéanaimid rud ar bith agus gan ach roinnt cóipeanna a sheoladh, beidh na seoltaí difriúil. Ach ní thagann sé seo faoinár dteoiric! Fíor, toisc go bhfuil randamacht cuimhne cumasaithe ag dáiltí nua-aimseartha de réir réamhshocraithe. Má dhíchumasaíonn tú é, faighimid an toradh ionchais - beidh seoltaí cuimhne dhá chlár a ritheann go comhuaineach ag an am céanna.

Córais Oibriúcháin: Trí Phíosa Éasca. Cuid 1: Intro (aistriúchán)

Is é an toradh atá air ná go n-oibríonn dhá chlár neamhspleácha lena spásanna seoltaí príobháideacha féin, a ndéanann an córas oibriúcháin iad a mhapáil sa chuimhne fhisiciúil.. Mar sin, ní dhéanfaidh úsáid seoltaí cuimhne laistigh de chlár amháin difear do dhaoine eile ar bhealach ar bith, agus is cosúil go bhfuil a phíosa cuimhne fisiceach féin ag gach clár, go hiomlán ar fáil dó. Is é fírinne an scéil, áfach, gur acmhainn roinnte í cuimhne fhisiciúil atá á bhainistiú ag an gcóras oibriúcháin.

Comhsheasmhacht

Ábhar tábhachtach eile laistigh de chórais oibriúcháin is ea comhsheasmhacht. Úsáidtear an téarma seo nuair a bhíonn tú ag caint faoi fhadhbanna córais a d’fhéadfadh tarlú agus tú ag obair le go leor rudaí ag an am céanna laistigh d’aon chlár amháin. Tarlaíonn fadhbanna comhsheasmhachta fiú laistigh den chóras oibriúcháin féin. Sna samplaí roimhe seo le fíorúlú cuimhne agus próiseálaí, thuig muid go ndéanann an OS a lán rudaí a bhainistiú ag an am céanna - seolann an chéad phróiseas, ansin an dara ceann, agus mar sin de. Mar a tharlaíonn sé, is féidir roinnt fadhbanna a bheith mar thoradh ar an iompar seo. Mar shampla, bíonn deacrachtaí den sórt sin ag cláir nua-aimseartha il-snáithithe.

Smaoinigh ar an gclár seo a leanas:

Córais Oibriúcháin: Trí Phíosa Éasca. Cuid 1: Intro (aistriúchán)

Cruthaíonn an clár sa phríomhfheidhm dhá snáithe ag baint úsáide as an nglao Pthread_create(). Sa sampla seo, is féidir smaoineamh ar snáithe mar fheidhm a ritheann sa spás cuimhne céanna in aice le feidhmeanna eile, agus is léir go bhfuil níos mó ná feidhm amháin ag rith ag an am céanna. Sa sampla seo, tosaíonn agus feidhmíonn gach snáithe feidhm oibrí() rud a mhéadaíonn an athróg go simplí,.

Déanaimis an clár seo a reáchtáil le hargóint de 1000. Mar a d'fhéadfá a bheith buille faoi thuairim, ba cheart go mbeadh an toradh 2000, ós rud é gur mhéadaigh gach snáithe an t-athróg 1000 uair. Mar sin féin, níl gach rud chomh simplí. Déanaimis iarracht an clár a rith le hord méide níos mó athrá.

Córais Oibriúcháin: Trí Phíosa Éasca. Cuid 1: Intro (aistriúchán)

Trí uimhir a ionchur, mar shampla, 100000, táimid ag súil go bhfeicfidh an t-aschur uimhir 200000. Mar sin féin, tríd an uimhir 100000 a reáchtáil arís agus arís eile, ní hamháin ní fheicfimid an freagra ceart, ach gheobhaidh muid freagraí míchearta éagsúla freisin. Is é an freagra atá ar an bhfíric go dteastaíonn trí oibríocht chun líon a mhéadú - an uimhir a aisghabháil ón gcuimhne, é a mhéadú, agus ansin an uimhir a scríobh ar ais. Ós rud é nach ndéantar na treoracha seo go léir a fhorghníomhú go atomach (go léir ag an am céanna), is féidir rudaí aisteach mar seo a tharlóidh. Tugtar an fhadhb seo i ríomhchlárú riocht cine - race condition. Nuair is féidir le fórsaí anaithnid ag nóiméad anaithnid cur isteach ar fheidhmiú aon cheann de do chuid oibríochtaí.

Foinse: will.com

Add a comment