ブロックデバイスは、I / Oトランザクション中にデータのチャンク(512、1024バイト)を処理するデバイスです。「structbio」は、Kernel-SpaceからのブロックI/O操作に使用できます。この構造は、ブロックデバイスドライバーの開発で一般的に使用されます。
Q1)フライト(アクティブ)とはどういう意味ですか?
ブロックデバイスは通常、ファイルを保存するためのファイルシステムで実装されます。これで、ユーザースペースアプリケーションがファイルI / O操作(読み取り、書き込み)を開始するたびに、カーネルはファイルシステムマネージャーを介して一連のブロックI/O操作を開始します。「structbio」は、処理されるすべてのブロックI / Oトランザクション(ユーザーアプリによって開始される)を追跡します。これが、ここでフライト/アクティブリージョンとして言及されているものです。
「Q2)セグメントのリストとして」-このセグメンテーションについて話しているのですか?
ブロックデバイスとの間でデータを保持するには、カーネルがメモリバッファを必要とします。
カーネルには、メモリが割り当てられる2つの可能性があります。
- 仮想アドレス連続-物理アドレス連続(kmalloc()を使用-優れたパフォーマンスを提供しますが、サイズに制限があります)
- 仮想アドレス連続-物理アドレス非連続(vmalloc()を使用-巨大なメモリサイズ要件の場合)
ここで、セグメントは最初のタイプ、つまりブロックIO転送に使用される連続物理メモリを示します。セグメントのリストは、そのような連続した物理メモリ領域のセットを示します。リスト要素は非連続メモリセグメントであることに注意してください。
Q3)「メモリ内のバッファを許可することによって」とはどういう意味ですか?
スキャッターギャザーは、デバイスとの間の複数の非連続メモリロケーションとの間のデータ転送を1回のショット(読み取り/書き込みトランザクション)で可能にする機能です。ここで、「struct bio」は、処理される複数のセグメントの記録を保持します。各セグメントは連続メモリ領域ですが、複数のセグメントは互いに非連続です。「structbio」は、スキャッターギャザー機能を実行する機能をカーネルに提供します。