Аппаратно-независимая модель памяти процесса.

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

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

Сегмент программного кода содержит только команды. Сегмент программного кода не модифицируется в ходе выполнения процесса, обычно страницы данного сегмента имеют атрибут read-only. Следствием этого является возможность использования одного экземпляра кода для разных процессов.

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

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

Более подробно информация об адресных пространствах процессов изложена в [1,28].