Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 2: Estrazzjoni: Proċess (traduzzjoni)

Introduzzjoni għas-Sistemi Operattivi

Ħej Habr! Nixtieq inġib għall-attenzjoni tiegħek sensiela ta' artikli-traduzzjonijiet ta' letteratura waħda interessanti fl-opinjoni tiegħi - OSTEP. Dan il-materjal jiddiskuti pjuttost fil-fond ix-xogħol ta 'sistemi operattivi unix-like, jiġifieri, ix-xogħol ma' proċessi, diversi schedulers, memorja, u komponenti oħra simili li jiffurmaw OS modern. Tista 'tara l-oriġinal tal-materjali kollha hawn hawn. Jekk jogħġbok innota li t-traduzzjoni saret b'mod mhux professjonali (pjuttost liberament), iżda nittama li żammejt it-tifsira ġenerali.

Xogħol tal-laboratorju dwar dan is-suġġett jista’ jinstab hawn:

Partijiet oħra:

Tista 'wkoll tiċċekkja l-kanal tiegħi fuq telegramma =)

Ejja nħarsu lejn l-astrazzjoni l-aktar fundamentali li l-OS jipprovdi lill-utenti: il-proċess. Id-definizzjoni tal-proċess hija pjuttost sempliċi - huwa programm li qed jaħdem. Il-programm innifsu huwa ħaġa bla ħajja li tinsab fuq id-diska - huwa sett ta 'struzzjonijiet u possibilment xi data statika li qed tistenna biex titnieda. Huwa l-OS li jieħu dawk il-bytes u jmexxihom, u jibdel il-programm f'xi ħaġa utli.
Ħafna drabi, l-utenti jridu jmexxu aktar minn programm wieħed fl-istess ħin, pereżempju, tista 'tmexxi browser, logħba, media player, editur tat-test, u affarijiet simili fuq il-laptop tiegħek. Fil-fatt, sistema tipika tista 'taħdem għexieren jew mijiet ta' proċessi simultanjament. Dan il-fatt jagħmel is-sistema aktar faċli biex tużah, qatt ma jkollok għalfejn tinkwieta dwar jekk is-CPU huwiex ħieles, inti biss tmexxi programmi.

Dan iqajjem il-problema: kif tipprovdi l-illużjoni ta 'ħafna CPUs? Kif jista 'l-OS joħloq l-illużjoni ta' numru kważi infinit ta 'CPUs, anke jekk għandek CPU fiżiku wieħed biss?

L-OS joħloq din l-illużjoni permezz tal-virtwalizzazzjoni tas-CPU. Billi jibda proċess wieħed, imbagħad iwaqqafh, jibda proċess ieħor, u l-bqija, l-OS jista 'jżomm l-illużjoni li hemm ħafna CPUs virtwali, meta fil-fatt se jkun hemm proċessur fiżiku wieħed jew aktar. Din it-teknika tissejjaħ diviżjoni tar-riżorsi tas-CPU skont il-ħin. Din it-teknika tippermetti lill-utenti biex imexxu proċessi konkorrenti kemm jixtiequ. L-ispiża ta 'din is-soluzzjoni hija l-prestazzjoni - peress li jekk is-CPU huwa kondiviż minn diversi proċessi, kull proċess jiġi pproċessat aktar bil-mod.
Biex timplimenta l-virtwalizzazzjoni tas-CPU, u speċjalment biex tagħmel dan tajjeb, l-OS jeħtieġ appoġġ kemm ta 'livell baxx kif ukoll ta' livell għoli. Appoġġ ta 'livell baxx huwa msejjaħ mekkaniżmi huma metodi jew protokolli ta' livell baxx li jimplimentaw il-parti meħtieġa tal-funzjonalità. Eżempju ta' tali funzjonalità huwa l-bdil tal-kuntest, li jagħti lill-OS l-abbiltà li jwaqqaf programm wieħed u jmexxi programm ieħor fuq il-proċessur. Din id-diviżjoni tal-ħin hija implimentata fis-sistemi operattivi moderni kollha.
Flimkien ma 'dawn il-mekkaniżmi hemm xi loġika mibnija fl-OS, fil-forma ta' "politiki". Politika huwa ċertu algoritmu tat-teħid tad-deċiżjonijiet għas-sistema operattiva. Tali politiki, pereżempju, jiddeċiedu liema programm għandu jitnieda (minn lista ta 'kmandi) l-ewwel. Allura, per eżempju, din il-problema se tissolva permezz ta 'politika msejħa scheduler (politika tal-iskedar) u meta tagħżel soluzzjoni, se tkun iggwidata minn data bħal: istorja tal-istartjar (liema programm tnieda l-itwal fl-aħħar minuti), x'tagħbija iġorr dan il-proċess (liema tipi ta 'programmi tnedew), metriċi tal-prestazzjoni (jekk is-sistema huwa ottimizzat għal interazzjoni interattiva jew għal throughput ) eċċ.

Estrazzjoni: proċess

L-astrazzjoni ta 'programm li qed jaħdem esegwit mis-sistema operattiva hija dak li nsejħu proċess. Kif issemma qabel, proċess huwa sempliċiment programm li jaħdem, fi kwalunkwe perjodu ta 'żmien istantanju. Programm li bih nistgħu niksbu informazzjoni fil-qosor minn diversi riżorsi tas-sistema li dan il-programm jaċċessa jew jaffettwa waqt l-eżekuzzjoni tiegħu.
Biex tifhem il-komponenti tal-proċess, trid tifhem l-istati tas-sistema: x'jista' jaqra jew jibdel il-programm waqt it-tħaddim tiegħu. Fi kwalunkwe ħin partikolari, trid tifhem liema elementi tas-sistema huma importanti għall-eżekuzzjoni tal-programm.
Wieħed mill-elementi ovvji tal-istat tas-sistema li l-proċess jinkludi huwa память. L-istruzzjonijiet jinsabu fil-memorja. Id-data li l-programm jaqra jew jikteb tinsab ukoll fil-memorja. Għalhekk, il-memorja li proċess jista 'jindirizza (imsejjaħ spazju għall-indirizzi) hija parti mill-proċess.
Parti wkoll mill-istat tas-sistema huma reġistri. Ħafna struzzjonijiet huma mmirati biex jibdlu l-valur tar-reġistri jew jaqraw il-valur tagħhom, u b'hekk ir-reġistri jsiru wkoll parti importanti mill-operat tal-proċess.
Għandu jiġi nnutat li l-istat tal-magna huwa wkoll iffurmat minn xi reġistri speċjali. Pereżempju, IP - istruzzjoni pointer — punter għall-istruzzjoni li l-programm qed jesegwixxi bħalissa. Hemm ukoll pointer tal-munzell u relatati magħha punter tal-qafas, li jintużaw biex jimmaniġġjaw: parametri tal-funzjoni, varjabbli lokali u indirizzi tar-ritorn.
Fl-aħħarnett, il-programmi ħafna drabi jaċċessaw ROM (memorja li tinqara biss). Din l-informazzjoni “I/O” (input/output) għandha tinkludi lista ta’ fajls li bħalissa huma miftuħa mill-proċess.

Proċess API

Sabiex intejbu l-fehim tagħna ta 'kif jaħdem il-proċess, ejja nistudjaw eżempji ta' sejħiet tas-sistema li għandhom jiġu inklużi fi kwalunkwe interface tas-sistema operattiva. Dawn l-APIs huma disponibbli f'forma jew oħra fuq kwalunkwe OS.

Oħloq (ħolqien): L-OS għandu jinkludi xi metodu li jippermettilek toħloq proċessi ġodda. Meta ddaħħal kmand fit-terminal jew tniedi applikazzjoni billi tikklikkja darbtejn fuq ikona, tintbagħat sejħa lill-OS biex toħloq proċess ġdid u mbagħad tniedi l-programm speċifikat.
Tħassir: Peress li hemm interface għall-ħolqien ta 'proċess, l-OS għandu wkoll jipprovdi l-abbiltà li jġiegħel it-tneħħija ta' proċess. Il-biċċa l-kbira tal-programmi naturalment jibdew u jispiċċaw waħedhom hekk kif jaħdmu. Inkella l-utent jixtieq ikun jista 'joqtolhom u għalhekk interface biex iwaqqaf il-proċess ikun utli.
Stenna (stennija): Xi drabi huwa utli li tistenna biex jitlesta proċess, għalhekk xi interfaces huma pprovduti li jipprovdu l-abbiltà li tistenna.
Kontroll Misc (kontroll varji): Minbarra l-qtil u l-istennija għall-proċess, hemm ukoll metodi varji ta 'kontroll oħra. Pereżempju, il-biċċa l-kbira tas-sistemi operattivi jipprovdu l-abbiltà li jiffriżaw proċess (iwaqqaf l-eżekuzzjoni tiegħu għal ċertu perjodu) u mbagħad jerġa’ jibda (kompli l-eżekuzzjoni)
Status (stat): Hemm diversi interfaces biex tinkiseb xi informazzjoni dwar l-istatus ta 'proċess, bħal kemm ilu jaħdem jew f'liema stat jinsab bħalissa.

Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 2: Estrazzjoni: Proċess (traduzzjoni)

Ħolqien tal-Proċess: Dettalji

Waħda mill-affarijiet interessanti hija kif eżattament il-programmi jiġu trasformati fi proċessi. Speċjalment kif l-OS jiġbor u jmexxi l-programm. Kif eżattament jinħoloq il-proċess.
L-ewwelnett, l-OS għandu jgħabbi l-kodiċi tal-programm u d-dejta statika fil-memorja (fl-ispazju tal-indirizz tal-proċess). Il-programmi normalment jinsabu fuq disk jew drive solid-state f'xi format eżekutibbli. Għalhekk, il-proċess tat-tagħbija tal-programm u d-dejta statika fil-memorja jeħtieġ li l-OS ikun jista 'jaqra dawk il-bytes mid-disk u jpoġġihom x'imkien fil-memorja.

F'sistemi operattivi bikrija, il-proċess tat-tagħbija sar bil-ħerqa, li jfisser li l-kodiċi kollu kien mgħobbi fil-memorja qabel ma tnieda l-programm. Is-sistemi operattivi moderni jagħmlu dan b'mod għażżien, jiġifieri, jgħabbu biċċiet ta 'kodiċi jew data biss meta l-programm jeħtieġhom waqt l-eżekuzzjoni tiegħu.

Ladarba l-kodiċi u d-data statika jitgħabbew fil-memorja tal-OS, hemm ftit aktar affarijiet li jeħtieġ li jsiru qabel ma l-proċess ikun jista 'jmexxi. Xi ammont ta 'memorja għandu jiġi allokat għall-munzell. Il-programmi jużaw il-munzell għal varjabbli lokali, parametri tal-funzjoni, u indirizzi tar-ritorn. L-OS jalloka din il-memorja u jagħtiha lill-proċess. Il-munzell jista 'jiġi allokat ukoll b'xi argumenti, speċifikament jimla l-parametri tal-funzjoni main(), pereżempju b'firxa ta' argc u argv.

Is-sistema operattiva tista 'wkoll talloka xi memorja għall-borġ tal-programm. Il-borġ jintuża minn programmi biex jitolbu b'mod espliċitu data allokata b'mod dinamiku. Il-programmi jitolbu dan l-ispazju billi jsejħu l-funzjoni malloc () u tikklerjaha b'mod espliċitu billi ssejjaħ il-funzjoni ħielsa(). Il-borġ huwa meħtieġ għal strutturi tad-dejta bħal folji marbuta, tabelli tal-hash, siġar u oħrajn. Għall-ewwel, ammont żgħir ta 'memorja huwa allokat lill-borġ, iżda maż-żmien, hekk kif il-programm jibda, il-borġ jista' jitlob aktar memorja permezz tas-sejħa API tal-librerija malloc(). Is-sistema operattiva hija involuta fil-proċess ta 'allokazzjoni ta' aktar memorja biex tgħin tissodisfa dawn is-sejħiet.

Is-sistema operattiva se twettaq ukoll kompiti ta 'inizjalizzazzjoni, partikolarment dawk relatati ma' I/O. Pereżempju, fuq sistemi UNIX, kull proċess awtomatikament għandu 3 deskritturi tal-fajl miftuħa, għal input, output u żball standard. Dawn il-manki jippermettu lill-programmi jaqraw l-input mit-terminal kif ukoll juru informazzjoni fuq l-iskrin.

Għalhekk, billi tgħabbi kodiċi u data statika fil-memorja, toħloq u inizjalizza l-munzell, u tagħmel xogħol ieħor relatat mat-twettiq ta 'kompiti I/O, l-OS jipprepara l-istadju għall-proċess biex jesegwixxi. Fl-aħħarnett, fadal l-aħħar kompitu: it-tmexxija tal-programm mill-punt tad-dħul tiegħu, imsejħa l-funzjoni main(). Billi tesegwixxi l-funzjoni main(), l-OS jittrasferixxi l-kontroll tas-CPU għall-proċess li għadu kif inħoloq, u b'hekk il-programm jibda jwettaq.

Stat tal-proċess

Issa li għandna xi fehim ta 'x'inhu proċess u kif huwa maħluq, ejja lista l-istati proċess li jista' jkun fihom. Fl-aktar forma sempliċi tiegħu, proċess jista 'jkun f'wieħed minn dawn l-istati:
Running. Meta taħdem, il-proċess jimxi fuq il-proċessur. Dan ifisser li l-istruzzjonijiet qed jiġu esegwiti.
Ready. Fl-istat lest, il-proċess huwa lest biex jaħdem, iżda għal xi raġuni l-OS ma jesegwixxihx fil-ħin speċifikat.
bblukkata. Fl-istat imblukkat, proċess iwettaq xi operazzjonijiet li jipprevjenu milli jkun lest biex tesegwixxi sakemm iseħħ xi avveniment. Eżempju komuni huwa meta proċess jibda operazzjoni IO, isir imblukkat sabiex xi proċess ieħor ikun jista' juża l-proċessur.

Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 2: Estrazzjoni: Proċess (traduzzjoni)

Tista 'timmaġina dawn l-istati fil-forma ta' graff. Kif nistgħu naraw fl-istampa, l-istat tal-proċess jista 'jinbidel bejn RUNNING u LEST fid-diskrezzjoni tal-OS. Meta l-istat ta 'proċess jinbidel minn LESTI għal RUNNING, dan ifisser li l-proċess ikun ġie skedat. Fid-direzzjoni opposta - imneħħija mit-tqassim. Fil-mument meta proċess isir IMBLOCKAT, pereżempju, nibda operazzjoni IO, l-OS se jżommha f'dan l-istat sakemm iseħħ xi avveniment, pereżempju t-tlestija ta 'IO. f'dan il-mument it-tranżizzjoni għall-istat READY u possibilment immedjatament għall-istat RUNNING jekk l-OS jiddeċiedi hekk.
Ejja nħarsu lejn eżempju ta 'kif żewġ proċessi jimxu minn dawn l-istati. Biex tibda, ejja nimmaġinaw li ż-żewġ proċessi qed jaħdmu, u kull wieħed qed juża biss is-CPU. F'dan il-każ, l-istati tagħhom se jidhru bħal dan.

Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 2: Estrazzjoni: Proċess (traduzzjoni)

Fl-eżempju li ġej, l-ewwel proċess, wara xi żmien għaddej, jitlob IO u jidħol fl-istat IMBLOCKAT, li jippermetti proċess ieħor jaħdem (FIG 1.4). L-OS jara li l-proċess 0 mhux qed juża s-CPU u jibda l-proċess 1. Waqt li jkun qed jaħdem il-proċess 1, IO jitlesta u l-istatus tal-proċess 0 jinbidel għal LESTI. Fl-aħħarnett, il-proċess 1 tlesta, u mat-tlestija, il-proċess 0 jibda, jesegwixxi, u jispiċċa x-xogħol tiegħu.

Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 2: Estrazzjoni: Proċess (traduzzjoni)

Struttura tad-data

L-OS innifsu huwa programm, u bħal kull programm ieħor, għandu xi strutturi tad-dejta ewlenin li jżommu rekord ta 'diversi biċċiet ta' informazzjoni rilevanti. Biex issegwi l-istat ta 'kull proċess, l-OS se jappoġġja xi wħud lista tal-proċess għall-proċessi kollha fl-istat LESTI u xi informazzjoni addizzjonali biex jittraċċaw il-proċessi li qed jaħdmu bħalissa. Ukoll, l-OS għandu jimmonitorja proċessi mblukkati. Wara li titlesta l-IO, l-OS għandu jqajjem il-proċess meħtieġ u jpoġġih fi stat lest biex jaħdem.

Pereżempju, l-OS għandu jippreserva l-istat tar-reġistri tal-proċessur. Fil-mument li jieqaf il-proċess, l-istat tar-reġistri jinħażen fl-ispazju tal-indirizzi tal-proċess, u fil-mument li jkompli l-operat tiegħu, il-valuri tar-reġistri jiġu restawrati u b'hekk tkompli l-eżekuzzjoni ta 'dan il-proċess.

Minbarra l-istati lesti, imblukkati, li qed jaħdmu, hemm xi stati oħra. Xi drabi, fil-ħin tal-ħolqien, proċess jista 'jkun fl-istat INIT. Fl-aħħarnett, proċess jista' jitqiegħed fl-istat FINALI meta jkun diġà tlesta, iżda l-informazzjoni tiegħu tkun għadha ma ġietx approvata. Fuq sistemi UNIX dan l-istat jissejjaħ proċess zombie. Dan l-istat huwa utli għal każijiet fejn proċess ġenitur irid ikun jaf il-kodiċi tar-ritorn ta 'wild, per eżempju, normalment 0 sinjal ta' suċċess u 1 żball, iżda programmaturi jistgħu joħorġu kodiċijiet ta 'output addizzjonali biex jindikaw problemi differenti. Meta l-proċess ġenitur jintemm, jagħmel sejħa tas-sistema finali, bħal wait(), biex tistenna li l-proċess tat-tfal jintemm u sinjal lill-OS li jista 'jneħħi kwalunkwe data assoċjata mal-proċess mitmum.

Sistemi Operattivi: Tliet Biċċiet Faċli. Parti 2: Estrazzjoni: Proċess (traduzzjoni)

Punti ewlenin tat-taħdita:

proċess — l-astrazzjoni ewlenija ta' programm li jaħdem fl-OS. Fi kwalunkwe ħin partikolari, proċess jista 'jiġi deskritt mill-istat tiegħu: il-kontenut tal-memorja fl-ispazju tal-indirizz tiegħu, il-kontenut tar-reġistri tal-proċessur, inkluż pointer tal-istruzzjoni u pointer tal-munzell, u informazzjoni IO, bħal fajls miftuħa li jinqraw jew jinkitbu.
Proċess API tikkonsisti f'sejħiet li l-programmi jistgħu jagħmlu lill-proċessi. Tipikament dawn huma sejħiet joħolqu, ħassar jew oħrajn.
● Il-proċess huwa f'wieħed minn ħafna stati, inkluż it-tħaddim, lest, imblukkat. Avvenimenti varji bħal skedar, eċċezzjonijiet mill-iskedar, jew stennija jistgħu jibdlu l-istat ta 'proċess minn wieħed għall-ieħor.
Lista tal-proċess fih informazzjoni dwar il-proċessi kollha fis-sistema. Kull dħul fiha tissejjaħ blokka ta 'kontroll tal-proċess, li fir-realtà hija struttura li fiha l-informazzjoni kollha meħtieġa dwar proċess speċifiku. 

Sors: www.habr.com

Żid kumment