Влияет ли размер адреса на количество записей, общий размер записей или и то, и другое?

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

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

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

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

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

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

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

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


person jinan    schedule 06.12.2016    source источник
comment
Ответа на этот вопрос нет, учитывая ваши данные. Количество записей в таблице страниц определяется несколькими неуказанными факторами.   -  person user3344003    schedule 07.12.2016


Ответы (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
person Sumit Gemini    schedule 12.12.2016