仮想記憶
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/05 04:59 UTC 版)
「オペレーティングシステム」の記事における「仮想記憶」の解説
詳細は「仮想記憶」を参照 「ページフォールト」も参照 ページングやセグメントによる仮想記憶を使用することで、カーネルは任意の時点で各プログラムが使用するメモリを選択でき、同じメモリ位置を複数タスクで使用させることも可能となる。 あるプログラムが使用可能な現在のメモリ範囲だが物理メモリが割り当てられていない位置にアクセスしようとしたとき、セグメンテーション違反のように割り込みによってカーネルに遷移する。このような割り込みをUnix系ではページフォールトと呼ぶ。 カーネルがページフォールトを受け付けると、そのプログラムに割り当てられた仮想メモリ空間の調整を行い、要求されたメモリアクセスが可能になるよう物理メモリを割り当てる。これにより、カーネルはそれぞれのアプリケーションへのメモリ割り当てを自由に決定でき、さらには実際には割り当てないでおくことも可能となる。 現代的OSでは、相対的にアクセス頻度が低いメモリを一時的にディスクなどの二次記憶装置に退避させ、主記憶を他のプログラムのために空けることができる。これをスワッピングと呼び、限られたメモリを複数のプログラムで使用可能にし、メモリの内容を必要に応じて退避させたり復帰させたりできる。 仮想記憶により、実際に搭載しているよりも多くのRAMを使用しているかのような感覚でコンピュータを使用することができる。
※この「仮想記憶」の解説は、「オペレーティングシステム」の解説の一部です。
「仮想記憶」を含む「オペレーティングシステム」の記事については、「オペレーティングシステム」の概要を参照ください。
仮想記憶
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/24 20:24 UTC 版)
ワード長が32ビットのコンピュータについて考えてみる。アドレス範囲は 0x00000000 から 0xFFFFFFFF までの 4Giバイトとなる。このアドレス範囲が仮想アドレス空間となる。仮想記憶を使用しない場合、物理メモリが16Miバイトしかないなら 0x01000000 以上のアドレス範囲は不正なアドレスとなる。しかし、多くのプログラムは4Gバイトのメモリを一度に全部使用するわけではない(参照の局所性、ワーキングセット参照)。例えば、あるプログラムはテキストとデータとスタックの最大値を合計しても1メガバイトに満たないだろう。 4Giバイトのアドレス空間はあるサイズのかたまり(一般的には4Kiバイト)に分割される。このかたまりを「ページ」と呼ぶ。物理メモリも同じサイズに分割される。こちらは「フレーム」と呼ぶ。例えば、プログラムのテキストセグメントはアドレス 0x00000004(ページ番号 0x0、ページ内オフセット 0x4)からスタートするかもしれないが、対応する物理アドレスは 0xFF0E0004(フレーム番号 0xFF0E、フレーム内オフセット 0x4)かもしれない。仮想記憶システムが行うことは、仮想アドレスを物理アドレスに変換することで、基本的にはページをフレームにマッピングすることである。ページテーブルはそのために使われる。 多くのアーキテクチャでは仮想記憶を直接ハードウェアでサポートする「トランスレーション・ルックアサイド・バッファ(TLB)」を持っている。TLBはページとフレームのマッピングを格納し、仮想記憶システムを完全にソフトウェアで実装した場合に比較してハードウェアでのページ-フレーム変換を高速化して全体の性能を向上させる。 しかし、TLBは一定数のページ-フレームマッピングしか保持できない。これをソフト的に拡張し、多くのマッピングを保持するのは仮想記憶システムの役割である。仮想記憶システムは「ページテーブル」を使ってこれを行う。 なお、「ページ」と「フレーム」という名称の区別をしないで、「仮想ページ」、「物理ページ」と呼ぶこともあるし、「フレーム」を「ページフレーム」と呼ぶこともある。
※この「仮想記憶」の解説は、「ページテーブル」の解説の一部です。
「仮想記憶」を含む「ページテーブル」の記事については、「ページテーブル」の概要を参照ください。
Weblioに収録されているすべての辞書から仮想記憶を検索する場合は、下記のリンクをクリックしてください。

- 仮想記憶のページへのリンク