В. Столлингс - Операционные системы (1114679), страница 76
Текст из файла (страница 76)
а диск (в этом случае увеличенный сегмент будет загружен вноа ервой возможности). .Рограммы могут изменяться и перекомпилироваться независимо иляции или компоновки всего множества программ (что осущ ри использовании множественных сегментов). прощается совместное использование кода и данных разными про .Рограммист может поместить код утилиты или необходимые дан зльный сегмент, к которому будут обращаться другие процессы. .г лучшается защита. Так как сегмент представляет собой точно опт, ые множества программ или данных, программист или системный" истратор могут назначать права доступа просто и удобно.
~рганизация Ри рассмотрении простой сегментации мы отмечали, что ка ~меет собственную таблицу сегментов, и при загрузке всех сег:. Часть 3., ,Роцесса в основную память создается таблица сегментов процесса, котор также загру-кается в основную память. В каждой записи таблицы сегмент указан начальный адрес соответствующего сегмента в основной памяти и е длина. Та же таблица сегментов нужна и при схеме виртуальной памяти, о кованной на сегментации.
Типичным приемом является использование о дельной таблицы сегментов для каждого процесса. Записи таблицы сегме тоэ в этом случае усложняются (рис. 8.2,6). Поскольку в основной памя могут находится не все сегменты процесса, в каждой записи требуется нал чпе бита присутствия, указывающего, располагается ли данный сегмент основной памяти. Если сегмент расположен в основной памяти, то запись включает его начальный адрес и длину. Еше один бит, необходимый в данной схеме, — бит модификации, указывшоший, было ли изменено содержимое сегмента со времени его последней загрузки в основную память.
Если изменений не было, то при выгрузке сегмента нет необходимости в его записи на диск. Могут иметься и другие управляющие биты, например при организации защиты или совместного использования на уровне сегментов. Основной механизм чтения слова из памяти включает преобразование виртуального, или логического, адреса, состоящего из номера сегмента и смешения, в физический адрес с использованием таблицы сегментов. Поскольку таблица сегментов имеет переменную длину, зависящую от размера процесса, мы не можем рассчитывать на ее хранение в регистрах,~и для хранения таблицы сегментов используется основная память.
На рис. 8.12 предложена аппаратная реализация описываемой схемы. Когда запускается определенный процесс, в регистре хранится стартовый адрес его таблицы сегментов. Номер сегмента из виртуального адреса используется в качестве индекса таблицы, позволяющего определить начальный адрес сегмента.
Для получения Физического адреса к начальному адресу сегмента добавляется смещение из виртуального адреса. Комбинация сегментации и страничной организации И страничная организация, и сегментация имеют свои достоинства. Страничная организация, прозрачная для программиста, устраняет внешнюю фрагментацию и таким образом обеспечивает эффективное использование основной памяти. Кроме того.
поскольку перемещаемые в основную память и из нее блоки имеют Фиксированный, одинаковый размер, облегчается создание эффективных алгоритмов управления памятью. Сегментация, являясь видимой для программиста, имеет перечисленные в пРедыдущем разделе, достоинства, включающие модульность, возможность обработки растущих структур данных, а также поддержку совместного использова"на и защиты памяти.
Некоторые вычислительные системы, будучи оснащены соответствующим аппаратным обеспечением и операционной системой, используют достоинства обоих методов. В такой комбинированной системе адресное пространство пользователя раз- зае'ся на ряд сегментов по усмотрению программиста. Каждый сегмент в свою оче .Р-дь разбивается на ряд страниц фиксированного размера, соответствующего' разме меру кадра основной памяти. Если размер сегмента меньше размера страни- он он занимает страницу целиком.
С точки зрения программиста, логический дрес в этом случае состоит из номера сегмента и смещения в нем. С позиции опер~ Рационной'системы смещение в сегменте следует рассматривать как номер ~~ран Раницы определенного сегмента и смещение в ней. '~цааа 8. Виртуальная память В Таблица сегментов Начальный адрес + о я' аблица сегментов Смешение — а ,нта В Регистр В В В В В В Начальнми Длина В Рис. 8.18 Механизм сегментации Программа Часть 3.
. Трансляция адреса в сиспгеяе с сег.иенгпацией ' ''Ф", На рис. 8.13 предложена структура для поддержки комбинации се В страничной организации. С каждым процессом связана одна таблица":, тв и несколько (по одной на сегмент) таблиц страниц. При работе >го процесса в регистре процессора хранится начальный адрес с (ей таблицы сегментов. Получив виртуальный адрес, процессор испол ". асть, представляющую номер сегмента, в качестве индекса в таб «в для поиска таблицы страниц данного сегмента.
После этого часть тавляющая собой номер страницы, используется для поиска соот кадра основной памяти в таблице страниц; затем часть адреса, и ~ая смещение, используется для получения искомого физического а добавления к начальному адресу кадра. На рис. 8.2,в предложены форматы записей таблицы сегментов и т,.
границ. Как и ранее, запись таблицы сегментов содержит значениФ';, егмента, а также поле с начальным адресом сегмента, которо ое т, ивает на таблицу страниц. Биты присутствия и модификации ии вз,. Вцы сегментов в данном случае не нужны, так как эти вопросы р Ф еФ г УРовне страниц.
Использование других управляющих битов м итов может... :аться, например в упомянутых ранее целях совместного испо использо цпты. Запись таблицы страниц — по сути та же, что и испол СПОЛЬЗОВаягв(.. 'ме с "чистой'* страничной организацией. При наличии стран ц аницы, ой памяти (на что указывает бит присутствия) ее номер отобр б ажае;, р соответствующего кадра; бит модификации указывает, тре у т еб е запись страницы на диск при ее выгрузке из памяти. Как и ра - и анее, яьзоваться и другие управляющие биты.
$ В Биртуальнмй адрес ° В „Смегцение омер Смегцение ° сегмента границы В В Таблица ° сегментоа В Ухазатель В на таблицу сегментов Таблица страниц в ° Ю и В В В 4 В В Механизм сегментации Механизм В страничной организации В Рис. 8.18. Трансляция адреса при совместном использовании сегментации и странич- ной орго н и зации Защита и совместное использование 1. П Программа может получить доступ только к данным, расположенным в том же или менее привилегированном кольце.
2. П Программа может вызвать сервис из того же или более привилегированного кольца. чгааа 8. Виртуальная память Сегментация вполне пригодна для реализации стратегии защиты и совместного использования. Поскольку каждая запись таблицы сегментов включает начальный адрес и значение длины, программа не в состоянии непреднамеренно обратиться к основной памяти за границами сегмента. Для осуществления совместного использования ссылки на один и тот же сегмент могут быть в таблицах сегментов нескольких процессов. Тот же механизм, естественно, осуществим и на Уровне страниц.
Однако в случае использования страниц они невидимы для программиста и делают определение правил защиты и совместного использования неудобным.-На рис. 8.14 показаны типы защиты, которые могут быть реализованы в такой системе. Можно обеспечить и болЬе интеллектуальный механизм защиты.
Обычная схема использует кольцевую структуру защиты, с которой мы встречались в задаче 3.6. ~ этой схеме внутренние кольца (с меньшими номерами) имеют большие привилегии по с о сравнению с внешними кольцами. Обычно кольцо 0 зарезервировано для функций ядра операционной системы, а приложения находятся во внешнем кольце. Не- кото Основ торые Утилиты или опэрапионнзя система могут занимать промежуточные кольца. возными принципами системы колец являются следующие. Рис. 8.14. Отнощения защити между сегментами ~, ПРОГРАММНОЕ ОБЕСПЕЧБНИГ.':,";::, ,.
- ОПЕРАЦИОННОЙ СИСТБМЫ -:-""'.",::;- '":.;:-'-'=':~ ' Особенности разработки части программного обеспечения опе .'мы„управляющей памятью, зависят от ответа на три основных вопр Будет ли использоваться виртуальная память. Будет ли использоваться сегментация, страничная адресация или заннь1е технологии. Какие алгоритмы будут использованы для различных аспектов у памятью.