Mecanismos de exclusión mutua

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 175,23 KB

 

Tipos de sincronización y su solución

Exclucion mutua

Cuando los procesos desean utilizar un recurso no compartible la sincronización necesaria entre ellos se denomina EXCLUSIÓN MUTUA.

Un proceso que esta accediendo a un recurso no compartible se dice que se encuentra en su SECCIÓN CRITICA (parte del código que utiliza un proceso en el acceso a un recurso no compartible). Si un proceso esta en su sección critica los demás deberán esperar a que éste termine.

Garantizar la exclusión mutua en la ejecución de las secciones criticas consiste en diseñar un protocolo de entrada y de salida mediante el cual se SINCRONICE LA ENTRADA DE LOS PROCESOS  a sus secciones criticas.

Un esquema de procesos ejecutando en exclusión mutua sus  secciones críticas seria el siguiente



Condiciones para la exclusión mutua

Los protocolos de entrada y salida son porciones de

código que deben cumplir estas condiciones Para

resolver satisfactoriamente el problema de la

Exclusión mutua:


Exclusión Mutua: no pueden acceder dos procesos a la vez a su sección critica. (ejecución mutuamente exclusiva de las secciones criticas).

Limitación en la espera: de cada proceso para acceder a su sección critica. Ninguno debe esperar en forma indefinida.

Progreso de la ejecución: es decir, que cuando un proceso quiera ejecutar su sección critica pueda hacerlo si ésta está libre.

Condición de Sincronización

Otra situación donde es necesario coordinar la ejecución de procesos concurrentes sucede cuando un objeto de datos compartido esta en un estado inapropiado para ejecutar una operación determinada. Cualquier proceso que intente realizar esta operación sobre el objeto debe ser retrasado hasta que el estado del objeto cambie por las operaciones de otros procesos. A este tipo de sincronización la llamamos CONDICIÓN DE SINCRONIZACIÓN.

DEFINICIÓN: podemos definir la condición de sincronización como la propiedad requerida de que un proceso no realice un evento hasta que otro proceso haya emprendido una acción determinada.

LA ESPERA OCUPADA PARA LA EXCLUCION MUTUA

Esta implementación de la sincronización se basa en que un proceso espera mediante la comprobación continua del valor de una variable manteniendo ocupada la CPU del sistema.  Según el tipo de operaciones que se utilicen para desarrollar una solución basada en espera ocupada podemos distinguir:

Soluciones software: las únicas operaciones atómicas que se consideran son las instrucciones de bajo nivel para leer y almacenar (load-store) de/en direcciones de memoria. Si dos instrucciones de este tipo se produjeran simultáneamente el resultado seria la ejecución secuencial en un orden desconocido.

Soluciones hardware: se utilizan instrucciones especializadas que llevan una serie de acciones de forma indivisible como leer y escribir, intercambiar el contenido de dos posiciones de memoria, etc.

Soluciones software algoritmos no eficientes



Puede ocurrir que ambos procesos ejecuten el while antes de ejecutar v:=scocupada y que los dos entren a la vez en la sección critica a la vez, NO GARANTIZA LA Condición DE EXCLUSIÓN MUTUA


Inconvenientes del segundo intento:

La solución planteada provoca que el derecho de usar la sección critica sea alternativo entre los procesos. Esta situación hace que no se satisfaga la condición de progreso de la ejecución.

Los procesos están altamente acoplados por ende el algoritmo esImagen poco tolerante a fallos, si un proceso falla el otro quedará detenido (en espera indefinida).


 Las variables C0 y C1 deben inicializarse a restoproceso indicando que ningún proseso esta ejecutando sus sección critica al comienso de la ejecución de ambos. El protocolo de entrada consiste en nu bucle donde se comprueba el valor de la variable correspondiente al otro proceso sin embargo este algoritmo no garantiza la exlusion mutua es decir varios procesos pueden ejecutar su sección critica al mismo tiempo

consideremos la siguiente secuencia de ejecución

1. P0 ejecuta la instrucción a) y encuentra que C1 vale restoproceso

2. P1 ejecuta la instrucción a) y encuentra que C0 vale restoproceso

3. P0 asigna en SC a la variable C0 y entra en su sección critica

4. P1 asigna en SC a la variable C1 y entra en su sección critica

Entradas relacionadas: