EXCLUSIÓN MUTUA
U N P RO C E S O N O D E B E P O D E R S O L I C I TAR AC C E S O A U NA
S E C C I Ó N C R Í T I C A PA R A D E S P U É S S E R D E M O R A D O
INDEFINIDAMENTE, NO PUEDE PERMITIRSE EL
INTERBLOQUEO O LA INANICIÓN. SI NINGÚN PROCESO
ESTÁ EN SU SECCIÓN CRÍTICA, CUALQUIER PROCESO
Q U E S O L I C I T E E N T R A R E N L A S U YA D E B E P O D E R
HACERLO SIN DEMORA. NO SE DEBE SUPONER SOBRE LA
V ELOCIDAD R EL ATI VA D E LOS PROC ESOS O EL NÚMERO
DE PROCESADORES. UN PROCESO PERMANECE EN SU
SECCIÓN CRÍTICA POR UN TIEMPO FINITO. UNA MANERA
D E S AT I S FA C E R L O S R E Q U I S I TO S D E E X C L U S I Ó N M U T UA
ES DEJAR LA RESPONSABILIDAD A LOS PROCESOS QUE
D E S E E N E J E C U TA R C O N C URRE NT EM E NT E. TA N TO S I S O N
PROGRAMAS DEL SISTEMA COMO DE APLICACIÓN, LOS
P R O C E S O S D E B E N C O O R D I N A R S E U N O S C O N OT R O S PA R A
C U M P L I R L A E XC LU S I Ó N M U T UA , S I N AY U DA D E L
LENGUAJE DE PROGRAMACIÓN O DEL SISTEMA
O P E R AT I VO. E S TO S M É TO D O S S E C O N O C E N C O M O
SOLUCIONES POR SOFTWARE.
EXCLUSIÓN MUTUA:
SOLUCIONES POR SOFTWARE
Pueden implementarse soluciones
  de software para los procesos
 concurrentes que se ejecuten en
   máquinas monoprocesador o
  multiprocesador con memoria
      principal compartida.
ALGORITMO DE DEKKER

Este método ilustra la
 mayoría de los errores
 habituales que se producen
 en la construcción de
 programas concurrentes.
Primer intento
Cualquier intento de exclusión
 mutua debe depender de algunos
 mecanismos básicos de
 exclusión en el hardware. El más
 habitual es que sólo se puede
 acceder a una posición de
 memoria en cada instante,
 teniendo en cuenta esto se
 reserva una posición de memoria
 global llamada turno.
Segundo intento:
Cada proceso debe tener su propia
 llave de la sección crítica para
 que, si uno de ellos falla, pueda
 seguir accediendo a su sección
 crítica; para esto se define un
 vector booleano señal. Cada
 proceso puede evaluar el valor de
 señal del otro, pero no
 modificarlo.
Tercer intento
El segundo intento falla porque un
  proceso puede cambiar su estado
  después de que el otro proceso lo ha
  comprobado pero antes de que pueda
  entrar en su sección crítica.
Si un proceso falla dentro de su sección
crítica, incluso el código que da valor a
la variable señal que controla el acceso
a la sección crítica, el otro proceso se
bloquea y si un proceso falla fuera de su
sección crítica, el otro proceso no se
bloquea.
Cuarto intento
En el tercer intento, un proceso
 fijaba su estado sin conocer el
 estado del otro. Se puede arreglar
 esto haciendo que los procesos
 activen su señal para indicar que
 desean entrar en la sección
 crítica pero deben estar listos
 para desactivar la variable señal y
 ceder la preferencia al otro
 proceso.
ALGORITMO DE PETERSON

El algoritmo de Deker resuelve el problema
  de la exclusión mutua pero mediante un
  programa complejo, difícil de seguir y
  cuya corrección es difícil de demostrar.
  Peterson ha desarrollado una solución
  simple y elegante. Como antes, la
  variable global señal indica la posición
  de cada proceso con respecto a la
  exclusión mutua y la variable global turno
  resuelve los conflictos de simultaneidad.
DISCIPLINA DE COLA
La disciplina de cola mas simple es la de
  primero en llegar/ primero en salir, pero
  ésta puede no ser suficiente si algunos
  mensajes son mas urgentes que otros.
  Una alternativa es permitir la
  especificación de prioridades de los
  mensajes, en función del tipo de mensaje
  o por designación del emisor. Otra
  alternativa es permitir al receptor
  examinar la cola de mensajes y
  seleccionar el mensaje a recibir a
  continuación.
EXCLUSIÓN MUTUA:
SOLUCIONES POR HARDWARE
 INHABILITACIÓN DE INTERRUPCIONES
 En una máquina monoprocesador, la ejecución de
   procesos concurrentes no puede superponerse;
   los procesos solo pueden intercalarse. Es más, un
   proceso continuará ejecutándose hasta que
   solicite un servicio el sistema operativo o hasta
   que sea interrumpido. Por lo tanto, para
   garantizar la exclusión mutua, es suficiente con
   impedir que un proceso sea interrumpido. Esta
   capacidad puede ofrecerse en forma de
   primitivas definidas por el núcleo del sistema
   para habilitar o inhabilitar las interrupciones.
Un proceso puede hacer cumplir la exclusión mutua del siguiente modo:




While (cierto)
{
/*inhabilitar interrupciones */;
/* sección critica */;
/* habilitar interrupciones */;
/* resto */;
}
Puesto que la sección crítica no puede ser interrumpida, la exclusión
mutua está garantizada. Sin embargo, el precio de esta solución es
alto. La eficiencia de la ejecución puede verse notablemente degradada
debido a que se limita la capacidad del procesador para intercalar
programas. Un segundo problema es que está técnica no funciona en
arquitecturas de multiprocesador. Cuando el sistema tenga más de un
procesador, es posible (y habitual) que haya más de un proceso
ejecutándose al mismo tiempo. En este caso, inhabilitar las
interrupciones no garantiza la exclusión mutua.

Exclusión mutua

  • 1.
    EXCLUSIÓN MUTUA U NP RO C E S O N O D E B E P O D E R S O L I C I TAR AC C E S O A U NA S E C C I Ó N C R Í T I C A PA R A D E S P U É S S E R D E M O R A D O INDEFINIDAMENTE, NO PUEDE PERMITIRSE EL INTERBLOQUEO O LA INANICIÓN. SI NINGÚN PROCESO ESTÁ EN SU SECCIÓN CRÍTICA, CUALQUIER PROCESO Q U E S O L I C I T E E N T R A R E N L A S U YA D E B E P O D E R HACERLO SIN DEMORA. NO SE DEBE SUPONER SOBRE LA V ELOCIDAD R EL ATI VA D E LOS PROC ESOS O EL NÚMERO DE PROCESADORES. UN PROCESO PERMANECE EN SU SECCIÓN CRÍTICA POR UN TIEMPO FINITO. UNA MANERA D E S AT I S FA C E R L O S R E Q U I S I TO S D E E X C L U S I Ó N M U T UA ES DEJAR LA RESPONSABILIDAD A LOS PROCESOS QUE D E S E E N E J E C U TA R C O N C URRE NT EM E NT E. TA N TO S I S O N PROGRAMAS DEL SISTEMA COMO DE APLICACIÓN, LOS P R O C E S O S D E B E N C O O R D I N A R S E U N O S C O N OT R O S PA R A C U M P L I R L A E XC LU S I Ó N M U T UA , S I N AY U DA D E L LENGUAJE DE PROGRAMACIÓN O DEL SISTEMA O P E R AT I VO. E S TO S M É TO D O S S E C O N O C E N C O M O SOLUCIONES POR SOFTWARE.
  • 2.
    EXCLUSIÓN MUTUA: SOLUCIONES PORSOFTWARE Pueden implementarse soluciones de software para los procesos concurrentes que se ejecuten en máquinas monoprocesador o multiprocesador con memoria principal compartida.
  • 3.
    ALGORITMO DE DEKKER Estemétodo ilustra la mayoría de los errores habituales que se producen en la construcción de programas concurrentes.
  • 4.
    Primer intento Cualquier intentode exclusión mutua debe depender de algunos mecanismos básicos de exclusión en el hardware. El más habitual es que sólo se puede acceder a una posición de memoria en cada instante, teniendo en cuenta esto se reserva una posición de memoria global llamada turno.
  • 5.
    Segundo intento: Cada procesodebe tener su propia llave de la sección crítica para que, si uno de ellos falla, pueda seguir accediendo a su sección crítica; para esto se define un vector booleano señal. Cada proceso puede evaluar el valor de señal del otro, pero no modificarlo.
  • 6.
    Tercer intento El segundointento falla porque un proceso puede cambiar su estado después de que el otro proceso lo ha comprobado pero antes de que pueda entrar en su sección crítica. Si un proceso falla dentro de su sección crítica, incluso el código que da valor a la variable señal que controla el acceso a la sección crítica, el otro proceso se bloquea y si un proceso falla fuera de su sección crítica, el otro proceso no se bloquea.
  • 7.
    Cuarto intento En eltercer intento, un proceso fijaba su estado sin conocer el estado del otro. Se puede arreglar esto haciendo que los procesos activen su señal para indicar que desean entrar en la sección crítica pero deben estar listos para desactivar la variable señal y ceder la preferencia al otro proceso.
  • 8.
    ALGORITMO DE PETERSON Elalgoritmo de Deker resuelve el problema de la exclusión mutua pero mediante un programa complejo, difícil de seguir y cuya corrección es difícil de demostrar. Peterson ha desarrollado una solución simple y elegante. Como antes, la variable global señal indica la posición de cada proceso con respecto a la exclusión mutua y la variable global turno resuelve los conflictos de simultaneidad.
  • 9.
    DISCIPLINA DE COLA Ladisciplina de cola mas simple es la de primero en llegar/ primero en salir, pero ésta puede no ser suficiente si algunos mensajes son mas urgentes que otros. Una alternativa es permitir la especificación de prioridades de los mensajes, en función del tipo de mensaje o por designación del emisor. Otra alternativa es permitir al receptor examinar la cola de mensajes y seleccionar el mensaje a recibir a continuación.
  • 10.
    EXCLUSIÓN MUTUA: SOLUCIONES PORHARDWARE INHABILITACIÓN DE INTERRUPCIONES En una máquina monoprocesador, la ejecución de procesos concurrentes no puede superponerse; los procesos solo pueden intercalarse. Es más, un proceso continuará ejecutándose hasta que solicite un servicio el sistema operativo o hasta que sea interrumpido. Por lo tanto, para garantizar la exclusión mutua, es suficiente con impedir que un proceso sea interrumpido. Esta capacidad puede ofrecerse en forma de primitivas definidas por el núcleo del sistema para habilitar o inhabilitar las interrupciones.
  • 11.
    Un proceso puedehacer cumplir la exclusión mutua del siguiente modo: While (cierto) { /*inhabilitar interrupciones */; /* sección critica */; /* habilitar interrupciones */; /* resto */; } Puesto que la sección crítica no puede ser interrumpida, la exclusión mutua está garantizada. Sin embargo, el precio de esta solución es alto. La eficiencia de la ejecución puede verse notablemente degradada debido a que se limita la capacidad del procesador para intercalar programas. Un segundo problema es que está técnica no funciona en arquitecturas de multiprocesador. Cuando el sistema tenga más de un procesador, es posible (y habitual) que haya más de un proceso ejecutándose al mismo tiempo. En este caso, inhabilitar las interrupciones no garantiza la exclusión mutua.