Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduccin
El problema de la Exclusin Mutua proviene de la Atomicidad Los SO multitarea proporcionan primitivas de ms alto nivel
Semforo
Variable entera S que solo puede tomar valores no negativos 2 operaciones Wait( S ): Si S>0 entonces S = S - 1 Si no, se queda suspendida Signal( S ): Si existen procesos suspendidos, reactiva uno de ellos Si no, S = S + 1
Programacin Concurrente y Distribuida Prof. Jos Carlos Cortizo Prez
3
Semforo (2)
Wait y Signal son atmicas Valor inicial no negativo Signal reactiva un proceso suspendido, pero en la denicin no se indica cul Semforo Binario: Solo toma valores 0 y 1 General: Toma cualquier valor no negativo
Programacin Concurrente y Distribuida Prof. Jos Carlos Cortizo Prez
4
Invariante
S >= 0 (I1) S = S0 + #Signals - #Waits (I2) Donde: S0 Es la inicializacin del semforo #Signals es el nmero de veces que se ha ejecutado signal sobre el mismo #Waits es el nmero de veces que se ha ejecutado Wait sobre el mismo
Programacin Concurrente y Distribuida Prof. Jos Carlos Cortizo Prez
5
Exclusin Mutua
Probar #SC + S = 1 #SC = #Wait(S) - Signal(S) S = 1 + #Signal(S) - #Wait(S) (I2) S = 1 - #SC (a partir de las 2 anteriores) #SC + S = 1 (de la anterior)
Ausencia Interbloqueos
Si los 2 no entran, es que se suspenden en sus Wait(S) Entonces S = 0 y #SC = 0 Pero 0 + 0 != 1
Ausencia Inanicin
Si P1 est suspendido, S == 0 Entonces P2 en su SC (invariante) Cundo sale, ejecuta Signal(S) y entra P1 (es el nico suspendido)
Deniciones de Semforos
Por implementacin:
Sem. Conjunto Bloqueados (Blocked-set): Un signal despierta uno de los bloqueados. Sem. Cola Bloqueados (Blocked-queue): Los bloqueados se guardan en una FIFO Sem. Espera-Ocupado (Busy-wait): Wait( S ): loop if( S > 0) { S = S - 1; exit; } end loop;
Programacin Concurrente y Distribuida Prof. Jos Carlos Cortizo Prez
10
Deniciones de Semforos
Por equidad: Semforos con equidad fuerte (Strong-fair): Si cuando se realiza sobre el un Signal innitamente a menudo, al nal cada proceso suspendido completar su instruccin Wait. Semforo con equidad dbil: Si el semforo se mantiene con valores mayores que 0, al nal cada proceso suspendido acabar su instruccin wait.
Inanicin
Espera-Ocupado: Posible inanicin Cola de bloqueados: Imposible Conjunto de bloqueados: Posible con N>=3
Programacin Concurrente y Distribuida Prof. Jos Carlos Cortizo Prez
14
Productor-consumidor
Problema de comunicacin 2 procesos interrelacionados: Productor: genera datos que necesita el otro Consumidor: consume los datos del productor La forma simple es la invocacin directa Fuerza ir a remolque Usamos buffers intermedios para el desacoplamiento
Programacin Concurrente y Distribuida Prof. Jos Carlos Cortizo Prez
15
No se eliminan elementos de un buffer vaco ni se agregan a uno lleno No existen interbloqueos No se da la inanicin
Programacin Concurrente y Distribuida Prof. Jos Carlos Cortizo Prez
23