Está en la página 1de 2

Comunicación

Sección Critica de un Exclusión mutua con espera ocupada Variables de


proceso
Cerradura

- Se denomina sección crítica a


La exclusión mutua se refiere a que, si un proceso
aquellas partes de los procesos está ocupado con la actualización de la memoria
concurrentes que no pueden compartida en su región crítica, ningún otro Si se desea que un proceso entre en su
ejecutarse de forma concurrente o, proceso entre a su región crítica y provoque región crítica, se analiza el valor de una
que desde otro proceso se ven como problemas. variable de cerradura, si esta es cero, el
si fueran una única instrucción proceso cambia el valor a uno y entra en
la región crítica. Si el valor es uno,
espera hasta que el valor sea cero y
realiza el procedimiento anterior.
Inconveniente: posibilidad de que se
modifique el valor de la variable justo
Existen varios métodos para lograr esta exclusión mutua:
Modelo de sección critica • Deshabilitando interrupciones
antes de una alternancia entre procesos.
• Variables de candado
• Solución de Peterson
• Dormir y Despertar (Sleep y Wakeup)
• Entre otras.
Entrar_SC(esta_SC) /* Solicitud Desactivación de Interrupciones
de ejecutar esta_SC *//* código
de esta_SC */ Cada proceso desactiva todas sus interrupciones antes de
entrar a su región crítica y los activa al salir de ella. Como Solución de Peterson
Dejar_SC(esta_SC) /* Otro
la CPU alterna entre procesos a través de las interrupciones
proceso puede ejecutar esta_SC */ y del reloj, la misma no alternará con otros procesos.
SIGUE LO SIGUIENTE: Inconvenientes:
(1) ejecuta Entrar_SC(), y si la • Los procesos de usuarios no deben tener el poder de
Antes de utilizar las variables compartidas, cada
sección crítica está ocupada el desactivar las interrupciones. proceso llama a enter_region con su número de
proceso espera; • La desactivación de las interrupciones sólo ocurre en una proceso, 0 ó 1 como parámetro. Esto provoca una
sola CPU por lo que otras CPU tendrían acceso a la espera hasta que pueda entrar. Al terminar con
(2) ejecuta la sección crítica; memoria compartida. ellas, el proceso llama a leave_region para indicar
(3) ejecuta Dejar_SC(), • Se deben evitar las condiciones de competencia por lo finalización y permitir el ingreso de otro proceso si
permitiendo que entre uno de los que es mejor que el núcleo sea quien desactive las es necesario.
interrupciones. La llamada enter_region hace que una variable
procesos en espera. (interested) sea 0 ó 1, lo que provocará la espera o
no.
Dormir y Despertar (Sleep y Wakeup)
Monitores

• Dormir (sleep): llamada al sistema


que provoca el bloqueo del proceso
que hizo la llamada (que será
suspendido hasta que otro proceso lo Semáforos Los monitores poseen una propiedad
despierte). especial que los hace útiles para lograr la
• Despertar (Wakeup): tiene un exclusión mutua: sólo un proceso puede
parámetro que es el proceso por estar activo en un monitor en un
despertar. momento dado. Los monitores son una
Los procesos se pueden comunicar construcción de lenguaje de
entre sí mediante las primitivas de Un semáforo es una variable “S” entera programación, así que el compilador
comunicación entre procesos, que se que toma valores negativos, sobre la cual
sabe que son especiales y puede manejar
utilizan para garantizar que dos aparecen definidas dos operaciones.
las llamadas a procedimientos de
procesos no se encuentren jamás al
monitor de una forma diferente a como
mismo tiempo dentro de sus 1. Wait (S) Si S>0 entonces S=S-1, en
caso contrario se suspende la ejecución maneja otras llamadas procedimientos.
regiones críticas, es decir la excusión
mutua. del proceso este queda bloqueado en el Por lo regular, cuando un proceso invoca
Primitivas de comunicación: semáforo “S” un procedimiento de monitor, las
• Semáforos 2. Signal (S) si algún proceso ha sido primeras instrucciones del procedimiento
• Monitores suspendido en el semáforo, se lo despierta verifican si hay algún otro proceso activo
• Contadores de eventos y puede continuar su ejecución. En caso en ese momento dentro del monitor. Si
• Transferencia de Mensajes contrario, S=S+1 así es, el proceso invocador suspende
hasta que el otro proceso abandona el
Los semáforos se emplean para permitir monitor. Si ningún otro proceso está
el acceso a diferentes partes del programa usando el monitor, el proceso invocador
(secciones críticas) donde se manipulan puede entrar.
variables o recursos que deben ser
accedidos de forma especial.

También podría gustarte