Статическое и динамическое распределение памяти. Распределение памяти фиксированными разделами
Дальнейшим развитием оверлейных структур является распределение памяти динамическими разделами. Каждая программа занимает столько места, сколько она требует. Если программе не хватило памяти, то оставшаяся её часть хранится на диске. Эта часть вызывается по мере необходимости. Для организации динамического распределение используют процедуру свопинга (подкачка или откачка программ). Откачка используется в тех случаях, когда выпавшая из обработки часть программы перемещается на диск. При таком способе организации памяти так же возможна фрагментация памяти.
Физическая память содержит:
Для устранения недостатков используют перемещаемые динамические объекты. Программа перемещается в память младших или старших адресов, оставляя значительное адресное пространство для вновь поступивших программ.
Перемещение программ требует перекомпиляции, выполнение второго прохода компилятора, где происходит присвоение адресов, это очень долгая процедура. Была предложена относительная адресация: каждому сегменту памяти присваивается базовый адрес, в дальнейшем осуществляется смещение. Базовые адреса, присваиваются операционной системой, они изменяются при перемещении программ. Однако внутри программы адресация остаётся прежней.
Позволяет избавиться от фрагментации памяти, которая становится практически равной нулю. Вся память делится на страницы небольшого фиксированного объёма, который составляет 2-4 Кб. Виртуальный адрес при страничной организации имеет следующий вид:
Конкатенация – объединение полей. Поля n и p используются для извлечения адреса из страничной таблицы. Страничная таблица формируется операционной системой в процессе распределения памяти между задачами. Она преобразуется каждый раз, когда в распределение памяти вносятся изменения. Страничная таблица включает в себя, как минимум, тип памяти. Процедура преобразования виртуальных адресов в физические может быть представлена следующим образом:
В физической памяти из страницы могут распределяться по любым адресам. Недостаток: страничная таблица занимает большой объём памяти.
Логической структуре программы больше соответствует сегментовая организация памяти. Вычислительный процесс будет продолжаться долго при страничной обработке, будет частое переключение между сегментами, возможно что частота обращения к внешней памяти будет выше. Пропускная способность ОП 3 Гб в секунду, скорость обращения к диску 40 Мб в секунду при частоте 800 МГц.