- •Раздел 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.2.1.3. Блочная организация памяти
Вся память организована по блочному принципу. Блоки организуются с цепочку и могут находиться в состояние "занят" или "свободен".
В начале каждого блока находится МСВ - memory control block.
------------ -----------
| ОС | | байт | последний/непоследний
------------ ---------------------
|//////////|занят | | | хозяин блока
------------ ---------------------
| |свободен | | | размер блока
| | -------------------------- этот адрес
------------ | резерв 11 байтов | возвращается
|//////////|занят -------------------------- <---- при
------------ | сам блок | выделении па-
| |свободен | | мяти по запросу
------------
Признак последнего блока - 'z' - 5AH; признак непоследнего блока 'm' - 4DH.
Хозяин блока - адрес PSP, если блок свободен, то поле = 0. Размер блока представлен в параграфах - участках по 16 байтов.
Размер MCB - 16 байтов - параграф.
Адрес начала цепочки MCB хранится в переменной DOS и может быть получен с помощью функции 52H прерывания DOS,
MOV AH, 52H
INT 21H
Свободные блоки являются основой динамического управления памятью. В любой ОС имеются примитивы:
ВЫДЕЛИТЬ_БЛОК() GETMEM(ADDR, SIZE);
ОСВОБОДИТЬ_БЛОК() FREEMEM(ADDR, SIZE);
5.2.1.4. Стратегии управления памятью (введение)
При управлении памятью необходимо рассматривать следующие стратегии:
стратегии выборки;
стратегии размещения;
стратегии замещения.
Стратегии 1 и 3 рассматриваются при управлении виртуальной памятью, стратегия 2 рассматривается как при управлении физической, так и при управлении виртуальной памятью.
Стратегии выборки отвечают на вопрос КОГДА загружать блок.
Два основных направления существует в этих стратегиях:
по запросу;
с упреждением.
Стратегии размещения отвечают на вопрос КУДА поместить блок.
Три основных направления существуют в этих стратегиях:
в первый подходящий свободный блок;
в наиболее подходящий свободный блок;
в наименее подходящий свободный блок.
Стратегии замещения отвечают на вопрос КОГО ВЫТОЛКНУТЬ, если для размещения нового блока не хватает места.
5.2.2. Многозадачные системы
В этих системах физическая память разделяется между программами. Т.е. создаются РАЗДЕЛЫ, выделяемые для программ.
Разделы могут быть фиксированными и переменными по размеру.
5.2.2.1. Фиксированные разделы (неперемещаемые программы)
Существует два варианта использования фиксированных разделов:
фиксированные разделы и неперемещаемые программы;
фиксированные разделы и перемещаемые программы.
В первом случае программы привязываются к одному из разделов и могут выполняться только в своих разделах.
---------- В свободные разделы не могут
| ОС | загружаться программы, при-
---------- ----- вязанные к другим разделам.
| Р1 |<--||| Очередь к Р1 Поэтому может оказаться, что,
---------- ----- например, есть большая
| Р2 | ----- очередь к разделу Р1 и нет
| |<--||| Очередь к Р2 очереди к разделу Р3.
---------- ----- Если иметь специальный про-
| | ----- цессор ввода/вывода, то
| Р3 |<--||| Очередь к Р3 можно одновременно выполнять
| | ----- программу в одном разделе и
---------- перезагружать программу в
другом разделе.