3.1.2. Ejemplo: la exclusión mutua mediante mensajes
Material de estudio basado en la edición de 2014. Borrador pendiente de revisión editorial independiente.
Ejemplo: Exclusión Mutua Mediante Mensajes
Resumen
La exclusión mutua se puede implementar fácilmente utilizando mensajes indirectos (buzones).
Mecanismo
- Se crea un buzón con un mensaje de cualquier longitud.
- Para acceder a la sección crítica, el proceso ejecuta
receive(buzón, mensaje):- Si el buzón está vacío → el proceso se bloquea.
- Si el buzón está lleno → lee el mensaje, deja el buzón vacío y accede a la sección.
- Al salir, ejecuta
send(buzón, mensaje)para liberar la sección.
receive(buzón, mensaje); /* entrada exclusión mutua */
/* sección crítica */
...
send(buzón, mensaje); /* salida exclusión mutua */
Equivalencia
El buzón desempeña un papel equivalente al de un semáforo binario. También sería posible implementar semáforos n-arios permitiendo hasta n mensajes en el buzón.
Ideas clave
- Los buzones vacíos/llenos implementan exclusión mutua equivalente a semáforos binarios.
- Un buzón con un solo mensaje actúa como semáforo binario.
- Permitiendo n mensajes, se obtiene un semáforo n-ario.