差分

移動先: 案内検索

デバイススペシャルファイル

152 バイト追加, 2015年7月27日 (月) 16:11
/* ブロックデバイス */
=== ブロックデバイス ===
ブロックデバイスは、ハードディスクのようなランダムアクセスができ、かつブロックデバイスは、ハードディスクのようなランダムアクセスができ、かつ入出力がブロック単位でアクセスを行うことができるハードウェアへのデバイスドライバです。入出力がブロック単位でアクセスを行うことができるハードウェアへのデバイスドライバです。データをキャッシュするので効率良く入出力ができます。データをキャッシュするので効率良く入出力ができます。
 
<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 バイトですから、一つのページは複数のバッファ
から出来ています。ブロックデバイスから幾つかのブロックでデータを読み込
んで来た時(あるいは書き込もうとした時)、メモリ中にバッファのチェーン
が作られます。このように、ブロックデバイスを読み書きする時には、ハード
ディスクのようなデバイスを直接読み書きするのではなく、まずこのバッファ
に対して読み書きが行われます。
ハードディスクなどのデバイスからブロックの内容が読み込まれたとき(あるいは書き込まれる途中)、
データはメモリ中のバッファの中に保管されています。1つのバッファは1つのブロックに対応しています。
普通はページサイズが4KBでブロックサイズが512 バイトですから、一つのページは複数のバッファから出来ています。
ブロックデバイスから幾つかのブロックでデータを読み込んで来た時(あるいは書き込もうとした時)、
メモリ中にバッファのチェーンが作られます。
このように、ブロックデバイスを読み書きする時には、ハードディスクのようなデバイスを直接読み書きするのではなく、
まずこのバッファに対して読み書きが行われます。
=== 擬似デバイス ===