Пытаетесь понять, почему размеры страниц имеют степень 2? - PullRequest
1 голос
/ 01 сентября 2009

Я прочитал это:

Напомним, что подкачка осуществляется разбить адрес на страницу и номер смещения. Наиболее эффективно разбить адрес на биты X-страницы и Y смещает биты, а не выполняет арифметика по адресу для расчета номер страницы и смещение. Так как каждая позиция бита представляет степень из 2, разделив адрес между бит приводит к размеру страницы, который является мощность 2.

Я не совсем понимаю этот ответ, кто-нибудь может дать более простое объяснение?

Ответы [ 8 ]

15 голосов
/ 01 сентября 2009

Если вы преобразуете (линейный) адрес в смещение страницы: вы хотите разделить адрес на размер страницы и принять целочисленный ответ в качестве страницы, а напоминание - в качестве смещения.

Это делается с использованием операторов целочисленного деления и модуля (MOD, "%") в вашем языке программирования.

Компьютер представляет адрес в виде числа, хранящегося в двоичных разрядах.

Вот пример адреса: 12 - это 1100 в двоичном виде.

Если размер страницы равен 3, то нам нужно рассчитать 12/3 и 12% 3, чтобы найти страницу и смещение (4: 0 соответственно).

Однако, если размер страницы равен 4 (степень 2), тогда 4 в двоичном виде равны 100, а целочисленное деление и модуль можно вычислить с помощью специальных «горячих клавиш»: вы можете разделить последние две двоичные цифры для деления, и вы можете оставить только две последние двоичные цифры для модуля. Итак:

12/4 == 12>>2 (сдвиг, чтобы удалить последние две цифры)

12%4 == 12&(4-1) (4-1 = 3 является двоичным 11, а оператор '&' (AND) только сохраняет их)

2 голосов
/ 02 мая 2010

Работа с полномочиями двух приводит к более эффективному оборудованию, так что это делают дизайнеры оборудования. Рассмотрим процессор с 32-битным адресом и n-битным номером страницы:

+----------------------+--------------------+
| page number (n bits) | byte offset (32-n) |
+----------------------+--------------------+

Этот адрес отправляется в блок виртуальной памяти, который напрямую разделяет номер страницы и смещение байта без каких-либо арифметических операций вообще. То есть он обрабатывает 32-битное значение как массив битов и имеет (более или менее) провод, идущий непосредственно к каждому биту. Это позволяет аппаратному обеспечению памяти извлекать номер страницы и байтовое смещение параллельно, не выполняя никаких арифметических операций.

В то же время этот подход требует разделения на битовую границу, что приводит непосредственно к размеру страницы степени 2.

1 голос
/ 01 сентября 2009

Если в вашем распоряжении есть n двоичных цифр, то вы можете кодировать 2 n различных значений.

Учитывая адрес, ваше описание утверждает, что некоторые биты будут использоваться для страницы, а некоторые для смещения. Поскольку вы используете целое число двоичных битов для смещения Y, размер страницы, естественно, равен степени 2, а именно 2 Y .

0 голосов
/ 15 марта 2018

Номер страницы всегда в степени 2 как (2 ^ n). Есть несколько причин: 1. Адрес памяти также находится в 2 ^ n, поэтому будет легче перемещать страницу. 2. Есть два бита, которые представляют страницу: № страницы смещение нет Итак, это тоже причина. 3. Память в квантовой форме, как заряд (q).

0 голосов
/ 21 марта 2017

Я понял, что не получил как размеры страницы - степень 2. Я узнал потом:

На наименьшем уровне страница составляет 1 бит (0 или 1), а смещение составляет 1 бит (0 или 1). Объединив их вместе, размер страницы будет равен 2 x 2 (или 2 ^ 2) из-за количества битов, которые они оба имеют (2 каждый, поэтому 2 x 2).

Теперь, если бы страница / смещение были больше, то это было бы n x n - n, равное количеству битов, которые у них обоих есть.

0 голосов
/ 18 апреля 2015

, поскольку все адреса в двоичном виде и делятся на f и d, f = номер кадра, d = смещение. Из-за размера в 2 человека человеку не нужно делать огромных математических вычислений, просто наблюдая за адресными битами, вы можете определить f и d. Если размер страницы был 2 ^ n, то последние n бит в физическом адресе представляют смещение, а оставшиеся биты представляют номера страниц. Надеюсь, этот ответ поможет вам.

0 голосов
/ 08 октября 2013

Если это не точное значение 2, то некоторый адрес памяти будет недействительным. например, если размер страницы составляет 5 байт, то для различения каждого байта нам нужно 3 бита в смещенной части адреса. Потому что при использовании 2-х бит можно адресовать только 4 байта. Но используя 3-битное смещение для 5-байтовой страницы, оставьте два адреса неиспользованными. вот почему размер страницы должен быть .......

0 голосов
/ 01 сентября 2009

Потому что представление данных. Смещение страницы устанавливает размер страницы, и, поскольку данные представлены в двоичном формате, у вас будет число n бит для определения смещения, поэтому у вас будут страницы размером 2 ^ n.

Предположим, у вас есть адрес, подобный этому 10011001, и вы разделили его на 1001: 1001 для page: offset. Поскольку у вас есть 4 бита для определения смещения, размер вашей страницы составляет 2⁴.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...