Die Bio-Struktur im Linux-Kernel

8

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.

  1. Was genau bedeutet flight(active) ?
  2. "Als eine Liste von Segmenten" - sprechen wir über diese Segmentierung?
  3. Was bedeutet "Durch die Puffer ... im Speicher zulassen"?
Vikram 28.01.2013, 18:51
quelle

3 Antworten

12

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.

  1. Virtuelle Adresse fortlaufend - Physikalische Adresse kontinuierlich (kmalloc () - Bietet eine gute Leistung, ist jedoch in der Größe begrenzt)
  2. Virtuelle Adresse fortlaufend - Physische Adresse nicht kontinuierlich (Verwendung von vmalloc () - Für große Speichergrößenanforderungen)

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.

    
Praveen Felix 29.01.2013, 07:00
quelle
2
  1. "Im Flug" bedeutet eine Operation, die angefordert, aber noch nicht eingeleitet wurde.
  2. "Segment" bedeutet hier einen Speicherbereich, der gelesen oder geschrieben werden soll, zusammenhängend Teil der Daten, die im Rahmen der Operation übertragen werden sollen.
  3. "Scatter / gather I / O" ist mit scatter -Operationen gemeint, die einen zusammenhängenden Bereich von Daten auf der Festplatte aufnehmen und Teile davon in den Speicher verteilen, sammeln trennt sich Datenbereiche im Speicher und schreibt sie zusammenhängend auf die Festplatte. (Ersetzen Sie "disk" durch ein geeignetes Gerät in der vorherigen.) Einige E / A-Maschinen können dies in einem Arbeitsgang (und dies wird immer häufiger).
vonbrand 28.01.2013 22:02
quelle
0

1) "Im Flug" bedeutet "in Arbeit" 2) Nein 3) Nicht ganz sicher:)

    
Dennis Kaarsemaker 28.01.2013 18:55
quelle

Tags und Links