アドレス空間の呼称について


x86についてです。メモリ空間の呼称として、論理アドレス/リニアアドレス/仮想アドレス/物理アドレスの4つがあります。論理アドレスはプログラムで指定するアドレスの事をいい、セグメントとオフセットの組となります。

リニアアドレスは、論理アドレスをセグメント機構による変換されたアドレスです。リアルモードならセグメントをシフトしてオフセットを加算しもの、プロテクトモードならセグメントをセレクタとし、そのベースにオフセット加算したものになります。通常環境下で、プロテクトモードでセレクタ内のサイズが4Gですから、論理アドレスとリニアアドレスは同じ物となります。

ページング機能(MMU)が無効の場合、リニアアドレスが実際のメモリアドレスである物理アドレスになります。もしページング機能が有効の場合、リニアアドレスはページテーブルとそのオフセットを表すことになり、従ってここでのリニアアドレスを仮想アドレスといいます。ニアアドレスと仮想アドレスの実態は同じものとも言えます。

なお、カーネルにおいて、ストレートマップしている区間をリニアアドレス空間、ハイメモリ空間を仮想アドレス空間と言ったりしているようです。ユーザ空間は仮想アドレス空間です。カーネルのストレートマップ区間もページング機能下で動作しています。ページフレーム番号(物理アドレス0から順に4kサイズ毎にフレーム番号を割り当てています。)順に、ページテーブルを設定しているだけです。

大筋では間違いないと思いますが・・・。

最終更新 2012/04/25 18:26:00 - north
(2012/04/25 18:26:00 作成)


検索

アクセス数
3586450
最近のコメント
コアダンプファイル - sakaia
list_head構造体 - yocto_no_yomikata
勧告ロックと強制ロック - wataash
LKMからのファイル出力 - 重松 宏昌
kprobe - ななし
ksetの実装 - スーパーコピー
カーネルスレッドとは - ノース
カーネルスレッドとは - nbyst
asmlinkageってなに? - ノース
asmlinkageってなに? - よろしく
Adsense
広告情報が設定されていません。