1

アドレス空間とページテーブルの関係は? 各プロセスには、仮想アドレスと物理アドレスをマップするページテーブルが必要であることを知っています。しかし、アドレス空間は何をするのでしょうか? os161 では、アドレス空間は次のようになります。

struct addrespace {
    vaddr_t as_vbase1;
    paddr_t as_pbase1;
    size_t as_npages1;
    vaddr_t as_vbase2;
    paddr_t as_pbase2;
    size_t as_npages2;
    paddr_t as_stackpbase;
}

以下を使用して、仮想アドレス (vaddr) を物理アドレスに変換します: (セグメント 1 の vaddr を想定)

paddr = vaddr - as_vbase1 + as_pbase1

アドレス空間を使用して、仮想アドレスから物理アドレスを取得できるようです。addrespace を使用して仮想メモリから物理メモリへのマッピングを実行できる場合、なぜページ テーブルが必要なのでしょうか?

あなたの助けを楽しみにしています!ありがとう!

4

1 に答える 1

2

まず、この質問に感謝します。私はまだ OS161 の初心者で、コードを理解するのに苦労していますが、今まで理解できたことをお伝えします。お気軽に訂正してください。

仮想アドレスから物理アドレスへの変換が必要なだけでなく、プロセスに割り当てられたすべてのページを追跡するためにページ テーブルが必要です。

ページ テーブルは、ページがメモリ内にある場合、および必要なページがディスク上にある場合も追跡します。これにより、ページ フォールトがトリガーされます。その場合、新しいページを割り当て、ディスクからページをロードし、ページ テーブルを更新し、TLB エントリを更新する必要があります。

どのページも、フリー、ダーティ (ディスクに書き込む必要がある) などのさまざまな状態を経ます。特定のページは決してスワップアウトされるべきではなく、常にメモリに残ります。ページ テーブルもこれらの状態を追跡します。

この記事でも役立つかもしれません.. なぜプロセスごとに1つのページテーブル

于 2014-04-23T19:40:23.797 に答える