キャッシュ分の仮想メモリ ( No.13 ) |
- 日時: 2007/09/03 09:15
- 名前: 酒仙◆2rfd.9VGX6 ID:zpkQYhUQ
- メモリ上にキャッシュ領域を確保すると、そのキャッシュ領域に応じた仮想メモリが確保されます。
例としてコピープログラムを示します。(ちゃんとしたバッファリングじゃないですけど) 読み込みバッファ:rb:4kByte 書き出しバッファ:wb:1MByte 書き出しバッファの参照:wbp = wb 実際に読み込んだ量:s while(!eof){ s = read(rb) copy(wbp, rb, s) // wbpにrbをsだけコピー wbp += s; // wbpの位置を更新 if(wbp >= wb + 1M || eof()){ write(wb, wbp - wb) // wbをwbp-wbだけ書き出す } }
これで1MByteのバッファを持つコピープログラムが出来ます。 実際に組んで試したところ、書き出しバッファの1MByteを確保したときに実メモリだけでなく仮想メモリも1Mほど増えました。(読み込み前です。もしかすると逆で、仮想→実かも) このことから、ディスクキャッシュをとると必ず仮想メモリが確保されるが、その仮想メモリにはアクセスしないと思われます。 実際プログラム上はメモリへのアクセスがある限りそのデータが仮想メモリに追いやられることは基本的にないですから。
ですので仮想メモリに書き出すということは無いはずです。
|
|