Я решил проверить свои знания по внутренним компонентам операционных систем, решая проблемы из «Современных операционных систем» А. Таненбаума.И столкнулся со следующей проблемой:
Предположим, что машина имеет 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 битполе.
Не могу понять причину правильного ответа, действительно ли это правильно или я что-то упустил?