- •Раздел 5. Управление памятью в операционных средах
- •5.1. Классификация способов организации памяти
- •5.2. Управление физической памятью
- •5.2.1. Однозадачные системы
- •5.2.1.1. Простые и оверлейные системы
- •5.2.1.2. Сегментация памяти
- •5.2.1.3. Блочная организация памяти
- •5.2.1.4. Стратегии управления памятью (введение)
- •5.2.2. Многозадачные системы
- •5.2.2.1. Фиксированные разделы (неперемещаемые программы)
- •5.2.2.2. Фиксированные разделы (перемещаемые программы)
- •5.2.2.3. Переменные разделы
- •5.2.2.4. Свопинг
- •5.3. Управление виртуальной памятью
- •5.3.1. Общая характеристика виртуальной памяти
- •5.3.1.1. Определения виртуальной памяти и иерархия видов памяти
- •5.3.1.2. Особенности виртуальной памяти
- •5.3.1.3. Механизм отображения виртуальных адресов в физические
- •5.3.2. Страничная организация виртуальной памяти
- •5.3.2.1. Одноуровневая страничная организация
- •5.3.2.2. Двухуровневая страничная организация
- •5.3.2.3. Совместное использование страниц процессами
- •5.3.3. Сегментная организация виртуальной памяти
- •5.3.3.1. Одноуровневая сегментная организация
- •5.3.3.2. Комбинированная сегментно-страничная организация (вместе с таблицей процессов)
- •5.3.4. Стратегии управления виртуальной памятью
- •5.3.4.1. Главные задачи управления виртуальной памятью
- •5.3.4.2. Стратегии решения второй главной задачи
- •5.3.4.3. Стратегии выталкивания с постоянным распределением
- •1. Выталкивание случайной страницы.
- •2. Выталкивание первой пришедшей страницы.
- •3. Выталкивание реже всего используемой страницы.
- •4. Выталкивание дольше всех не использовавшейся страницы.
- •5.3.4.4. Стратегии выталкивания с переменным распределением
- •5.4. Управление памятью в современных ос
- •5.4.1. Архитектура управления памятью
- •5.4.2. Защита памяти
- •5.4.3. Распределение памяти
- •5.4.3.1. Типы программных интерфейсов для распределения памяти
- •5.4.3.2. Переносимые интерфейсы
- •5.4.3.3. Специфические интерфейсы
- •5.4.4. Совместное использование памяти
- •5.4.4.1. Способы совместного использования памяти
- •5.4.4.2. Пример реализации разделяемой памяти в Win32.
5.4. Управление памятью в современных ос
5.4.1. Архитектура управления памятью
Базовые принципы управления памятью, изложенные выше, широко используются во всех современных ОС. Но в каждой из систем существуют нюансы их использования.
Так из трех существующих моделей памяти:
модели сегментированной памяти;
модели памяти со сплошной адресацией;
модели памяти со страничной организацией,
Модель сегментированной памяти практически не используется из-за больших дополнительных издержек, состоящих в проверках сегмента на длину в процессе выполнения программы.
С появлением 32-х разрядных систем широко стала использоваться сплошная адресация. Диапазон адресов 4 гигабайта достаточен для большинства сегодняшних приложений.
При сплошной адресации все сегментные регистры устанавливаются в один и тот же сегмент, и для адресации используется только смещение.
Фрагментация, имеющая место при сплошной адресации, устраняется использованием страничной организации.
Кроме того, страничная организация позволяет ограничить доступ процессов к чужой памяти.
NetWare 3.1 использует модель памяти со сплошным режимом адресации, не предусматривая ни страничного обмена, ни виртуальной памяти. Из-за такого неполного подхода к управлению памятью эффективность данной системы очень высока.
NetWare 4.0 имеет заново спроектированную систему управления памятью. В ней реализован режим сплошной адресации и механизм страничного обмена. Не смотря на страничную организацию, виртуальная память в системе не реализована.
UnixWare использует модель памяти со сплошной адресацией, со страничным обменом и поддержкой виртуальной памяти.
ОС семейства Windows NT использует модель памяти со сплошной адресацией. Поддерживается страничная организация виртуальной памяти.
OS/2 управляет памятью аналогично Windows NT.
5.4.2. Защита памяти
ОС должна обеспечивать защиту памяти, предотвращая случайную или преднамеренную порчу пользовательскими процессами данных в адресном пространстве системы или других процессов.
Для этого используются следующие основные способы:
Доступ ко всем системным структурам данных и пулам памяти производится из режима ядра, так что у пользовательских потоков нет к ним доступа.
У каждого процесса имеется индивидуальное закрытое адресное пространство, защищенное от доступа других процессов.
Аппаратные средства защиты памяти на уровне архитектуры процессора
Разделяемые объекты имеют атрибуты контроля доступа, проверяемые при попытках процессов обратиться к этим объектам.
На уровне архитектуры существуют три метода защиты памяти (вспомним причины возникновения аппаратных исключений):
проверка типа;
проверка границ;
проверка уровня полномочий.
Проверка типа обеспечивает выполнение только допустимых операций с памятью. Например, сегменты кода доступны только для чтения. Проверки выполняются процессором при выполнении каждой инструкции.
Проверка границ обеспечивают проверку того, чтобы величина смещения не превосходила размера самого сегмента.
Проверка уровня полномочий обеспечивает разделение программ на пользовательские программы и системные программы.
Например, 4 уровня полномочий допускается в архитектуре Intel (два бита). Уровень 0 - самый высокий уровень защиты, уровень 3 - самый низкий.
NetWare 3.1 не имела защиты памяти. Из-за отсутствия издержек на защиту обработка данных на сервере была очень эффективной.
NetWare 4.0 использует уровни защиты, предоставляемые процессором Intel. Программы могут выполняться в следующих доменах:
OS, работающем на уровне 0;
OS_PROTECTED, работающем на уровне 3.
UnixWare предусматривает собственную защиту памяти и использует уровни 0 и 3 защиты процессора Intel.
ОС семейства Windows NT обеспечивает множество методов защиты памяти. Каждый процесс поддерживает собственное пространство виртуальных адресов и не может обращаться к адресам других процессов.
Кроме того, используется уровни 0 и 3 защиты процессора Intel для выполнения программ ядра и пользователя.
Кроме того, используется защита на уровне страниц.
OS/2 широко использует кольцевую схему защиты процессора Intel, помещая ядро в кольцо 0, а процессы пользователя - в 3.
Кроме того, ОС управляет доступом через атрибуты страничной памяти.