Архитектура API управления памятью.

Архитектура API управления памятью. - student2.ru

Адресное пространство процесса:

Архитектура API управления памятью. - student2.ru

Средства защиты памяти:

Объектно-ориентированная защита памяти. Каждый раз, когда процесс открывает указатель на блок адресов, монитор ссылок безопасности проверяет, разрешен ли доступ процесса к данному объекту.

Отдельное адресное пространство для каждого процесса. Аппаратура запрещает процессу доступ к физическим адресам другого процесса.

Два режима работы: режим ядра, в котором процессам разрешен доступ к системным данным, и пользовательский режим, в котором это запрещен.

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

Принудительная очистка страниц, освобождаемых процессами.

Страничное преобразование:

Виртуальная память в Windows имеет страничную организацию, принятую во многих современных ОС. Процессоры Intel начиная с Pentium Pro позволяют ОС применять одно-, двух- и трехступенчатые схемы. И даже разрешается одновременное использование страниц различного размера. Эта возможность, конечно, повысила бы эффективность страничного преобразования, будь она внедрена в Windows. Однако Windows возникла раньше и поддерживает только двухступенчатую схему преобразования с фиксированным размером страниц.

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

32-разрядный виртуальный адрес в ОС Windows разбивается на три части:

Старшие 10 разрядов адреса определяют номер одного из 1024 элементов в каталоге страниц, адрес которого находится в регистре процессора CR3. Этот элемент содержит физический адрес таблицы страниц.

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

Архитектура API управления памятью. - student2.ru

Размер страницы - 4 Кбайт, и младших 12 разрядов линейного адреса как раз хватает (212 = 4096), чтобы определить точный физический номер адресуемой ячейки памяти внутри этой страницы.

 
  Архитектура API управления памятью. - student2.ru

Архитектура API управления памятью. - student2.ru

Элемент таблицы страниц (Page Table Element)

Защита – Win32 API поддерживает ряд значений, в том числе: PAGE_NOACCESS, PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE.

Базовый физический адрес страницы в памяти.

Pagefile – индекс используемого файла подкачки (один из 16 возможных в системе файлов).

State – состояние страницы в системе:

1. T (Transition) – отмечает страницу как переходную;

2. D (Dirty) – страница, в которую была произведена запись;

3. P (Present) – страница присутствует в ОП или находится в файле подкачки.

Отдельные состояния страниц:

Valid – страница используется процессом. Она реально существует в ОП и помечена в PTE как присутствующая в рабочем множестве процесса (P=1, D=0,1).

Modified – содержимое страницы было изменено (D=1). В PTE страница помечена как отсутствующая (P=0) и переходная (T=1).

Standby – содержимое страницы не изменялось (D=0). В PTE страница помечена как отсутствующая (P=0) и переходная (T=1).

Free – страница, на которую не ссылается ни один PTE. Страница свободна, но подлежит обнулению, прежде чем будет использована.

Zeroed – свободная и обнуленная страница, пригодная к непосредственному использованию любым процессом.

Bad – страница, которая вызывает аппаратные ошибки и не может быть использована ни одним процессом.

T D P Page state
- Invalid page (Free)
- Valid page
- Valid dirty page
Invalid page in transition (Standby)
Invalid dirty page in transition (Modified)

Наши рекомендации