Procesi in medprocesna komunikacija Procesi Upravljanje procesov Medprocesna

  • Slides: 35
Download presentation
Procesi in medprocesna komunikacija • Procesi • Upravljanje procesov • Medprocesna komunikacija Univerza v

Procesi in medprocesna komunikacija • Procesi • Upravljanje procesov • Medprocesna komunikacija Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 1

Proces • Program je koda v pomnilniku ali na disku. • Proces pa je

Proces • Program je koda v pomnilniku ali na disku. • Proces pa je program v izvrševanju (task-opravilo, job v času zaporednega (batch) procesiranja). • Proces je aktiven, ko ima zagotovljene pogoje za napredovanje, sicer je ustavljen. • Ko je aktiven, je pripravljen za izvajanje, ko se poteguje za izvajanje na procesni enoti - aktivno čaka, da dobi procesno enoto. • Ko jo dobi, se izvaja, dokler se ne zaključi. • Proces torej med svojim obstojem spreminja svoje stanje. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 2

Prehajanje stanj procesa med njegovim obstojem. • V večopravilnem operacijskem sistemu obstaja več pripravljenih

Prehajanje stanj procesa med njegovim obstojem. • V večopravilnem operacijskem sistemu obstaja več pripravljenih procesov, vsak na določenem stanju napredovanja. • Navidezno se izvajajo hkrati (razvrščevalec, dispečer). • Na enoprocesorskem sistemu se izvaja hkrati le en proces, v večprocesorskem pa največ toliko kolikor je procesorjev. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 3

Ustvarjanje procesa - 1 • S pomočjo sistemskih funkcij, proces-roditelj ustvari proces-otroka, ki lahko

Ustvarjanje procesa - 1 • S pomočjo sistemskih funkcij, proces-roditelj ustvari proces-otroka, ki lahko naprej ustvarja druge procese, s čemer se zgradi drevo procesov. • Delitev virov (resursov) – procesa roditelj in otrok delita vse vire, – samo del virov, ali pa nimata skupnih virov • Izvedba – oba procesa se lahko izvajata sočasno ali pa – roditelj počaka, da se proces-otrok konča. • Proces-otrok dobi enak naslovni prostor kot ga ima proces -roditelj. • V UNIX sistemska funkcija pid_t fork(void) ustvari proces-otroka, exec pa požene nov program (zaporedje ukazov), ki nadomesti kopijo procesa-roditelj. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 4

OS -> Sistemske funkcije ->App<->Hdw Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13

OS -> Sistemske funkcije ->App<->Hdw Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 5

Upravljanje procesa - 2 • funkcija exit konča izvajanje procesa. • funkcija wait omogoča

Upravljanje procesa - 2 • funkcija exit konča izvajanje procesa. • funkcija wait omogoča procesu-roditelju, da počaka, da se proces-otrok konča. • funkcija sleep ustavi izvajanje procesa za določen časovni interval. • funkcija system realizira zaporedje klicev fork, exec in wait. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 6

Proces – kaj potrebuje? • Ustvarjen proces določa procesni kontrolni blok (PCB): – dobi

Proces – kaj potrebuje? • Ustvarjen proces določa procesni kontrolni blok (PCB): – dobi svoj PID, naslovni prostor v pomnilniku, programski števec, sklad (seznam klicanih funkcij), – podatkovni števec, globalne spremenljivke, odprte datoteke, I/O informacije – svoje procese otroke, – alarme, signale, kazalce, lastništvo Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 7

Stanje procesa in njegov naslovni prostor v pomnilniku (PCB) Univerza v Ljubljani, FE "Vzporedni

Stanje procesa in njegov naslovni prostor v pomnilniku (PCB) Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 8

Čakalne vrste v OS • Job queue – množica vseh procesov v sistemu •

Čakalne vrste v OS • Job queue – množica vseh procesov v sistemu • Ready queue – množica vseh procesov, ki so v pomnilniku pripravljeni na izvajanje • Device queues – množica vseh procesov, ki čakajo na I/O enote • Procesi migrirajo iz ene vrste v drugo, glede na rezultat razvrščanja, dosegljivost I/O naprav in zunanjih prekinitev. • Razvrščanje je dolgoročno (job scheduler – kaj bo šlo v vrsto pripravljenih) in kratkoročno (CPU scheduler – kaj bo šlo v izvedbo). Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 9

Ready Queue in različne I/O Device Queues Univerza v Ljubljani, FE "Vzporedni sistemi -

Ready Queue in različne I/O Device Queues Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 10

Izvedba razvrščanja procesov Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 11

Izvedba razvrščanja procesov Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 11

Vsebinski preklop med procesoma v OS (pojavi se čas, ko ni aktiven noben proces

Vsebinski preklop med procesoma v OS (pojavi se čas, ko ni aktiven noben proces - zakasnitev) Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 12

Primeri standardnih procesov • Shell – lupina je interpreter ukazov (je tudi sam proces),

Primeri standardnih procesov • Shell – lupina je interpreter ukazov (je tudi sam proces), ki kreira nov proces v ozadju, če končamo ukazno vrstico z& – Ko to naredi, ne čaka, da se ta proces zares ustvari, ampak se vrne v ukazni način, v katerem lahko ponovno sprejme nov ukaz. – Cntrl-C konča izvajanje in obstoj nekega procesa. • Daemon – demon, je nek proces, ki neprestano teče v ozadju. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 13

Proces : programska nit (threads) • Proces je lahko sestavljen iz več programskih niti,

Proces : programska nit (threads) • Proces je lahko sestavljen iz več programskih niti, ki -imajo svoj programski števec, registre, sklad, in trenutno stanje. -izvajajo se v okviru procesa in si delijo vire z drugimi nitmi istega procesa. . -zaščita medsebojnih vplivov med nitmi je skrb programerja. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 14

Proces : programska nit (thread) Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13

Proces : programska nit (thread) Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 15

Proces : programska nit : klic funkcije Lastnost Proces ustvarjen Procesna nit s fork(

Proces : programska nit : klic funkcije Lastnost Proces ustvarjen Procesna nit s fork( ) Klic funkcije spremenljivke ima kopije vseh spremenljivk skupne globalne spremenljivke ID-ji dobi nov ID procesa skupen ID s procesom, toda poseben ID niti skupen ID procesa in/ali niti komunikacija eksplicitna komunikacija (npr. pipe ali vrne majhne celoštevilčne vrednosti) lahko komunicira preko vrnjenih vrednosti ali pa pazljivo!! preko skupnih spremenljivk lahko komunicira preko vrnjenih vrednosti ali pa preko skupnih spremenljivk sočasnost (en CPU) navidezno sočasno zaporedno sočasnost (več CPU-jev) lahko sočasno niti jedra lahko sočasno zaporedno Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 16

Uporaba programskih niti v procesiranju besedila • Če bi bil proces izveden le z

Uporaba programskih niti v procesiranju besedila • Če bi bil proces izveden le z eno programsko nitjo, bi bilo treba upravljanje vseh opravil vključiti v aplikacijo, pri več nitih pa večino problemov reši OS (tipkovnica, disk, prikaz, . . ) Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 17

Virtualni računalniki • Gremo še korak naprej, na enem računalniku ustvarimo navidezne neodvisne računalnike.

Virtualni računalniki • Gremo še korak naprej, na enem računalniku ustvarimo navidezne neodvisne računalnike. • Jedro operacijskega sistema in pripadajoča strojna oprema je obravnavana kot neodvisna strojna oprema. • Virtualni računalnik nudi vmesnik do resnične strojne opreme. Operacijski sistem pa ustvari iluzijo, da imamo na voljo več procesorjev/računalnikov, od katerih vsak deluje na svoji strojni opremi. • To pomeni, da so računalniki medsebojno popolnoma neodvisni, se ne morejo motiti in tudi ne morejo komunicirati preko skupnih spremenljivk (imajo ločene pomnilnike). Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 18

Virtualni računalniki (a) Nonvirtual machine (b) Virtual machine Univerza v Ljubljani, FE "Vzporedni sistemi

Virtualni računalniki (a) Nonvirtual machine (b) Virtual machine Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 19

Arhitektura virtualiziranih računalnikov Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 20

Arhitektura virtualiziranih računalnikov Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 20

Sodelujoči procesi • Neodvisni procesi se ne motijo in ne sodelujejo – nas ne

Sodelujoči procesi • Neodvisni procesi se ne motijo in ne sodelujejo – nas ne zanimajo. • Sodelujoči procesi lahko medsebojno vplivajo na potek izvajanja preko skupnih informacij in podatkov, ki jih izmenjujejo z medprocesno komunikacijo (IPC). • Komunicirajo lahko tako da: – Izhodni podatki prvega procesa postanejo vhodni podatki drugega procesa (cevi) – Prvi proces zapiše vrednost v pomnilniško lokacijo in pričakuje, da jo bo drugi proces od tam prebral (skupen pomnilnik) – Prvi proces pošlje sporočilo in drugi proces to sporočilo interpretira (sporočila) Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 21

Komunikacijski model Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 22

Komunikacijski model Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 22

Sodelujoči procesi • V OS UNIX se za komunikacijo uporabljajo: – Cevi (pipe, mkfifo)

Sodelujoči procesi • V OS UNIX se za komunikacijo uporabljajo: – Cevi (pipe, mkfifo) in – Signali (signal, kill, raise, alarm, pause) so standardna oblika komuniciranja v OS UNIX. Cevi omogočajo enosmerno komunikacijo, signali pa se uporabljajo za javljanje izjemnih dogodkov. – Sporočila (msgget, msgctl, msgsnd, msgrcv), – Semaforji (semget, semctl, semop) in – Skupen pomnilnik (shmget, shmctl, shmat, msgdt) predstavljajo razširitev možnosti za komunikacijo. Semaforji omogočajo sinhronizacijo pri komuniciranju preko skupnega pomnilnika. – Vtičnice (socket, bind, listen, accept, connect) namenjene za komunikacijo v porazdeljenih sistemih. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 23

Cevi • Cev, ki je dostopna enemu procesu z obema koncema nima pravega smisla.

Cevi • Cev, ki je dostopna enemu procesu z obema koncema nima pravega smisla. Zato jo napeljemo tako, da jo uporabljata dva procesa, prvi vanjo piše, drugi pa iz nje bere. – V procesu-roditelj odpremo cev s klicem pipe, – Ustvarimo nov proces-otrok s klicem fork (proces-otrok podeduje podatke o prej odprti cevi), – En konec cevi odpremo procesu-otroku za pisanje (write(fd[1])), drugi konec pa procesu-roditelju za branje (read(fd[0])). Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 24

Semaforji • Semafor se uporablja za sinhronizacijo med procesi, ki dostopajo do istega vira,

Semaforji • Semafor se uporablja za sinhronizacijo med procesi, ki dostopajo do istega vira, dostopnega le enemu od procesov. Je spremenljivka, dostopna vsem procesom, ki tekmujejo za vir. • Nad semaforjem lahko naredimo dve operaciji: zakleni in odkleni. (binarni semafor zavzame le eno od vrednosti). Toda testiranje in spreminjanje vrednosti semaforja mora biti neprekinljivo (atomarično) (test-and-set): – Ko proces potrebuje vir, preveri stanje semaforja. – Če je odklenjen, ga zaklene in zaseže vir, s čimer začasno prepreči drugim procesom dostop do vira. – Če pa je zaklenjen, se postavi v stanje čakaj na semaforju. – Ko vir ni več potreben, proces sprosti vir in odklene semafor. • Semafor je deljena spremenljivka s posebnim načinom obravnave (atomaričen R/W) in je uporabljena za zaščito drugih deljenih virov (pomnilnika, I/O enot, numerični procesor, …). Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 25

Signali • Signal je programska prekinitev, ki jo proces dobi od sistemskega jedra, od

Signali • Signal je programska prekinitev, ki jo proces dobi od sistemskega jedra, od drugega procesa ali od samega sebe. • Signal se pojavi asinhrono ob izvajanju procesa (ni znano vnaprej kdaj se bo pojavil), lahko pa nanj tudi čakamo. • Definiramo jih kot konstante (cela števila do 31). Primeri: – – – SIGINT 3 /* Interrupt – Cntrl+C */ SIGFPE 8 /* Floating point exception */ SIGBUS 10 /* Bus error */ SIGPIPE 13 /* write in a pipe with no open output */ SIGCHLD 18 /* end of child process */ SIGCONT 26 /* continue with interrupted process */ Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 26

Sporočila • Procesi lahko komunicirajo tudi preko sporočil, ki so shranjena v sporočilnih vrstah.

Sporočila • Procesi lahko komunicirajo tudi preko sporočil, ki so shranjena v sporočilnih vrstah. Kreiranje in dostop do sporočilne vrste proces pridobi s klicem funkcije msgget. • Sporočilno vrsto upravljamo, npr. odstranimo, preverimo njen status, itd. s funkcijo msgctl. • Sporočilna vrsta je seznam sporočil. Proces lahko s msgsnd odda sporočilo v vrsto, z msgrcv pa ga prebere iz sporočilne vrste. • Vsako sporočilo ima začetek in konec in poljubno dolžino. Sporočilo ima poleg naslova, izvornega in ponornega procesa, vsebine tudi svoj tip, ki omogoča izvedbo npr. prioritetnega sistema sporočil, ali virtualnih kanalov (več komunikacijskih kanalov (tematik) v isti vrsti), itd. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 27

Vtičnice - 1 • Sistem komunikacijskih vtičnic (sockets) predstavlja razširitev medprocesne komunikacije tudi na

Vtičnice - 1 • Sistem komunikacijskih vtičnic (sockets) predstavlja razširitev medprocesne komunikacije tudi na krajevno porazdeljene sisteme. • Vtičnica je ime za priključno mesto (dostopno točko) do enega od obeh koncev dvosmernega komunikacijskega kanala. • Procesa, ki želita komunicirati, morata, vsak posebej, dobiti dostop do svoje vtičnice. Obe vtičnici pa morata predstavljati vsaka en konec istega komunikacijskega kanala. • Vtičnice obstajajo znotraj komunikacijskih domen (protokolnih družin): – AF-UNIX je naslovna domena sistema UNIX, – AF_INET je naslovna domena Internet, – AF_CCITT je naslovna domena x. 25. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 28

Vtičnice - 2 • Vtičnice so različnih tipov – imajo različne lastnosti komunikacijskih kanalov,

Vtičnice - 2 • Vtičnice so različnih tipov – imajo različne lastnosti komunikacijskih kanalov, npr: – SOCK_STREAM tip za podatkovni tok, ki je neprekinjen, zagotavlja komunikacijo brez podvajanja in izgub in v pravilnem vrstnem redu. – SOCK_DGRAM tip za datagram, nudi nepovezan način komunikacije. Podatki potujejo po različnih poteh, kar pomeni, da so na sprejemni strani lahko podvojeni in dostavljeni v različnem zaporedju kot so bili oddani. – SOCK-RAW tip za prenos golih podatkov. Omogoča dostop do nižjih nivojev komunikacije in je primeren za razvoj novih storitev in testiranje novih komunikacijskih protokolov. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 29

Vtičnice - 3 • Vtičnica je objekt, ki ga ustvari sistemski klic socket. Komunikacija

Vtičnice - 3 • Vtičnica je objekt, ki ga ustvari sistemski klic socket. Komunikacija se lahko začne, ko vtičnico pripnemo z bind na nek proces. • Komunikacija med procesi poteka po principu odjemalecstrežnik (client-server). • Odjemalci ustvarijo vtičnico s socket in connect. Strežnik na znanem naslovu sprejema zahteve odjemalcev z accept. • Če zveza connect-accept z nekim odjemalcem uspe, strežnik odpre novo vtičnico preko katere komunicira z odjemalcem. • Komunikacija poteka z read, write, send, recv do zaključka klicem close. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 30

Vtičnice - 4 • Shematičen prikaz vzpostavitve komunikacijskega kanala med odjemalcem in strežnikom, ter

Vtičnice - 4 • Shematičen prikaz vzpostavitve komunikacijskega kanala med odjemalcem in strežnikom, ter njune komunikacije. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 31

Vtičnice - 5 • Vsako vozlišče/proces mora biti pri komunikaciji enolično določeno z naslovom.

Vtičnice - 5 • Vsako vozlišče/proces mora biti pri komunikaciji enolično določeno z naslovom. Če npr. vzpostavljamo komunikacijo v Internet domeni, je Internetni naslov IP, npr. 32 bitna število. • Pridruženo mu je tudi ime. poddomena npr: pluton. ijs. si, ki je preko preslikovalne tabele enoličmo povezano z IP. Tabela je v lokalni datoteki /etc/hosts ali pa v posebnih strežnikih (name server). Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 32

Vtičnice - 6 • Če več procesov hkrati zahteva komunikacijo, lokalno dostopajo do svojega

Vtičnice - 6 • Če več procesov hkrati zahteva komunikacijo, lokalno dostopajo do svojega kanala preko komunikacijskih vrat (port), ki so kodirana s 16 bitnim številom in dodana IP naslovu za dvopičjem. • Števila od 1 -1024 so rezervirana za dobro znane storitve, npr. vrata 21 za ftp strežnik, vrata 23 za telnet, . . • Števila do 5000 so rezervirana, števila nad 5000 pa lahko uporabljajo aplikativni programi. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 33

Klicanje oddaljene procedure • Z uporabo doslej opisanih mehanizmov lahko zgradimo še bolj zahtevno

Klicanje oddaljene procedure • Z uporabo doslej opisanih mehanizmov lahko zgradimo še bolj zahtevno komunikacijo: klicanje oddaljene procedure (RPC). • Odjemalec locira strežnika, ki bi lahko opravil želeno proceduro. • Mu posreduje parametre. • Strežnik uporabi parametre, izvede proceduro in vrne rezultate. • Podobno RMI (remote method invocation) v Javi. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 34

MPI – message passing interface (vmesnik za pošiljanje sporočil) • MPI omogoča standardizirano komunikacijo

MPI – message passing interface (vmesnik za pošiljanje sporočil) • MPI omogoča standardizirano komunikacijo med procesi, neodvisno od operacijskega sistema (OS). • MPI je komunikacijska knjižnica, ki uporablja sistemske funkcije, torej je napisana na višjem nivoju. • Uporabniku ni potrebno poznati sistemskih funkcij in podrobnosti OS. • MPI funkcije so prilagojene potrebam v praksi. • MPI knjižnica je enostavna za uporabo pri komunikaciji med procesi. • MPI okolje omogoča komuniciranje med procesi na enem ali več procesorjih, zato lahko vzporeden program razvijamo tudi na računalniku z enim procesorjem. • Razviti vzporeden program lahko izvajamo na vzporednem računalniku z več procesorji - > pohitritev. Univerza v Ljubljani, FE "Vzporedni sistemi - VS" ZS-2012/13 35