Виртуальная память
В Windows95 и Windows NT, как и в любых других мультизадачных ОС, процессы не имеют доступа к физической оперативной памяти. Каждому процессу выделяется набор виртуальных адресов, называемый виртуальным адресным пространством процесса или просто виртуальной памятью. Каждому процессу WIN32 предоставляется собственное виртуальное адресное пространство в диапазоне виртуальных адресов 4М – 2Г. Все процессы WIN32 загружаются по одному и тому же виртуальному адресу 4М и содержимое виртуальной памяти по некоторому виртуальному адресу свое для каждого процесса. ОС гарантирует, что никакой процесс не имеет физической возможности получить доступ к собственному виртуальному адресному пространству другого процесса.
Процессы WIN32 используют плоскую несегментированную модель памяти FLAT. Для доступа к любой ячейке виртуального адресного пространства в этой модели используется 32-разрядное смещение, деление адресного пространства на сегменты отсутствует. ОС делит виртуальное адресное пространство каждого процесса на страницы фиксированного размера в 4К Физическое адресное пространство оперативной памяти система также делит на страницы размером 4К. При запуске процесса система сначала пытается разместить необходимый код и данные в оперативной памяти. Когда страниц оперативной памяти не хватает, включается механизм подкачки страниц. Этот механизм также включается при необходимости замены страниц, принадлежащих неактивному процессу на страницы активного процесса. Для хранения неиспользуемых в текущий момент страниц используется страничный файл подкачки, размещаемый во внешней памяти (на диске). Верхний предел собственного виртуального адресного пространства каждого процесса может иметь максимальное значение 2Г, но его реальное значение определяется физическими ресурсами вычислительной системы. Любая страница виртуального адресного пространства процесса может находиться в одном из трех состояний: свободная (free), зарезервированная (reserved) или выделенная для использования (commited) страница. ОС требует от процесса сначала зарезервировать необходимое ему виртуальное адресное пространство, а затем выделить все это пространство или его часть для использования. При этом рекомендуется вначале зарезервировать столько памяти, сколько максимально потребуется процессу, а затем выделять для использования из зарезервированной виртуальной памяти участки, необходимые для выполнения текущих операций. Кроме того, каждой странице виртуального адресного пространства присваивается один из следующих атрибутов защиты: PAGE_READWRITE (чтение и запись), PAGE_READONLY (только чтение), PAGE_EXECUTE(только исполнение), PAGE_EXECUTE_READ (чтение и исполнение), PAGE_EXECUTE_READWRITE (чтение, запись и исполнение), PAGE_NOACCES (запрещен любой доступ). В Windows 95 используются только атрибуты PAGE_READWRITE, PAGE_READONLY и PAGE_NOACCES.
предыдущая темаследующая