Los algoritmos de la exclusión mutua (abreviado a menudo al mutex ) son utilizados en la programación concurrente para evitar el uso simultáneo de un recurso común, tal como una variable global, por los pedazos de las secciones críticas llamadas del código de computadora
Los ejemplos de tales recursos son contadores de las banderas o las coletas de grano fino usadas para comunicar entre el código que los funcionamientos concurrentemente, por ejemplo un uso y sus tratantes de interrupción el problema son agudos porque un hilo de rosca se puede parar o comenzar en cualquier momento.
Para ilustrar: suponer que una sección del código está transformando un pedazo de datos sobre varios pasos de programa, cuando otra hilo de rosca, quizás accionado por un cierto acontecimiento imprevisible, comienza a ejecutar. Si este segundo hilo de rosca lee en el mismo pedazo de datos, los datos, en curso de ser sobreescrito, están en un estado contrario e imprevisible. Si el segundo hilo de rosca intenta sobreescribir esos datos, el estado de seguimiento será probablemente irrecuperable. Estas secciones críticas del código que tienen acceso a datos compartidos deben por lo tanto ser protegidas, para excluir otros procesos que lean en o escriban al pedazo de datos del funcionamiento.
Un mutex es también un nombre común para un objeto del programa que negocie la exclusión mutua entre los hilos de rosca, también llamado una cerradura .
Existen las soluciones de software y del soporte físico para hacer cumplir la exclusión mutua. Las diversas soluciones se presentan abajo.
En un sistema del monoprocesador la manera común de alcanzar la exclusión mutua es inhabilitar las interrupciones para el número posible más pequeño de instrucciones que prevengan la corrupción de la estructura de datos compartidos, la sección crítica . Esto evita que el código de la interrupción funcione en la sección crítica.
En una computadora en la cual varios procesadores comparten memoria, un indivisible Prueba-y-fijó de una bandera se utiliza en un lazo apretado para esperar hasta que el otro procesador despeje la bandera. Prueba-y-fijar realiza ambas operaciones sin la liberación del autobús de la memoria a otro procesador. Cuando el código sale de la sección crítica, despeja la bandera. Esto se llama un " Spinlock " o " el Ocupado-espera . "
Algunas computadoras tienen instrucciones indivisibles similares de la Múltiple-operación, e., el Comparar-y-intercambia, porque la manipulación de las listas encadenadas usadas para las coletas del acontecimiento y otras estructuras de datos de uso general en los sistemas operativos
Al lado del hardware apoyado la solución, algunas soluciones de programación existe ese " del uso; el Ocupado-espera el " de ; para alcanzar la meta. Los ejemplos de éstos incluyen:
Algoritmo de Dekker
Algoritmo de Peterson
Algoritmo de la panadería de Lamport
el algoritmo Negro-Blanco de la panadería
Semáforos
Monitor (sincronización)
Mensaje que pasa
Espacio del Tuple
La mayoría de la tentativa clásica de los métodos de la exclusión mutua de reducir el estado latente y ocupado-espera usando los interruptores del contexto de la espera y una cierta demanda que las pruebas patrones indican que estos algoritmos especiales pierden más tiempo que ellas ahorran.
Muchas formas de exclusión mutua tienen efectos secundarios. Por ejemplo, el clásico del permiso de los semáforos estanca en cuál de proceso consigue a semáforo, otro proceso consigue un segundo semáforo, y entonces ambos esperan por siempre el otro semáforo que se lanzará. Otros efectos secundarios comunes incluyen el hambre, en la cual un proceso nunca consigue suficientes recursos para funcionar a la terminación, a la inversión de la prioridad en las cuales un hilo de rosca de una prioridad más elevada espera un hilo de rosca de la bajo-prioridad, y al " alto latency" en qué respuesta a las interrupciones no es pronto.
Mucha investigación es dirigida que elimina los efectos antedichos, por ejemplo garantizando el progreso no bloqueando . No se sabe ninguÌn esquema perfecto.
Miguel Raynal: Algoritmos del para la exclusión mutua, prensa del MIT, ISBN 0-262-18119-3
Sunil R. Srimani: Algoritmos distribuidos, sociedad de computadora de IEEE, ISBN 0-8186-3380-8 de la exclusión mutua
Thomas W. Christopher, George K. Thiruvathukal: Plataforma de alto rendimiento de Java del que computa, Prentice Pasillo, ISBN 0-13-016164-0
Gadi Taubenfeld, algoritmos y programación concurrente, Pearson/Prentice Pasillo, ISBN 0-13-197259-6 de la sincronización del
.
| Random links: | Jack Kerouac | Banting de Frederick | Au en el der Hallertau | Charles de la Boische, Marquis de Beauharnois | Terrence de largo |