Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
26
Добавлен:
17.04.2013
Размер:
194.56 Кб
Скачать

Динамическая загрузка и защита адресного пространства программ

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

Заметим, что в этом случае после загрузки программы в память она не может быть перемещена в другое место. Программе доступны любые адреса памяти, в том числе в адресных пространствах других программ, находящихся в памяти.

Одно из первых решений проблемы защиты адресных пространств (IBM 360)состояло в следующем. Разделы памяти состояли из последовательности блоков размером 2К. Каждому блоку присваивался 4-х битовый ключ защиты, всем блокам раздела присваивался одинаковый ключ защиты. Ключ защиты активной программы хранился в слове состояния процессора (ССП) и изменялся при переключении управления на другую программу. При каждом обращении к памяти процессор сравнивал значение ключа из ССП с ключом блока памяти и, если они не совпадали, генерировалось прерывание по нарушению защиты памяти. Изменение ключа защиты в ССП осуществлялось специальными командами в привилегированном режиме работы процессора.

Позднее проблему загрузки с произвольного адреса и защиту адресного пространства стали решать на основе двух специальных регистрах процессора: регистра базы и регистра ограничителя. Программа транслировалась относительно нулевого адреса. В процессе загрузки программы в регистр базы записывался адрес загрузки, а в регистр ограничитель размер раздела. При формировании исполнительного адреса процессор к относительному адресу программы добавлял значение регистра базы, одновременно осуществлялось сравнение относительного адреса со значением регистра ограничителя и генерировалось прерывание, если адрес превышал значение регистра ограничителя. Загрузка регистров базы и ограничителя выполнялась в привилегированном режиме.

Способы учета свободного пространства

Битовая карта памяти.В этом случае фиксируется минимальный размер распределяемого блока памяти. Вся память считается разбитой на блоки минимального размера и каждому блоку ставится в соответствие бит карты памяти (1 – занят, 0 - свободен). Таким образом карта памяти имеет фиксированный размер и однозначно определяет положение свободных участков.

Преимущества:

  • простота реализации;

  • автоматическое объединение соседних освобождаемых участков.

Недостатки:

  • необходимо резервировать место для битовой карты;

  • размер битовой карты должен пересчитываться при изменении размера памяти.

Список свободных участков. Элемент списка содержит размер участка и адрес следующего свободного участка. Элемент списка размещается в начале свободного участка. Ограничение – минимальный размер распределяемой области памяти должен быть не меньше элемента списка свободных участков.

Преимущества:

  • не требует дополнительного места для хранения информации о свободных участках.

Недостатки:

  • при освобождении участка необходимо объединять соседние свободные.

Соседние файлы в папке вар1