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 (memòria compartida). Pas de missatges, per a sistemes distribuits.

La comunicació pot aconseguir-se mitjançant:
 

IES JAUME II EL JUST

L’eixida estàndar del primer procés es redirecciona a l’entrada del segon.PIPES (TUBERÍAS)  Tuberías (pipes en Linux).  Exemple: $ cat fitxer1 fitxer2 | wc – l El segon procés es deurà suspendre fins que el primer done alguna eixida. cat Pipe wc IES JAUME II EL JUST . Mecanisme de intercomunicació entre procesos que permiteix que 1 o més processos envíen informació a altre.

. un altre procés no podrà entrar fins que el primero abandone la dita S. Exclusió mútua. la vble.  La part del programa en la que s’accedix a una zona de variables compartides s’anomena secció crítica. Este recurs compartit és tal que. làcció d’un d’ells pot interferir amb la de l’altre. si és accedit per varis processos alhora.C. Exemple: traure diners de dos caixers automàtics a la vegada. fem que les seccions crítiques siguen mútuament excluients. La Exclusió Mútua és una forma de garantitzar que una vegada un procés entra en la seua S. saldo deu ser llegida pels dos processos.     IES JAUME II EL JUST . Per a evitar esta interferència.C.Secció crítica.

Exclusió mútua: Requisits. de processadors. 2. No podem fer suposicions a priori sobre les velocitats relatives dels processos o el nº. 1. 3.  Per a que un conjunt de processos concurrents cooperen de forma correcta. Cap procés haurà d’esperar eternament per a entrar a la seua secció crítica. 4. IES JAUME II EL JUST . el mecanisme d’exclusió mútua deu cumplir que: En cap moment pot haver 2 processos dins les seues seccions crítiques. Cap procés que estiga fora de la seua secció crítica pot bloquejar a altres processos.

IES JAUME II EL JUST .  Variables cerrojo.  Sense utilitzar memòria compartida.  Pas de missatges.  Monitors.Solucions al problema d’Exclusió Mutua  Basades en memória compartida  Inhibició de Interrupcions.  Semàfors.

Solució que funciona però és poc atractiu donar als processos usuari la capacitat de prohibir les interrupcions.C.   IES JAUME II EL JUST . el sma. s’executarà en exclusió amb tot procés. operatiu no pot fer un canvi de procés.O. Com que el S. este mètod assegura que mentres el procés estiga dins la S. per lo tant la S.C. deu habilitar-les de nou.Inhibició de interrupcions  Un procés. només s’activa per la ocurrència d’alguna interrupció. abans d’entrar en la secció crítica. sería la fi del sistema.. Si després no les torna a habilitar.C. executa una instrucció que desactiva les interrupcions. Quan eix de la S.

IES JAUME II EL JUST .Variables cerrojo Variable compartida cerrado  a 0 indica que no hi ha cap procés en la secció crítica.

obté el processador. IES JAUME II EL JUST . mantenint ocupada la CPU.Espera activa (u ocupada) Quan el procés que espera per a accedir a la S. fa un bucle de comprovació d’una variable.C.

signal(s).   wait(s) és equivalent a P(s). ú d’estos processos passarà al estat Preparat. Si hi ha processos bloquejats (s serà 0). si s val 0 bloqueja al procés invocant. signal(s) és equivalent a V(s).Semàfors   Solució al problema de l’exclusió mutua elaborada per Dijkstra. s x. x ≥ 0 wait(s). Zona de memòria compartida que almacena un enter no negatiu sobre el cual només es pot actuar amb una de les operacions següents:    InitSem(s. incrementa s en una unitat. si no hi ha processos bloquejats en s. x).  Les accions que implica una operació wait o signal s’executen indivisiblement. IES JAUME II EL JUST . Si s > 0 decrementa s en una unitat.

Implementació dels semàfors IES JAUME II EL JUST .

Exemple de sincronització amb semàfors IES JAUME II EL JUST .

IPC_CREAT | 0744 ). int nsems. IES JAUME II EL JUST . void sem_V ( int semid ). Exemple: int semid = semget ( IPC_PRIVATE. 1. /* Operacions P i V sobre un semàfor */ void sem_P ( int semid ).Semàfors en UNIX   Creació d’un semàfor: int semget ( key_t key. int semflg ).

les instruccions d’este comproven si hi ha un procés actiu dins. El compilador és el responsable d’aconseguir la E. proposada per Hoare.Monitors   Primitiva de sincronització d’alt nivell.M.    IES JAUME II EL JUST . Quan un procés crida a un procediment de dins d’un monitor. i pot implementar-la mitjançant semàfors. variables i estructures de dades agrupats en un mòdul. Conjunt de procediments. sobre les dades del monitor.  exclusió mútua. i es cas afirmatiu el procés que fa la crida serà bloquejat fins que l’altre isca del monitor. Propietat: només ún dels procesos pot estar actiu al monitor en un instant determinat.

Exemple.. condición c... } sacar(int *item) { . insertar(int item) { . } } IES JAUME II EL JUST .. Monitor ejemplo { int i.Monitors.

Amb designació indirecta: . id_proc_dst).send(msg. Les primitives de comunicació són:  send (msg.send(msg.Comunicació per pas de missatges. dst).   S’utilitza en sistemes distribuits. IES JAUME II EL JUST .    Amb designació directa: . . . origen). bústia). es bloqueja. Sincronització:  quan un procès fà un receive sobre una bústia buida.receive(msg.  receive (msg. id_proc_orig). bústia).receive(msg. es bloqueja.  quan un procès fà un send a una bústia plena.

Exemple de sincronització amb missatges IES JAUME II EL JUST .

Un procés d’un sistema pot cridar a un procediment d’un procés d’altre sistema. El procés que crida es bloqueja esperant la resposta des del procediment cridat. receive(proces_remot.    IES JAUME II EL JUST . paràmetres_eixida). Exemple: XML-RPC. send(proces_remot. paràmetres_entrada).Remote Procedure Call (RPC)   Per a comunicar processos en sistemes distribuits. Utilitzat en el model client-servidor.

P1 P2 P3 IES JAUME II EL JUST .  No apropiació: els recursos assignats no es poden expropiar als processos. també bloquejat.  Espera circular: existe una llista circular de processos tal que cada procés espera un recurs que té el següent procés de la llista. un procés està bloquejat esperant a que altre procés. es diu que es troba en un estat de interbloqueig (deadlock).Interbloqueos   Quan en un sma. multiprogramat. Per a que es produïsca interbloqueig deuen donar-se les 4 condicions necessaries següents:  Exclusió mutua: els recursos son de ús exclusiu. manté els ja assignats. li envie un signal per a continuar.  Retenció i espera: mentres un procés espera per recursos.

 Prevenció: fixar unes regles que asseguren que no es puga donar un interbloqueig. o usar només una unitat d’E/S. Millor un interbloqueig ocasional que limitar a l’usuari a que només puga crear un procés. Evitació.  IES JAUME II EL JUST . obrir només un fitxer. mitjançant una assignació cuidadosa dels recursos. Infrautilització dels recursos.Resolució de interbloqueos  Desentendre`s: Algorisme de l’estruç  UNIX.