Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 2: Abtraction: Pròiseas (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:

Pàirtean eile:

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

Bheir sinn sùil air an tarraing as bunaitiche a bheir an OS do luchd-cleachdaidh: am pròiseas. Tha mìneachadh a 'phròiseis gu math sìmplidh - tha e prògram ruith. Tha am prògram fhèin na rud gun bheatha a tha suidhichte air an diosc - is e seata stiùiridh a th’ ann agus is dòcha beagan dàta statach a ’feitheamh ri bhith air a chuir air bhog. Is e an OS a bhios a’ toirt na bytes sin agus gan ruith, ag atharrachadh a’ phrògram gu bhith na rud feumail.
Mar as trice, bidh luchd-cleachdaidh ag iarraidh barrachd air aon phrògram a ruith aig an aon àm, mar eisimpleir, faodaidh tu brobhsair, geama, cluicheadair meadhanan, deasaiche teacsa, agus an leithid a ruith air an laptop agad. Gu dearbh, faodaidh siostam àbhaisteach deichean no ceudan de phròiseasan a ruith aig an aon àm. Tha an fhìrinn seo ga dhèanamh nas fhasa an siostam a chleachdadh, cha leig thu a-riamh dragh a bhith agad a bheil an CPU an-asgaidh, tha thu dìreach a’ ruith phrògraman.

Tha seo a’ togail na trioblaid: ciamar a bheir thu seachad mealladh mòran CPUs? Ciamar as urrainn don OS mealladh a dhèanamh air àireamh cha mhòr gun chrìoch de CPUan, eadhon ged nach eil agad ach aon CPU corporra?

Bidh an OS a’ cruthachadh an mealladh seo tro virtualization CPU. Le bhith a 'tòiseachadh air aon phròiseas, an uairsin ga stad, a' tòiseachadh pròiseas eile, agus mar sin air adhart, faodaidh an OS cumail suas ris a 'mhealladh gu bheil mòran CPUan brìgheil ann, nuair a bhios aon no barrachd de phròiseasan fiosaigeach ann. Canar an teicneòlas seo ris roinneadh ghoireasan CPU a rèir ùine. Leigidh an dòigh seo le luchd-cleachdaidh na h-uimhir de phròiseasan co-aontach a ruith agus a thogras iad. Is e cosgais an fhuasglaidh seo coileanadh - oir ma tha an CPU air a cho-roinn le grunn phròiseasan, thèid gach pròiseas a phròiseasadh nas slaodaiche.
Gus virtualization CPU a chuir an gnìomh, agus gu sònraichte airson a dhèanamh gu math, feumaidh an OS taic aig ìre ìosal agus àrd-ìre. Canar taic ìre ìosal ris innleachdan nan dòighean no protocolaidhean aig ìre ìosal a chuireas an gnìomh am pàirt riatanach den ghnìomhachd. Is e eisimpleir de leithid de ghnìomhachd atharrachadh co-theacsa, a bheir comas don OS stad a chuir air aon phrògram agus prògram eile a ruith air a’ phròiseasar. Tha an roinn ùine seo air a chuir an gnìomh anns a h-uile siostam obrachaidh ùr-nodha.
A bharrachd air na h-innealan sin tha beagan loidsig air a thogail a-steach don OS, ann an cruth “poileasaidhean”. poileasaidh na algairim co-dhùnaidh sònraichte airson an t-siostam obrachaidh. Bidh poileasaidhean leithid seo, mar eisimpleir, a’ co-dhùnadh dè am prògram a bu chòir a chuir air bhog (bho liosta òrdughan) an toiseach. Mar sin, mar eisimpleir, thèid an duilgheadas seo fhuasgladh le poileasaidh ris an canar clàr-ama (poileasaidh clàraidh) agus nuair a thaghas tu fuasgladh, bidh e air a stiùireadh le dàta leithid: eachdraidh tòiseachaidh (dè am prògram a chaidh a chuir air bhog as fhaide anns na mionaidean mu dheireadh), dè an luchd a tha sa phròiseas seo (dè na seòrsaichean de phrògraman a chaidh a chuir air bhog), tomhasan coileanaidh (co-dhiù an siostam air a mheudachadh airson eadar-obrachadh eadar-ghnìomhach no airson throughput) agus mar sin air adhart.

Abtraction: pròiseas

Is e toirt air falbh prògram ruith a chuir an siostam obrachaidh gu bàs an rud ris an can sinn phròiseas. Mar a chaidh ainmeachadh na bu tràithe, chan eil ann am pròiseas ach prògram ruith, aig àm sam bith sa bhad. Prògram leis am faigh sinn fiosrachadh geàrr-chunntas bho dhiofar ghoireasan siostam a bhios am prògram seo a’ faighinn thuige no a’ toirt buaidh fhad ‘s a thèid a chur an gnìomh.
Gus tuigse fhaighinn air na pàirtean den phròiseas, feumaidh tu tuigsinn staid an t-siostaim: dè as urrainn don phrògram a leughadh no atharrachadh fhad ‘s a tha e ag obair. Aig àm sam bith, feumaidh tu tuigsinn dè na h-eileamaidean den t-siostam a tha cudromach airson a 'phrògram a chur an gnìomh.
Tha aon de na h-eileamaidean follaiseach den t-siostam ag ràdh gu bheil am pròiseas a 'gabhail a-steach an cuimhne. Tha stiùireadh air a shuidheachadh mar chuimhneachan. Tha an dàta a bhios am prògram a’ leughadh no a’ sgrìobhadh cuideachd air a shuidheachadh mar chuimhne. Mar sin, tha a’ chuimhne ris am faod pròiseas dèiligeadh (ris an canar àite seòlaidh) mar phàirt den phròiseas.
Cuideachd mar phàirt de staid an t-siostam tha clàran. Tha mòran stiùiridhean ag amas air luach clàran atharrachadh no an luach a leughadh, agus mar sin bidh clàran cuideachd nam pàirt chudromach de ghnìomhachd a 'phròiseis.
Bu chòir a thoirt fa-near gu bheil staid an inneil cuideachd air a chruthachadh bho chlàran sònraichte. Mar eisimpleir, IP - puing stiùiridh - comharra air an stiùireadh a tha am prògram a’ cur an gnìomh an-dràsta. Tha cuideachd comharraiche cruachan agus co-cheangailte ris puing frèam, a thathas a’ cleachdadh airson riaghladh: paramadairean gnìomh, caochladairean ionadail agus seòlaidhean tilleadh.
Mu dheireadh, bidh prògraman gu tric a’ faighinn cothrom air ROM (cuimhne leughaidh a-mhàin). Bu chòir don fhiosrachadh “I / O” seo (cuir a-steach / toradh) liosta de na faidhlichean a tha fosgailte leis a’ phròiseas a ghabhail a-steach.

API pròiseas

Gus ar tuigse mu mar a tha am pròiseas ag obair a leasachadh, leig dhuinn sgrùdadh a dhèanamh air eisimpleirean de ghlaidhean siostaim a bu chòir a bhith air an toirt a-steach do eadar-aghaidh siostam obrachaidh sam bith. Tha na APIan sin rim faighinn ann an aon chruth no ann an cruth eile air OS sam bith.

Cruthaich (cruthachadh): Feumaidh dòigh air choireigin a bhith san OS a leigeas leat pròiseasan ùra a chruthachadh. Nuair a chuireas tu a-steach àithne a-steach don cheann-uidhe no nuair a chuireas tu tagradh air bhog le bhith a’ briogadh dùbailte air ìomhaigh, thèid fios a chuir chun OS gus pròiseas ùr a chruthachadh agus an uairsin am prògram ainmichte a chuir air bhog.
Delete: Leis gu bheil eadar-aghaidh ann airson pròiseas a chruthachadh, bu chòir don OS cuideachd an comas a thoirt seachad gus toirt air falbh pròiseas. Bidh a’ mhòr-chuid de phrògraman gu nàdarrach a’ tòiseachadh agus a’ tighinn gu crìch leotha fhèin fhad ‘s a bhios iad a’ ruith. Mur eil an neach-cleachdaidh ag iarraidh a bhith comasach air a mharbhadh iad agus mar sin eadar-aghaidh gus stad a chur air a 'phròiseas a bhiodh feumail.
Fuirich (feitheamh): Aig amannan tha e feumail feitheamh airson pròiseas a chrìochnachadh, agus mar sin tha cuid de eadar-aghaidh air a thoirt seachad a bheir seachad an comas feitheamh.
Smachd measgaichte (diofar smachd): A bharrachd air a bhith a 'marbhadh agus a' feitheamh ris a 'phròiseas, tha diofar dhòighean smachd ann cuideachd. Mar eisimpleir, tha a 'mhòr-chuid de shiostaman obrachaidh a' toirt seachad comas pròiseas a reothadh (stad a chur gu bàs airson ùine sònraichte) agus an uairsin ath-thòiseachadh (lean air adhart gu bàs).
inbhe (stàite): Tha diofar eadar-aghaidh ann airson beagan fiosrachaidh fhaighinn mu inbhe pròiseas, leithid dè cho fada ‘s a tha e air a bhith a’ ruith no dè an stàit anns a bheil e an-dràsta.

Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 2: Abtraction: Pròiseas (eadar-theangachadh)

Cruthachadh Pròiseas: Mion-fhiosrachadh

Is e aon de na rudan inntinneach mar a tha dìreach prògraman air an cruth-atharrachadh gu pròiseasan. Gu sònraichte mar a bhios an OS a’ togail agus a’ ruith a’ phrògraim. Dìreach mar a tha am pròiseas air a chruthachadh.
An toiseach, feumaidh an OS còd a ’phrògraim agus dàta statach a luchdachadh gu cuimhne (a-steach don àite seòlaidh pròiseas). Mar as trice bidh prògraman air an suidheachadh air diosc no air draibhear cruaidh-stàite ann an cruth air choireigin a ghabhas coileanadh. Mar sin, tha pròiseas luchdachadh a’ phrògraim agus dàta statach gu cuimhne ag iarraidh gum bi an OS comasach air na bytes sin a leughadh bhon diosc agus an cur an àiteigin mar chuimhne.

Ann an siostaman obrachaidh tràth, chaidh am pròiseas luchdachadh a dhèanamh gu dùrachdach, a tha a ’ciallachadh gun deach an còd gu lèir a luchdachadh mar chuimhneachan mus deach am prògram a chuir air bhog. Bidh siostaman obrachaidh ùr-nodha a’ dèanamh seo gu leisg, is e sin, a’ luchdachadh pìosan de chòd no dàta a-mhàin nuair a dh’ fheumas am prògram iad nuair a thèid a chur gu bàs.

Aon uair ‘s gu bheil an còd agus an dàta statach air an luchdachadh a-steach do chuimhne OS, tha beagan rudan eile a dh’ fheumar a dhèanamh mus urrainn don phròiseas ruith. Feumaidh beagan cuimhne a bhith air a riarachadh airson a 'chruach. Bidh prògraman a’ cleachdadh a’ chruach airson caochladairean ionadail, paramadairean gnìomh, agus seòlaidhean tilleadh. Bidh an OS a 'riarachadh a' chuimhne seo agus ga thoirt don phròiseas. Faodar cuid de argamaidean a thoirt don chruach cuideachd, gu sònraichte bidh e a’ lìonadh crìochan a’ phrìomh () gnìomh, mar eisimpleir le sreath de argc agus argv.

Faodaidh an siostam-obrachaidh beagan cuimhne a thoirt do charn a’ phrògraim cuideachd. Bidh prògraman a’ cleachdadh a’ charn gus dàta a tha air a riarachadh gu dinamach iarraidh. Bidh prògraman ag iarraidh an àite seo le bhith a’ gairm an gnìomh malloc () agus ga ghlanadh gu soilleir le bhith a 'gairm a' ghnìomh saor(). Tha feum air an tiùrr airson structaran dàta leithid duilleagan ceangailte, clàran hash, craobhan is eile. An toiseach, thèid beagan cuimhne a thoirt don chàrn, ach thar ùine, mar a bhios am prògram a’ ruith, faodaidh an tiùrr barrachd cuimhne iarraidh tro API an leabharlainn gairm malloc(). Tha an siostam obrachaidh an sàs anns a’ phròiseas airson barrachd cuimhne a riarachadh gus na gairmean sin a shàsachadh.

Bidh an siostam obrachaidh cuideachd a’ coileanadh gnìomhan tòiseachaidh, gu sònraichte an fheadhainn co-cheangailte ri I/O. Mar eisimpleir, air siostaman UNIX, tha tuairisgeulan faidhle fosgailte 3 aig gach pròiseas gu bunaiteach, airson cuir a-steach àbhaisteach, toradh, agus mearachd. Leigidh na làmhan-làimhe seo le prògraman cuir a-steach bhon inneal-crìochnachaidh a leughadh a bharrachd air fiosrachadh a thaisbeanadh air an sgrion.

Mar sin, le bhith a’ luchdachadh còd agus dàta statach gu cuimhne, a’ cruthachadh agus a’ tòiseachadh a’ chruaich, agus a’ dèanamh obair eile co-cheangailte ri bhith a’ coileanadh gnìomhan I/O, bidh an OS ag ullachadh an àrd-ùrlar airson a’ phròiseas a chur an gnìomh. Mu dheireadh, tha aon ghnìomh mu dheireadh air fhàgail: a’ ruith a’ phrògraim tron ​​àite inntrigidh aige, ris an canar am prìomh ghnìomh (). Le bhith a’ cur an gnìomh a’ phrìomh () gnìomh, bidh an OS a’ gluasad smachd CPU chun phròiseas a chaidh a chruthachadh às ùr, agus mar sin bidh am prògram a’ tòiseachadh a’ cur an gnìomh.

Staid pròiseas

A-nis gu bheil beagan tuigse againn air dè a th’ ann am pròiseas agus mar a tha e air a chruthachadh, leig dhuinn liosta a dhèanamh den phròiseas ag ràdh anns am faod e a bhith. Anns an fhoirm as sìmplidhe, faodaidh pròiseas a bhith ann an aon de na stàitean sin:
Running. Nuair a bhios e ag obair, bidh am pròiseas a 'ruith air a' phròiseasar. Tha seo a’ ciallachadh gu bheilear a’ cur an gnìomh stiùireadh.
Ready. Anns an staid deiseil, tha am pròiseas deiseil airson a ruith, ach airson adhbhar air choireigin chan eil an OS ga chuir an gnìomh aig an àm ainmichte.
air a dhùnadh. Anns an staid dùinte, bidh pròiseas a 'dèanamh cuid de dh' obraichean a chuireas casg air bho bhith deiseil airson a chur an gnìomh gus an tachair tachartas air choireigin. Is e aon eisimpleir cumanta nuair a thòisicheas pròiseas gnìomhachd IO, thèid a bhacadh gus an urrainn do phròiseas eile am pròiseasar a chleachdadh.

Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 2: Abtraction: Pròiseas (eadar-theangachadh)

Faodaidh tu na stàitean sin a shamhlachadh ann an cruth graf. Mar a chì sinn san dealbh, faodaidh staid a’ phròiseas atharrachadh eadar RUNNING agus READY a rèir toil an OS. Nuair a bhios staid pròiseas ag atharrachadh bho READY gu RUNNING, tha e a 'ciallachadh gu bheil am pròiseas air a chlàradh. Air an taobh eile - air a thoirt air falbh bhon chruth. Aig an àm nuair a thig pròiseas gu bhith BLOCKED, mar eisimpleir, bidh mi a’ tòiseachadh gnìomhachd IO, cumaidh an OS e san staid seo gus an tachair tachartas air choireigin, mar eisimpleir crìochnachadh IO. aig an àm seo an gluasad gu staid READY agus is dòcha sa bhad chun stàit RUNNING ma cho-dhùineas an OS sin.
Bheir sinn sùil air eisimpleir de mar a ghluaiseas dà phròiseas tro na stàitean sin. An toiseach, smaoinichidh sinn gu bheil an dà phròiseas a 'ruith, agus tha gach fear a' cleachdadh an CPU a-mhàin. Anns a 'chùis seo, seallaidh na stàitean aca mar seo.

Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 2: Abtraction: Pròiseas (eadar-theangachadh)

Anns an eisimpleir a leanas, bidh a 'chiad phròiseas, an dèidh beagan ùine a' ruith, ag iarraidh IO agus a 'dol a-steach don stàit BLOCKED, a' leigeil le pròiseas eile ruith (FIG 1.4). Tha an OS a' faicinn nach eil pròiseas 0 a' cleachdadh an CPU agus a' tòiseachadh pròiseas 1. Fhad 's a tha pròiseas 1 a' ruith, tha IO crìochnaichte agus tha inbhe pròiseas 0 ag atharrachadh gu READY. Mu dheireadh, tha pròiseas 1 air a chrìochnachadh, agus nuair a bhios e deiseil, bidh pròiseas 0 a’ tòiseachadh, a’ cur an gnìomh, agus a’ crìochnachadh na h-obrach aige.

Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 2: Abtraction: Pròiseas (eadar-theangachadh)

Structar dàta

'S e prògram a th' anns an t-Suirbhidh Òrdanais fhèin, agus dìreach mar phrògram sam bith eile, tha cuid de phrìomh structaran dàta aige a chumas sùil air diofar phìosan fiosrachaidh iomchaidh. Gus sùil a chumail air staid gach pròiseas, bheir an OS taic do chuid liosta phròiseas airson a h-uile pròiseas ann an staid READY agus beagan fiosrachaidh a bharrachd gus sùil a chumail air pròiseasan a tha a’ ruith an-dràsta. Cuideachd, bu chòir don OS sùil a chumail air pròiseasan dùinte. Às deidh IO a chrìochnachadh, feumaidh an OS am pròiseas a tha a dhìth a dhùsgadh agus a chuir ann an staid deiseil airson a ruith.

Mar eisimpleir, feumaidh an OS staid clàran pròiseasar a ghleidheadh. Aig an àm a tha am pròiseas a 'stad, tha staid nan clàran air a stòradh ann an àite seòlaidh a' phròiseis, agus aig an àm a tha an obair a 'dol air adhart, tha luachan nan clàran air an ath-nuadhachadh agus mar sin a' leantainn air adhart a 'cur an gnìomh a' phròiseis seo.

A bharrachd air stàitean deiseil, dùinte, ruith, tha cuid de stàitean eile ann. Uaireannan, aig àm a ‘chruthachaidh, faodaidh pròiseas a bhith ann an staid INIT. Mu dheireadh, faodar pròiseas a chuir anns an stàit DEIREANNACH nuair a tha e deiseil mu thràth, ach chan eil am fiosrachadh aige air fhuadach fhathast. Air siostaman UNIX canar an stàit seo pròiseas zombie. Tha an staid seo feumail airson cùisean far a bheil pròiseas pàrant ag iarraidh faighinn a-mach còd tilleadh pàiste, mar eisimpleir, mar as trice bidh 0 a’ comharrachadh soirbheachas agus 1 mearachd, ach faodaidh prògramadairean còdan toraidh a bharrachd a chuir a-mach gus diofar dhuilgheadasan a chomharrachadh. Nuair a thig am pròiseas pàrant gu crìch, bidh e a’ dèanamh gairm siostam deireannach, leithid feitheamh (), gus feitheamh gus am bi pròiseas an leanaibh a’ tighinn gu crìch agus a’ comharrachadh don OS gun urrainn dha dàta sam bith co-cheangailte ris a’ phròiseas crìochnachaidh a ghlanadh.

Siostaman-obrachaidh: Trì pìosan furasta. Pàirt 2: Abtraction: Pròiseas (eadar-theangachadh)

Prìomh phuingean na h-òraid:

phròiseas - am prìomh tharraing de phrògram ruith san OS. Aig àm sònraichte sam bith, faodar pròiseas a mhìneachadh leis an stàit aige: susbaint na cuimhne anns an àite seòlaidh aige, susbaint chlàran pròiseasar, a’ toirt a-steach puing stiùiridh agus puing stac, agus fiosrachadh IO, leithid faidhlichean fosgailte gan leughadh no gan sgrìobhadh.
API pròiseas air a dhèanamh suas de ghlaidhean a dh’ fhaodas prògraman a dhèanamh gu pròiseasan. Mar as trice is iad sin gairmean cruthachaidh, cuir às no eile.
● Tha am pròiseas ann an aon de iomadh stàitean, a 'gabhail a-steach ruith, deiseil, bacadh. Faodaidh diofar thachartasan leithid clàradh, eisgeachdan bho chlàradh, no feitheamh suidheachadh pròiseas atharrachadh bho aon gu fear eile.
Liosta pròiseas tha fiosrachadh ann mu gach pròiseas san t-siostam. Canar bloc smachd pròiseas ris gach inntrigeadh ann, a tha ann an da-rìribh na structar anns a bheil a h-uile fiosrachadh riatanach mu phròiseas sònraichte. 

Source: www.habr.com

Cuir beachd ann