fbpx
Wikipedia

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 solo 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().

Bloqueos en bases de datos

Los sistemas gestores de bases de datos suelen utilizar bloqueos para evitar problemas de concurrencia y, en ocasiones, garantizar la serializabilidad de las transacciones. Para hacerlo adecuadamente, los mecanismos de bloqueo suelen implementar protocolos como el bloqueo de dos fases y utilizar registros transaccionales (logs) como apoyo.


  •   Datos: Q1427251

cierre, exclusión, mutua, ciencias, computación, cierres, exclusión, mutua, candados, mecanismo, sincronización, limita, acceso, recurso, compartido, varios, procesos, hilos, ambiente, ejecución, concurrente, permitiendo, así, exclusión, mutua, cuando, element. En ciencias de la computacion los cierres de exclusion mutua o candados son un mecanismo de sincronizacion que limita el acceso a un recurso compartido por varios procesos o hilos en un ambiente de ejecucion concurrente permitiendo asi la exclusion mutua Cuando un elemento es compartido por mas de un hilo pueden ocurrir condiciones de carrera si el mismo no es protegido adecuadamente El mecanismo mas simple para la proteccion 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 debera bloquear con lo que se convierte en su dueno Esa es la unica forma de ganar acceso Al terminar de usarlo el dueno debe desbloquear para permitir que otro proceso hilo pueda tomarlo a su vez Es posible que mientras un proceso hilo este accediendo a un recurso siendo por lo tanto dueno del cerrojo otro proceso hilo intente acceder Esta accion debe esperar hasta que el cerrojo se encuentre libre para garantizar la exclusion mutua El proceso hilo solicitante queda entonces en espera o pasa a estado de bloqueo segun el algoritmo implementado Cuando el dueno 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 bano publico donde solo 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 bano cuando esta ocupado debera quedar esperando a que la persona que entro anteriormente termine Si mas personas llegaran formarian una cola del tipo FIFO y esperarian su turno En informatica el programador no debe asumir este tipo de comportamiento en la cola de espera El cerrojo usado de esta manera forma una seccion critica en cada proceso hilo desde que es tomado hasta que se libera En el ejemplo del bano dentro de la seccion critica se encuentran las funciones que se realizan generalmente dentro de este tipo de instalaciones sanitarias Como garantizan la exclusion mutua muchas veces se los denomina mutex por mutual exclusion En general hay un numero de restricciones sobre los cerrojos aunque no son las mismas en todos los sistemas Estas son Solo el dueno de un cerrojo puede desbloquearlo La readquisicion de un cerrojo no esta permitidaAlgo 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 exclusion mutua y pueden darse condiciones de carrera y errores en los resultados Primitivas y uso EditarLas funciones de los cerrojos en general son tres init lock y unlock El cerrojo se inicializa con la funcion init Luego cada proceso hilo debe llamar a la funcion lock antes de acceder a los datos protegidos por el cierre Al finalizar su seccion critica el dueno del cerrojo debe desbloquearlo mediante la funcion unlock Bloqueos en bases de datos EditarArticulo principal Bloqueo bases de datos Los sistemas gestores de bases de datos suelen utilizar bloqueos para evitar problemas de concurrencia y en ocasiones garantizar la serializabilidad de las transacciones Para hacerlo adecuadamente los mecanismos de bloqueo suelen implementar protocolos como el bloqueo de dos fases y utilizar registros transaccionales logs como apoyo Datos Q1427251Obtenido de https es wikipedia org w index php title Cierre de exclusion mutua amp oldid 118752702, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos