update print nucleo know descargar como linux-kernel block-device

linux-kernel - nucleo - print kernel version linux



La bio estructura en el kernel de Linux (3)

Estoy leyendo Linux Kernel Development por Robert Love. No entiendo este párrafo sobre la estructura bio :

El contenedor básico para la E / S de bloques dentro del núcleo es la estructura biológica, que se define en <linux/bio.h> . Esta estructura representa las operaciones de E / S de bloque que están en vuelo (activas) como una lista de segmentos. Un segmento es un fragmento de un búfer contiguo en la memoria. Por lo tanto, los búferes individuales no necesitan estar contiguos en la memoria. Al permitir que los almacenamientos intermedios se describan en fragmentos, la estructura biológica proporciona la capacidad para que el núcleo realice operaciones de E / S de bloques incluso desde un solo búfer desde múltiples ubicaciones en la memoria. Vector I / O como este se llama scatter-gather I / O.

  1. ¿Qué significa exactamente el flight(active) ?
  2. "Como una lista de segmentos": ¿estamos hablando de esta segmentación?
  3. ¿Qué significa "Al permitir los búferes ... en la memoria"?

  1. "En vuelo" significa una operación que se ha solicitado, pero que aún no se ha iniciado.
  2. "Segmento" aquí significa un rango de memoria para leer o escribir, una parte contigua de los datos que se transferirán como parte de la operación.
  3. "Scatter / gather I / O" se refiere a las operaciones de dispersión que toman un rango contiguo de datos en el disco y distribuye partes de él en la memoria, reúne tomas separadas de datos en la memoria y las escribe contiguamente en el disco. (Reemplace "disco" por algún dispositivo adecuado en el anterior.) Algunas máquinas de E / S pueden hacer esto en una sola operación (y esto es cada vez más común).

1) "En vuelo" significa "en progreso" 2) No 3) No estoy seguro :)


Los dispositivos de bloque son dispositivos que se ocupan de un fragmento (512, 1024 bytes) de datos durante una transacción de E / S. "struct bio" está disponible para operaciones de E / S de bloques desde Kernel-Space. Esta estructura se usa comúnmente en el desarrollo de controladores de dispositivos de bloques.

Q1) ¿Qué significa exactamente el vuelo (activo)?

Los dispositivos de bloque generalmente se implementan con un sistema de archivos destinado a almacenar archivos. Ahora, cuando una aplicación de espacio de usuario inicia una operación de E / S de archivo (lectura, escritura), el núcleo, a su vez, inicia una secuencia de operación de E / S de bloque a través del Administrador de sistema de archivos. La "struct bio" realiza un seguimiento de todas las transacciones de E / S de bloques (iniciadas por la aplicación del usuario) que se procesarán. Eso es lo que se menciona aquí como regiones activas / de vuelo .

"P2) Como una lista de segmentos" - ¿estamos hablando de esta segmentación?

El kernel requiere memoria intermedia para almacenar datos en / desde el dispositivo Block.

En kernel, hay dos posibilidades en las que se asigna la memoria.

  1. Dirección virtual continua: dirección física continua (usando kmalloc (): proporciona un buen rendimiento pero tiene un tamaño limitado)
  2. Dirección virtual continua: dirección física no continua (utilizando vmalloc (): para requisitos de gran tamaño de memoria)

Aquí, un segmento indica el primer tipo, es decir, la memoria física continua que se utiliza para la transferencia de bloque IO. La lista de segmentos indica un conjunto de tales regiones de memoria física continua. Tenga en cuenta que los elementos de la lista son segmentos de memoria no continuos.

Q3) ¿Qué significa "Al permitir los búferes ... en la memoria"?

Scatter-gather es una característica que permite la transferencia de datos desde / hacia múltiples ubicaciones de memoria no continuas a / desde el dispositivo, en una sola toma (transacción de lectura / escritura). Aquí "struct bio" guarda el registro de múltiples segmentos que se procesarán. Cada segmento es una región de memoria continua, mientras que múltiples segmentos no son continuos entre sí. "struct bio" proporciona capacidad al núcleo para realizar la función de dispersión y recopilación.