ソース表示: internal24-63-ディスクブロックのバッファへの読み込み #24079

[[PageNavi(internal24-navi)]]

{{{ comment
h2w-title:ディスクブロックのバッファへの読み込み
}}}

 

= ディスクブロックのバッファへの読み込み = #SECTION03250000000000000000

バッファへの読み込みは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 [[BR]]
2000年12月09日 (土) 23時55分06秒 JST''1

[[PageNavi(internal24-navi)]]