- •Раздел 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.3.1.3. Механизм отображения виртуальных адресов в физические
Механизм основан на ведении таблицы отображения виртуального адреса V в физический адрес R.
Предельный случай - это для каждого виртуального адреса в таблице хранить информацию о физическом адресе. Такой способ нерационален из-за большого размера таблицы отображения.
Поэтому рассматриваются блоки виртуальной памяти, которым соответствуют блоки физической памяти.
Чем больше размер блоков, тем меньше затрат на механизм отображения. Но увеличиваются затраты на обмен с внешней памятью.
Если блоки памяти могут иметь переменный размер, то говорят о сегментной организации виртуальной памяти.
Если блоки имеют фиксированный размер, то говорят о страничной организации виртуальной памяти.
Механизм же отображения один как для сегментной, так и для страничной организации.
Виртуальный адрес - это вектор:
V = (b, d),
Где: b - это номер блока;
d - это смещение внутри блока.
b - это смещение внутри таблицы отображения блоков.
Строка таблицы содержит адрес блока в памяти и другую информацию о блоке.
Схема отображения имеет следующий вид:
5.3.2. Страничная организация виртуальной памяти
5.3.2.1. Одноуровневая страничная организация
Страничная виртуальная память состоит из блоков фиксированного размера, называемых страницами. Размер страниц обычно составляет от 512 байтов до 4 К. В процессоре Intel 386 размер страницы равен 4 К.
Виртуальный адрес равен
V = (p, d),
Где р - номер страницы;
d - смещение внутри страницы.
При фиксированном размере блока проще реализуются стратегии размещения страниц в памяти.
Строка таблицы страниц обычно содержит следующие данные:
-
p
m
a
n
s
p - бит присутствия страницы;
m - бит модификации страницы;
a - права доступа к странице;
n - адрес в физической памяти, если страница загружена;
s - адрес во внешней памяти, если страница не загружена.
Таблица страниц загружается вместе с задачей и хранится в оперативной памяти.
Для ускорения доступа часть строк таблицы, к которым обращения происходят наиболее часто, хранятся в кэш-памяти. Обращение к таблице в оперативной памяти происходит только при неудачном поиске строки в кэш-памяти. В этом случае кэш-память обновляется новой страницей.
5.3.2.2. Двухуровневая страничная организация
С ростом размера виртуальной памяти пропорционально увеличиваются и размеры таблиц страниц. Избежать роста таблиц позволяет двухуровневая страничная организация.
В этом случае для каждой задачи создается каталог таблиц, а виртуальный адрес состоит из трех компонентов:
V = (k, p, d),
Где k - строка каталога, содержащая адрес таблицы страниц;
р - смещение в выбранной таблице страниц;
d - смещение в физической памяти.
В процессоре Intel 386 с 32-х разрядными регистрами каталог может содержать информацию о 1024 таблицах (1 К).
Каждая таблица содержит информацию о 1024 страницах (1 К). Поскольку каждая страница имеет размер 4 К, то одна таблица страниц может адресовать память 4 К х 1 К = 4 М.
Один каталог адресует память 4 М х 1 К = 4 Г.