仮想記憶に関する説明がおかしい

ストップビットさん  
(No.1)
ページ単位に分割するのは、主記憶で補助記憶装置ではありません。
プロセスが起動するときに使用するページに仮想的なアドレスを割り振ります。
プロセス(プログラム)は、この仮想アドレスで動作します。

令和3年秋期 午前問19 の解説の最後に図があります。
この図では、仮想アドレス空間とページテーブルが一つずつしか書かれていませんが、仮想アドレス空間とページテーブルは、プロセスごとに生成されます。
こうすることで、各プロセスからはOSと自分自身しか見えないので、他のプロセスが使っているメモリを気にすることなく自由にメモリを使用することができるというメリットが生じます。
補助記憶装置を利用すると主記憶に空きを作ることができるのであって、仮想記憶において補助記憶装置は必須ではなくオプションと言えます。
主記憶からページアウトしページインした場合には、通常異なる物理ページに移動しますが、プログラムは仮想アドレスで動作しているのでページテーブルが物理アドレスの変動を吸収することで、物理ページが実行中に変更になっても問題なく動作できます。

このサイトでは「補助記憶=仮想記憶」という説明になっています。
この誤解によって、補助記憶のアドレスを物理アドレスに変換するなどというおかしな説明になっています。

インサイドWindows(私が持っているのは第6版)には、ページファイルをゼロに設定しても仮想記憶は機能するとわざわざ書いてありますし、
Windowsで MSINFO32 を実行すると、
「合計物理メモリ」「合計仮想メモリ」「ページファイルの空き容量」が表示され
「合計仮想メモリ」=「合計物理メモリ」+「ページファイルの空き容量」になっています。
※「ページファイルの空き容量」は、ページファイルの大きさが表示されます。
同様に systeminfo を実行すると、ページファイルのサイズが表示されませんが、
「仮想メモリ: 最大サイズ:」=「物理メモリの合計:」+ページファイルのサイズです。

令和6年秋期 午前問18
選択肢アの解説
「ページング方式における記憶領域のアクセス保護はページ単位で行われるため、論理的な単位での保護はで来ません。」
※よく見たら「で来ません」になっている。
WindowsもLinuxもセクションという概念があって、セクション単位に実行可能、コード、データ、リード、ライトなどの属性を指定できます。

選択肢イの解説
「ページング方式では各ページはバラバラに配置されるので共用は不可能です。」
物理ページがバラバラに配置されていても仮想アドレスを使えばリニアにアクセス可能なので、物理的にバラバラであることは問題にならないです。
共用のためのページテーブルを利用して実現されます。
Windowsについては、インサイドWindowsで詳しく解説されています。

選択肢ウの解説
「ページサイズはOSの管理下であるため動的に変えることはできません。」
ページサイズを変更する必要などなく、単に使用するページ数を変更すればよいはずです。
WindowsではVirtualMemory系関数、linuxではmmap関数で物理ページの割り当て解放ができるようです。

アイウはどちらの方式でも実現可能なのではないでしょうか
正解(ページング方式の長所)がエなので、アイウはセグメンテーション方式(のメリット)だろうという想像で解説していませんか?


平成30年春期 午前問19
「ページ単位で主記憶と補助記憶装置のアドレス変換を行う」
補助記憶装置は、主記憶からの一時退避先なので、CPUは補助記憶装置の内容を直接操作しません。(できません)
補助記憶装置にあるページをアクセスするには、主記憶へ移動させてからアクセスします。
アドレスの変換というのは主記憶の仮想アドレスから主記憶の物理アドレスへの変換です。

選択肢エの解説
「全てのページが仮想記憶にマッピングされるため、どのページにも主記憶領域は割り当てられません。」
ここでも仮想記憶=補助記憶という理論が展開されています。
ダイナミックローディングという技術によって、起動時にローディングするのではなくあとからコードのローディングができるようです。


令和3年秋期 午前問19
選択肢ウの解説
「実アドレス、仮想アドレスともにアドレス番号0から割り振られます。」
プログラムのヘッダにそのプログラムが必要とする仮想アドレスの先頭アドレスが書かれていて、その情報をもとにローダが仮想空間(とページテーブル)を用意します。
仮想アドレスがゼロから始まることは少ないと思います。
ちなみに複数のプログラムが同じ仮想アドレスを要求しても、仮想空間が個別に用意されるのでバッティングしません。
2025.06.22 00:00
管理人 
(No.2)
貴重なご意見を頂戴し、誠にありがとうございます。大変勉強になります。

ご指摘を踏まえて、適切な解説文となるよう改善を図っていきたいと思います。何卒よろしくお願いいたします。
2025.06.24 18:51

返信投稿用フォーム

スパム防止のためにスレッド作成日から40日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop