Sincronización y Exclusión Mutua en Sistemas Distribuidos

Clasificado en Informática

Escrito el en español con un tamaño de 2,83 KB

Sincronización: Exclusión Mutua

La concurrencia y colaboración entre diversos procesos en los Sistemas Distribuidos (SD) implica que múltiples procesos accedan a los mismos recursos. Para evitar que estos accesos concurrentes corrompan los recursos o generen inconsistencias, se implementan soluciones que garanticen el acceso mutuamente exclusivo.

Algoritmos de Exclusión Mutua

Soluciones Basadas en Token

Este método garantiza que todos los procesos puedan acceder a algún recurso, evitando la inanición. Sin embargo, puede producirse un interbloqueo, donde los procesos se esperan mutuamente para continuar.

El principal inconveniente: la pérdida del token (por algún proceso que falle).

  • Se inicia un proceso distribuido para crear un nuevo token, asegurándose de que sea único.

Soluciones Basadas en Permisos

Un proceso que desea acceder a los recursos requiere el permiso de los otros procesos.

  • Algoritmo centralizado: Se elige un proceso como coordinador.
  • Algoritmo descentralizado: Para evitar la dependencia de un único coordinador, se utiliza un algoritmo de votación. Se asume que cuando un coordinador no otorga permisos, se lo informa al solicitante. La suposición es que cuando un coordinador falla, se recupera inmediatamente, pero habrá olvidado cualquier voto otorgado antes de fallar.
  • Algoritmo distribuido (determinista): Requiere un ordenamiento total de todos los eventos del sistema. Para cualquier par de eventos (ej. mensajes), debe quedar explícito cuál ocurre primero.

Cuando un proceso desea acceder a un recurso compartido:

  1. Elabora un mensaje con el nombre del recurso, su número de proceso y el tiempo actual (lógico).
  2. Envía el mensaje a todos los demás procesos, incluyéndose a sí mismo conceptualmente.
  3. Se asume que el mensaje no se pierde.

Cuando un proceso recibe un mensaje de petición de otro proceso, la acción que tome dependerá de su propio estado con respecto al recurso:

  1. Caso 1: Si el destinatario no accede al recurso ni desea acceder a él, envía un mensaje de "OK" al remitente.
  2. Caso 2: Si el destinatario ya accede al recurso, no responde. Coloca la petición en una cola.
  3. Caso 3: Si el receptor también quiere acceder al recurso, pero aún no lo ha hecho, compara el registro de tiempo del mensaje entrante con el del mensaje que ya ha enviado. El menor gana.
    • Si el mensaje entrante tiene un registro de tiempo menor, el receptor envía un mensaje de "OK".
    • Si su propio mensaje tiene un registro menor, el destinatario coloca el mensaje entrante en la cola y no envía nada.

Entradas relacionadas: