Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale...

54
Cursul 3 3 Procese 9 martie 2010

Transcript of Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale...

Page 1: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

Cursul 3

3Procese

9 martie 2010

Page 2: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 2

Suport curs 3

● OSC

– Capitolul 3 – Process Management

● MOS

– Capitolul 2 – Processes and Threads

● Sec iunea 1ț

● LSP

– Capitolul 5 – Process Management

– Capitolul 9 – Signals

● WSP

– Capitolul 6 – Process Management

– Capitolul 11 – Interprocess Communication

Page 3: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 3

Cuprins

● Procese: defini ie, relevan ăț ț● Stări ale proceselor

● Planificarea proceselor

● Opera ii cu proceseț● Procese în Linux i Windowsș● Comunica ia interprocesț

Page 4: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 4

Ce este un proces?

● Abstractizare de bază a SO împreună cu fi ierulș– abstractizare a ma inii fiziceș

– abstractizează o ac iuneț

● Un program aflat în execu ieț– o instan ă a unui programț

● Program – entitate pasivă

● Proces – entitate activă

● Program = imaginea unui proces

Page 5: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 5

Program vs. Proces

● Programul este pasiv – este un executabil

● Procesul este activ – se rulează cod pe procesor

● Procesul are asociate resurse

– spa iu de adresăț– fi iere deschiseș– zone de memorie (cod, date, partajată)

● Care este asocierea program/proces?

● Ce zone de memorie apar in doar procesului, nu i ț șexecutabilului (sunt dinamice)?

Page 6: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 6

Program vs. Proces (2)

$ file a.out

a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), not stripped

$ objdump -h a.out

[...]

11 .plt 00000030 00000000004003b0 00000000004003b0 000003b0 2**2

CONTENTS, ALLOC, LOAD, READONLY, CODE

12 .text 000001a8 00000000004003e0 00000000004003e0 000003e0 2**4

CONTENTS, ALLOC, LOAD, READONLY, CODE

13 .fini 0000000e 0000000000400588 0000000000400588 00000588 2**2

CONTENTS, ALLOC, LOAD, READONLY, CODE

14 .rodata 00000012 0000000000400598 0000000000400598 00000598 2**2

CONTENTS, ALLOC, LOAD, READONLY, DATA

[...]

Page 7: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 7

Program vs. Proces (3)

● $ ./a.out

● Se creează un proces

● Imaginea este executabilul a.out

● Procesul are asociate resurse i un spa iu de adresăș ț

0

max

stack

heap

data

text

Page 8: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 8

Program vs. Proces (4)

# pmap 11:   init [2]  

0000000000400000     36K r­x­­  /sbin/init

0000000000608000      4K rw­­­  /sbin/init

00000000019e3000    132K rw­­­    [ anon ]

00007f2e12ca0000      8K r­x­­  /lib/libdl­2.7.so

00007f2e12ca2000   2048K ­­­­­  /lib/libdl­2.7.so

00007f2e12ea2000      8K rw­­­  /lib/libdl­2.7.so

00007f2e12ea4000   1320K r­x­­  /lib/libc­2.7.so

00007f2e12fee000   2044K ­­­­­  /lib/libc­2.7.so

00007f2e131ed000     12K r­­­­  /lib/libc­2.7.so

00007f2e131f0000      8K rw­­­  /lib/libc­2.7.so

00007f2e131f2000     20K rw­­­    [ anon ]

[...]

00007f2e1364d000    112K r­x­­  /lib/ld­2.7.so

00007f2e13847000     12K rw­­­    [ anon ]

00007f2e13865000     12K rw­­­    [ anon ]

00007f2e13868000      8K rw­­­  /lib/ld­2.7.so

00007fff1b855000     84K rw­­­    [ stack ]

00007fff1b94b000      4K r­x­­    [ anon ]

ffffffffff600000      4K r­x­­    [ anon ]

 total            10316K

Page 9: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 9

De ce procese?

● Se înglobează o ac iune, o sarcină într-o structură independentăț

● Coexisten a mai multor proceseț

● Paralelism

● Câte procese pot rula simultan pe un sistem uniprocesor?

– pseudo paralelism

– paralelism efectiv (sisteme multiprocesor)

● Multiprogramare/multitasking

Page 10: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 10

La ce întrebări răspunde un proces?

● Ce trebuie făcut?

● Cu ce resurse?

● Cum se realizează interac iunea cu celelalte procese?ț

Page 11: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 11

Uniprogramare vs. multiprogramare

● Uniprogramare

– avantaj: simplitate

– dezavantaj: timpi mor i, utilizare ineficientă a procesoruluiț

● Multiprogramare

– avantaj: folosirea eficientă a procesorului

– dezavantaj: complexitate – algoritmi de planificare a proceselor pe procesoare

● Incertitudini ale multiprogramării

– ordinea de execu ie între două proceseț– durata de execu ie a unui procesț– durata de execu ie a unei sec iuni a unui proces (sincronizare)ț ț

Page 12: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 12

Stările unui proces

● READY – gata de execu ieț● RUNNING – rulează● WAITING – a teaptă încheierea unei opera ii de I/Eș ț

Page 13: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 13

Stările unui proces (2)

● Procese gata de execu ie – coada READYț

● Procese blocate – cozi de I/E

● Planificarea execu iei (scheduling)ț– mod preemptiv

– mod cooperativ

Page 14: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 14

Schimbare de context

Page 15: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 15

Process Control Block (PCB)

● Descrie procesul i resursele acestuiaș– în nucleul Linux – struct task_struct

– în nucleul Windows – EPROCESS

● PID (Process ID) – identificator numeric

● Spa iul de adresăț

● Spa iul de nume (namespace); chrootț

● Tabela de descriptori de fi ierș

● Masca de semnale

● Informa ii de securitate (user id; drepturile procesului)ț

Page 16: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 16

Planificatorul de procese

● Subsistem al nucleului

● Planificarea proceselor pe procesoare

– alegerea celui mai potrivit proces pentru a rula pe procesor

– alegerea din coada READY

● Algoritmi i euristici pentru folosirea cât mai eficientă a șprocesorului

● ine cont de natura proceselor:Ț– CPU intensive

– I/O intensive

Page 17: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 17

Resursele unui proces

● Resursele fizice sunt accesate prin resurse logice (abstractizare)

– disc – fi iere, re ea – socke iș ț ț

● Resursele pot avea asociată o stare

– fi ierele au cursor de fi ier, un socket are o adresă i un port destina ieș ș ș ț

● Resursele pot fi

– private (fi iere)ș

– partajate (semafoare)

– partajate par ial (spa iu de adresă)ț ț

Page 18: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 18

Descriptori de resurse

● Fiecare resursă este adresată prin intermediul unor identificatori

– Unix: descriptori (de fi iere, de IPC)ș– Windows: handle-uri

– organizate de obicei în tabele; identificatorul este un index

● Folosirea unei resurse

– ob inerea/crearea unei resurse i alocarea unui descriptorț ș– folosirea resursei cu ajutorul descriptorului i a func iilor oferite ș ț

de SO

– închiderea/distrugerea resursei

Page 19: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 19

Descriptori de resurse (2)

● Descriptorii sunt valabili doar în procesul în care au fost ob inu i ț ț(process namespace)

● Într-un alt proces acela i descriptor poate identificaș– o altă resursă

– nici o resursă (descriptor invalid)

– aceea i resursă (pentru resurse partajate)ș

● Duplicarea descriptorilor

– resursa va fi partajată între descriptorul original i copieș

● Crearea unui nou proces: partajare sau copiere?

Page 20: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 20

Tipuri de procese

● Procese interactive (foreground)

● Procese neinteractive (background)

– trimise în background (operatorul &, comanda bg, SIGSTP)

– daemoni (Unix): httpd, syslogd, sshd

– servicii (Windows): IIS, print spooler

● Procese I/O intensive (I/O bound)

● Procese CPU intensive (CPU bound)

Page 21: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 21

Opera ii cu proceseț

● Crearea proceselor

● Terminarea proceselor

– voluntară (exit)

– involuntară (excep ii, erori fatale)ț

● Întreruperea proceselor

– în Unix: semnale

– în Windows: excep iiț

● Comunicare interproces

● Sincronizare

Page 22: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 22

Crearea unui proces

● Execu ia unui program; rularea unei comenziț● Un proces se creează dintr-un proces existent

● Rela ie părinte-copilț● Cine este procesul părinte în cazul execu iei unei ț

comenzi?

● Executabilul este imaginea noului proces

● Procesului i se asociază resurse

● Devine o entitate planificabilă pe procesor

Page 23: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 23

Crearea unui proces în Windows?

PROCESS_INFORMATION pi;

if (!CreateProcess(NULL, “notepad”, NULL, NULL, TRUE,   NORMAL_PRIORITY_CLASS, NULL, NULL, &pi)) {

        printf(“Cannot execute notepad.\n”);

}

else {

        printf(“notepad running\n”);

        printf(“notepad process handle is 0x%x\n”, pi.hProcess);

}

Page 24: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 24

CreateProcess

● Creează un proces i execută programul transmis ca argumentș

● Controlul unui proces se face printr-un handle (ca i la fi iere)ș ș

● Pentru ob inerea handle-uluiț– HANDLE GetCurrentProcess (VOID);

– DWORD GetCurrentProcessId (VOID);

● Procesul părinte partajează handle-urile mo tenibile cu procesul șfiu

Page 25: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 25

Crearea unui proces în Unix

pid_t pid;

pid = fork();

switch (pid) {

case -1: /* fork failed */

perror(“fork”);

exit(EXIT_FAILURE);

case 0: /* procesul copil */

...

default: /* procesul părinte */

printf(“Created process with pid %d\n”, pid);

...

}

Page 26: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 26

fork

● Se apelează o dată dar se întoarce de două ori

– în procesul copil întoarce 0

– în procesul părinte întoarce pid-ul procesului copil

– de ce?

● Procesul copil este o copie a procesului părinte (spa iu țde adresă)

● Resursele procesului părinte sunt partajate în procesul copil (fi iere, socketi)ș

Page 27: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 27

Execu ia unui proces în Unixț

● Pentru execu ia unui program se înlocuie te imaginea ț șcurentă de executabil cu una nouă – apelurile din familia exec

● Se creează un spa iu nou de adreseț● Se încarcă executabilul

● PID-ul nu se schimbă

● Descriptorii de fi ier sunt folosi i în continuare (doar ș țdacă nu au flag-ul CLOSE_ON_EXEC)

Page 28: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 28

Încheierea execu ieiț

● Când se termină un proces?

– s-a încheiat programul (return exit_code din main)

– se programează terminarea procesului (exit/ExitProcess)

– alt program termină procesul curent (kill/TerminateProcess)

● Încheierea for atăț– Unix – semnale

– Windows – excep iiț– abort - SIGABRT

Page 29: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 29

Întreruperea unui proces în Unix

● Un proces este întrerupt prin recep ia unui semnalț

● Când se prime te un semnal:ș– starea procesului este salvată

– se execută o rutină de tratare a semnalului

– se continuă execu ia procesuluiț

● Sunt rezolvate asincron fa ă de fluxul de execu ie al procesuluiț ț

Page 30: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 30

Semnale

● Sunt identificate prin numere

– se recomandă folosire de macro-uri

– SIGKILL – 9, SIGSEGV – 15

● Tipuri de semnale

– asincrone – primite de la alte procese (programatic sau de la utilizator)

– sincrone – procesul a generat o excep ie (acces invalid, împăr ire la 0, etc.)ț ț

● Ce se întâmplă la primirea unui semnal?

– rularea unui handler

– ignorarea semnalului

– semnalul este blocat (fiecare proces are o mască de semnale)

– comportament implicit (terminare sau ignorare) (SIGKILL i SIGSTOP nu pot fi șignorate)

Page 31: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 31

Problemele folosirii semnalelor

● apelurile de sistem blocante pot fi întrerupte (errno = EINTR)

● lucrul cu semnale clasice este susceptibil la condi ii de cursăț– pot exista condi ii de cursă dacă se partajează variabile între handler-ul de ț

semnal i codul programuluiș

● semnalele clasice pot fi pierdute

● nu se pot apela func ii non-reentrante (malloc)ț

Page 32: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 32

Semnale de timp real

● Numerele cuprinse între SIGRTMIN (32) i SIGRTMAX (63)ș

● Nu au roluri predefinite

● Se pot pune într-o coadă mai multe semnale

● Semnalele cu număr mai mic au prioritate mai mare

● Se garantează ordinea în cazul transmiterii repetate a aceluia i șsemnal

Page 33: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 33

Întreruperea unui proces în Windows

● Se datorează recep ionării unei excep iiț ț● Când un proces prime te o excep ieș ț

– starea procesului este salvată

– se execută o rutină de tratare

– se continuă execu ia procesuluiț

● Cauzele excep iilorț– o cerere de întrerupere a procesului

– accesarea unei loca ii invalide de memorieț– împăr ire la zeroț

Page 34: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 34

APC

● Asynchronous Procedure Call

● Asociate per thread; fiecare thread are o coadă de APC

● APC-urile se execută în momentul în care thread-ul curent intră într-o stare alertabilă

– WaitForSingleObjectEx

Page 35: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 35

A teptarea terminării unui procesș

● Procesul apelant este blocat până la terminarea procesului specificat (proces copil)

– Unix: wait, waitpid, WIFEXITED, WIFSIGNALED

– Windows: WaitForSingleObject, GetExitCodeProcess

● Cum sunt implementa i operatorii shellț– & ;

– || &&

Page 36: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 36

Probleme la terminarea unui proces

● Ce se întâmplă dacă nu se a teaptă un proces?ș

● Ce este un proces zombie?

● Ce se întâmplă cu procesele ale căror părinte moare?

Page 37: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 37

Studiu de caz: comanda nohup

$ nohup btdownloadheadless ­­responsefile lin­kernel.torrent &> /dev/null &

● Comanda este pornită în background

● Procesul ignoră semnalul SIGHUP

● La încheierea unei sesiuni shell se transmite

– SIGQUIT proceselor din foreground

– SIGHUP proceselor din background

● Similar: disown (bash), dtach, screen

Page 38: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 38

Daemoni/servicii

● Procese care rulează în background

● Nu au asociate un terminal de control

● Pot rula înainte de autentificarea unui utilizator

– StartServiceCtrlDispatcher(...)

– daemon()

● Care este procesul părinte al daemon-ilor Unix?

● Cum interac ionează utilizatorul cu un daemon?ț

Page 39: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 39

Comunica ie interprocesț

● IPC

● Colaborare i competi ieș ț

● Colaborare – partajare/transmitere informa ieț

● Competi ie – acces exclusiv la resurse -> sincronizareț

● Colaborare

– fi iereș

– pipe-uri (anonime, cu nume – FIFO)

– socke iț

– cozi de mesaje

– memorie partajată

Page 40: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 40

Context comunica ie interprocesț

● Partajarea informa ieiț– acces concurent la informa ie -> sincronizareț

● Paralelism/cre terea vitezei de calculș– modelul boss-workers, worker-threads

● Modularitate

– Do one thing, do one thing well!

● Convenien ăț– un utilizator poate rula mai multe procese

Page 41: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 41

Pipe-uri

● Pipe-uri anonime

– doi descriptori/două handle-uri

– procesele comunicante sunt înrudite

– un capăt de scriere i un capăt de citireș– pipe/CreatePipe

– Cum este implementat operatorul | în shell?

● Pipe-uri cu nume (FIFO)

– intrare în sistemul de fi iereș– procesele nu trebuie să fie înrudite

– mkfifo/CreateNamedPipe

Page 42: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 42

Memorie partajată

Spa iu adresă proces 1ț Spa iu adresă proces 2ț

RAM

shared

Page 43: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 43

Memorie partajată (`2)

● Spa iu virtual de adresă mapat peste memoria fizică ț(RAM)

● Opera iiț– crearea zonei de memorie partajată

– ata area la zona de memorie partajatăș– deta area de la zona de memorie partajatăș– eliberarea zonei de memorie partajată

– shmget, shmat, shmdt, shmctl

– CreateFileMapping/MapViewOfFile/UnmapViewOfFile

● Accesul se face pe bază de pointeri (adrese)

Page 44: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 44

Transfer de mesaje

Proces 1 Proces 2

M M

M

kernel

Page 45: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 45

Transfer de mesaje

● Util în medii distribuite (MPI)

● Tipuri de comunica ieț– dincronă sau asincronă

– directă

● mesajul este livrat procesului (MPI)

– indirectă

● mesajul este livrat într-o căsu ă/mailslot (SO)ț

● Opera ii SOț– creare mailslot (msgget/CreateMailslot,CreateFile)

– primire/transmitere mesaj (msgsnd/msgrcv/ReadFile/WriteFile)

– tergere mailslot (msgctl/DeleteFile)ș

Page 46: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 46

Message passing vs. shared memory

● Avantaje MP

– util în sisteme distribuite

– nu necesită sincronizare

– informa ia este formatată (tip mesaj, lungime)ț

● Avantaje SM

– util în sisteme multiprocesor

– foarte rapidă (nu se face trecere prin kernel)

– u or de folosit (lucru cu pointeri/adrese)ș

Page 47: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 47

Comunica ia în re eaț ț

proces

stivă de protocoale

proces

canal de comunica ieț

sistem de calcul 1 sistem de calcul 2

Page 48: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 48

Socke iț

● Abstractizare a comunica iei în re eaț ț

● Interfa ă de comunica ieț ț

● O pereche de procese comunicante în re ea – o pereche de țsocke iț

● Un socket = adresă + port

● Modelul client-server

● Comunica ieț– orientată conexiune (TCP)

– ne-orientată conexiune (UDP)

Page 49: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 49

RPC/RMI

● Remote Procedure Call

– se oferă un stub clientului cu informa ii despre procedura de țapelat

– reprezentare independentă de sistem (XDR – eXternal Data Representation)

● Remote Method Invocation

– object-based

– se pot transmite obiecte ca argumente

– stub (client) – parameter marshalling

– skeleton (server) – parameter unmarshalling

Page 50: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 50

Cuvinte cheie

● proces

● program

● executabil

● uniprogramare

● multiprogramare

● schimbare de context

● PCB

● scheduler

● descriptori de resurse

● creare, încheiere

● întrerupere

● semnale/APC

● daemoni/servicii

● shared memory

● message passing

● socket

● RPC, RMI

Page 51: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 51

Exerci iu 1ț

● Ce sunt procesele zombie i ce efect au asupra sistemului?ș

● Câte procese părinte (parent), fiu (child) i frate (sibling) poate șavea un proces? (presupunând resurse nelimitate)

● Defini i trei caracteristici ale unui daemon/serviciu?ț

Page 52: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 52

Exerci iu 2ț

● Câte elemente de fiecare tip din lista celor de mai jos con ine un țproces:

– executabil

– stivă

– handler de semnal

– tabelă de fi iereș

– spa iu de adresăț

– descriptor de fi ierș

Page 53: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 53

Exerci iu 3ț

● Ce problemă poate aduce următorul program şi cum poate fi soluţionată?  

static int flag = 0;

static void sig_handler (int signum) 

     flag = 1; 

int main (void) 

    if (signal (SIGUSR1, sig_handler) == SIG_ERR) { 

        perror ("signal"); 

       exit (EXIT_FAILURE); 

    } 

    /* wait for signal */ 

    if (flag == 0) 

        pause (); 

    /* do work */ 

    ... 

    return 0; 

}

Page 54: Procese - ocw.cs.pub.ro · 09.03.2010 3 Cuprins Procese: definiie, relevanăț ț Stări ale proceselor Planificarea proceselor Operaii cu proceseț Procese în Linux i Windowsș

09.03.2010 54

Întrebări

?