- •Раздел 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
5.3.2.3. Совместное использование страниц процессами
В многозадачных системах принципиально не трудно организуется совместное использование страниц, но оно требует четкой координации.
Обычно программы содержат процедуры и данные.
Данные программ чаще имеют характер неразделяемых данных, а доступ к разделяемым данным координируется уже известными нам методами.
Неизменяемые процедуры называются реентерабельными или повторновходимыми.
Таким образом, каждая страница должна быть классифицирована как разделяемая или нет.
Доступ к разделяемым страницам оказывается возможным, если в таблицах страниц каждого из процессов, строка, описывающая разделяемую страницу, будет содержать один и тот же физический адрес.
Физическая память Таблица страниц процесса 1 ------>------------- ----------- | |Страница | ==========------------------------- |процесса 1 | ==========-------------------- ------>------------- ----------- | | |Страница | Таблица страниц процесса 2 | | |процесса 2 | ----------- ------->--->------------- ==========------------------------- ^ |Разделяемая| ==========---------------------------- | страница |
----------- -------------
5.3.3. Сегментная организация виртуальной памяти
5.3.3.1. Одноуровневая сегментная организация
В отличие от страниц сегменты могут иметь различные размеры. Виртуальный адрес
V = (s, d),
Где s - номер сегмента;
d - смещение внутри сегмента.
Схема отображения остается прежней.
Используя терминологию Intel, виртуальный адрес представляет собой вектор СЕЛЕКТОР:СМЕЩЕНИЕ, таблица отображения - это таблица дескрипторов; строка таблицы - дескриптор сегмента.
В общем случае дескриптор содержит следующие данные:
-
p
b
l
t
a
r
e
p - бит присутствия;
b - адрес сегмента в памяти, если загружен;
l - длина сегмента;
t - тип сегмента; (чтение, запись, код, данные)
a - бит доступа;
r - привилегии;
e - адрес во внешней памяти, если не загружен.
Если сегмента нет в памяти, то вырабатывается прерывание по отсутствию сегмента.
Если длина сегмента меньше величины смещения в виртуальном адресе, то вырабатывается прерывание по выходу за пределы сегмента.
Если тип операции не соответствует типу сегмента, то вырабатывается прерывание по ошибке.
Если уровень привилегий запроса не соответствует уровню привилегий дескриптора, то вырабатывается прерывание по защите сегмента.
Также как и в случае страничной организации, возможно коллективное использование одних и тех же сегментов несколькими процессами. Принципы коллективного использование сегментов те же, что и принципы коллективного использования страниц.
Сочетание сегментной и страничной организации представляет собой комбинированную сегментно-страничную систему виртуальной памяти.
Виртуальный адрес в этом случае состоит из трех компонентов:
V = (s, p, d),
Где s - смещение в таблице сегментов процесса, указывающее на адрес таблицы страниц сегмента;
p - смещение в таблице страниц сегмента, указывающее на адрес страницы в памяти;
d - смещение от начала страницы.
