プロセスアドレス空間 (Linux 仮想メモリ機構)

ここに画像の説明を挿入します

この章の理論は、32ビット プラットフォームのLinuxバージョンkernel 2.6.32カーネルに基づいています。

1. Linuxプロセスのアドレス空間の構造

  • それを確保するためにメモリの安全性、最新のオペレーティング システム禁じられているアプリケーション(プロセス)は物理メモリ空間に直接アクセスします

  • 一般的に言えば、オペレーティング システムとコンパイラあげるあらゆるプロセス設定独立した仮想メモリ空​​間そしてマッピングページテーブル、仮想メモリ空​​間はプロセス アドレス空間と呼ばれます。仮想メモリアドレス~との特定のマッピング関係を通じて物理メモリアドレス接続を構築する

  • Linuxプロセスのアドレス空間には0x00000000 ~ 0xffffffff番号が付けられており、次の構造になっています。ここに画像の説明を挿入します

  • プロセス内の命令がアクセスしたい物理メモリ、に頼る必要があります。仮想メモリアドレスマッピング、プロセス仮想アドレスと物理メモリ合格ページテーブルマッピングするには:ここに画像の説明を挿入します

  • アプリケーション層の観点から見ると、アプリケーションコード中的変数と関数(データ)メモリアドレスと指導そのものメモリアドレスすべて仮想メモリアドレスです!!!これらすべて仮想メモリアドレス同様に物理メモリアドレスとのマッピング関係これはアプリケーションのコンパイル時に決定されるため、プロセス仮想メモリのメカニズム基本的に、これはオペレーティング システムとコンパイラの連携によって形成されるメモリ管理メカニズムです。

    • CPU が内部で命令を実行するときに使用されるメモリ アドレスも仮想メモリ アドレスです。

2. Linux がプロセスのアドレス空間を管理する方法

  • あらゆるプロセスそれぞれが独立したものを持っていますプロセスアドレス空間そしてマップされたページテーブル
  • Linuxカーネルでは、プロセスのアドレス空間はstruct mm_struct1 つによって維持され、PCB各プロセスの構造 (プロセス制御ブロック) はstruct mm_struct構造を指します。ここに画像の説明を挿入します
  • struct mm_struct構造物のメンテナンスプロセスアドレス空間具体的な方法は似たような感じですポインタを使用してアドレス範囲を維持する:ここに画像の説明を挿入します
  • 複数のプロセスがメモリにロードされると、複数のstruct mm_struct構造が存在し、マップされたページテーブル、したがってLinuxプロセスアドレス空間本質はstruct mm_struct構造であり、マップされたページテーブル構成されたカーネルのデータ構造

3. 物理メモリを使用する Linux プロセスのモデル

  • LinuxプロセスPCB( task_struct) とプロセス アドレス空間 ( )mm_structの存在形式:
    ここに画像の説明を挿入します
  • プロセス命令セットが物理メモリにアクセスする方法:
    ここに画像の説明を挿入します

4. プロセスアドレス空間の存在意義

  1. の助けを借りてマップされたページテーブルオペレーティング システムができることは、アプリケーションプロセスによる不正なメモリアクセスのリクエストを拒否します。、コンピュータシステムのメモリセキュリティを確保します。
  2. オペレーティング システムの設計という意味では、仮想メモリの仕組みオペレーティングシステムを作るメモリ管理モジュールそしてプロセス管理モジュールカップリングを完全に理解するメモリ管理アルゴリズム調整が必要な場合でも影響はありませんプロセス管理モジュール設計 (マップされたページ テーブルの物理アドレスを変更するだけ) 場合も同様に、プロセス管理モジュール再設計が必要な場合でも影響はありませんメモリ管理モジュール
  3. 仮想メモリの仕組み実際、それは一種の物理メモリの遅延割り当て戦略、プロセスPBC指図書メモリにロードされた後、オペレーティング システムは (プロセス内の各オブジェクトに仮想アドレスがある場合でも) 物理メモリをプロセス内のオブジェクトにすぐには割り当てず、プロセスが割り当てた場合にのみ物理メモリを割り当てます。読み取りおよび書き込み操作を実行するオペレーティング システムは、ページ テーブル マッピングを通じてオブジェクトに物理メモリを割り当てます。この遅延メモリ割り当て戦略により、メモリの割り当てが改善されます。各プロセスの同時実行時コンピューターのメモリ使用効率
  4. なぜならプロセス仮想アドレス空間アプリケーションの観点から見た場合、各オブジェクトのメモリアドレスこれらはすべて整然とコンパクトに配置されているため、開発者は次のことを行うことができます。より便利なメモリー操作、同時にオペレーティングシステムもより便利になります。プロセスによるメモリ使用量を監視および管理する、物理メモリの即時割り当てと解放を実現します。
    ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_73470348/article/details/132819628