Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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