Назад | Перейти на главную страницу

Есть ли таблица страниц для каждого процесса на ЦП или она одинакова для всех процессов?

Операционная система использует каталог страниц и таблицу страниц для обработки виртуализации памяти.

Одна вещь, в которой я не уверен, содержится в названии этого вопроса: одинакова ли эта структура для всех процессов или каждому процессу принадлежит определенная таблица страниц?

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

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

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

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