Professional Documents
Culture Documents
Comunicació I Sincronització de Processos
Comunicació I Sincronització de Processos
Concurrencia de processos
s la execuci intercalada de instruccions de diversos processos secuencials. Els processos cooperen per a aconseguir un objectiu com. Esta cooperaci implica:
Comunicaci entre els processos. Sincronitzaci dels processos. Variables compartidas (memria compartida). Pas de missatges, per a sistemes distribuits.
PIPES (TUBERAS)
Exemple: $ cat fitxer1 fitxer2 | wc l El segon procs es deur suspendre fins que el primer done alguna eixida. Leixida estndar del primer procs es redirecciona a lentrada del segon.
cat Pipe
wc
La part del programa en la que saccedix a una zona de variables compartides sanomena secci crtica.
Este recurs compartit s tal que, si s accedit per varis processos alhora, lcci dun dells pot interferir amb la de laltre. Exemple: traure diners de dos caixers automtics a la vegada, la vble. saldo deu ser llegida pels dos processos. Per a evitar esta interferncia, fem que les seccions crtiques siguen mtuament excluients. La Exclusi Mtua s una forma de garantitzar que una vegada un procs entra en la seua S.C., un altre procs no podr entrar fins que el primero abandone la dita S.C.
Per a que un conjunt de processos concurrents cooperen de forma correcta, el mecanisme dexclusi mtua deu cumplir que:
En cap moment pot haver 2 processos dins les seues seccions crtiques. No podem fer suposicions a priori sobre les velocitats relatives dels processos o el n. de processadors. Cap procs que estiga fora de la seua secci crtica pot bloquejar a altres processos. Cap procs haur desperar eternament per a entrar a la seua secci crtica.
1. 2.
3.
4.
Pas de missatges.
Inhibici de interrupcions
Un procs, abans dentrar en la secci crtica, executa una instrucci que desactiva les interrupcions. Quan eix de la S.C. deu habilitar-les de nou.
Com que el S.O. noms sactiva per la ocurrncia dalguna interrupci, este mtod assegura que mentres el procs estiga dins la S.C., el sma. operatiu no pot fer un canvi de procs, per lo tant la S.C. sexecutar en exclusi amb tot procs. Soluci que funciona per s poc atractiu donar als processos usuari la capacitat de prohibir les interrupcions. Si desprs no les torna a habilitar, sera la fi del sistema.
Variables cerrojo
Variable compartida cerrado a 0 indica que no hi ha cap procs en la secci crtica.
Semfors
Soluci al problema de lexclusi mutua elaborada per Dijkstra. Zona de memria compartida que almacena un enter no negatiu sobre el cual noms es pot actuar amb una de les operacions segents:
InitSem(s, x);
x, x 0
wait(s); si s val 0 bloqueja al procs invocant. Si s > 0 decrementa s en una unitat. signal(s); si no hi ha processos bloquejats en s, incrementa s en una unitat. Si hi
ha processos bloquejats (s ser 0), destos processos passar al estat Preparat.
Les accions que implica una operaci wait o signal sexecuten indivisiblement.
Semfors en UNIX
Creaci dun semfor: int semget ( key_t key, int nsems, int semflg ); Exemple:
int semid = semget ( IPC_PRIVATE, 1, IPC_CREAT | 0744 );
/* Operacions P i V sobre un semfor */ void sem_P ( int semid ); void sem_V ( int semid );
Monitors
Primitiva de sincronitzaci dalt nivell, proposada per Hoare. Conjunt de procediments, variables i estructures de dades agrupats en un mdul. Propietat: noms n dels procesos pot estar actiu al monitor en un instant determinat. exclusi mtua. El compilador s el responsable daconseguir la E.M. sobre les dades del monitor, i pot implementar-la mitjanant semfors. Quan un procs crida a un procediment de dins dun monitor, les instruccions deste comproven si hi ha un procs actiu dins, i es cas afirmatiu el procs que fa la crida ser bloquejat fins que laltre isca del monitor.
Monitors. Exemple.
Monitor ejemplo { int i; condicin c; insertar(int item) { ... } sacar(int *item) { ... } }
Amb designaci directa: - send(msg, id_proc_dst); - receive(msg, id_proc_orig); Amb designaci indirecta: - send(msg, bstia); - receive(msg, bstia); Sincronitzaci:
quan un procs f un receive sobre una bstia buida, es bloqueja. quan un procs f un send a una bstia plena, es bloqueja.
Interbloqueos
Quan en un sma. multiprogramat, un procs est bloquejat esperant a que altre procs, tamb bloquejat, li envie un signal per a continuar, es diu que es troba en un estat de interbloqueig (deadlock). Per a que es produsca interbloqueig deuen donar-se les 4 condicions necessaries segents:
Exclusi mutua: els recursos son de s exclusiu. Retenci i espera: mentres un procs espera per recursos, mant els ja assignats. No apropiaci: els recursos assignats no es poden expropiar als processos. Espera circular: existe una llista circular de processos tal que cada procs espera un recurs que t el segent procs de la llista.
P1
P2 P3
Resoluci de interbloqueos
Millor un interbloqueig ocasional que limitar a lusuari a que noms puga crear un procs, obrir noms un fitxer, o usar noms una unitat dE/S.
Prevenci: fixar unes regles que asseguren que no es puga donar un interbloqueig. Infrautilitzaci dels recursos. Evitaci, mitjanant una assignaci cuidadosa dels recursos.