Как рассчитать количество виртуальных страниц - PullRequest
0 голосов
/ 28 мая 2018

размер виртуального адреса: 32 бита

размер страницы = 4K = 2 ^ 12 байт

какое количество страниц?я знаю, что ответ (2 ^ 32) / (2 ^ 12) = 2 ^ 20, но почему?

я думаю, что это должно быть (2 ^ 32) / (2 ^ 15) из-за байтового битапреобразование (2 ^ 12) * (8) = 2 ^ 15

1 Ответ

0 голосов
/ 28 мая 2018

Каждый байт в памяти имеет числовой адрес, начинающийся с 0. CPU имеет один или несколько регистров , которые содержат адрес того одного байта, над которым выполняется работа.Регистр является физическим устройством и имеет ограничения на количество сохраняемых им чисел.

размер виртуального адреса: 32 бита

Это означает, что регистр адреса может хранить одноадрес (число), который может быть любым между 0 и 2^32 -1.

Поскольку наибольший адрес, который может хранить регистр адресов, равен 2^32 -1, нет смысла иметь больше байтов памяти.Потому что процессор никогда не сможет с ними работать.Поэтому в общем случае мы предполагаем, что общий объем памяти равен 2^32 байтов.

размер страницы = 4 КБ = 2 ^ 12 байтов

Общий объем памяти в миллионах байтовна самом деле организованы кусками, называемыми страницами.Здесь общая память 2^32 байтов разбита на страницы 2^12 байтов.

Какое количество страниц?

ответ (2 ^ 32) / (2 ^ 12) = 2 ^ 20.Хорошая работа!

но почему?я думаю, что это должно быть (2 ^ 32) / (2 ^ 15) из-за преобразования битов (2 ^ 12) * (8) = 2 ^ 15

Здесь 2^32 - этообщее количество байтов в памяти.2^12 - общее количество байтов на странице.Числитель и знаменатель должны быть в одинаковых единицах - байтах.Поэтому вам не нужно преобразовывать знаменатель в биты.


Примечание:

Я использовал более упрощенные термины, такие как memory, address, register и т. Д. Многие изПриведенные выше утверждения не действительны для реального ноутбука, но полезны для начального обучения.

...