Systemau Gweithredu: Tri Darn Hawdd. Rhan 2: Tynnu: Proses (cyfieithu)

Cyflwyniad i Systemau Gweithredu

Hei Habr! Hoffwn dynnu eich sylw at gyfres o erthyglau-cyfieithiadau o un llenyddiaeth ddiddorol yn fy marn i - OSTEP. Mae'r deunydd hwn yn trafod yn eithaf dwfn waith systemau gweithredu tebyg i unix, sef, gwaith gyda phrosesau, amserlenwyr amrywiol, cof, a chydrannau tebyg eraill sy'n ffurfio OS modern. Gallwch weld y gwreiddiol o'r holl ddeunyddiau yma yma. Sylwch fod y cyfieithiad wedi'i wneud yn amhroffesiynol (yn eithaf rhydd), ond gobeithio i mi gadw'r ystyr cyffredinol.

Gellir dod o hyd i waith labordy ar y pwnc hwn yma:

Rhannau eraill:

Gallwch hefyd edrych ar fy sianel yn telegram =)

Gadewch i ni edrych ar y tynnu mwyaf sylfaenol y mae'r OS yn ei ddarparu i ddefnyddwyr: y broses. Mae'r diffiniad o'r broses yn eithaf syml - y mae rhaglen redeg. Mae'r rhaglen ei hun yn beth difywyd sydd wedi'i leoli ar y ddisg - mae'n set o gyfarwyddiadau ac o bosibl rhywfaint o ddata sefydlog yn aros i'w lansio. Yr OS sy'n cymryd y bytes hynny ac yn eu rhedeg, gan drawsnewid y rhaglen yn rhywbeth defnyddiol.
Yn fwyaf aml, mae defnyddwyr eisiau rhedeg mwy nag un rhaglen ar yr un pryd, er enghraifft, gallwch chi redeg porwr, gêm, chwaraewr cyfryngau, golygydd testun, ac ati ar eich gliniadur. Mewn gwirionedd, gall system nodweddiadol redeg degau neu gannoedd o brosesau ar yr un pryd. Mae'r ffaith hon yn gwneud y system yn haws i'w defnyddio, does dim rhaid i chi byth boeni a yw'r CPU yn rhad ac am ddim, dim ond rhedeg rhaglenni rydych chi.

Mae hyn yn codi'r broblem: sut i ddarparu'r rhith o lawer o CPUs? Sut gall yr OS greu rhith o nifer bron yn ddiddiwedd o CPUs, hyd yn oed os mai dim ond un CPU corfforol sydd gennych chi?

Mae'r OS yn creu'r rhith hwn trwy rithwiroli CPU. Trwy gychwyn un broses, yna ei atal, dechrau proses arall, ac yn y blaen, gall yr OS gynnal y rhith bod yna lawer o CPUs rhithwir, pan fydd un neu fwy o broseswyr corfforol mewn gwirionedd. Gelwir y dechneg hon rhannu adnoddau CPU yn ôl amser. Mae'r dechneg hon yn galluogi defnyddwyr i redeg cymaint o brosesau cydamserol ag y dymunant. Cost yr ateb hwn yw perfformiad - oherwydd os yw'r CPU yn cael ei rannu gan sawl proses, bydd pob proses yn cael ei phrosesu'n arafach.
Er mwyn gweithredu rhithwiroli CPU, ac yn enwedig i'w wneud yn dda, mae angen cefnogaeth lefel isel a lefel uchel ar yr OS. Gelwir cymorth lefel isel mecanweithiau yn ddulliau neu brotocolau lefel isel sy'n gweithredu'r rhan ofynnol o'r swyddogaeth. Enghraifft o ymarferoldeb o'r fath yw newid cyd-destun, sy'n rhoi'r gallu i'r OS atal un rhaglen a rhedeg rhaglen arall ar y prosesydd. Gweithredir y rhaniad amser hwn ym mhob system weithredu fodern.
Ar ben y mecanweithiau hyn mae rhywfaint o resymeg yn rhan o'r OS, ar ffurf “polisïau”. Polisi yn algorithm gwneud penderfyniadau penodol ar gyfer y system weithredu. Mae polisïau o'r fath, er enghraifft, yn penderfynu pa raglen y dylid ei lansio (o restr o orchmynion) yn gyntaf. Felly, er enghraifft, bydd y broblem hon yn cael ei datrys gan bolisi o'r enw trefnydd (polisi amserlennu) ac wrth ddewis datrysiad, bydd yn cael ei arwain gan ddata fel: hanes cychwyn (pa raglen a lansiwyd hiraf yn y munudau olaf), pa lwyth y mae'r broses hon yn ei gario (pa fathau o raglenni a lansiwyd), metrigau perfformiad (p'un a yw'r system wedi'i optimeiddio ar gyfer rhyngweithio rhyngweithiol neu ar gyfer trwygyrch ) ac yn y blaen.

Echdynnu: process

Tynnu rhaglen redeg a weithredir gan y system weithredu yw'r hyn a alwn proses. Fel y soniwyd yn gynharach, yn syml, rhaglen redeg yw proses, ar unrhyw gyfnod o amser ar unwaith. Rhaglen y gallwn ei defnyddio i gael gwybodaeth gryno o adnoddau system amrywiol y mae'r rhaglen hon yn eu cyrchu neu'n effeithio arnynt wrth ei gweithredu.
Er mwyn deall cydrannau'r broses, mae angen i chi ddeall cyflwr y system: yr hyn y gall y rhaglen ei ddarllen neu ei newid yn ystod ei weithrediad. Ar unrhyw adeg benodol, mae angen i chi ddeall pa elfennau o'r system sy'n bwysig ar gyfer gweithredu'r rhaglen.
Mae un o elfennau amlwg y system yn datgan bod y broses yn cynnwys yw y cof. Mae cyfarwyddiadau wedi'u lleoli yn y cof. Mae'r data y mae'r rhaglen yn ei ddarllen neu'n ei ysgrifennu hefyd wedi'i leoli yn y cof. Felly, mae'r cof y gall proses fynd i'r afael ag ef (a elwir yn ofod cyfeiriad) yn rhan o'r broses.
Hefyd yn rhan o gyflwr y system mae cofrestrau. Mae llawer o gyfarwyddiadau wedi'u hanelu at newid gwerth cofrestrau neu ddarllen eu gwerth, ac felly mae cofrestrau hefyd yn dod yn rhan bwysig o weithrediad y broses.
Dylid nodi bod cyflwr y peiriant hefyd yn cael ei ffurfio o rai cofrestrau arbennig. Er enghraifft, IP - pwyntydd cyfarwyddiadau — pwyntydd i'r cyfarwyddyd y mae'r rhaglen yn ei weithredu ar hyn o bryd. Mae yna hefyd pwyntydd pentwr ac yn perthyn iddo pwyntydd ffrâm, a ddefnyddir i reoli: paramedrau swyddogaeth, newidynnau lleol a chyfeiriadau dychwelyd.
Yn olaf, mae rhaglenni'n aml yn cyrchu ROM (cof darllen yn unig). Dylai'r wybodaeth “I/O” (mewnbwn/allbwn) hon gynnwys rhestr o ffeiliau sydd ar agor ar hyn o bryd gan y broses.

Proses API

Er mwyn gwella ein dealltwriaeth o sut mae'r broses yn gweithio, gadewch i ni astudio enghreifftiau o alwadau system y dylid eu cynnwys mewn unrhyw ryngwyneb system weithredu. Mae'r APIs hyn ar gael ar ryw ffurf neu'i gilydd ar unrhyw OS.

Creu (creu): Rhaid i'r OS gynnwys rhyw ddull sy'n eich galluogi i greu prosesau newydd. Pan fyddwch chi'n rhoi gorchymyn i mewn i'r derfynell neu'n lansio cais trwy glicio ddwywaith ar eicon, anfonir galwad i'r OS i greu proses newydd ac yna lansio'r rhaglen benodedig.
Tynnu: Gan fod rhyngwyneb ar gyfer creu proses, dylai'r OS hefyd ddarparu'r gallu i orfodi dileu proses. Bydd y rhan fwyaf o raglenni yn naturiol yn dechrau ac yn dod i ben ar eu pen eu hunain wrth iddynt redeg. Fel arall hoffai'r defnyddiwr allu eu lladd ac felly byddai rhyngwyneb i atal y broses yn ddefnyddiol.
Arhoswch (aros): Weithiau mae'n ddefnyddiol aros am broses i'w chwblhau, felly darperir rhai rhyngwynebau sy'n darparu'r gallu i aros.
Rheolaeth Amrywiol (rheolaeth amrywiol): Yn ogystal â lladd ac aros am y broses, mae yna ddulliau rheoli amrywiol eraill hefyd. Er enghraifft, mae'r rhan fwyaf o systemau gweithredu yn darparu'r gallu i rewi proses (atal ei gweithredu am gyfnod penodol) ac yna ei hailddechrau (parhau i'w gweithredu)
Statws (cyflwr): Mae yna ryngwynebau amrywiol ar gyfer cael rhywfaint o wybodaeth am statws proses, megis pa mor hir y mae wedi bod yn rhedeg neu ym mha gyflwr y mae ar hyn o bryd.

Systemau Gweithredu: Tri Darn Hawdd. Rhan 2: Tynnu: Proses (cyfieithu)

Creu Proses: Manylion

Un o'r pethau diddorol yw sut yn union y caiff rhaglenni eu trawsnewid yn brosesau. Yn enwedig sut mae'r OS yn codi ac yn rhedeg y rhaglen. Sut yn union y caiff y broses ei chreu.
Yn gyntaf oll, rhaid i'r OS lwytho cod y rhaglen a'r data statig i'r cof (i'r gofod cyfeiriad proses). Mae rhaglenni fel arfer wedi'u lleoli ar ddisg neu yriant cyflwr solet mewn rhyw fformat gweithredadwy. Felly, mae'r broses o lwytho rhaglen a data statig i'r cof yn ei gwneud yn ofynnol i'r OS allu darllen y bytes hynny o ddisg a'u gosod yn rhywle yn y cof.

Mewn systemau gweithredu cynnar, gwnaed y broses lwytho yn eiddgar, sy'n golygu bod y cod cyfan wedi'i lwytho i'r cof cyn lansio'r rhaglen. Mae systemau gweithredu modern yn gwneud hyn yn ddiog, hynny yw, llwytho darnau o god neu ddata dim ond pan fydd eu hangen ar y rhaglen yn ystod ei weithrediad.

Unwaith y bydd y cod a'r data statig yn cael eu llwytho i mewn i gof OS, mae yna ychydig mwy o bethau y mae angen eu gwneud cyn y gall y broses redeg. Rhaid neilltuo rhywfaint o gof ar gyfer y pentwr. Mae rhaglenni'n defnyddio'r pentwr ar gyfer newidynnau lleol, paramedrau swyddogaeth, a chyfeiriadau dychwelyd. Mae'r OS yn dyrannu'r cof hwn ac yn ei roi i'r broses. Gellir dyrannu'r pentwr hefyd gyda rhai dadleuon, yn benodol mae'n llenwi paramedrau'r brif swyddogaeth (), er enghraifft gydag amrywiaeth o argc ac argv.

Gall y system weithredu hefyd ddyrannu rhywfaint o gof i domen y rhaglen. Defnyddir y domen gan raglenni i ofyn yn benodol am ddata a ddyrennir yn ddeinamig. Mae rhaglenni'n gofyn am y gofod hwn trwy ffonio'r swyddogaeth malloc () ac yn ei glirio'n benodol trwy alw'r swyddogaeth rhydd(). Mae angen y domen ar gyfer strwythurau data fel dalennau cysylltiedig, tablau stwnsh, coed ac eraill. Ar y dechrau, dyrennir ychydig bach o gof i'r domen, ond dros amser, wrth i'r rhaglen redeg, gall y domen ofyn am fwy o gof trwy alwad malloc API y llyfrgell. Mae'r system weithredu yn rhan o'r broses o ddyrannu mwy o gof i helpu i fodloni'r galwadau hyn.

Bydd y system weithredu hefyd yn cyflawni tasgau cychwyn, yn enwedig y rhai sy'n ymwneud ag I/O. Er enghraifft, ar systemau UNIX, mae gan bob proses yn ddiofyn 3 disgrifydd ffeil agored, ar gyfer mewnbwn safonol, allbwn a gwall. Mae'r dolenni hyn yn caniatáu i raglenni ddarllen mewnbwn o'r derfynell yn ogystal ag arddangos gwybodaeth ar y sgrin.

Felly, trwy lwytho cod a data statig i'r cof, creu a chychwyn y pentwr, a gwneud gwaith arall sy'n ymwneud â chyflawni tasgau I/O, mae'r OS yn paratoi'r cam i'r broses weithredu. Yn olaf, mae un dasg olaf ar ôl: rhedeg y rhaglen trwy ei bwynt mynediad, a elwir yn brif swyddogaeth (). Trwy weithredu'r prif swyddogaeth (), mae'r OS yn trosglwyddo rheolaeth CPU i'r broses sydd newydd ei chreu, felly mae'r rhaglen yn dechrau gweithredu.

Cyflwr y broses

Nawr bod gennym rywfaint o ddealltwriaeth o beth yw proses a sut mae'n cael ei chreu, gadewch i ni restru'r dywed y broses y gall fod ynddi. Yn ei ffurf symlaf, gall proses fod yn un o'r cyflyrau hyn:
rhedeg. Wrth redeg, mae'r broses yn rhedeg ar y prosesydd. Mae hyn yn golygu bod cyfarwyddiadau yn cael eu gweithredu.
Yn barod. Yn y cyflwr parod, mae'r broses yn barod i'w rhedeg, ond am ryw reswm nid yw'r OS yn ei gweithredu ar yr amser penodedig.
wedi'u Rhwystro. Yn y cyflwr sydd wedi'i rwystro, mae proses yn cyflawni rhai gweithrediadau sy'n ei atal rhag bod yn barod i'w gweithredu nes bod rhyw ddigwyddiad yn digwydd. Un enghraifft gyffredin yw pan fydd proses yn cychwyn gweithrediad IO, mae'n cael ei rhwystro fel y gall rhyw broses arall ddefnyddio'r prosesydd.

Systemau Gweithredu: Tri Darn Hawdd. Rhan 2: Tynnu: Proses (cyfieithu)

Gallwch ddychmygu'r cyflyrau hyn ar ffurf graff. Fel y gallwn weld yn y llun, gall cyflwr y broses newid rhwng RHEDEG a BAROD yn ôl disgresiwn yr OS. Pan fydd cyflwr proses yn newid o BAROD i RHEDEG, mae'n golygu bod y broses wedi'i hamserlennu. I'r cyfeiriad arall - tynnu oddi ar y cynllun. Ar hyn o bryd pan fydd proses yn cael ei BLOCIO, er enghraifft, rwy'n cychwyn gweithrediad IO, bydd yr OS yn ei gadw yn y cyflwr hwn nes bod rhyw ddigwyddiad yn digwydd, er enghraifft cwblhau IO. ar hyn o bryd y newid i'r cyflwr BAROD ac o bosibl yn syth i'r cyflwr RHEDEG os bydd yr OS yn penderfynu hynny.
Gadewch i ni edrych ar enghraifft o sut mae dwy broses yn symud drwy'r cyflyrau hyn. I ddechrau, gadewch i ni ddychmygu bod y ddwy broses yn rhedeg, a phob un yn defnyddio'r CPU yn unig. Yn yr achos hwn, bydd eu gwladwriaethau yn edrych fel hyn.

Systemau Gweithredu: Tri Darn Hawdd. Rhan 2: Tynnu: Proses (cyfieithu)

Yn yr enghraifft ganlynol, mae'r broses gyntaf, ar ôl peth amser yn rhedeg, yn gofyn am IO ac yn mynd i mewn i'r cyflwr BLOCKED, gan ganiatáu i broses arall redeg (FIG 1.4). Mae'r OS yn gweld nad yw proses 0 yn defnyddio'r CPU ac yn dechrau proses 1. Tra bod proses 1 yn rhedeg, mae IO wedi'i chwblhau ac mae statws proses 0 yn newid i BAROD. Yn olaf, mae proses 1 wedi'i chwblhau, ac ar ôl ei chwblhau, mae proses 0 yn dechrau, yn gweithredu ac yn gorffen ei gwaith.

Systemau Gweithredu: Tri Darn Hawdd. Rhan 2: Tynnu: Proses (cyfieithu)

Strwythur data

Mae'r OS ei hun yn rhaglen, ac yn union fel unrhyw raglen arall, mae ganddi rai strwythurau data allweddol sy'n cadw golwg ar amrywiol ddarnau perthnasol o wybodaeth. Er mwyn olrhain cyflwr pob proses, bydd yr OS yn cefnogi rhai rhestr prosesau ar gyfer yr holl brosesau yn y cyflwr BAROD a rhywfaint o wybodaeth ychwanegol i olrhain prosesau sy'n rhedeg ar hyn o bryd. Hefyd, dylai'r OS fonitro prosesau sydd wedi'u blocio. Ar ôl cwblhau IO, rhaid i'r OS ddeffro'r broses ofynnol a'i roi mewn cyflwr sy'n barod i'w redeg.

Er enghraifft, rhaid i'r OS gadw cyflwr cofrestrau'r proseswyr. Ar hyn o bryd mae'r broses yn dod i ben, mae cyflwr y cofrestrau yn cael ei storio yng ngofod cyfeiriad y broses, ac ar hyn o bryd mae ei weithrediad yn parhau, mae gwerthoedd y cofrestrau yn cael eu hadfer ac felly'n parhau â gweithrediad y broses hon.

Yn ogystal â parod, blocio, yn rhedeg yn datgan, mae rhai taleithiau eraill. Weithiau, ar adeg ei chreu, gall proses fod yn y cyflwr INIT. Yn olaf, gellir gosod proses yn y cyflwr TERFYNOL pan fydd eisoes wedi'i chwblhau, ond nid yw ei gwybodaeth wedi'i chlirio eto. Ar systemau UNIX gelwir y cyflwr hwn broses zombie. Mae'r cyflwr hwn yn ddefnyddiol ar gyfer achosion lle mae rhiant proses eisiau gwybod cod dychwelyd plentyn, er enghraifft, fel arfer mae 0 yn nodi llwyddiant ac 1 yn nodi gwall, ond gall rhaglenwyr gyhoeddi codau allbwn ychwanegol i nodi gwahanol broblemau. Pan fydd y broses rhiant yn dod i ben, mae'n gwneud galwad system derfynol, megis aros (), i aros i'r broses plentyn ddod i ben a rhoi arwydd i'r OS y gall glirio unrhyw ddata sy'n gysylltiedig â'r broses a derfynwyd.

Systemau Gweithredu: Tri Darn Hawdd. Rhan 2: Tynnu: Proses (cyfieithu)

Pwyntiau allweddol y ddarlith:

proses — prif dyniad rhaglen redeg yn yr OS. Ar unrhyw adeg benodol, gellir disgrifio proses yn ôl ei chyflwr: cynnwys y cof yn ei ofod cyfeiriad, cynnwys cofrestrau prosesydd, gan gynnwys pwyntydd cyfarwyddiadau a phwyntydd stac, a gwybodaeth IO, megis darllen neu ysgrifennu ffeiliau agored.
Proses API yn cynnwys galwadau y gall rhaglenni eu gwneud i brosesau. Yn nodweddiadol mae'r rhain yn alwadau creu, dileu, neu alwadau eraill.
● Mae'r broses yn un o lawer o daleithiau, gan gynnwys rhedeg, parod, wedi'i rwystro. Gall digwyddiadau amrywiol megis amserlennu, eithriadau rhag amserlennu, neu arosiadau newid cyflwr proses o un i'r llall.
Rhestr broses yn cynnwys gwybodaeth am yr holl brosesau yn y system. Gelwir pob cofnod ynddo yn bloc rheoli prosesau, sydd mewn gwirionedd yn strwythur sy'n cynnwys yr holl wybodaeth angenrheidiol am broses benodol. 

Ffynhonnell: hab.com

Ychwanegu sylw