Mecanismos de Sincronización en Sistemas Operativos: Dekker, Peterson, Semáforos y Monitores

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,37 KB

Mecanismos de Sincronización en Sistemas Operativos

Tercera tentativa: espera infinita

Se puede producir un bloqueo mutuo, donde los dos procesos entran en un ciclo infinito. Esto se debe a que cada uno de los procesos se puede bloquear en su verificación.

Cuarta tentativa: aplazamiento indefinido

Se introduce un tratamiento de cortesía. Cuando un proceso ve que otro quiere utilizar el recurso, le cede el turno cortésmente. La exclusión mutua está garantizada y no ocurre bloqueo mutuo, pero puede ocurrir un aplazamiento indefinido debido al retraso [delay(random)].

Algoritmo de Dekker

Utiliza, además de las banderas de intención de entrar, una variable turno que resuelve en caso de conflicto. Es una combinación de los programas PrimerIntento y CuartoIntento anteriormente descritos. Esta solución asegura la exclusión mutua y está libre de interbloqueos. Este algoritmo sirve para conseguir la exclusión mutua entre dos procesos. El algoritmo utilizado para N procesos tan sólo tiene un interés teórico ya que consume demasiado tiempo para conseguir la exclusión mutua.

Algoritmo de Peterson

Simplifica el algoritmo de Dekker. El protocolo de entrada es más elegante con las mismas garantías de exclusión mutua, imposibilidad de bloqueo mutuo y de aplazamiento indefinido.

Semáforos

El uso de semáforos fue propuesto en 1965 por Dijkstra, con el objetivo de resolver el problema de la exclusión mutua, evitando la espera activa. Los semáforos son herramientas a nivel software donde es el SO el que interactúa con el hardware y no el usuario.

Esta solución es aplicable a n procesos. wait(s) Bloquea al proceso si el resultado no es positivo y decrementa. signal(s) Incrementa y despierta a un proceso suspendido (si lo hay).

Ventajas

  • Mecanismo seguro de acceso a un recurso compartido mediante el encapsulamiento de las operaciones sobre la variable que controla el semáforo.
  • Consiguen sincronización de procesos concurrentes evitando la espera activa.
  • El programa principal debe inicializar el semáforo (según su uso).

Inconvenientes

  • La inicialización es crítica.
  • Confundir un wait con un signal u omitir alguno de ellos.
  • Resultan programas muy grandes y complejos, difíciles de depurar.

Región crítica

En cualquier caso existen razones para no implementar RC con semáforos, por ejemplo, el compilador no conoce qué variables protege un semáforo, con lo que no ayudaría si se está utilizando una variable compartida fuera de su RC (esto tendría que controlarlo también el programador). También hay que tener sumo cuidado cuando se combinan los semáforos y las RC. Si un proceso que está dentro de una RC realiza una operación wait() sobre un semáforo cuyo contador vale 0, este proceso se parará dentro de la RC, bloqueándola en consecuencia.

Monitores

Son mecanismos de sincronización de nivel más alto que los semáforos. Los procedimientos van encapsulados dentro de un módulo que tiene la propiedad especial de que sólo un proceso puede estar activo cada vez para ejecutar un procedimiento del monitor. La única acción que debe realizar el programador del proceso que usa un recurso es invocar una entrada del monitor.

Entradas relacionadas: