9.5.ページング(1):Quantitative System Performance

9.4.2.共用デバイスへのスワッピング」の続きです。(目次はこちら

9.5.ページング


 大部分のコンピュータ・プログラムは参照の局所性を示す。つまり、プログラムは大きなアドレス空間を持つかもしれないが、任意の短い時間の間ではそのアドレス空間の小さな部分だけが参照される。仮想メモリ・システムはこの性質を利用して、個々のプログラムにプログラムの(仮想)アドレス空間より小さな(物理)一次メモリを割付け、ハードウェアとソフトウェアの組合せを用いて仮想アドレスを物理アドレスに変換し、一次メモリとディスクの間で仮想アドレス空間の部分を転送している。
 仮想メモリには2つの主要なメリットがある。すなわち、システムはCPUに付加された物理メモリ量より大きい仮想アドレス空間を持つプログラムに対応出来、多くの並行してアクティブなプログラムが他のやり方で可能であるよりも大きいことを可能にする。デメリットもまた存在する。すなわち、CPUとI/Oのリソースは仮想メモリの管理に時間を当てなければならない。
 仮想メモリ・システムはページングセグメンテーションあるいは両方を利用する。このセクションでの我々の注意はページングに向けられる。システムの物理メモリはいくつかのサイズ固定のページ・フレームに分割され、各々のプログラムのアドレス空間は同じ固定サイズのいくつかのページに分割されているものと考える。オペレーティング・システムはシステムレベル(いくつのプログラムがメモリ・リソースを巡って争うことを許すべきか?)とプログラムレベル(どのページがプログラムに割付けられたページ・フレームを占有すべきか? あるいは、ちょうど参照されたばかりの非滞在ページを収容するためにどのページを一次メモリから除去すべきか?)との両方で決断を下さなければならない。ページ・フォールトに応じての一次メモリとディスクの間のページの移動に伴うI/Oは、このセクションで我々がモデル化を研究するシステム動作の側面である。
 ページングのモデル化はスワッピングのモデル化と多くの共通点を持つ。根本的な課題はメモリ管理動作の処理要求時間への寄与を決定することである。もし考慮対象のシステム改造がページング・デバイスでの処理要求時間に顕著な影響を与えないと予測されるならば、これらの処理要求時間は測定データから得ることが出来る。しかしスワッピングの場合と同様に、システム改造のページング動作のレベルへの影響は入力として提供したいものではなく、むしろ我々のモデルから学びたいものである。ページング動作は個々のプログラムの特徴に、そしてオペレーティング・システムのメモリ管理方針を通してのそれと他の各々のプログラムとの相互作用に、大きく依存するので予測が特に困難である。
 単純な例を考察しよう。バッチ作業負荷をサポートする小さなマルチプログラミング環境の仮想メモリ・システムである。処理リソースは、ジョブが処理に平均3秒を要求するCPUと、ジョブが処理にそれぞれ平均8秒と2秒を要求する2つのファイル・ディスクと、1つのページング・ディスクを含む。
 ページング・ディスクでの処理要求時間は、システムのより詳細な構成と、オペレーティング・システムの方針と、ジョブの特徴を考察することで決定される。システムは物理メモリの512個のページ・フレームを持ち、そのうち300個がユーザ・ジョブで使用可能である。オペレーティング・システムはメモリを等分配原則に基づいて割当てる。つまり、マルチプログラミング・レベルが選択され、使用可能なページ・フレームはジョブ間で均等に分配される。ジョブのメモリ参照特性とオペレーティング・システムのページ置換方針は互いに、図9.5に示すプログラム生存期間関数を反映した仕方で相互作用する。この関数は、1つのジョブにおいて、割当てられたページ・フレームのさまざまな数についての、ページ・フォールトとページ・フォールトの間に経過する平均CPU処理時間をミリ秒の単位で示す。
 マルチプログラミング・レベルが2から8までの場合でのこのシステムの性能をモデル化することを求められているとしよう。個々のマルチプログラミング・レベルについて個別の解析が実行されなければならない。個々の解析はページング・ディスクでの処理要求時間を決定することから始めなければならない。マルチプログラミング・レベル5を考察しよう。300個のページ・フレームがユーザにとって使用可能であるので、等分配方針は5つのジョブの各々に300/5=60ページを割当てる。生存期間関数は、このメモリ割当てでは1つのジョブはCPU処理9msec毎に平均1回のページ・フォールトを経験することになると告げている。1つのジョブの平均CPU処理要求時間は3秒なので、1つのジョブは平均で3000/9=333回のページ・フォールトを経験することになる。

  • 図9.5 プログラム生存期間関数


9.5.ページング(2)」に続きます。