next up previous contents
Next: Algoritmo de Dekker Up: Concurrencia y Distribución Previous: Espera infinita o inanición   Índice General

Exclusión mutua a nivel bajo


Para evitar el acceso concurrente a recursos compartidos hace falta instalar un mecanismo de control que permite la entrada de un proceso si el recurso está disponible y que prohibe la entrada de un proceso si el recurso está ocupado.

Un método es usar un tipo de cerrojo (lock). Si un proceso quiere usar el recurso, el proceso mira si el cerrojo está abierto, si lo está, cierra el cerrojo y usa el recurso. Una vez ha terminado, abre el cerrojo de nuevo. Si está cerrado el cerrojo, tiene que esperar o dedicarse a otra cosa que quede por hacer.

Entonces el código refleja una estructura como sigue:

  ...\\
  entrance protocol
  critical section
  exit protocol
  ...\\

El protocolo de entrada y salida debe cumplir con las siguientes condiciones:

Dependiendo de las capacidades del hardware la implementación de los protocolos de entrada y salida es más facil o más difícil, además las soluciones puedes ser más o menos eficiente.

Primero veremos que se puede realizar un protocolo seguro solamente con las instrucciones load y store de un procesador. Las soluciones no serán muy eficientes, especialmente si muchos procesos compiten por la sección crítica. Sin embargo, su desarrollo y la presentación de la solución ayuda en entender el problem principal.

Todos los microprocesadores modernos proporcionan instrucciones atómicas que permiten realizar los protocolos de forma más eficiente como veremos en las últimas secciones de este apartado.



Subsecciones
next up previous contents
Next: Algoritmo de Dekker Up: Concurrencia y Distribución Previous: Espera infinita o inanición   Índice General
© 2005, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática