Sistemas operativos modernos
similar a diversas situaciones de colas, como un mostrador de ayuda con varias personas y un sistema computarizado de llamadas en espera para mantener en la línea un número limitado de llamadas. Figura 2-35. El barbero dormilón. Nuestra solución utiliza tres semáforos: clientes, que cuenta los clientes que están esperando (sin incluir el que está en la silla de barbero, que no está esperando); barberos, el número de bar beros (O o 1) que están inactivos, esperando clientes, y mutex, que controla la exclusión mutua. También necesitamos una variable, espera, que cuenta los clientes en espera y básicamente es una copia de clientes. El motivo de tener espera es que no hay manera de leer el valor actual de un semáforo. En esta solución, un cliente que entra en la peluquería debe contar el número de clien tes que esperan. Si es menor que el número de sillas, se queda; de lo contrario, se va. En la figura 2-36 se muestra nuestra solución. Cuando el barbero llega a su trabajo en la mañana, ejecuta el procedimiento barbero, que lo obliga a bloquearse con el semáforo clientes porque al principio éste es cero. Entonces el barbero se duerme (desactiva), como se aprecia en la figura 2-35, y permanece así hasta que aparece el primer cliente.
RkJQdWJsaXNoZXIy MjI4NDcx