差分
/* ブロックデバイス */
=== ブロックデバイス ===
<pre class="bash">
$ ls -l /dev/hd?
brw-rw---- 1 root disk 3, 0 Mar 15 2002 /dev/hda
brw-rw---- 1 root disk 34, 0 Mar 15 2002 /dev/hdg
brw-rw---- 1 root disk 34, 64 Mar 15 2002 /dev/hdh
</pre>
先頭のbがブロックデバイスを意味する
効率が良いと書きましたが、正確には「効率良く入出力するための工夫をしている (だから効率が良い)」といった方がいいでしょう。 1つのブロックのことをセクタと呼び、普通はサイズは512バイトです。CD-ROM のようなデバイスでは最近は2KBですが、いずれにしてもセクターは2のN乗倍(512は2 の9乗、2Kは2の11乗)の値を取ります。最大値は記憶管理のページのの値を取ります。サイズ以下です。32ビットアーキテクチャーなら4KB、64ビットアーキテクチャー最大値は記憶管理のページのサイズ以下です。であれば8KBです。32ビットアーキテクチャーなら4KB、64ビットアーキテクチャーであれば8KBです<ref>これは典型的な例で、ページサイズはハードウェアのアーキテクチャーに依存します。</ref>。
ハードディスクなどのデバイスからブロックの内容が読み込まれたとき(あるいは書き込まれる途中)、
データはメモリ中のバッファの中に保管されています。1つのバッファは1つのブロックに対応しています。
普通はページサイズが4KBでブロックサイズが512 バイトですから、一つのページは複数のバッファから出来ています。
ブロックデバイスから幾つかのブロックでデータを読み込んで来た時(あるいは書き込もうとした時)、
メモリ中にバッファのチェーンが作られます。
このように、ブロックデバイスを読み書きする時には、ハードディスクのようなデバイスを直接読み書きするのではなく、
まずこのバッファに対して読み書きが行われます。
=== 擬似デバイス ===