Сегментная организация памяти.

Идея выделять память задаче не одной сплошной областью, а фрагментами требует для своей реализации соответствующей аппаратной поддержки в виде относительной адресации. Указывается адрес начала текущего фрагмента памяти и величина смещения относительно этого начального адреса. При этом адрес состоит из 2-х частей: сегмента и смещения.
Современное СПО основывается на различных видах такой адресации памяти.
Сегментный способ организации виртуальной памяти
Исторически первый метод – разрывного распределения памяти. Для него программу необходимо разбивать на части и каждой такой части выделять физич. память. Единственный способ такого разбиения – разбиения на логические сегменты. Например каждый модуль (файл) в отдельный сегмент.

Каждый сегмент – самостоятельная единица. Обращение к сегменту производится как "имя сегмента : адрес внутри сегмента". Физически имя сегмента соответствует некоторому адресу начала сегмента в ОП.
Каждый сегмент, размещаемый в памяти, имеет соотв. информационную структуру, называемую дескриптором сегмента.
ОС строит для каждого процесса табл. дескрипторов сегмента. Если сегмент находится в ОП, то об этом делается пометка в дескрипторе (бит присутствия), иначе сегмент находится на диске. В дескрипторе имеется также поле "длина сегмента", которое позволяет проконтролировать обращение проги за пределы сегмента (нарушение адресации) и генерировать сигналы прерывания. Это делается аппаратно. Кроме этого в дескрипторе содержится информация о типе сегмента (код или данные), и виде доступа (только на чт, чт/зп, исполнение), о последнем времени исполнения для определения кандидата на свопинг и т.д. Сама таблица дескрипторов представляет собой сегмент данных.
Этот способ позволяет организовать мультипрограммный и мультизадачный режимы работы ОС, однако следует помнить, что при превышении определенного количества часто исполняющихся сегментов большого размера очень много времени начинает тратиться на свопинг. Такое явление называется "пробуксовкой".
Важнейшей проблемой сегментной организации памяти явл. защита памяти. Чтобы процессы не могли испортить ОС, необходимо, чтобы доступ к коду и данным ОС, в том числе к таблицам дескрипторов, имела только сама ОС. Проблема решается с использованием привилегированного режима работы кода ОС, который реализуется аппаратно. Каждая программа д. иметь возможность обращаться только к своим сегментам памяти.
Достоинства:
1.    возможность при загрузке программы размещать ее код не целиком, а по мере необходимости.
2.    коды некоторых программных модулей м. использоваться несколькими программами одновременно.
Недостатки:
1.    сложность организации;
2.    фрагментация хотя и уменьшается, но остается.
Примеры: MS Windows 3.1., OS/2 версии 2.0.

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

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