Сегментно-страничный способ организации виртуальной памяти

Как и в сегментном способе распределения памяти, программа разбивается на логически законченные части — сегменты — и виртуальный адрес содержит ука­зание на номер соответствующего сегмента. Вторая составляющая виртуаль­ного адреса — смещение относительно начала сегмента — в свою очередь мо­жет быть представлено состоящим из двух полей: виртуальной страницы и индекса. Другими словами, получается, что виртуальный адрес теперь состоит из трех компонентов: сегмента, страницы и индекса. Получение физического адреса и извлечение из памяти необходимого элемента для этого способа ил­люстрирует рис. 3.6.

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


98_____________________ Глава 3. Управление памятью в операционных системах

Рис. 3.6. Сегментно-страничный способ организации виртуальной памяти

Напомним, что принцип действия ассоциативного запоминающего устройства предполагает, что каждой ячейке памяти такого устройства ставится в соответ-


Контрольные вопросы и задачи__________________________________________ 99

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

Оценим достоинства сегментно-страничного способа. Разбиение программы на сегменты позволяет размещать сегменты в памяти целиком. Сегменты разбиты на страницы, все страницы сегмента загружаются в память. Это позволяет сократить число обращений к отсутствующим страницам, поскольку вероятность выхода за пределы сегмента меньше вероятности выхода за пределы страницы. Страницы исполняемого сегмента находятся в памяти, но при этом они могут находиться не рядом друг с другом, а «россыпью», поскольку диспетчер памяти манипулирует страницами. Наличие сегментов облегчает разделение программных модулей меж­ду параллельными процессами. Возможна и динамическая компоновка задачи. А выделение памяти страницами позволяет минимизировать фрагментацию. Однако поскольку этот способ распределения памяти требует очень значитель­ных затрат вычислительных ресурсов и его не так просто реализовать, использует­ся он редко, причем в дорогих мощных вычислительных системах. Возможность реализовать сегментно-страничное распределение памяти заложена и в семейство микропроцессоров i80x86, однако вследствие слабой аппаратной поддержки, труд­ностей при создании систем программирования и операционной системы практи­чески в персональных компьютерах эта возможность не используется.

Контрольные вопросы и задачи

1. Что такое «виртуальный адрес», «виртуальное адресное пространство»? Чем
(в общем случае) определяется максимально возможный объем виртуального
адресного пространства программы?

2. Имеются ли виртуальные адреса в программах, написанных для работы в среде
DOS? Приведите примеры абсолютной двоичной программы для таких опера­
ционных систем, как MS DOS и Windows NT/2000/XP.

3. Изложите способ распределения памяти в MS DOS.

4. Что дает использование оверлеев при разработке DOS-приложений?

5. Объясните и сравните алгоритмы «первый подходящий», «самый подходящий»
и «самый неподходящий», используемые при поиске и выделении фрагмента
памяти.


100____________________ Глава 3. Управление памятью в операционных системах

6. Что такое «фрагментация памяти»? Какой метод распределения памяти по­
зволяет добиться минимальной фрагментации и почему?

7. Что такое «уплотнение памяти»? Когда оно применяется?

8. Объясните сегментный способ организации виртуальной памяти. Что пред­
ставляет собой (в общем случае) дескриптор сегмента?

9. Что представляет собой динамическое присоединение программ? Что оно дает?

 

10. Сравните сегментный и страничный способы организации виртуальной па­
мяти. Перечислите достоинства и недостатки каждого.

11. Какие дисциплины применяются для решения задачи замещения страниц?
Какие из них являются наиболее эффективными и как они реализуются?

12. Что такое «рабочее множество»? Что позволяет разрешить реализация этого
понятия?

13. В каких случаях возникает «пробуксовка»? Почему системы Windows NT/
2000/ХР требуют для своей нормальной работы существенно большего объ­
ема оперативной памяти?









Дата добавления: 2016-09-20; просмотров: 1477;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.