Entendiendo el Kernel de Linux - Kernel Sincronización

Kernel de preferencia (de preferencia núcleo) (Linux 2.6)

Las principales características de kernel preventiva: un proceso en el funcionamiento en modo de núcleo, pueden estar sustituidos durante la ejecución de otra función proceso kernel.
condiciones de suscripción preferente:
1. Sólo cuando el núcleo está ejecutando un manejador de excepciones (especialmente las llamadas al sistema), y de preferencia del núcleo no es un discapacitado explícita, se puede aprovechar el kernel
2. La CPU local debe abrir la interrupción local o no puede completar preferencia núcleo.
 
El área crítica es una pieza de código antes de que otra vía de control del núcleo puede entrar en la sección crítica, entrar en la sección crítica de la vía de control del núcleo debe estar completamente terminada la ejecución de código
 
La tecnología de núcleo de sincronización:
1 por las variables de la CPU
La declaración de variables núcleo de la CPU para cada (variable por CPU) variable. Cada una de la CPU principal es un elemento variable de cada array que corresponde a una matriz de estructuras de datos de la CPU, sistema.
Una CPU no debería acceder a otra CPU elemento de la matriz correspondiente, mientras que puede ser libremente leer o modificar sus propios elementos sin tener que preocuparse acerca de las condiciones de carrera se produzca. Esto significa que cada CPU sólo cuando se trata de datos variables determinan sobre la CPU en el sistema de es independiente cuando se podría utilizar la lógica.
2, una operación atómica (operaciones atómicas)
Varios de instrucciones en lenguaje ensamblador con "leer - modificar - escritura." Tipo, es decir, que acceden a la memoria dos veces, primero lea el valor original, el segundo tiempo para escribir un nuevo valor para evitar la "lectura - escritura - modifique" comando causado la forma más fácil de una condición de carrera es asegurar que tal operación es atómica en el nivel de chip. cualquier operación debe ser realizada en una sola instrucción, intermedia sin interrupción, y evitar otros acceso de la CPU de la misma celda de memoria.
Linux kernel proporciona atomic_t tipo (acceso de un solo átomo de contador).
typedef   struct  {      
int  contador; 
 Atomic_t}; 
3, la optimización y la barrera de memoria
De hecho, todas las primitivas de sincronización actúan como optimización de la memoria y las barreras.
Optimización de barrera (barrera de optimización) Primitivas para asegurar que el compilador no puede ser confundido por instrucciones en lenguaje ensamblador antes de instrucciones en lenguaje ensamblador primitivos sobre la operación y después de las operaciones primitivas. En Linux, se optimiza la barrera de barrera () macro, se expande a ASM volátil ( "" ::: "memoria" ). barrera de optimización no garantiza la CPU actual para mezclar montaje instrucciones de lenguaje para realizar --- esto es una barrera de memoria de trabajo.
barrera de memoria (barrera de memoria) Primitivas para garantizar que, antes de la operación después de la operación primitivas comienzan antes de que el original se ha completado. Por lo tanto, la barrera de memoria similar al cortafuegos, de modo que todas las instrucciones en lenguaje ensamblador no puede pasar.
En un sistema multiprocesador, todos los átomos actúan como operaciones de barrera de memoria, ya que todos ellos utilizan el byte de bloqueo.
4, spinlock (SPIN Lock) : un entorno multi-procesador de un bloqueo en particular, si el control del núcleo de bloqueo de giro ruta abierta, sigue adquiriendo la cerradura y su propia ejecución contrario, si la vía de control del núcleo. se encontró encerrados por la operación de bloqueo de la vía de control del núcleo en otra CPU, y gira en torno, un bucle estrecho se ejecuta repetidamente instrucciones hasta que se libere el bloqueo.
Lectura / escritura bloqueos de giro:
Orden de bloqueo (seqlock) : giro de lectura / escritura encierra similar, pero dado una mayor prioridad de escritura, incluso si el lector está leyendo, sino que también permiten el escritor que continúe la marcha, los escritores ventajas nunca esperar (a menos que otra escritura quien está escribiendo), la desventaja es que a veces el lector tiene que leer los mismos datos varias veces hasta que se obtiene una copia válida.
5, lea - copia - actualización (la UCR)
RCU es proteger la pluralidad de técnicas de sincronización en muchos casos la CPU lee la estructura de datos diseñada. RCU permite que varios lectores y escritores simultáneamente (con la cerradura ha sido mejorada a la orden de ejecutar solamente una escritura-in). Por otra parte, RCU no está utilizando cerraduras.
La idea clave es limitar el alcance del PCR, de la siguiente manera:
(1) RCU asignada dinámicamente y sólo la estructura de datos protegida referenciado por un puntero.
(2) protegida RCU especies sección crítica, cualquier vía de control del núcleo no puede dormir.
RCU es características añadidas Linux 2.6 Zhong utilizados en la capa de red y el sistema de archivos virtual.
6, semáforo
Linux proporciona dos semáforos:
(1) la cantidad de la señal de base usado por el camino de control de kernel
(2) semáforos System V IPC, es utilizado por el proceso de modo de usuario.
De lectura / escritura de semáforos:
7, deshabilitar interrupciones locales
Uno de los mecanismos principales para asegurar que un conjunto básico de estados de ser tratado como un área crítica es interrupción discapacitados, incluso cuando el dispositivo de hardware genera una señal IRQ, sino también a la vía de control kernel desactivar interrupción continúa, que proporciona una forma eficiente para asegurar que el manejador de interrupciones a las estructuras de datos de acceso también están protegidos. Sin embargo, la operación de protección no está prohibida controlador de interrupción local en la interrupción otra CPU acceso concurrente a la estructura de datos, por lo tanto, en un sistema multiprocesador, está prohibido se utilizan a menudo con el bloqueo opcional una interrupción local.
 8, está prohibido y puede retrasar la función de activación
 
CLAVE: Los diferentes tipos de condiciones de competencia utilizando diferentes métodos de sincronización ......
 
Ejemplos evitar las condiciones de carrera:
1, el contador de referencia (contador de referencia)
Ampliamente utilizado en el núcleo con el fin de evitar condiciones de carrera debido a la asignación concurrente y la liberación de los recursos generados.
 
 
 
 
 
 
 
 
 
 
Publicado 11 artículos originales · ganado elogios 2 · Vistas 672

Supongo que te gusta

Origin blog.csdn.net/liheng301/article/details/42786993
Recomendado
Clasificación