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

Виртуальное адресное пространство процесса делится на части - сегменты, размер которых определяется с учетом смыслового значения содержащейся в них информации. Максимальный размер сегмента определяется разрядностью виртуального адреса, например при 32-разрядной организации процесса он равен 4 Гбайт. При этом максимально возможное виртуальное пространство процесса представляет собой набор из N виртуальных сегментов, каждый размером по 4 Гбайта. Виртуальный адрес задается номером сегмента и линейным виртуальным адресом внутри сегмента.

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

При отсутствии в памяти места, необходимого для загрузки сегмента, ОС выбирает сегмент на выгрузку. На этапе создания процесса во время загрузки его образа в ОП система создает таблицу сегментов процесса, в которой для каждого сегмента указывается:

– базовый физический адрес сегмента в ОП;

– размер сегмента;

– правила доступа к сегменту;

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: