makurosu8 blog

ゲーム開発全般/勉強会レポート/雑記

『Web開発者のための大規模サービス技術入門』四日目

OSのキャッシュと分散

OSのキャッシュ機構

 そもそもOSにはディスクのアクセスを速くする仕組みがある

ページキャッシュ

 OSは「仮想メモリ」機能をもっている
  仮想メモリ=論理的なリニアアドレスを物理的な物理アドレスに変換
  メモリには32ビットの番地が付いてる(0x12345678)
 プロセスがメモリが欲しいときOSは空いているメモリを返すが
  アドレスを違うアドレスに変換する
  なぜそうするか?
   決まった地点から使えたほうがプロセスが扱いやすいため
   (0x0000000に変換する)
  ポイント
   OSはメモリを直接渡すのではなくカーネルの中で仕組みを抽象化している
  備考
   OSはメモリを確保する時に1バイトずつではなく
   4キロバイトほどブロックを確保している
   この1ブロックをページと言う。OSは最低1個以上のページを確保

Linuxページキャッシュの仕組み

 OSは確保したページをメモリ上ずっと確保し続けている機構を持っている
 ページキャッシュの仕組み
  1.OSがディスクから4キロバイトのブロックを読み出し
  2.メモリ上に配置(プロセスは仮想メモリだけアクセス出来る)
  3.OSは仮想メモリの番地をプロセスに教えてあげる
  4.OSが仮想メモリにアクセス
  5.プロセスがデータを読み終えても仮想メモリは開放されない
  6.次に別のプロセスが同じディスクにアクセスする際は残しておいたページを使用
 ページキャッシュの身近な効果
  Linuxではディスクにデータを読みにいくと必ずメモリにいってキャッシュされる
  したがって、2回目以降のアクセスが速くなる
  OSはずっと起動しておくと速くなる
  起動直後はキャッシュがないのでディスクI/Oは発生しやすく重い