- •Раздел 5. Управление памятью в операционных системах
- •5.1. Классификация способов организации памяти
- •5.2. Управление физической памятью
- •5.2.1. Однозадачные системы
- •5.2.2. Многозадачные системы
- •5.3. Управление виртуальной памятью
- •5.3.1. Общая характеристика виртуальной памяти
- •5.3.2. Страничная организация виртуальной памяти
- •5.3.3. Сегментная организация виртуальной памяти
- •5.3.4. Стратегии управления виртуальной памятью
- •1. Выталкивание случайной страницы
- •2. Выталкивание первой пришедшей страницы
- •3. Выталкивание реже всего используемой страницы
- •4. Выталкивание дольше всех не использовавшейся страницы
- •5.4. Совместное использование памяти
- •Закрытие объекта:
- •Раздел 5
Раздел 5. Управление памятью в операционных системах
5.1. Классификация способов организации памяти
В данном разделе будет рассмотрен седьмой уровень иерархической модели ОС - уровень управления виртуальной памятью.
Управление памятью, также как и управление дисковыми устройствами, можно отнести к области специалистов по вычислительной технике, поскольку специалистам по ИС вряд ли придется разрабатывать собственные алгоритмы управления памятью.
Поэтому в данном разделе мы также как и в предыдущем разделе, дадим лишь краткий обзор систем управления памятью, целью которого будет сохранение системности изложения материала.
Чтобы представить место виртуальной памяти в общей организации памяти ОС, дадим классификацию способов организации памяти в ОС.
5.2. Управление физической памятью
Все, что связано с управлением физической памятью, относится к историческим аспектам работы ОС, поскольку современные ОС используют по большей части виртуальную память.
5.2.1. Однозадачные системы
Простые и оверлейные системы
Общая схема организации физической памяти в однозадачной системе выглядит следующим образом:
-
Операционная система
Программа
Свободная область
Как правило, вся свободная память передается прикладной программе, но может быть и возвращена операционной системе.
Если места в памяти для загрузки программы не хватает, то организуется оверлейная программа.
Оверлеи грузятся поочередно в одно и то же место памяти.
Недостаток такой системы - нет защиты ОС от пользователя.
Возможные средства защиты:
Доступ к ОС должен выполняться только через примитивы ОС;
Введение граничного регистра.
------------------- --------------
| ЦП | |Операционная|
|-----------------| | система |
||регистр границы||----> А --------------
|-----------------| | |
------------------- | |
Доступ к памяти всегда происходит с проверкой на значение А:
if (M <= A) {
ИСКЛЮЧЕНИЕ_ПО_ОШИБКЕ
} else {
ДОСТУП К М;
}
где М - адрес памяти для доступа.
Сегментация памяти
Стремление расширить доступное пространство памяти при ограничениях на аппаратуру, а именно, разрядность регистров, привело к понятию сегментации памяти.
Хотя это понятие используется теперь более широко.
Так, например, для обеспечения размера памяти в 1 МВ требуется 20 разрядов регистра. Как осуществить доступ, если регистры имеют по 16 разрядов?
Введено следующее понятие СЕГМЕНТ:СМЕЩЕНИЕ. Любой адрес представлен таким вектором. Если адрес начала сегмента выровнять на начало параграфа и ограничить сегмент размером 64 К, то для адресации можно использовать два 16-ти разрядных регистра.
Для реализации данного способа адресации используются сегментные регистры CS, DS, SS, ES, а также базовые и индексные регистры BX, BP, SI, DI.
Блочная организация памяти
Вся память организована по блочному принципу. Блоки организуются в цепочку и могут находиться в состояние «занят» или «свободен».
В начале каждого блока находится МСВ - Memory Control Block.
------------ -----------
| ОС | | байт | последний/непоследний
------------ ---------------------
|//////////|занят | | | хозяин блока
------------ ---------------------
| |свободен | | | размер блока
| | -------------------------- этот адрес
------------ | резерв 11 байтов | возвращается
|//////////|занят -------------------------- <---- при
------------ | сам блок | выделении па-
| |свободен | | мяти по запросу
------------
Если блок занят, то поле хозяина блока заполнено, если блок свободен, то поле = 0. Размер блока представлен в параграфах - участках по 16 байтов.
Размер MCB - 16 байтов - параграф.
Адрес начала цепочки MCB хранится в специальной переменной и может быть получен с помощью функции OS.
Свободные блоки являются основой динамического управления памятью. В любой ОС имеются примитивы:
ВЫДЕЛИТЬ_БЛОК();
ОСВОБОДИТЬ_БЛОК();