Управление памятью.

Когда мы говорим об оперативной памяти в компе, то подразумеваем 3 уровня представления памяти:
  1. в виде символьных переменных в программе,
  2. в виде адресов виртуальной памяти, которые получаются после компиляции программы,
  3. в виде физических ячеек памяти, которые собственно и содержат данные.

Задача системного программного обеспечения – связать каждое символьное имя с физической ячейкой памяти. Если символьная переменная образует пространство имен, то виртуальная и физическая память адресуются номерами ячеек памяти.
Обозначим Vv – виртуальная память, Vp – физическая память
  1. Vv < Vp  - реальный режим работы микропроцессора 8086 и ОС MS-DOS.
  2. Vv = Vp – часто встречается в миниЭВМ.
  3. Vv > Vp – это современная ОС.
Способы распределения памяти:
1. Простое непрерывное распределение
Вся память делится на 3 части:
-         Область ОС
-         Область программы
-         Свободная область памяти
В этом случае ОС не поддерживает мультизадачность => нет проблем с распределением памяти. Область памяти непрерывная, что упрощает работу компилятора. Привязка виртуальных адресов к физическим осуществляется на этапе загрузки программы.
Одна часть ОС всегда находится в памяти и называется резидентным ядром. А вторая часть может загружаться и выгружаться и называется транзитной.   
Достоинство:
-         Недорогая и легко программируемая реализация
Недостатки:
-         Однозадачный режим работы.
-         Неэффективное использование памяти.
2. Оверлейное распределение (OverLay)


Если адресное пространство программы больше, чем размер оперативной памяти, то используется распределение с перекрытием. Каждая программа имеет одну главную часть и несколько оверлейв – сегментов, которые могут перекрываться по адресному пространству. В памяти всегда находится главная часть и один или несколько оверлейев, которые не перекрываются между собой. Остальные оверлеи находятся на диске.
Когда необходимо выполнить сегмент, находящийся на диске, он загружается в ОЗУ с возможным


 перекрытием других сегментов. Такая реализация может быть выполнена либо с помощью компилятора (Borland C++3.1), либо с помощью ОС.
Достоинство:
-         увеличение полезного размера программы
Недостаток:
-         накладные расходы на загрузку и выгрузку оверлеев.

Комментариев нет:

Отправить комментарий