1

奇数サイズのLinux(2.6)ブロックデバイス(ループバックデバイスなど)を作成することは可能ですか?私はそれを実現することができませんでした。losetup512バイト境界に切り捨てられるようです。ubdUser-mode Linuxデバイスのubdデバイスは、512バイト境界に切り上げられるようです。struct requestには、読み取りsector_t __sector/書き込み操作のブロックオフセットがあります。

私は教育目的のためだけにこの質問をしています。512バイトの境界に対処することはできますが、それを回避できるかどうかはまだ興味があります。この質問では、他の抽象化レイヤー(通常のファイルやキャラクターデバイスの使用など)には興味がありません。

4

2 に答える 2

1

これが、文字デバイスではなくブロックデバイスを作成するものです。つまり、ブロックの粒度です。一度にブロックを処理する実際のハードウェアを、ブロックも処理する抽象化としてモデル化する方がはるかに効率的であるため、二分法が存在します。そうしないと、すべての操作がはるかにコストのかかる計算になります。

あなたが言及するように、それを回避する方法は、文字指向のデバイスまたは抽象化を使用することです。これはUnixデバイスモデルの中心です。1つとしてしか仮想化できないものを除いて、すべてが一連のオクテットです。

于 2010-11-21T11:23:11.467 に答える
1

いいえ。Linux2.6ブロックレイヤーは512バイトよりも小さいものを理解しません。それよりも小さいもの(特に2の累乗ではない)は、非常に多くのコードを大幅に書き直す必要があります。

于 2010-11-21T12:11:44.003 に答える