質問

「Modern Operating System」の本を読んでいます。そして、私は「ページサイズ」について混乱しています。

本の中で、著者は言う、

着信16ビットの仮想アドレスは、4ビットページ番号と12ビットのオフセットに分割されます。ページ番号に4ビットを使用すると、16ページがあり、オフセットの12ビットを使用すると、すべての4096に対応できます。 バイト ページ内。

なぜ4096バイト? 12ビットでは、4096に対処できます エントリ ページ内で、正しい。ただし、1つのエントリはアドレスです(この場合、アドレスサイズ= 16ビット)。ですから、4096(エントリ) * 16(ビット)= 4096(エントリ) * 2(バイト)= 8KBに対処できると思いますが、なぜ4096(バイト)に対処できると書かれているのですか?

前もって感謝します! :)

役に立ちましたか?

解決

これは、バイトアドレスメモリ(過去30年間に作られたほぼすべてのマシンが使用)を前提とするため、各アドレスは、エントリまたはアドレス、またはその他の大きな値ではなく、バイトを指します。 16ビットの値を保持するには、2つの連続したアドレス(2バイト)が必要です。

30年以上前、以前はワードアドレス指定された機械があり、あなたの推測のように機能していました。しかし、そのようなマシンは、バイト指向のデータ(ASCII文字など)を扱うのに苦労していたため、好意から落ちました。今日、バイトアドレスリビティ、8ビットバイト、2つの補完整数などのものは、ほぼ想定されています。

他のヒント

12ビットはページ内のオフセットです。オフセットはアドレスではなくバイトです。 2^12は4096です。

計算しているのは、ページサイズ、つまりメモリ内のページテーブルのページのサイズです。オフセットに12ビットを使用すると、物理メモリ内の各フレームは2^12 = 4096kです。ただし、ページテーブルの各ページは、メモリ内の2^12エントリx 2バイト= 8kを占有します。

さて、16ビットの仮想アドレスがあります。それが何を意味するのかを見てみましょう。つまり、2 ** 16 = 65536バイトがあることを意味します。

4ビットページ番号は、2^4 = 16の16ページがあることを意味します。これでページにページ1、page2 ... page16に名前を付けます。

今、私たちは12ビットが残っています12ビットを表す12のアドレスの数を見てみましょう2 ** 12 = 4096バイト

65536バイトは、それぞれ4096*16 = 65536として4096バイトを含む16ページに分割することで達成できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top