Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Os_Otvety.docx
Скачиваний:
153
Добавлен:
01.04.2022
Размер:
32.58 Mб
Скачать

35. Сегментное распределение памяти.

Механизм виртуальной памяти.

Страничная организация виртуального адресного пространства не позволяет дифференцировать способы доступа к разным частям программы (сегментам), а это часто бывает очень полезным. При сегментном способе организации памяти виртуальное адресное пространство процесса делится на участки произвольного размера с учетом смыслового значения хранящейся в них информации. Сегменты разного размера. Они отображаются на разные участки физической памяти. У каждого процесса своя таблица сегментов, где хранится нужная информация для того, чтобы отыскать сегмент в оперативной памяти. Задача операционной системы - отображать виртуальные адресные пространства на физическую память. В таблице сегментов каждому сегменту соответствует свой дескриптор.

Формат дескриптора сегмента:

  • размер сегмента

  • права доступа

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

  • признаки модификации, присутствия, обращения к данному сегменту

Единицей обмена информацией между диском и оперативной памятью является сегмент. Отдельный сегмент может представлять собой подпрограмму, массив данных и т.п.

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

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

Система с сегментной организацией функционирует аналогично системе со страничной организацией: время от времени происходят прерывания, связанные с отсутствием нужных сегментов в памяти, при необходимости освобождения памяти некоторые сегменты выгружаются, при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический (тут проверяется, есть ли вообще такой сегмент в оперативной памяти, при его отсутствии возникает прерывание и он должен быть подгружен с диска. Также выполняется проверка, не превосходит ли смещение размер сегмента. Если это так, то процесс получает доступ к чужим адресам, а это неправильно). Кроме того, при обращении к памяти проверяется, разрешен ли доступ требуемого типа к данному сегменту. Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g - номер сегмента (определяет сегмент, к которому обращаемся), а s - смещение в сегменте (количество байт от начала сегмента до того байта, к которому выполняется обращение). Физический адрес получается путем арифметического сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.

  • Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.

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

(розовым обозначен дескриптор)