コンテンツにスキップ
Wikipedia

アドレス空間

出典: フリー百科事典『ウィキペディア(Wikipedia)』
この記事は検証可能参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?"アドレス空間" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL
(2021年4月)

情報処理において、アドレス空間 (アドレスくうかん、: address space) とは、メモリアドレスが意味を成すコンテキストを定義したもの。あるいは、一連のメモリアドレスによってアクセス可能なメモリ空間を意味する。

メモリアドレスはコンピュータのメモリ内の物理的位置を識別するものであり、住所 ×ばつしろまる丁目しろさんかく-しろいしかく」という住所が存在したとき、それらが別の場所を指すのと同じことである。

アドレス空間の例:

  • 主記憶装置(物理メモリ)
  • 仮想メモリ
  • I/O ポート空間
  • IPアドレス
  • ×ばつしろまる丁目(番地 しろさんかく-しろいしかく がアドレスに相当)
  • しろまるしろまるしろまる×ばつ町(しろまる丁目しろさんかく-しろいしかく がアドレスに相当)

仮想記憶方式のオペレーティングシステム(OS) は仮想メモリをカーネル空間ユーザー空間に分離する。カーネル空間はカーネルデバイスドライバ走行のために厳密に確保される。カーネル空間とユーザー空間の区別はOSやCPU アーキテクチャによって異なる。ユーザー空間を持たない実装もある (MS-DOSNetWare3)。一般的な実装例として、ひとつの連続した仮想アドレス空間の特定のアドレスを境にして、ユーザー空間とカーネル空間を分離している場合が多い (Windows系OS、Unix系OS)。

カーネル空間

[編集 ]

カーネル空間または「カーネル仮想アドレス空間」はOSのカーネルが存在する仮想メモリ領域である。Linuxにおいては、全カーネルスレッドが存在しているアドレス空間である。仮想記憶方式によって、仮想アドレスのある範囲を占めている場合と、多重仮想記憶のひとつの仮想空間をカーネル空間として使用する場合がある。前者の場合、ユーザープロセスがその範囲のアドレスにアクセスしようとすると例外が発生する。逆にカーネルからはユーザープロセスの占めているユーザー空間もアクセス可能だが、あくまでも仮想なので物理メモリがマップされていないことがあり、注意を必要とする。

ユーザー空間

[編集 ]

ユーザー空間または「ユーザー仮想アドレス空間」はユーザープロセスの動作するアドレス空間である。コンピュータシステム上で動作する各プロセスは、それに対応するデータコードを持ち、実行中にはそれらがユーザー空間上にロードされる。ユーザー空間はプロセス毎に割り当てられ、それぞれのアドレス範囲は同じである。従って、仮想記憶方式のOSでは、ユーザープログラムのコードやデータは同じアドレスから開始されるようになっていることが多い。

アドレス変換

[編集 ]

仮想記憶方式において、仮想アドレス空間と物理アドレス空間とを対応させるためのアドレス変換が必要となる。仮想アドレス空間がそのままの配置で物理アドレス空間に存在するなら、単に何らかのオフセットの加減算で変換が済むが、実際にはページング方式セグメント方式が使用されているため、変換はやや複雑となる。多重仮想記憶方式では、複数の仮想アドレス空間内のアドレスが物理的には同じ位置を示していることもある。

関連項目

[編集 ]
概要
カーネル
アーキテクチャ
コンポーネント
プロセス管理
概念
スケジューリング
アルゴリズム
メモリ管理
リソース保護
ストレージアクセスと
ファイルシステム
一覧
Unix系
その他
その他

AltStyle によって変換されたページ (->オリジナル) /