Duda teórica sobre semáforos

Duda teórica sobre semáforos

de Bruno Emanuel Gandos Telis -
Número de respuestas: 2

1

2

Buenas noches, estaba leyendo las diapositivas sobre semáforos y me genero la siguiente duda: 

En la imagen que se implementan los semáforos sin busy waiting, el procedimiento V() tiene la función de despertar a un proceso en caso de que haya alguno dormido, o aumentar el valor del semáforo. 

Luego, en la segunda imagen que se quiere construir un semáforo de conteo en base a uno binario, el procedimiento V_cont() puede realizar ambas funcionalidades, despertar un proceso y aumentar el valor del semáforo. 

¿Me podrían decir por qué ocurre esto último? V_cont() no debería o bien despertar un proceso, o bien aumentar el valor del semáforo? 

Muchas gracias.

En respuesta a Bruno Emanuel Gandos Telis

Re: Duda teórica sobre semáforos

de Federico Rivero -

Hola Bruno!

La respuesta está en la implementación del P_cont. En esa implementación también siempre se disminuye el valor de C (cuando en la implementación que mostrás en la primer captura, solo se disminuye 'C' si S > 0).  Teniendo ese cuidado en ambos procedimientos, la funcionalidad no cambia. 

Saludos,

          Federico