Операционная система использует каталог страниц и таблицу страниц для обработки виртуализации памяти.
Одна вещь, в которой я не уверен, содержится в названии этого вопроса: одинакова ли эта структура для всех процессов или каждому процессу принадлежит определенная таблица страниц?
Кажется обременительным и непрактичным иметь таблицу страниц для каждого процесса. Также существует тот факт, что вся структура данных (каталог страниц, таблица страниц ...), похоже, обращается к каждому байту физической памяти.
Каждый процесс в операционной системе, реализующей виртуальную память, имеет собственное адресное пространство. Это более безопасно, поскольку позволяет изолировать процессы и рандомизировать адреса. Кроме того, проще управлять с помощью различных конфигураций физической памяти и допускать чрезмерную нагрузку.
Фактически, размер адресного пространства может быть значительно больше, чем объем физической памяти. Это особенность: больше места для рандомизации адресов, сопоставления файлов и других хитростей.
В Linux (хотя другие операционные системы наверняка похожи) каждый процесс имеет свой собственный набор таблиц страниц. Может быть, 4 байта потрачено на управление 4 КБ используемого страничного фрейма, управляемо. Тем не менее, используйте большой объем памяти, помноженный на большое количество процессов, и ваши таблицы страниц используют значительный объем памяти и ЦП. Это иногда случается, в частности, с большими базами данных, и его можно смягчить, используя больший («огромный») размер страницы.