Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 20

Comunicaci i Sincronitzaci de Processos

IES JAUME II EL JUST

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.

La comunicaci pot aconseguir-se mitjanant:


IES JAUME II EL JUST

PIPES (TUBERAS)

Tuberas (pipes en Linux).


Mecanisme de intercomunicaci entre procesos que permiteix que 1 o ms processos enven informaci a altre.

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

IES JAUME II EL JUST

Secci crtica. Exclusi mtua.

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.

IES JAUME II EL JUST

Exclusi mtua: Requisits.

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.

IES JAUME II EL JUST

Solucions al problema dExclusi Mutua

Basades en memria compartida

Inhibici de Interrupcions. Variables cerrojo. Semfors. Monitors.

Sense utilitzar memria compartida.

Pas de missatges.

IES JAUME II EL JUST

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.

IES JAUME II EL JUST

Variables cerrojo
Variable compartida cerrado a 0 indica que no hi ha cap procs en la secci crtica.

IES JAUME II EL JUST

Espera activa (u ocupada)


Quan el procs que espera per a accedir a la S.C. obt el processador, fa un bucle de comprovaci duna variable, mantenint ocupada la CPU.

IES JAUME II EL JUST

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.

wait(s) s equivalent a P(s).


signal(s) s equivalent a V(s).

IES JAUME II EL JUST

Implementaci dels semfors

IES JAUME II EL JUST

Exemple de sincronitzaci amb semfors

IES JAUME II EL JUST

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 );

IES JAUME II EL JUST

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.

IES JAUME II EL JUST

Monitors. Exemple.
Monitor ejemplo { int i; condicin c; insertar(int item) { ... } sacar(int *item) { ... } }

IES JAUME II EL JUST

Comunicaci per pas de missatges.


Sutilitza en sistemes distribuits. Les primitives de comunicaci sn:

send (msg, dst); receive (msg, origen);

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.

IES JAUME II EL JUST

Exemple de sincronitzaci amb missatges

IES JAUME II EL JUST

Remote Procedure Call (RPC)


Per a comunicar processos en sistemes distribuits.


Un procs dun sistema pot cridar a un procediment dun procs daltre sistema. El procs que crida es bloqueja esperant la resposta des del procediment cridat. send(proces_remot, parmetres_entrada); receive(proces_remot, parmetres_eixida); Utilitzat en el model client-servidor. Exemple: XML-RPC.

IES JAUME II EL JUST

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

IES JAUME II EL JUST

Resoluci de interbloqueos

Desentendre`s: Algorisme de lestru UNIX.

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.

IES JAUME II EL JUST

You might also like