русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Сегментация


Дата добавления: 2014-11-28; просмотров: 1223; Нарушение авторских прав


Значение виртуальной памяти

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

Такая организация имеет ряд преимуществ по сравнению с несегментированным адресным пространством.

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

2. Программы могут изменяться и перекомпилироваться независимо от компиляции или компоновки всего множества программ (что осуществляется при использовании множественных сегментов).

3. Упрощается совместное использование кода и данных разными процессами. Программист может поместить код утилиты или необходимые данные в отдельный сегмент, к которому будут обращаться другие процессы.

4. Улучшается защита. Так как сегмент представляет собой точно определенные множества программ или данных, программист или системный адми­нистратор могут назначать права доступа просто и удобно.

Организация

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



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

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

Комбинация сегментации и страничной организации

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

В такой комбинированной системе адресное пространство пользователя раз­бивается на ряд сегментов по усмотрению программиста. Каждый сегмент в свою очередь разбивается на ряд страниц фиксированного размера, соответствующего размеру кадра основной памяти. Если размер сегмента меньше размера страни­цы, он занимает страницу целиком. С точки зрения программиста, логический адрес в этом случае состоит из номера сегмента и смещения в нем. С позиции операционной системы смещение в сегменте следует рассматривать как номер страницы определенного сегмента и смещение в ней.

 

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

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

 

 

Защита и совместное использование

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

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

Программа может получить доступ только к данным, расположенным в том же или менее привилегированном кольце.

2. Программа может вызвать сервис из того же или более привилегированного кольца.

 



<== предыдущая лекция | следующая лекция ==>
Размер страницы | Программное обеспечение операционной системы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.167 сек.