Cierre de exclusión mutua

Cierre de exclusión mutua

En ciencias de la computación, los cierres de exclusión mutua o candados son un mecanismo de sincronización que limita el acceso a un recurso compartido por varios procesos o hilos en un ambiente de ejecución concurrente, permitiendo así la exclusión mutua.

Cuando un elemento es compartido por más de un hilo, pueden ocurrir condiciones de carrera si el mismo no es protegido adecuadamente. El mecanismo más simple para la protección es el cierre o cerrojo. En general cuando debe protegerse un conjunto de elementos, se le asocia un cerrojo. Cada proceso/hilo para tener acceso a un elemento del conjunto, deberá bloquear, con lo que se convierte en su dueño. Esa es la única forma de ganar acceso. Al terminar de usarlo, el dueño debe desbloquear, para permitir que otro proceso/hilo pueda tomarlo a su vez. Es posible que mientras un proceso/hilo esté accediendo a un recurso (siendo por lo tanto dueño del cerrojo), otro proceso/hilo intente acceder. Esta acción debe esperar hasta que el cerrojo se encuentre libre, para garantizar la exclusión mutua. El proceso/hilo solicitante queda entonces en espera o pasa a estado de bloqueo según el algoritmo implementado. Cuando el dueño del cerrojo lo desbloquea puede tomarlo alguno de los procesos/hilos que esperaban.

Este mecanismo se puede ver en un ejemplo de la vida real. Supongamos un baño público, donde sólo puede entrar una persona a la vez. Una vez dentro, se emplea un cierre para evitar que entren otras personas. Si otra persona pretende usar el baño cuando está ocupado, deberá quedar esperando a que la persona que entró anteriormente termine. Si más personas llegaran, formarían una cola (del tipo FIFO) y esperarían su turno. En informática, el programador no debe asumir este tipo de comportamiento en la cola de espera.

El cerrojo, usado de esta manera, forma una sección crítica en cada proceso/hilo, desde que es tomado hasta que se libera. En el ejemplo del baño, dentro de la sección crítica se encuentran las funciones que se realizan generalmente dentro de este tipo de instalaciones sanitarias. Como garantizan la exclusión mutua, muchas veces se los denomina mutex (por mutual exclusion).

En general hay un número de restricciones sobre los cerrojos, aunque no son las mismas en todos los sistemas. Estas son:

  • Sólo el dueño de un cerrojo puede desbloquearlo
  • La readquisición de un cerrojo no está permitida

Algo muy importante es que todos los procesos/hilos deben utilizar el mismo protocolo para bloquear y desbloquear los cerrojos en el acceso a los recursos, ya que si mientras dos procesos/hilos utilizan el cerrojo de forma correcta, existe otro que simplemente accede a los datos protegidos, no se garantiza la exclusión mutua y pueden darse condiciones de carrera y errores en los resultados.

Primitivas y uso

Las funciones de los cerrojos en general son tres: init(), lock() y unlock(). El cerrojo se inicializa con la función init(). Luego cada proceso/hilo debe llamar a la función lock() antes de acceder a los datos protegidos por el cierre. Al finalizar su sección crítica, el dueño del cerrojo debe desbloquearlo mediante la función unlock().


Wikimedia foundation. 2010.

Игры ⚽ Поможем сделать НИР

Mira otros diccionarios:

  • Exclusión mutua (informática) — Para otros usos de este término, véase Exclusión mutua. Los algoritmos de exclusión mutua (comúnmente abreviada como mutex por mutual exclusion) se usan en programación concurrente para evitar el uso simultáneo de recursos comunes, como variables …   Wikipedia Español

  • Cierre — El término cierre puede referirse a: Diversos conceptos de la teoría de conjuntos Cierre o clausura simétrica Cierre o clausura de relación Cierre o clausura transitiva Cierre o clausura reflexiva Cierres o acoplamientos mecánicos Cierre eclair,… …   Wikipedia Español

  • Sección crítica — Se denomina sección crítica, en programación concurrente, a la porción de código de un programa de computador en la cual se accede a un recurso compartido (estructura de datos o dispositivo) que no debe ser accedido por más de un hilo en… …   Wikipedia Español

  • Semáforo (informática) — Un semáforo es una variable especial (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento del sistema o variables del código fuente) en …   Wikipedia Español

  • Relaciones exteriores de Venezuela durante el gobierno de Hugo Chávez — Saltar a navegación, búsqueda Las Relaciones exteriores de Venezuela están bajo las funciones del jefe de Estado y Presidente de Venezuela, quien delega funciones al Ministerio de Relaciones Exteriores de Venezuela. Contenido 1 Historia 1.1… …   Wikipedia Español

  • Hugo Chávez — Hugo Rafael Chávez Frías (Sabaneta, Barinas, 28 de julio de 1954). Militar y político venezolano, 53º Presidente de su país desde el 2 de febrero de 1999. Biografía familiar y estudiantil Hugo Chávez es el segundo de seis hijos del matrimonio de… …   Enciclopedia Universal

  • Ética militar — La ética militar es un conjunto de prácticas y discursos que sirven para orientar a las fuerzas armadas y a sus integrantes para que actúen conforme a unos valores y unas normas determinadas, y para mostrar al conjunto de la ciudadanía esos… …   Wikipedia Español

  • Víctimas de la Guerra Civil en Navarra — En el Parque de la Memoria de Sartaguda se han erigido varias obras en homenaje a las víctimas de la guerra civil en Navarra. En la imagen la de Néstor Basterretxea …   Wikipedia Español

  • Desarrollo del conflicto de la Franja de Gaza de 2008-2009 — Saltar a navegación, búsqueda Artículo principal: Conflicto de la Franja de Gaza de 2008 2009 Mapa de la Franja de Gaza El …   Wikipedia Español

  • Historia del Partido Nacionalista Vasco — Artículo principal: Partido Nacionalista Vasco El Partido Nacionalista Vasco, fundado por Sabino Arana, fue constituido oficialmente el 31 de julio de 1895. Desde la instauración de la democracia hasta mayo de 2009 formó parte del Gobierno Vasco …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”