8

ユニプロセッサー・コンピューター・システムに注目しましょう。私の知る限り、プロセスが作成されると、仮想アドレスを物理メモリアドレス空間にマップするページテーブルが設定されます。各プロセスは、カーネル アドレス空間に格納された独自のページ テーブルを取得します。しかし、実行中のプロセスは 1 つだけではなく、多くのコンテキスト スイッチが発生するため、MMU はプロセスに適したページ テーブルをどのように選択するのでしょうか?

どんな助けでも大歓迎です!

ベスト、サイモン

4

2 に答える 2

17

プロセッサには、ページ テーブル ベース レジスタ (PTBR) と呼ばれる特権レジスタがあり、x86 ではCR3です。コンテキスト スイッチでは、OS は PTBR の値を変更して、プロセッサが使用するページ テーブルを認識できるようにします。PTBR に加えて、最新のプロセッサの多くには、アドレス空間番号 (ASN) の概念があります。プロセスには (限られたプールから) アドレス空間番号が与えられ、この ASN はコンテキスト スイッチのレジスタにも設定されます。この ASN は TLB マッチングの一部として使用され、複数のアドレス空間からの TLB エントリが共存できるようにします。TLB をフラッシュする必要があるのは、ASN が再利用される場合のみであり、その ASN に一致するエントリに対してのみ必要です。ほとんどの x86 実装はこれより粗粒度であり、グローバル ページ (共有ライブラリと共有データ用) の概念があります。

于 2012-06-05T00:05:27.403 に答える
4

この場合の MMU は、プロセスが何であるかをまったく認識していません。プロセスを追跡するオペレーティング システムは、プロセスが作成されるたびに、プロセスごとにページ テーブルを生成します。コンテキスト切り替えのプロセスは次のとおりです。

  1. オペレーティング システムは、物理アドレス 0xFOO にあるページ テーブルを使用するように MMU に指示します。

  2. オペレーティング システムは、プログラマブル割り込みタイマー (PIT) をプログラムして、BAR ミリ秒後にハードウェア割り込みを発生させます。

  3. オペレーティング システムは、プロセスの状態 (CPU レジスタ、プログラム カウンターなど) を復元し、正しいアドレスにジャンプします。

  4. プロセスは、PIT が割り込みをトリガーするまで実行されます。

  5. 次に、PIT 割り込みを処理するためのオペレーティング システム ルーチンは、プログラムの状態 (レジスタなど) を保存し、スケジューリング アルゴリズムを使用して次に実行するプロセス (単純なケースでは循環リンク リスト) を決定し、ステップ 1 からやり直します。

これで疑問が解消されることを願っています。簡単に言えば、MMU はプロセスに依存せず、プロセスが何であるかを認識していません。

于 2012-06-04T11:54:35.917 に答える