Для одного уровня таблиц страниц; виртуальное адресное пространство составляет 4 ГиБ, а страница - 4 КиБ, поэтому вам потребуется «4 ГиБ / 4 КиБ = 1048576 страниц = 1048576 записей таблицы страниц». Это ответ, который вы пришли (2 ^ 20 записей таблицы страниц).
Если имеется 1048576 записей в таблице страниц, и вы не представляете, насколько велика запись таблицы страниц, то общий объем памяти, необходимый для всех записей таблицы страниц, будет «1048576 * unknown = unknowable».
Однако с 32-битным размером физического адресного пространства и размером страницы 4 КиБ мы знаем, что 12 «битов адреса» будут использоваться для «смещения в пределах страницы», а оставшиеся 20 битов адреса будут использоваться для «страницы». число"; поэтому мы знаем, что запись таблицы страниц должна составлять не менее 20 бит, поэтому мы знаем, что общий объем памяти, необходимый для всех записей таблицы страниц, будет составлять не менее «1048576 * 20 битов = 20971520 битов = 2560 КиБ».
Если мы сделаем случайные потенциально ложные предположения (основанные на образованных догадках) и решим, что, возможно, запись таблицы страниц составляет 4 байта, мы можем сказать, что общий объем памяти, необходимый для всех записей таблицы страниц, вероятно, будет равен "1048576 * 4 байт = 4 МиБ ".
Если общий объем памяти, необходимый для всех записей таблицы страниц, составляет 4 МБ, а физической страницы - 4 КБ; тогда вам потребуется «4 MiB / 4 KiB = 1024 страницы» для хранения всех записей таблицы страниц. Это ответ, который они придумали (2 ^ 10 страниц).
Другое дело, что «с физическим размером страницы 4 КБ». ?? Страницы являются виртуальным адресом, значит ли это, что страница занимает 4 КБ места в физической памяти ??
Страницы не являются виртуальными адресами; и есть как виртуальные страницы, так и физические страницы.
Основная идея состоит в том, чтобы разделить виртуальный адрес на две части (с маскировкой / AND и смещением), чтобы "(virtual_page_number << K) + offset_within_page = virtual_address", а затем с помощью "virtual_page_number" (и таблиц страниц) найти "имя_физического_страницы", затем выполните "физический_адрес = (номер_физического_страницы << K) + смещение_свободной_страницы". </p>
Чтобы это работало, размер виртуальной страницы должен совпадать с размером физической страницы; поэтому слова «размер страницы» используются для обозначения как размера виртуальной страницы, так и физического размера страницы.