Существует ли таблица страниц для каждого процесса в ЦП или она одинакова для каждого процесса?

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

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

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

1 ответ

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

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

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

Другие вопросы по тегам