son sistemas sincronizacion semaforos semaforo que programas programacion procesos operativos monitores los entre diferencia contadores multithreading semaphore monitor

multithreading - sincronizacion - semaforos sistemas operativos



Semaphore vs. Monitors-¿Cuál es la diferencia? (6)

Cuando se usa un semáforo para proteger una región crítica, no hay una relación directa entre el semáforo y los datos que se están protegiendo. Esto es parte de la razón por la cual los semáforos pueden estar dispersos alrededor del código, y por qué es fácil olvidar llamar a esperar o notificar , en cuyo caso el resultado será, respectivamente, violar la exclusión mutua o bloquear el recurso de forma permanente.

En contraste, una de estas cosas malas puede suceder con un monitor. Un monitor está cansado directamente de los datos (encapsula los datos) y, dado que las operaciones del monitor son acciones atómicas, es imposible escribir código que pueda acceder a los datos sin llamar al protocolo de entrada. El protocolo de salida se llama automáticamente cuando se completa la operación del monitor.

Un monitor tiene un mecanismo incorporado para la sincronización de la condición en forma de variable de condición antes de proceder. Si la condición no se cumple, el proceso debe esperar hasta que se le notifique un cambio en la condición. Cuando un proceso está a la espera de la sincronización de la condición, la implementación del monitor se ocupa del problema de la exclusión mutua y permite que otro proceso obtenga acceso al monitor.

Tomado del material del curso "Proceso de interacción" de la Open University M362 Unidad 3.

¿Cuáles son las principales diferencias entre un monitor y un semáforo ?


La siguiente explicación en realidad explica cómo la espera () y la señal () del monitor difieren de P y V del semáforo.

Las operaciones de espera () y señal () en las variables de condición en un monitor son similares a las operaciones P y V en el recuento de semáforos .

Una instrucción de espera puede bloquear la ejecución de un proceso, mientras que una instrucción de señal puede hacer que otro proceso se desbloquee. Sin embargo, hay algunas diferencias entre ellos. Cuando un proceso ejecuta una operación P, no necesariamente bloquea ese proceso porque el semáforo de conteo puede ser mayor que cero. En contraste, cuando se ejecuta una instrucción de espera, siempre bloquea el proceso. Cuando una tarea ejecuta una operación V en un semáforo, desbloquea una tarea que espera en ese semáforo o incrementa el contador de semáforos si no hay tarea para desbloquear. Por otro lado, si un proceso ejecuta una declaración de señal cuando no hay otro proceso para desbloquear, no hay efecto en la variable de condición. Otra diferencia entre los semáforos y los monitores es que los usuarios despertados por una operación V pueden reanudar la ejecución sin demora. Por el contrario, los usuarios despertados por una operación de señal se reinician solo cuando el monitor está desbloqueado. Además, una solución de monitoreo es más estructurada que la que tiene semáforos porque los datos y los procedimientos están encapsulados en un solo módulo y la implementación proporciona automáticamente la exclusión mutua.

Enlace: here para leer más. Espero eso ayude.


Semaphore permite que múltiples hilos (hasta un número establecido) accedan a un objeto compartido. Los monitores permiten el acceso mutuamente exclusivo a un objeto compartido.

Monitor

Semaphore


Un monitor es un objeto diseñado para ser accedido desde múltiples hilos. Las funciones o los métodos miembros de un objeto monitor aplicarán la exclusión mutua, por lo que solo un hilo puede realizar cualquier acción en el objeto en un momento dado. Si un hilo está ejecutando actualmente una función miembro del objeto, cualquier otro hilo que intente llamar a una función miembro de ese objeto tendrá que esperar hasta que el primero haya terminado.

Un semáforo es un objeto de nivel inferior. Bien podría usar un semáforo para implementar un monitor. Un semáforo es esencialmente un contador. Cuando el contador es positivo, si un hilo intenta adquirir el semáforo, entonces está permitido y el contador disminuye. Cuando se realiza un hilo, libera el semáforo e incrementa el contador.

Si el contador ya es cero cuando un hilo intenta adquirir el semáforo, entonces tiene que esperar hasta que otro hilo libere el semáforo. Si hay varios hilos esperando cuando un hilo libera un semáforo, uno de ellos lo obtiene. El hilo que libera un semáforo no necesita ser el mismo hilo que lo adquirió.

Un monitor es como un baño público. Solo una persona puede entrar a la vez. Cierran la puerta con llave para evitar que alguien más entre, hacen sus cosas y luego la desbloquean cuando se van.

Un semáforo es como un lugar de alquiler de bicicletas. Tienen un cierto número de bicicletas. Si intentas alquilar una bicicleta y tienen una gratis, entonces puedes llevarla, de lo contrario debes esperar. Cuando alguien devuelve su bicicleta, entonces alguien más puede tomarla. Si tiene una bicicleta, puede dársela a otra persona para que la devuelva: al lugar de alquiler de bicicletas no le importa quién la devuelva, siempre que recuperen su bicicleta.


Respuesta de una línea:

Monitor: controla que solo UN hilo a la vez puede ejecutarse en el monitor. (Necesidad de adquirir bloqueo para ejecutar el único hilo)

Semaphore: un bloqueo que protege un recurso compartido. (Necesidad de adquirir el bloqueo para acceder al recurso).


Semáforo

El uso de un contador o indicador para controlar el acceso a algunos recursos compartidos en un sistema concurrente, implica el uso de Semaphore .

Ejemplo:

  1. Un mostrador para permitir que solo 50 Pasajeros adquieran los 50 asientos (recurso compartido) de cualquier Teatro / Autobús / Tren / Diversión / Aula. Y permitir un nuevo pasajero solo si alguien desocupa un asiento.
  2. Una bandera binaria que indica el estado libre / ocupado de cualquier baño.
  3. Los semáforos son un buen ejemplo de banderas. Controlan el flujo regulando el paso de vehículos en Carreteras (recurso compartido)

Los indicadores solo revelan el estado actual del recurso, ningún recuento o cualquier otra información sobre los objetos en espera o en ejecución en el recurso.

Monitor :

Un monitor sincroniza el acceso a un objeto mediante la comunicación con subprocesos interesados ​​en el objeto, pidiéndoles que adquieran acceso o esperen a que se cumpla alguna condición.

Ejemplo:

  1. Un padre puede actuar como un monitor para su hija, permitiéndole salir con un solo hombre a la vez.
  2. Un maestro de escuela que usa un bastón para permitir que solo un niño hable en la clase.
  3. Por último, uno técnico, las transacciones (a través de hilos) en un objeto de Cuenta sincronizado para mantener la integridad.