セグメンテーション方式とページング方式の仮想記憶の仕組みについて解説。さらに、パイプライン制御に関する演習を出題する。
前回の宿題【問題5】は、ページング方式の「仮想記憶」に関する問題でした。
仮想記憶は、MPUが実際に搭載したメモリより見かけ上大きな空間を利用できるようにするための仕組みです。
今回も問題の解答に続いて、仮想記憶の仕組みについて解説します。この機会にしっかりと理解しておきましょう。
それでは、解答を発表します!
問題5 ページング方式の仮想記憶に関する次の記述のうち、正しいものはどれか? 答え. ウ (←クリック) |
ウ以外の記述には誤りがあります。
アは、「ページテーブル上で物理ページ番号を参照したときに、対応する論理ページ番号が見つからなければ」が誤りです。ページテーブル上で論理ページ番号を参照したときに、対応する物理番号が見つからなければ、必要なページがメモリ上に存在しないことになります。
イは、「補助記憶装置上のページを特定してメモリに書き込む」が誤りです。ページアウトでは、メモリ上のページを特定して補助記憶装置上に書き込みます。
エは、「最初に読み込んだページを最初にスワップ対象として選択するNRU」が誤りです。最初に読み込んだページを最初にスワップ対象として選択するのは、FIFO(First In, First Out)方式です。
MPUは、プログラムをメモリ(主記憶装置)にロードして実行しますが、ソフトウェアが多機能になるとプログラムのサイズも大きくなり、コンピュータに搭載したメモリ容量を上回ることがあります。ただし、プログラムの実行時間を短く区切ってみると、単位時間当たりにメモリ上にロードしておかなければならない部分は、プログラムのごく一部です。そのため、プログラムを複数のブロックに分割し、実行に必要な部分をメモリ上にロードして、残りを補助記憶装置に保存しておき、必要になったときに随時メモリ上のブロックと入れ替えるという仕組みが考えられました。これが仮想記憶です。
仮想記憶を用いることで、実際のメモリ容量より見かけ上大きな空間を利用できるようになります。このとき、MPUが参照する見かけ上のアドレス空間を「論理アドレス空間」、実際のメモリのアドレス空間を「物理アドレス空間」といいます。
また、仮想記憶はプログラムをどのように分割するかで、「セグメンテーション方式」と「ページング方式」に大きく分けられます。
セグメンテーション方式の仮想記憶では、プログラムをルーチン、タスク、データなど、何らかの意味を持った「セグメント」という単位に分割します。セグメントは通常可変長になり、「セグメントテーブル」で管理されます。
セグメントテーブルには、セグメントのサイズ、セグメントが格納されている物理アドレスなどのほか、現在そのセグメントがメモリ上に存在するかどうかを示すフラグが保持されています。あるセグメントにアクセスする際には、論理アドレスに含まれるセグメント番号を基にセグメントテーブルを参照します。このとき、フラグが「1」であれば、セグメントテーブルに格納されている物理アドレスと論理アドレス内のオフセットから物理アドレスを求め、メモリ上のセグメントにアクセスします。フラグが「0」であれば、そのセグメントがメモリ上に存在しないという意味です。これを「セグメントフォールト」といいます。セグメントフォールトが発生すると、不要と思われるセグメントを補助記憶装置に書き戻して当該セグメントを補助記憶装置からメモリに読み込む、スワップ処理が行われます。
図1 セグメンテーション方式の仮想記憶の概要 |
ページング方式の仮想記憶では、プログラムを「ページ」という固定長の単位に分割します。現在は、ページング方式が主流です。ページは、「ページテーブル」で管理されます。
ページテーブルには、論理ページ番号とそれに対応する物理ページ番号などの情報が格納されています。あるページにアクセスする際には、論理アドレスに含まれる論理ページ番号を基にページテーブルを参照します。その論理ページ番号に対応する物理ページ番号があれば、そのページがメモリ上に存在するという意味です。ページテーブルに格納されている物理ページ番号と論理アドレス内のオフセットから物理アドレスを求め、そのページにアクセスします。物理ページ番号が見つからなければ、そのページはメモリ上に存在しません。これを「ページフォールト」といいます。ページフォールトが発生すると、不要と思われるページを補助記憶装置に書き戻し、当該ページを補助記憶装置からメモリに読み込む、スワップ処理が行われます。
図2 ページング方式の仮想記憶の概要 |
ページング方式の仮想記憶でページフォールトが発生したとき、メモリ上のどのページをスワップの対象とするかを決めるアルゴリズムを「ページ置換アルゴリズム」といいます。表1に、代表的なページ置換アルゴリズムを示します。
方式 |
説明 |
FIFO(First In, First Out)方式 | 最初にメモリに読み込んだページを選択してページアウトする |
NRU(Not Recently Used)方式 | 最近使っていないページを選択してページアウトする |
LRU(Least Recently Used)方式 | 最も長い時間使われていないページを選択してページアウトする |
NFU(Not Frequently Used)方式 | 最も使用回数が少ないページを選択してページアウトする |
仮想記憶など、コンピュータに搭載されているメモリを効率的に利用するために必須の回路が「MMU(メモリ管理ユニット)」です。MMUは、仮想記憶において論理アドレスを物理アドレスに変換する役目を担います。ページング方式の仮想記憶では、MMUの構造によってページのサイズが決まります。
MMUはそのほかにも、
などの機能を提供します。
問題6 パイプライン制御の説明として、正しいものはどれか? 答え. 解答はこちら(←クリック) |
いかがでしたでしょうか? 仮想記憶の仕組みについて理解できましたか。次回は、「パイプライン制御」などの高速化技術について解説します。お楽しみに! (次回に続く)
関連リンク: | |
組込みソフトウェア技術研修講座イーラーニング(サンプルIDプレゼント中) http://www.certpro.jp/elearning.html |
|
組込みソフトウェア技術者試験クラス2試験対策問題集(ETEC-SW2)(サンプルIDプレゼント中) http://www.certpro.jp/etecsw2test.html |
|
Copyright © ITmedia, Inc. All Rights Reserved.