記事ディレクトリ
この章の理論は、
32
ビット プラットフォームのLinux
バージョンkernel 2.6.32
カーネルに基づいています。
1. Linuxプロセスのアドレス空間の構造
-
それを確保するためにメモリの安全性、最新のオペレーティング システム禁じられているアプリケーション(プロセス)は物理メモリ空間に直接アクセスします
-
一般的に言えば、オペレーティング システムとコンパイラあげるあらゆるプロセス設定独立した仮想メモリ空間そしてマッピングページテーブル、仮想メモリ空間はプロセス アドレス空間と呼ばれます。仮想メモリアドレス~との特定のマッピング関係を通じて物理メモリアドレス接続を構築する
-
Linux
プロセスのアドレス空間には0x00000000 ~ 0xffffffff
番号が付けられており、次の構造になっています。 -
プロセス内の命令がアクセスしたい物理メモリ、に頼る必要があります。仮想メモリアドレスマッピング、プロセス仮想アドレスと物理メモリ合格ページテーブルマッピングするには:
-
アプリケーション層の観点から見ると、アプリケーションコード中的変数と関数(データ)メモリアドレスと指導そのものメモリアドレスすべて仮想メモリアドレスです!!!これらすべて仮想メモリアドレス同様に物理メモリアドレスとのマッピング関係これはアプリケーションのコンパイル時に決定されるため、プロセス仮想メモリのメカニズム基本的に、これはオペレーティング システムとコンパイラの連携によって形成されるメモリ管理メカニズムです。
- CPU が内部で命令を実行するときに使用されるメモリ アドレスも仮想メモリ アドレスです。
2. Linux がプロセスのアドレス空間を管理する方法
- あらゆるプロセスそれぞれが独立したものを持っていますプロセスアドレス空間そしてマップされたページテーブル
Linux
カーネルでは、プロセスのアドレス空間はstruct mm_struct
1 つによって維持され、PCB
各プロセスの構造 (プロセス制御ブロック) はstruct mm_struct
構造を指します。struct mm_struct
構造物のメンテナンスプロセスアドレス空間具体的な方法は似たような感じですポインタを使用してアドレス範囲を維持する:- 複数のプロセスがメモリにロードされると、複数の
struct mm_struct
構造が存在し、マップされたページテーブル、したがってLinux
プロセスアドレス空間本質はstruct mm_struct
構造であり、マップされたページテーブル構成されたカーネルのデータ構造
3. 物理メモリを使用する Linux プロセスのモデル
Linux
プロセスPCB
(task_struct
) とプロセス アドレス空間 ( )mm_struct
の存在形式:
- プロセス命令セットが物理メモリにアクセスする方法:
4. プロセスアドレス空間の存在意義
- の助けを借りてマップされたページテーブルオペレーティング システムができることは、アプリケーションプロセスによる不正なメモリアクセスのリクエストを拒否します。、コンピュータシステムのメモリセキュリティを確保します。
- オペレーティング システムの設計という意味では、仮想メモリの仕組みオペレーティングシステムを作るメモリ管理モジュールそしてプロセス管理モジュールカップリングを完全に理解するメモリ管理アルゴリズム調整が必要な場合でも影響はありませんプロセス管理モジュール設計 (マップされたページ テーブルの物理アドレスを変更するだけ) 場合も同様に、プロセス管理モジュール再設計が必要な場合でも影響はありませんメモリ管理モジュール
- 仮想メモリの仕組み実際、それは一種の物理メモリの遅延割り当て戦略、プロセス
PBC
と指図書メモリにロードされた後、オペレーティング システムは (プロセス内の各オブジェクトに仮想アドレスがある場合でも) 物理メモリをプロセス内のオブジェクトにすぐには割り当てず、プロセスが割り当てた場合にのみ物理メモリを割り当てます。読み取りおよび書き込み操作を実行するオペレーティング システムは、ページ テーブル マッピングを通じてオブジェクトに物理メモリを割り当てます。この遅延メモリ割り当て戦略により、メモリの割り当てが改善されます。各プロセスの同時実行時コンピューターのメモリ使用効率 - なぜならプロセス仮想アドレス空間アプリケーションの観点から見た場合、各オブジェクトのメモリアドレスこれらはすべて整然とコンパクトに配置されているため、開発者は次のことを行うことができます。より便利なメモリー操作、同時にオペレーティングシステムもより便利になります。プロセスによるメモリ使用量を監視および管理する、物理メモリの即時割り当てと解放を実現します。