Управление основной (оперативной) памятью. Стратегии выборки и размещения блоков памяти. Связное и несвязное распределение памяти. Защита памяти.


Организация и управление памятью. Оперативная:
  • Под организацией понимается:
1) сколько приложений одновременно будут запущены. 2) как память записывается и перезаписывается. 3) обязательно ли требование непрерывности. 4) как память распределяется между процессами, можно ли перемещать программы в памяти (защита памяти), можно ли дробить, можно ли организовать временное перемещение из ОП на жесткий диск и обратно (свопинг).
  • Под управлением понимается:
распределение и перераспределение памяти между клиентами (процессами).   привязка к физическим адресам (как и когда выполняется).

Привязка:

1)    linkна этапе компоновки (жесткая): такую программу в памяти нельзя перемещать, самый менее гибкий способ, применяется при программировании контроллеров.

2)    load на этапе загрузки (все переходы, все вызовы относительны).

3)    execute – во время выполнения (есть возможность перераспределять, перемещать ресурсы).

По методам организации вся память делится на реальную и виртуальную.

Стратегии управления оперативной памятью: выборки (Когда?), размещения (Куда?), замещения (На чье место).
  1. Стратегия выборки (Когда?) – когда следует втолкнуть очередной блок программ или данных в оперативную память:
а)     выборка по запросу – как потребовались данные: просто, но прерывается процесс. б)    с упреждением – основана на прогнозировании работы процесса, так как программа имеет локальный характер:
  • в пространстве – данные лежат наверняка рядом;
  • во времени – в ближайшее время к этой ячейке скорее всего обратимся;
  1. Стратегия размещения (Куда?) – определяет в какой (куда) из свободных блоков памяти разместить загружаемый блок:
а)     выбрать первый случайный, подходящий по размеру свободный блок; б)    выбрать наиболее подходящий – это меньший подходящий; в)     выбрать наименее подходящий – больший блок (скорее всего останется после этого довольно большой свободный блок).
  1. Стратегия замещения (На чье место?) – определяет какой блок надо выгрузить из оперативной памяти, чтобы освободить требуемый объем памяти.
  • Однозадачные системы:
Защита: для защиты нужно, чтобы прикладная программа не вторгалась в область ОС. Решение: вводится граничный регистр (RG­гр). ? Вопрос: как выполнить программу 1 (например), которая больше доступной памяти. ! Ответ: загружать программу частями – Overlay (в общем случае это наложение чего-либо на что-либо). Если есть необходимость создать программу, логическое адресное пространство которой должно быть больше, чем свободная область памяти, или даже больше, чем весь возможный объем оперативной памяти, то используется распределение с перекрытием — так называемые оверлейные структуры (от overlay — перекрытие, расположение поверх чего-то). Этот метод распределения предполагает, что вся программа может быть разбита на части — сегменты. Каждая оверлейная программа имеет одну главную (main) часть и несколько сегментов (segments), причем в памяти машины одновременно могут находиться только ее главная часть и один или несколько не перекрывающихся сегментов.

Overlay модуль: в нем находятся функции, которые не используются или используются редко.

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