64-битные таблицы страниц слишком велики?

64-битный виртуальный адрес занимает 18446744073709551616 байт. со страницей размером 4 КБ нам потребуется 4503599627370496 записей в таблице страниц, где каждая запись имеет размер 8 байт.

поэтому у нас будет: (4503599627370496 * 8) = 36028797018963968 байт.

и каждый процесс имеет свою собственную таблицу страниц. это слишком велико для таблицы страниц. Мне было интересно, как система справляется с этим?


person user3484604    schedule 15.08.2014    source источник


Ответы (1)


Они не делают. Большинство современных систем фактически не позволяют процессам использовать такой объем памяти. Обычно существует ограничение примерно в 64 ТБ памяти, которое может использовать любой процесс. Конечно, в любой практической ситуации очень плохие вещи произойдут, прежде чем что-либо приблизится к использованию такого большого объема памяти.

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

person Austin    schedule 15.08.2014