Пожалуйста, объясните мне, как они вычисляют 1024 страницы в конце?
Помните, что мы имеем дело с силами двух, так
4 MB = 4,194,304 байт
4 КБ = 4096 байт
4 MB/4 KB
= 4,194,304 Bytes/4096 Bytes
= Bytes
Что такое 4 байт за запись в этом отношении?
Вам необходимо 32 бита для ссылки на все 2^32 адресные пространства. С 8 бит на байт, 32 bits
= Байт.
Например, первый адрес - 0, а последний - 4294967295 или (2^32 - 1).
Entry | Page Memory Location
------------------------------------------
1 | 0
2 | 4096
3 | 8192
... | ...
2^20 | 4294963200 -> (2^32 - 1) - 4096
Каждая запись в таблице указывает на 1 страницу где-то в памяти. В этом примере можно сказать, что оно начинается с нуля. Будет 2^20 записей, и они будут охватывать весь диапазон адресов памяти (2^32). Поскольку каждая запись составляет 4096 байт, вам нужно всего 2^20 записей, чтобы охватить все страницы.
4K означает 4 * 1024 байта?
Да, это относится к каждой странице, содержащей 4096 байт (4 * 1024).
Рассматриваются ли 4 байта (на слово), или 4 байта означает, что у него есть 4 * 1024 слова, каждое слово которого имеет размер 4 байта?
Он может быть меньше на 32-битных процессорах, но обычно слово составляет 32 бита или 4 байта.
Дополнения Комментарии
Когда я говорю, размер страницы 4K, то это означает, что он имеет 1024 записей с 4 байта каждый или 1024 * 4 записей с 1 байт каждого или что-то еще?
Страница может содержать что угодно, это контейнер данных, который в этом примере составляет 4096 байт. Таблица страница содержит записей, что указывает на страниц. Как сказал Дэвид, поскольку таблица страниц хранится в памяти, она также сохраняется на страницах.
Кто-то говорил, что объяснение неверно. Правильный вариант: с адресным пространством 2^32 и размером страницы 4K (2^12), это оставляет 2^20 страниц в таблице. При 4 байтах на запись это составляет 4 ГБ страничной таблицы, которая слишком велика для разумного хранения в непрерывной памяти. (И для замены и выхода из памяти с каждым переключателем процесса.) Обратите внимание, что при размерах страниц 4K это займет 1024 k страниц (= 1M страниц), чтобы удерживать общую таблицу! Правильно или неправильно?
Он неверен. Если в таблице страниц содержались данные с каждой страницы, он был бы прав. С 4096 байтовыми страницами и 2^20 записями, которые равнялись бы 4 294 967 296 байт (4 ГБ), но записи занимали всего 4 байта. Таким образом, вы несколько, что с 2^20 записей, чтобы получить 4,194,304 байт (4 МБ).
Является ли мое заявление неправильным? – hellodear
Нет, тот, который вы указали. – user3344003