Имеет ли размер адрес взаимосвязь с количеством записей, размером общих записей или с обоими?

Если виртуальная память имеет 32-битный адрес, есть ли 2 ^ 32 записи или размер общих записей 2 ^ 32 байта? или оба?

Причина, по которой я спрашиваю, заключается в том, что я думал, что это означает только 2 ^ 32

После выполнения следующей проблемы я не уверен:

  1. Предположим, что машина имеет 48-битные виртуальные адреса и 32-битные физические адреса. Если размер страниц составляет 4 КБ, сколько записей в таблице страниц, если он имеет только один уровень?

Решение: 2^48/2^32 = 2^16 страниц.

Тем не менее, количество записей / размер страницы!= Количество страниц.

размер общего количества записей / размер страницы = количество страниц.

Итак, мне интересно, если 32-битный адрес означает, что есть 2 ^ 32 записи или если общее количество записей равно 2 ^ 32 байта или оба.

1 ответ

Решение

Цзинань, я думаю, ты запутался в вещах, связанных с памятью Linux.

Ваш вопрос для:

Если виртуальная память имеет 32-битный адрес, есть ли 2^32 записи или размер общих записей 2^32 байта? или оба?

Записи таблицы страниц не зависят только от виртуального адресного пространства, размера страницы и физической памяти, а также для расчета записей.

Я беру твой пример:

Предположим, что машина имеет 48-битные виртуальные адреса и 32-битные физические адреса. Если размер страниц составляет 4 КБ, сколько записей в таблице страниц, если он имеет только один уровень?

Количество записей в таблице страниц будет = 2^36.

Запись страницы используется для получения адреса физической памяти. Здесь мы предполагаем, что происходит один уровень пейджинга. Таким образом, итоговая таблица страниц будет содержать записи для всех страниц виртуального адресного пространства.

Number of entries in page table = 
                  (virtual address space size)/(page size)  

Virtual address = 48 Bit
Page size is = 12 bit ((2^12) is equal to 4KB).

Using above formula we can say that there will be 2^(48-12) = 2^36 entries in page table.

Размер таблицы страниц

Количество битов, необходимых для адресации 32-битной физической памяти = 32. Таким образом, в физической памяти будет 2^(32-12) = 2^20 кадров страницы. И таблица страниц должна хранить адрес всех этих 2 20 фреймов страницы. Поэтому каждая запись таблицы страниц будет содержать 32-битный адрес фрейма страницы. Так как память адресуется в байтах. Итак, мы считаем, что каждая запись таблицы страниц имеет длину 32 бита, т.е. 4 байта.

Size of page table = 
  (total number of page table entries) *(size of a page table entry) 
   = (2^36 *4) = 256GB
Другие вопросы по тегам