コンピュータ システム - 仮想メモリ

日常的な序文:

この記事は授業を勉強する際のメモではなく、本書を再読する際の簡単な要約です。このコースを学習している学生にとって、カバーされていない内容は、試験でカバーされていないという意味ではありません (mmap、動的メモリ割り当て、Linux 仮想メモリ)。この章の内容のほとんどは OS で学習されていますが、この章で紹介する仮想メモリの観点は OSTEP とは異なります。この章を学習すると、仮想メモリの役割を含め、仮想メモリについてより包括的に理解できるようになります。仮想メモリ、マッピング機構、アドレス変換プロセスなど アドレス変換セクションには TLB を含む完全な変換プロセス図がありませんが、P545 の図に TLB を追加するとより完全になり、自分で描くことができます。

コンピュータ システム - 仮想メモリ

仮想メモリはシステムによって提供される抽象化であり、各プロセスに一貫したアドレス空間を提供し、メモリ管理を簡素化し、各プロセスのアドレス空間が他のプロセスによって破壊されないように保護します。仮想メモリはコンピュータ システムにおける最も重要な概念の 1 つであり、この章では主に仮想メモリの動作メカニズムと、アプリケーションが仮想ストレージを使用および管理する方法について説明します。

画像の説明を追加してください

1. アドレス空間とアドレス指定

アドレッシング

初期のコンピュータには仮想メモリの抽象化がなく、直接アドレス指定に物理アドレス指定を使用していました。最新のプロセッサは仮想アドレス指定を使用します。すべてのプロセッサは仮想アドレスを直接処理し、メモリにアクセスするとき、仮想アドレスはハードウェア コンポーネント **MMU (メモリ管理ユニット)** を通じて物理アドレスに変換されます。変換に必要な一部のテーブルと情報はメイン メモリに保存され、オペレーティング システムによって管理されます。

アドレス空間

仮想メモリ内のアドレスは、物理アドレス空間に対応する仮想アドレス空間内にあります。各データ オブジェクトは、仮想アドレス空間と物理アドレス空間の両方にアドレスを持ちます。

2.仮想メモリ

このセクションでは、OSTEP における仮想メモリの見方とは異なり、仮想メモリの物理メモリへのマッピング方法に焦点を当て、主に 3 つの観点から仮想メモリの役割と動作メカニズムを理解します。

  • キャッシュツールとしての仮想メモリ
  • メモリ管理ツールとしての仮想メモリ
  • メモリ保護ツールとしての仮想メモリ

2.1 キャッシュとしての仮想メモリ

仮想メモリは物理メモリを抽象化したもので、物理メモリ (メイン メモリ) は低ストレージ レベルのハードディスクのキャッシュと見なされますこのセクションでは、割り当てられた仮想ページが物理ディスク上に存在し (次の 3 つのケースのいずれか)、物理メモリにキャッシュされていると仮定します。この観点から、このセクションで説明する仮想ページは直接ディスク上のデータとみなすことができ、このセクションの内容は実際にメイン メモリがディスクのキャッシュとしてどのように機能するかについて説明します

仮想メモリは固定サイズのページに分割され、ディスクとメインメモリなどの層間の転送単位として機能します。これに対応して、物理メモリもページに分割されます。仮想メモリ内のページには 3 つの状況があります。

  • 未割り当てページ: 仮想メモリに存在せず、割り当てられたページもありません
  • キャッシュ済み: 物理メモリにキャッシュされた割り当てられたページ
  • キャッシュなし: 物理メモリには割り当てられたページはありませんが、仮想メモリには存在します。

DRAMの組織構造

SRAM は L1 や L2 などのキャッシュを表すために使用され、DRAM はメイン メモリを表すために使用されます。

メイン メモリの DRAM ミスはディスクによって処理され、ディスク IO のオーバーヘッドが非常に大きいため、仮想ページは通常比較的大きく、通常は 4KB ~ 2MB になります。仮想ページは完全に関連付けられた方法でメイン メモリにキャッシュされます。ミスペナルティを可能な限り回避するために、交代戦略もより正確になるように設計されています。また、ディスクへのアクセス時間が長いため、DRAM は常にライトスルーではなくライトバックを使用します。

ページテーブル

仮想メモリ システムは、ページ テーブルを使用して、仮想ページがメイン メモリに存在するかどうかを判断します。存在する場合は、そのページがどの物理ページにあるかを判断します。存在しない場合は、そのページをディスク上で見つけてメイン メモリに配置する必要があります。

これらのタスクはソフトウェアとハ​​ードウェアによって実行され、MMU はアドレス変換を担当し、OS はページ テーブルなどの情報を維持し、ディスクからページを読み取ります。メモリアクセス中にページフォールトやメモリ保護違反などの例外が発生した場合も、OSの例外ハンドラによって処理されます。

ページ テーブルは、ページ テーブル エントリ PTE の配列です。仮想アドレス空間の各ページには PTE があります (マルチレベルのページ テーブルにより、ページ テーブル エントリの無駄が削減され、未割り当てのページにページ テーブル エントリが割り当てられなくなります)。各 PTE には、多くの情報を保存する複数のビットがあります。ここで、有効ビットに注目してください。有効ビットが有効な場合、PTE には仮想ページの物理ページ番号が含まれます。そうでない場合は、PTE のアドレス部分に基づいてページが割り当てられているかどうかを判断する必要があります。アドレスが空の場合、ページは割り当てられていません。アドレスが空でない場合、そのアドレスはディスク上のページであり、そのページ上のアドレスでページをディスクから読み取ることができます。
画像の説明を追加してください

ページがありません

仮想ページがメインメモリに存在しない、つまり DRAM キャッシュミスをページフォールトと呼びます。MMU がアドレス変換を実行すると、PTE の有効ビットからページが DRAM にキャッシュされていないと判断され、ページ フォールト例外がトリガーされます。

OS のページ フォールト例外ハンドラーは、ページをディスクから DRAM に読み取り、他のページを置き換える必要がある場合があります。その後、PTE を変更して戻ります。例外ハンドラーが戻った後、ページフォルト命令が再実行され、今度はページがヒットします。

ディスクとメイン メモリ間でページを転送するアクティビティは、スワッピングまたはページングと呼ばれます。最新のプロセッサはすべてインオーダー スケジューリングを使用しており、ミスが発生した場合にのみページがディスクからメイン メモリにスワップされます。

2.2 メモリ管理ツールとしての仮想メモリ

仮想メモリの存在により、主に次の 4 つの点でメモリ管理がより便利になります。

  • リンクの簡素化: 個別のアドレス空間により、各プロセスのメモリ イメージで同じ基本形式を使用できます。たとえば、32 ビット Linux システムでは、.text セクションは常に 0x8048000 で始まります。このような一貫性により、リンカの設計と実装が簡素化され、指定されたイメージ形式に従って各統合セクションに仮想アドレスを割り当てるだけで済みます。
  • ロードの簡素化: 実行可能ファイルと共有オブジェクト ファイルのロードも、仮想メモリによって簡素化されます。すべてのセクションに割り当てられたアドレスは、対応するページの PTE を無効としてマークし、ディスク上のファイルの特定の場所をポイントするだけでよく、ページが初めて参照されるとき、ページは自動的にロードされます。
  • 共有の簡素化: 仮想メモリにより、異なるプロセスが仮想ページを同じ物理ページにマッピングできるようになり、共有ライブラリや親子プロセスの COW など、プロセス間でのコードとデータの共有が実現します。
  • メモリ割り当ての簡素化: OS は、連続した十分な大きさの仮想メモリ ページをプロセスに割り当て、物理メモリの任意のページにマッピングできます。

2.3 メモリ保護ツールとしての仮想メモリ

仮想メモリは、物理ページへのマッピング中にメモリ保護も実装します。仮想ページへのアクセス許可は、読み取りおよび書き込み許可ビット、アクセス特権ビット (SUP) などを含む、PTE のいくつかの追加ビットを通じて制御されます。命令がアクセス権に違反すると、フォールトがトリガーされ、多くの場合、セグメンテーション フォールトとして報告されます。

3.アドレス変換

このセクションでは、アドレス変換とストレージへのアクセスの具体的なプロセスについて説明します。

まず、考慮すべきコンポーネントを明確にする必要がありますが、実際のコンピュータ システムでは、メモリ アクセスに関連するコンポーネントは、キャッシュ、MMU、DRAM (メイン メモリ)、ディスク、TLB です。

最新のプロセッサでは、通常、キャッシュへのアクセスに物理アドレスが使用されるため、キャッシュはメモリ保護の問題に対処する必要がなく、仮想ページも同じ物理ページにマップできます。

したがって、仮想アドレスは常に MMU を通じて物理アドレスに変換され、その後データがキャッシュ/メイン メモリから読み取られます。変換アドレスがページフォールト例外またはその他のアクセス許可違反例外を検出すると、例外ハンドラが介入します。アドレス変換に必要な PTE もキャッシュにアクセスし、メイン メモリの読み取りを行う必要があるため、コンピュータはアドレス変換を高速化するために TLB を使用して PTE をキャッシュします。TLBはCacheのようなキャッシュなので、Cacheでの整理や検索などの問題もあります。

要約すると、アドレス変換のプロセスは次のようになります。

  • プロセッサは仮想アドレスのメモリアクセス命令を生成し、仮想アドレス VA を MMU に渡します。
  • MMU は VA を TLB に渡し、PTE を読み取ります。TLB に VA に対応する PTE がない場合は、PTE をキャッシュおよびメイン メモリから読み取って TLB に保存する必要があります。
  • MMU は、PTE に基づいて仮想アドレスを物理アドレスに変換し、その物理アドレスをキャッシュに送信します。キャッシュミスが発生するとメインメモリにアクセスします。
  • キャッシュ/メイン メモリはデータを CPU に返します。

上記の変換プロセスではページ欠落の例外は考慮されていません。MMU が PTE を通じてページ欠落が発生したと判断した場合、OS はそれを処理し、ページをディスクからメイン メモリにロードし、命令を再実行します。

4. メモリマッピング

Linux は、仮想メモリ領域をディスク上のオブジェクトに関連付け、この仮想メモリ領域の内容を初期化します。仮想メモリは、次の 2 種類のオブジェクトにマッピングできます。

  • Unix の通常のファイル: 領域はファイルの連続した部分にマッピングできます。領域がファイルよりも大きい場合、残りは 0 で埋められます。
  • 匿名ファイル: カーネルによって作成されたすべて 0 のファイル。領域内の仮想ページが初めて参照されるとき、ページはメイン メモリ内で検出され、すべて 0 で上書きされ、ディスクからページを読み取ることなく PTE が更新されます。匿名ファイルにマップされた領域内のページは、バイナリ ゼロを要求するページとも呼ばれます。

共有オブジェクト

データ オブジェクトは、プライベート オブジェクトまたは共有オブジェクトとして仮想メモリの領域にマッピングできます。共有オブジェクトにマッピングされた仮想メモリ領域を共有領域と呼び、プライベートオブジェクトにマッピングされた仮想メモリ領域をプライベート領域と呼びます。

画像の説明を追加してください

プライベート オブジェクトのライフ サイクルの開始は、共有オブジェクトのライフ サイクルの開始と同じです。このオブジェクトのコピーはメモリ内に 1 つだけあり、複数のプロセスがこのオブジェクトを共有し、同じ物理メモリにマップします。プロセスが独自のプライベート領域にデータを書き込む必要がある場合、フォールトがトリガーされ、ハンドラーはデータをコピーし、プロセス独自のデータとして物理メモリの別の場所に配置します。このプロセスは COW (COPY ON WRITE)、コピーオンライト メカニズムです。

フォーク関数

上記の処理を理解すると、新しい処理を作成するためのfork関数の仕組みが理解できます。Fork は、新しいプロセス用の仮想メモリとページ テーブルのコピーを作成します。親プロセスと子プロセスのページは読み取り専用としてマークされ、領域は次のいずれかの場合にプライベート コピーオンライトとしてマークされます。プロセスは書き込み操作を実行し、新しい物理ページを作成してデータのコピーをコピーするため、親プロセスと子プロセスは独立したプライベート アドレス空間を実装します。

実行関数

execve 関数は、新しいプログラムをロードして実行し、現在のプログラムを置き換えます。このプロセスには次の手順が必要です。

  • 既存領域の削除: 現在のプロセスの既存領域を削除します。
  • プライベートエリアのマッピング: 新しいプログラムのコード、データなどのための新しいプライベートエリア構造を作成し、マッピングを確立します。コードとデータはファイルにマッピングされ、bss 領域は匿名ファイルにマッピングされます。
  • 共有領域のマッピング: プログラムが共有オブジェクトにリンクされている場合、共有オブジェクトを仮想アドレス空間の共有領域にマッピングするために動的リンクが実行されます。
  • PCをセットアップしてプログラムを実行する

画像の説明を追加してください

おすすめ

転載: blog.csdn.net/Aaron503/article/details/130567661