ページング方式におけるページインだけの処理の割合

前回の勉強内容

ponsuke-tarou.hatenablog.com

今回の勉強内容 : ページング方式の基本用語を理解したい。

勉強のきっかけになった問題

ページング方式の仮想記憶において,あるプログラムを実行したとき,1回のページフォールトの平均処理時間は30ミリ秒であった。ページフォールト発生時の処理時間が次の条件であったとすると,ページアウトを伴わないページインだけの処理の割合は幾らか。

ページフォールト発生時の処理時間〕
(1) ページアウトを伴わない場合,ページインの処理時間は20ミリ秒である。
(2) ページアウトを伴う場合,置換えページの選択,ページアウト,ページインの合計処理時間計60ミリ秒である。

  1. 0.25
  2. 0.33
  3. 0.67
  4. 0.75

平成28年春期問17 ページインだけの処理の割合|応用情報技術者試験.com

f:id:ponsuke_tarou:20190401194116p:plain
いつかの思い出

ページング方式とは、メモリ領域をページと呼ばれる一定の大きさの領域に分割し、物理的なアドレスとは別に仮想的なアドレスを割り当てて管理する方式です。

物理メモリが不足した時にOSさんは、ハードディスクの一部をメモリっぽく使用してくれます。
それが仮想メモリです。仮想メモリはハードディスクにスワップファイルという専用領域を造ります。

$ cd /var/vm/  #<<< Mac OSはここにスワップファイルを作ります。
$ ls -l
total 8388608
-rw------T  1 root  wheel  1073741824  3 31 22:05 sleepimage
-rw-------  1 root  wheel  1073741824  2 20 00:06 swapfile0 # <<< スワップファイル
-rw-------  1 root  wheel  1073741824  3 10 21:57 swapfile2
-rw-------  1 root  wheel  1073741824  3 31 21:48 swapfile3

ページング方式の仮想記憶を使うとプログラムやデータを不連続な主記憶に割り付けることができます。

細切れのメモリ空間を連結して一つの連続した空間として利用したり、補助記憶装置(ハードディスクなど)上にも仮想的なメモリ領域を確保することで、物理メモリの容量を超えてメモリ空間を利用することができます。

f:id:ponsuke_tarou:20190401204406p:plain
どこかの思い出

仮想アドレスと物理アドレスマッピングを格納するページテーブルを使って管理します。

ページング方式では、OSさんが仮想アドレスと物理アドレスマッピングを格納するページテーブルを使って物理メモリと仮想メモリを管理してくれます。
ここで、仮想メモリはページ単位なのに物理メモリが違う大きさで管理されていると行き来が大変なので、ページと同じ大きさのカタマリで管理します。
この物理メモリのカタマリをページフレームとか物理ページとかフレームとかっていいます。

管理するために同じサイズにデータを分割した1つ1つがページです。

https://wa3.i-3-i.info/img/data/3300/d003352-8.pnghttps://wa3.i-3-i.info/img/data/3300/d003352-9.pnghttps://wa3.i-3-i.info/img/data/3300/d003352-10.png
https://wa3.i-3-i.info/word13352.html

f:id:ponsuke_tarou:20190401200151p:plain
あの日の思い出

アクセスしようとした領域が物理メモリではなく仮想メモリにある場合に発生する割り込み処理をページフォールトといいます。

  • 英語 : page fault

ページング方式の仮想メモリにおいて、プロセスがアクセスしようとしたページが物理メモリ上に無く、仮想メモリにあるときに仮想メモリを管理する制御装置が発する例外あるいは割込処理をページフォールトといいます。
このページフォルトは、エラーっぽい名前だけれどとかでとか来た時に表示される通知やお知らせ的な存在です。
そのページフォルトをOSさんが検知して物理メモリに必要なページを読み込んでくれます。

f:id:ponsuke_tarou:20190401200306p:plain
ぬのたき

リストラ的にページフレームを追い出すことをページアウトといいます。

ページング方式では「プロセスが使ってる部分は物理メモリ、使ってない部分は仮想メモリを使う」「仮想メモリはページというカタマリで使われていく」、そして「使ってなかった部分を使うときは仮想メモリから物理メモリを使うようにする」ことがわかりました。
が、物理メモリが空いていればいいけど、空いていなかったらどうするんだろう?

物理メモリが空いていなかったら、どれかのページを追い出すんです!
どのページフレームを追い出すかってのはアルゴリズムによって違います。

逆にデビュー的にページをページフレームに読み込むことをページインとかスワップインといいます。

f:id:ponsuke_tarou:20190401202233p:plain
この日の思い出

次回の勉強内容

ponsuke-tarou.hatenablog.com