Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 2: Abstraction: Proseso (paghubad)

Pasiuna sa Operating System

Hoy Habr! Gusto nako nga dad-on sa imong atensyon ang usa ka serye sa mga artikulo-paghubad sa usa ka makapaikag nga literatura sa akong opinyon - OSTEP. Gihisgutan sa kini nga materyal nga lawom ang trabaho sa mga operating system nga sama sa unix, nga mao, pagtrabaho kauban ang mga proseso, lainlaing mga scheduler, memorya, ug uban pang parehas nga mga sangkap nga naglangkob sa usa ka modernong OS. Makita nimo ang orihinal sa tanang materyales dinhi dinhi. Palihug timan-i nga ang paghubad gihimo nga dili propesyonal (medyo gawasnon), apan nanghinaut ko nga akong gihuptan ang kinatibuk-ang kahulugan.

Ang trabaho sa lab sa kini nga hilisgutan makita dinhi:

Ubang mga bahin:

Mahimo usab nimo tan-awon ang akong channel sa telegram =)

Atong tan-awon ang labing sukaranan nga abstraction nga gihatag sa OS sa mga tiggamit: ang proseso. Ang kahulugan sa proseso yano ra - kini mao nagdagan nga programa. Ang programa mismo usa ka walay kinabuhi nga butang nga nahimutang sa disk - kini usa ka hugpong sa mga instruksyon ug posible nga pipila ka static nga datos nga naghulat nga ilunsad. Kini ang OS nga nagkuha sa mga byte ug nagpadagan niini, nga nagbag-o sa programa nga usa ka butang nga mapuslanon.
Kasagaran, ang mga tiggamit gusto nga modagan labaw pa sa usa ka programa sa parehas nga oras, pananglitan, mahimo ka magpadagan sa usa ka browser, dula, media player, text editor, ug uban pa sa imong laptop. Sa tinuud, ang usa ka kasagaran nga sistema mahimo’g modagan sa napulo o gatusan nga mga proseso nga dungan. Kini nga kamatuoran naghimo sa sistema nga mas sayon ​​​​sa paggamit, dili ka kinahanglan nga mabalaka mahitungod sa kung libre ba ang CPU, nagpadagan ka lang og mga programa.

Kini nagpatunghag problema: unsaon paghatag sa ilusyon sa daghang mga CPU? Giunsa paghimo sa OS ang ilusyon sa hapit walay kinutuban nga gidaghanon sa mga CPU, bisan kung adunay usa ka pisikal nga CPU?

Ang OS nagmugna niini nga ilusyon pinaagi sa CPU virtualization. Pinaagi sa pagsugod sa usa ka proseso, unya paghunong niini, pagsugod sa laing proseso, ug uban pa, ang OS makapadayon sa ilusyon nga adunay daghang mga virtual nga CPU, kung sa tinuud adunay usa o daghang mga pisikal nga mga processor. Kini nga teknik gitawag pagbahin sa mga kapanguhaan sa CPU sa oras. Kini nga teknik nagtugot sa mga tiggamit sa pagpadagan sa daghang mga dungan nga proseso nga gusto nila. Ang gasto sa kini nga solusyon mao ang pasundayag - tungod kay kung ang CPU gipaambit sa daghang mga proseso, ang matag proseso maproseso nga labi ka hinay.
Aron maimplementar ang CPU virtualization, ug ilabina sa pagbuhat niini og maayo, ang OS nagkinahanglan sa ubos nga lebel ug taas nga lebel nga suporta. Ang ubos nga lebel nga suporta gitawag mekanismo mga ubos nga lebel nga mga pamaagi o protocol nga nagpatuman sa gikinahanglan nga bahin sa pagpaandar. Ang usa ka pananglitan sa ingon nga pagpaandar mao ang pagbalhin sa konteksto, nga naghatag sa OS sa katakus sa paghunong sa usa ka programa ug pagpadagan sa lain nga programa sa processor. Kini nga time division gipatuman sa tanang modernong operating system.
Sa ibabaw niini nga mga mekanismo mao ang pipila ka lohika nga gitukod sa OS, sa porma sa "mga polisiya". palisiya usa ka piho nga algorithm sa paghimog desisyon alang sa operating system. Ang ingon nga mga palisiya, pananglitan, magdesisyon kung unsang programa ang kinahanglan ilunsad (gikan sa usa ka lista sa mga mando) una. Busa, pananglitan, kini nga problema masulbad pinaagi sa usa ka palisiya nga gitawag scheduler (patakaran sa pag-iskedyul) ug sa pagpili sa usa ka solusyon, kini magiyahan sa mga datos sama sa: kasaysayan sa pagsugod (nga nga programa ang pinakadugay nga gilunsad sa katapusang mga minuto), unsa nga load ang gidala niini nga proseso (unsa nga mga matang sa mga programa ang gilunsad), mga sukdanan sa performance (bisan ang sistema gi-optimize alang sa interactive nga interaksyon o para sa throughput ) ug uban pa.

Abstraksyon: proseso

Ang abstraction sa usa ka running program nga gipatuman sa operating system mao ang atong gitawag proseso. Sama sa gihisgutan sa sayo pa, ang usa ka proseso usa lamang ka nagdagan nga programa, sa bisan unsang kalit nga yugto sa panahon. Usa ka programa diin kita makakuha og summary nga impormasyon gikan sa nagkalain-laing sistema nga mga kapanguhaan nga kini nga programa ma-access o makaapekto sa panahon sa pagpatuman niini.
Aron masabtan ang mga sangkap sa proseso, kinahanglan nimo nga masabtan ang mga estado sa sistema: kung unsa ang mabasa o mabag-o sa programa sa panahon sa operasyon niini. Sa bisan unsang oras, kinahanglan nimong masabtan kung unsang mga elemento sa sistema ang hinungdanon alang sa pagpatuman sa programa.
Usa sa klaro nga mga elemento sa sistema nag-ingon nga ang proseso naglakip mao ang handumanan. Ang mga panudlo nahimutang sa memorya. Ang datos nga gibasa o gisulat sa programa nahimutang usab sa memorya. Busa, ang memorya nga matubag sa usa ka proseso (gitawag nga address space) kabahin sa proseso.
Kabahin usab sa estado sa sistema ang mga rehistro. Daghang mga panudlo ang gitumong sa pagbag-o sa kantidad sa mga rehistro o pagbasa sa ilang kantidad, ug sa ingon ang mga rehistro nahimo usab nga hinungdanon nga bahin sa operasyon sa proseso.
Kinahanglan nga matikdan nga ang estado sa makina naporma usab gikan sa pipila ka mga espesyal nga rehistro. Pananglitan, IP - pagtudlo pointer — usa ka pointer sa instruksyon nga gipatuman karon sa programa. Adunay usab stack pointer ug may kalabutan niini pointer sa frame, nga gigamit sa pagdumala: mga parameter sa function, mga lokal nga variable ug mga adres sa pagbalik.
Sa kataposan, ang mga programa kasagarang maka-access sa ROM (read-only memory). Kining “I/O” (input/output) nga impormasyon kinahanglang maglakip sa listahan sa mga file nga giablihan karon sa proseso.

Proseso nga API

Aron mapauswag ang atong pagsabot kung giunsa ang proseso molihok, atong tun-an ang mga pananglitan sa mga tawag sa sistema nga kinahanglan iapil sa bisan unsang interface sa operating system. Kini nga mga API anaa sa usa ka porma o lain sa bisan unsang OS.

Paghimo (paglalang): Ang OS kinahanglan nga maglakip sa pipila ka pamaagi nga nagtugot kanimo sa paghimo og bag-ong mga proseso. Kung mosulod ka sa usa ka command sa terminal o maglunsad og aplikasyon pinaagi sa pag-double click sa usa ka icon, usa ka tawag ang ipadala ngadto sa OS aron makahimo og bag-ong proseso ug dayon ilunsad ang espesipikong programa.
Pagtangtang: Tungod kay adunay usa ka interface alang sa paghimo sa usa ka proseso, ang OS kinahanglan usab nga maghatag abilidad sa pagpugos sa pagtangtang sa usa ka proseso. Kadaghanan sa mga programa natural nga magsugod ug mohunong sa ilang kaugalingon samtang sila nagdagan. Kay kon dili ang user gusto nga makahimo sa pagpatay kanila ug sa ingon ang usa ka interface sa paghunong sa proseso mahimong mapuslanon.
maghulat (naghulat): Usahay mapuslanon ang paghulat alang sa usa ka proseso nga makompleto, mao nga ang pipila ka mga interface gihatag nga naghatag kaarang sa paghulat.
Misc Control (lainlain nga pagkontrol): Dugang sa pagpatay ug paghulat sa proseso, adunay lain usab nga lainlaing mga pamaagi sa pagkontrol. Pananglitan, kadaghanan sa mga operating system naghatag ug katakus sa pag-freeze sa usa ka proseso (ihunong ang pagpatuman niini sa usa ka piho nga panahon) ug dayon ipadayon kini (ipadayon ang pagpatuman)
Kahimtang (estado): Adunay lain-laing mga interface alang sa pagkuha sa pipila ka impormasyon mahitungod sa kahimtang sa usa ka proseso, sama sa unsa ka dugay kini nagdagan o unsa nga kahimtang kini anaa karon.

Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 2: Abstraction: Proseso (paghubad)

Proseso sa Paglalang: Mga Detalye

Usa sa makapainteres nga mga butang mao kung giunsa ang mga programa nga gibag-o sa mga proseso. Ilabi na kung giunsa pagkuha ug pagpadagan sa OS ang programa. Sa unsa nga paagi nga ang proseso gihimo.
Una sa tanan, kinahanglan nga i-load sa OS ang program code ug static data sa memorya (ngadto sa luna sa address sa proseso). Ang mga programa kasagarang nahimutang sa usa ka disk o solid-state drive sa pipila ka executable format. Sa ingon, ang proseso sa pagkarga sa programa ug static nga datos sa memorya nanginahanglan ang OS nga makabasa sa mga byte gikan sa disk ug ibutang kini sa usa ka lugar sa memorya.

Sa sayo nga mga operating system, ang proseso sa pagkarga gihimo nga mahinamon, nga nagpasabut nga ang tibuuk nga code gikarga sa memorya sa wala pa ilunsad ang programa. Ang modernong mga operating system naghimo niini nga tapulan, nga mao, ang pagkarga sa mga piraso sa code o data lamang kung gikinahanglan kini sa programa sa panahon sa pagpatuman niini.

Sa higayon nga ang code ug static data ma-load sa OS memory, adunay pipila pa nga mga butang nga kinahanglan nga buhaton sa dili pa ang proseso modagan. Ang pila ka kantidad sa memorya kinahanglan nga igahin alang sa stack. Gigamit sa mga programa ang stack alang sa mga lokal nga variable, mga parameter sa function, ug mga adres sa pagbalik. Ang OS naggahin niini nga panumduman ug naghatag niini sa proseso. Ang stack mahimo usab nga igahin sa pipila ka mga argumento, ilabi na nga kini nagpuno sa mga parameter sa main() function, pananglitan sa usa ka array sa argc ug argv.

Ang operating system mahimo usab nga mogahin og pipila ka memorya sa program heap. Ang tambak gigamit sa mga programa aron sa dayag nga paghangyo sa dinamikong gigahin nga datos. Gihangyo sa mga programa kini nga luna pinaagi sa pagtawag sa function malloc () ug tin-aw nga gilimpyohan kini pinaagi sa pagtawag sa function libre(). Ang pundok gikinahanglan alang sa mga istruktura sa datos sama sa mga gisumpay nga mga sheet, hash table, mga kahoy ug uban pa. Sa sinugdan, usa ka gamay nga panumduman ang gigahin sa pundok, apan sa paglabay sa panahon, samtang ang programa nagdagan, ang pundok makahangyo ug dugang nga panumduman pinaagi sa library API nga tawag malloc(). Ang operating system nalangkit sa proseso sa paggahin ug dugang nga memorya aron makatabang sa pagtagbaw niini nga mga tawag.

Ang operating system maghimo usab ug mga buluhaton sa pag-initialize, labi na ang may kalabotan sa I/O. Pananglitan, sa mga sistema sa UNIX, ang matag proseso pinaagi sa default adunay 3 ka open file descriptor, alang sa standard input, output, ug error. Kini nga mga gunitanan nagtugot sa mga programa sa pagbasa sa input gikan sa terminal ingon man sa pagpakita sa impormasyon sa screen.

Busa, pinaagi sa pag-load sa code ug static data ngadto sa memorya, paghimo ug pagsugod sa stack, ug pagbuhat sa uban nga trabaho nga may kalabutan sa pagbuhat sa mga buluhaton sa I/O, ang OS nag-andam sa entablado alang sa proseso nga ipatuman. Sa katapusan, adunay usa ka katapusan nga buluhaton nga nahabilin: pagpadagan sa programa pinaagi sa entry point niini, nga gitawag nga main() function. Pinaagi sa pagpatuman sa main() function, ang OS nagbalhin sa kontrol sa CPU ngadto sa bag-ong nahimo nga proseso, sa ingon ang programa nagsugod sa pagpatuman.

Estado sa proseso

Karon nga aduna na kitay pagsabot kon unsa ang usa ka proseso ug giunsa kini paghimo, atong ilista ang proseso nga nag-ingon nga kini mahimo. Sa pinakasimple nga porma niini, ang usa ka proseso mahimong sa usa niini nga mga estado:
pagdagan. Kung nagdagan, ang proseso nagdagan sa processor. Kini nagpasabut nga ang mga panudlo gipatuman.
Andam. Sa andam nga estado, ang proseso andam na nga modagan, apan sa pipila ka rason ang OS wala magpatuman niini sa gitakda nga oras.
gibabagan. Sa gibabagan nga estado, ang usa ka proseso naghimo sa pipila ka mga operasyon nga nagpugong niini nga mahimong andam nga ipatuman hangtod mahitabo ang usa ka panghitabo. Usa ka sagad nga pananglitan mao ang kung ang usa ka proseso nagsugod sa usa ka operasyon sa IO, kini mahimong gibabagan aron ang ubang mga proseso magamit ang processor.

Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 2: Abstraction: Proseso (paghubad)

Mahunahuna nimo kini nga mga estado sa porma sa usa ka graph. Sama sa atong makita sa hulagway, ang kahimtang sa proseso mahimong mausab tali sa RUNNING ug READY sa pagkabuotan sa OS. Kung ang kahimtang sa usa ka proseso mausab gikan sa READY ngadto sa RUNNING, kini nagpasabot nga ang proseso naka-iskedyul na. Sa atbang nga direksyon - gikuha gikan sa layout. Sa higayon nga ang usa ka proseso mahimong BLOCKED, pananglitan, ako magsugod sa usa ka IO nga operasyon, ang OS magpabilin niini nga kahimtang hangtud nga ang usa ka panghitabo mahitabo, pananglitan ang pagkompleto sa IO. niining higayona ang transisyon ngadto sa READY state ug posibleng diha-diha dayon ngadto sa RUNNING state kung ang OS ang modesisyon niini.
Atong tan-awon ang usa ka pananglitan kung giunsa ang duha nga mga proseso molihok sa kini nga mga estado. Sa pagsugod, atong hunahunaon nga ang duha ka mga proseso nagdagan, ug ang matag usa naggamit lamang sa CPU. Sa kini nga kaso, ang ilang mga estado mahimong ingon niini.

Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 2: Abstraction: Proseso (paghubad)

Sa mosunod nga pananglitan, ang unang proseso, human sa pipila ka panahon nga nagdagan, naghangyo sa IO ug misulod sa BLOCKED nga estado, nga nagtugot sa laing proseso sa pagdagan (FIG 1.4). Nakita sa OS nga ang proseso 0 wala naggamit sa CPU ug nagsugod sa proseso 1. Samtang ang proseso 1 nagdagan, ang IO nahuman ug ang kahimtang sa proseso 0 nausab ngadto sa READY. Sa katapusan, ang proseso 1 nahuman na, ug sa pagkompleto, ang proseso 0 magsugod, mopatuman, ug mohuman sa trabaho niini.

Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 2: Abstraction: Proseso (paghubad)

Istruktura sa datos

Ang OS mismo usa ka programa, ug sama sa bisan unsang ubang programa, kini adunay pipila ka mga yawe nga istruktura sa datos nga nagsubay sa lainlaing may kalabutan nga mga piraso sa kasayuran. Aron masubay ang kahimtang sa matag proseso, ang OS mosuporta sa pipila listahan sa proseso para sa tanang proseso sa READY state ug pipila ka dugang nga impormasyon para masubay ang mga proseso nga nagdagan karon. Usab, ang OS kinahanglan nga bantayan ang gibabagan nga mga proseso. Human makompleto ang IO, kinahanglan nga pukawon sa OS ang gikinahanglan nga proseso ug ibutang kini sa estado nga andam na nga modagan.

Pananglitan, kinahanglan nga mapreserbar sa OS ang kahimtang sa mga rehistro sa processor. Sa higayon nga ang proseso mohunong, ang kahimtang sa mga rehistro gitipigan sa address space sa proseso, ug sa higayon nga ang operasyon niini nagpadayon, ang mga bili sa mga rehistro gipahiuli ug sa ingon nagpadayon sa pagpatuman niini nga proseso.

Gawas pa sa andam, gibabagan, nagdagan nga mga estado, adunay uban pang mga estado. Usahay, sa panahon sa paglalang, ang usa ka proseso mahimong anaa sa INIT nga estado. Sa katapusan, ang usa ka proseso mahimong ibutang sa KATAPUSAN nga kahimtang kung kini nahuman na, apan ang impormasyon niini wala pa malimpyohan. Sa mga sistema sa UNIX kini nga estado gitawag proseso sa zombie. Kini nga estado mapuslanon alang sa mga kaso diin ang proseso sa ginikanan gusto nga mahibal-an ang pagbalik nga code sa usa ka bata, pananglitan, kasagaran ang 0 nagpahibalo sa usa ka kalampusan ug ang 1 usa ka sayup, apan ang mga programmer mahimong mag-isyu og dugang nga mga code sa output aron magpahibalo sa lainlaing mga problema. Sa diha nga ang proseso sa ginikanan natapos, kini naghimo sa usa ka katapusan nga sistema sa tawag, sama sa paghulat (), sa paghulat alang sa bata proseso sa pagtapos ug signal ngadto sa OS nga kini mahimo paghawan sa bisan unsa nga data nga nalangkit sa natapos nga proseso.

Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 2: Abstraction: Proseso (paghubad)

Pangunang mga punto sa lektyur:

proseso — ang nag-unang abstraction sa usa ka running program sa OS. Sa bisan unsang panahon, ang usa ka proseso mahimong mahulagway pinaagi sa iyang kahimtang: ang sulod sa memorya sa iyang address space, ang sulod sa processor registers, lakip ang instruction pointer ug stack pointer, ug IO information, sama sa open files nga gibasa o gisulat.
Proseso nga API naglangkob sa mga tawag nga mahimo sa mga programa sa mga proseso. Kasagaran kini mao ang paghimo, pagtangtang, o uban pang mga tawag.
● Ang proseso anaa sa usa sa daghang mga estado, lakip ang pagdagan, andam, gibabagan. Ang lain-laing mga panghitabo sama sa pag-iskedyul, mga eksepsiyon gikan sa pag-iskedyul, o paghulat makapausab sa kahimtang sa usa ka proseso gikan sa usa ngadto sa lain.
Listahan sa proseso Naglangkob sa kasayuran bahin sa tanan nga mga proseso sa sistema. Ang matag entry niini gitawag nga process control block, nga sa pagkatinuod usa ka istruktura nga naglangkob sa tanang gikinahanglan nga impormasyon mahitungod sa usa ka piho nga proseso. 

Source: www.habr.com

Idugang sa usa ka comment