Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、Linuxカーネル2.6解読室の第2章までを公開中。
バッファへの読み込みはbread関数によって行われる。(伝統的UNIXと同じ)大雑把なアルゴリズムは以下のとおり
bread(dev, blkno, size) getblk関数でバッファを確保 if(既にバッファの内容が有効である) return バッファ ドライバに対してI/O要求を発行(ll_rw_block関数) バッファのI/O完了の待ち合わせ(wait_on_buffer関数) return バッファ
breadと似た関数で一度に複数のバッファに対する先読み要求をだすbreada関数も存在する。全てのバッファに対するI/O要求を発行した後、先頭のバッファに対するI/Oの完了だけを待ち合わせる。一般的なファイルのシーケンシャルアクセスの高速化に効果がある。
(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST1
[ページ情報]
更新日時: 2008-08-27 14:17:37, 更新者: hiromichi-m
[権限]
表示:無制限, 編集:ログインユーザ, 削除/設定:メンバー