Организация и управление памятью.
Оперативная:
- Под организацией понимается:
1) сколько приложений одновременно будут запущены.
2) как память записывается и перезаписывается.
3) обязательно ли требование непрерывности.
4) как память распределяется между процессами, можно ли перемещать программы в памяти (защита памяти), можно ли дробить, можно ли организовать временное перемещение из ОП на жесткий диск и обратно (свопинг).
- Под управлением понимается:
распределение и перераспределение памяти между клиентами (процессами).
привязка к физическим адресам (как и когда выполняется).
Привязка:
1) link – на этапе компоновки (жесткая): такую программу в памяти нельзя перемещать, самый менее гибкий способ, применяется при программировании контроллеров.
2) load – на этапе загрузки (все переходы, все вызовы относительны).
3) execute – во время выполнения (есть возможность перераспределять, перемещать ресурсы).
По методам организации вся память делится на реальную и виртуальную.
Стратегии управления оперативной памятью: выборки (Когда?), размещения (Куда?), замещения (На чье место).
- Стратегия выборки (Когда?) – когда следует втолкнуть очередной блок программ или данных в оперативную память:
а) выборка по запросу – как потребовались данные: просто, но прерывается процесс.
б) с упреждением – основана на прогнозировании работы процесса, так как программа имеет локальный характер:
- в пространстве – данные лежат наверняка рядом;
- во времени – в ближайшее время к этой ячейке скорее всего обратимся;
- Стратегия размещения (Куда?) – определяет в какой (куда) из свободных блоков памяти разместить загружаемый блок:
а) выбрать первый случайный, подходящий по размеру свободный блок;
б) выбрать наиболее подходящий – это меньший подходящий;
в) выбрать наименее подходящий – больший блок (скорее всего останется после этого довольно большой свободный блок).
- Стратегия замещения (На чье место?) – определяет какой блок надо выгрузить из оперативной памяти, чтобы освободить требуемый объем памяти.
Защита: для защиты нужно, чтобы прикладная программа не вторгалась в область ОС.
Решение: вводится
граничный регистр (RG
гр).
? Вопрос: как выполнить программу 1 (например), которая больше доступной памяти.
! Ответ: загружать программу частями –
Overlay (в общем случае это наложение чего-либо на что-либо).
Если есть необходимость создать программу, логическое адресное пространство которой должно быть больше, чем свободная область памяти, или даже больше, чем весь возможный объем оперативной памяти, то используется
распределение с перекрытием — так называемые
оверлейные структуры (от overlay — перекрытие, расположение поверх чего-то). Этот метод распределения предполагает, что вся программа может быть разбита на части — сегменты. Каждая оверлейная программа имеет одну главную (main) часть и несколько сегментов (segments), причем в памяти машины одновременно могут находиться только ее главная часть и один или несколько не перекрывающихся сегментов.
Overlay модуль: в нем находятся функции, которые не используются или используются редко.
¨ Фиксированные разделы:
Раздел – это место в памяти для размещения процесса.
Защита: нужно только два граничных регистра (верхней и нижней границы), т.к. хотя система и многозадачная, но в каждый момент выполняется только одна задача!!
Пример: загрузили процесс, он занял место, причем место еще осталось, но занять его никто не может, т.к. оно фиксировано à появляется
внутренняя фрагментация.
¨ Переменные разделы:
Программа размещается в памяти одним большим куском.
Защита: также два граничных регистра.
Недостаток: внешняя фрагментация - в результате многократного выделения и освобождения разделов появляются места (разделы), которые могут заполнить только процессы, способные туда войти (т.е. такого же объема или меньшего).
Хранение программы по частям.
Защиту в этом случае организовать сложнее.
- Ø Свопинг (реальной памяти, не путать со свопингом виртуальной):
Своп – перемещать (из основной памяти на жесткий диск и обратно).
Системы со свопингом:
1. Стратегии загрузки или стратегии выборки (когда). fetch – загрузка, выборка.
а) по требованию, по запросу исполняемой программы.
Недостаток: потеря времени на ожидание подгрузки данных.
б) упреждающая загрузка. По свойству временной и пространственной локальности.
2. Стратегии размещения (куда)
а) случайное размещение (первый подходящий блок) – First Fit.
б) наилучший подходящий – Best Fit.
в) наиболее большой блок – Worst Fit.
3. Стратегии замещения (на какое место), ищем кандидата на перемещение блока на жесткий диск.
Распределение памяти:
- Связное распределение. Каждая программа занимает один непрерывный участок памяти, дробление недопустимо (DOS).
- Несвязное распределение памяти. Программа может быть разбита на ряд сегментов, которые могут находится в различных местах памяти. Наиболее известный способ несвязного распределения – страничная виртуальная память.
Защита памяти.
Цель защиты – обеспечение не искажения участков памяти, принадлежащих данному процессу.
Защита обеспечивается с помощью ОС и аппаратуры МП. В МП есть два регистра – верхний и нижний граничные регистры, хранящие автоматически старший и младший адрес текущего процесса.
При несвязном размещении каждый процесс должен обладать несколькими парами регистров. Если размещение сегментное, используют 2 граничных регистра, если страничное – страница фиксированная – указывается № доступных страниц.