Ich lese Linux Kernel Development von Robert Love. Ich verstehe diesen Absatz über die bio
Struktur nicht:
Der Basiscontainer für Block-I / O im Kernel ist die Bio-Struktur, die in
<linux/bio.h>
definiert ist. Diese Struktur stellt Block-E / A-Operationen dar, die sich im Flug (aktiv) als eine Liste von Segmenten befinden. Ein Segment ist ein Chunk eines Puffers, der zusammenhängend im Speicher ist. Somit müssen einzelne Puffer nicht zusammenhängend im Speicher sein. Durch Wenn die Puffer in Blöcken beschrieben werden sollen, stellt die Biostruktur die Fähigkeit für den Kernel bereit, Block-E / A-Operationen sogar eines einzelnen Puffers von mehreren Speicherorten auszuführen. Ein solcher Vektor-I / O wird Scatter-Gather-I / O genannt.
flight(active)
? Block Devices sind solche Geräte, die mit einem Chunk (512, 1024 Bytes) von Daten während einer I / O-Transaktion umgehen. "struct bio" ist für Block-I / O-Operationen von Kernel-Space verfügbar. Diese Struktur wird üblicherweise bei der Entwicklung von Blockgerätetreibern verwendet.
F1) Was genau bedeutet Flug (aktiv)?
Block-Geräte werden normalerweise mit einem Dateisystem zum Speichern von Dateien implementiert. Wann immer eine Benutzer-Space-Anwendung eine Datei-E / A-Operation (Lesen, Schreiben) initiiert, initiiert der Kernel seinerseits eine Sequenz von Block-E / A-Operationen über den Dateisystem-Manager. Die "struct bio" verfolgt alle Block-I / O-Transaktionen (die von der Benutzer-App initiiert werden), die verarbeitet werden sollen. Das wird hier als flight / active Regionen erwähnt.
"Q2) Als eine Liste von Segmenten" - reden wir über diese Segmentierung?
Vom Kernel werden Speicherpuffer benötigt, um Daten vom / zum Block-Gerät zu halten.
Im Kernel gibt es zwei Möglichkeiten, in denen der Speicher zugewiesen wird.
Hier bezeichnet ein Segment den ersten Typ, d. h. einen kontinuierlichen physikalischen Speicher, der für die Block-IO-Übertragung verwendet wird. Eine Segmentliste zeigt eine Menge solcher kontinuierlicher physikalischer Speicherbereiche an. Beachten Sie, dass die Listenelemente nicht kontinuierliche Speichersegmente sind.
Q3) Was bedeutet "Durch die Puffer ... im Speicher zulassen"?
Scatter-Gather ist eine Funktion, die den Datentransfer von / zu mehreren nicht-kontinuierlichen Speicherorten zum / vom Gerät in einer einzigen Aufnahme ermöglicht (Lese- / Schreib-Transaktion). Hier speichert "struct bio" mehrere Segmente, die verarbeitet werden sollen. Jedes Segment ist ein zusammenhängender Speicherbereich, während mehrere Segmente nicht zusammenhängend sind. "struct bio" bietet dem Kernel die Möglichkeit, Scatter-Gather-Funktionen auszuführen.
1) "Im Flug" bedeutet "in Arbeit" 2) Nein 3) Nicht ganz sicher:)
Tags und Links linux-kernel block-device