05
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
calendar_bottom
RSS | ATOM | ADMIN

badulog

日々の覚書と雑記
<< thunderbirdが「このフォルダは処理中です」ってなったら | main | [linux] オープン可能なファイル数 >>
ENTRY TOP
スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | - | - | - |
ENTRY BOTTOM ENTRY TOP
[linux]ページキャッシュとバッファキャッシュ再考
ページキャッシュとバッファキャッシュについてもう一度考えてみる.
前の記事
http://baduizm.jugem.jp/?eid=83


全体的に間違ってる気がするので、削除。


今のところ、以下のような説があるけど何が正解かは不明。
(a) 単純にi-nodeとかdentryなどメタデータのキャッシュがバッファで、ファイルのキャッシュがページキャッシュ
(b) ブロックデバイスファイルを扱うときに使うのがバッファ。
(c) ユーザ側がページで、デバイス側がバッファ。


■全体的なお話
(1)構造的には
+--------------+
| system call |
+--------------+
| page cache |
+--------------+
| buffer cache |
+--------------+
| disk |
+--------------+

(2) 昔は
上記のような感じでなく,並列なイメージで
readはページキャッシュ,writeはバッファキャッシュだったらしい.
今は,r/wともページキャッシュ→バッファキャッシュ.

(3) イメージとしては
1. ページキャッシュ探しに行く.ヒットすれば終了.
2. バッファキャッシュ探しに行く.ヒットすれば終了.
(これは誰が主語か?これで見つけたらページキャッシュにも残るはず)
3. なかったらディスクIOが発生してバッファキャッシュに引き上げるのかな.

(4) 両方とも
実体はハッシュで実装されてる

■ ページキャッシュって
(1) free,topで言うと"cache"で表示される
(2) いわゆるキャッシュのイメージどおりで理解しやすい
(3) ファイル丸ごとでなく,ページ単位でキャッシュする.
ページ = 仮想メモリの最小単位 = カーネルがメモリを扱う時の最小単位
(4) (ページキャッシュは,というかページは)i-nodeとファイルオフセットでアクセス

■ バッファキャッシュって
(1) free,topで言うと"buffer"で表示される
(2) なんか良くわからん
(3) バッファは固定サイズ(たとえば、512 バイト)
(4) デバイス識別子とブロック番号でindexされる
目的はデータブロックを素早く見つけ出すため





baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
スポンサーサイト
スポンサードリンク | - | - | - | - |
ENTRY BOTTOM