Упражнение по размеру таблицы страниц от современных операционных систем Tanenbaum - PullRequest
0 голосов
/ 27 августа 2018

Я решил проверить свои знания по внутренним компонентам операционных систем, решая проблемы из «Современных операционных систем» А. Таненбаума.И столкнулся со следующей проблемой:

Предположим, что машина имеет 48-битные виртуальные адреса и 32-битные физические адреса.Если размер страницы составляет 4 КБ, сколько записей в таблице страниц, если она имеет только один уровень?

Как всегда, поскольку у нас есть 48-битное виртуальное адресное пространство, нам нужно иметь возможность сопоставлять каждоеадрес памяти для физического.Таким образом, у нас есть 2 ^ 48 адресов, и каждая страница имеет размер 4 КБ = 2 ^ 12, поэтому нам нужно 2 ^ 36 = 2 ^ (48-12) записей в таблице страниц.Поэтому, когда мы получаем 48-битный адрес, мы используем старшие 36 бит в качестве индекса для таблицы страниц, чтобы найти номер фрейма страницы, а затем используем младшие 12 бит в качестве смещения в фрейме страницы.

Затем я посмотрел вруководство по правильному ответу:

Нам нужна одна запись для каждой страницы или 2 ^ 24 = 16 × 1024 × 1024 записи, поскольку в номере страницы 36 = 48 - 12 битполе.

Не могу понять причину правильного ответа, действительно ли это правильно или я что-то упустил?

1 Ответ

0 голосов
/ 27 августа 2018

Вы абсолютно правы. Если у вас 48-битный виртуальный адрес и страницы размером 4 КБ, вам нужно как минимум 12 бит, чтобы выбрать правильный байт на странице. Таким образом, у вас есть 2 ^ 48-2 ^ 12 = 2 ^ 36 записей в вашей таблице страниц для перевода виртуального адреса в физический. (Некоторые из них будут на вашем диске).

...