Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



При страничной организации виртуальное адресное пространство процесса делится механически на равные части. Это не позволяет дифференцировать способы доступа к разным частям программы (сегментам), а это свойство часто бывает очень полезным. Например, можно запретить обращаться с операциями записи и чтения в кодовый сегмент программы, а для сегмента данных разрешить только чтение. Кроме того, разбиение программы на "функционально осмысленные" части делает принципиально возможным разделение одного сегмента несколькими процессами.

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

Система с сегментной организацией функционирует аналогично системе со страничной организацией. Во время загрузки процесса система создает таблицу сегментов процесса (аналогичную таблице страниц), в которой для каждого сегмента указывается:

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

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

- права доступа;

- признак модификации;

- признак обращения к данному сегменту за последний интервал времени и т.д.

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


Рис. 5.11. Распределение памяти сегментами

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

Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g – номер сегмента, а s – смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.

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

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

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

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





Дата публикования: 2015-01-26; Прочитано: 3296 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...