![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
системный пользовательский
системный сегмент кода пользовательский сегмент кода
Каждый сегмент виртуальной памяти процесса имеет описание, которое называется дескриптор сегмента. Дескриптор сегмента имеет размер 8 байт и содержит все необходимые данные для определения физического адреса и проверки прав доступа.
31 15 0
Базовый адрес сегмента – база 1 | Размер сегмента | ||||||
Базовый адрес сегмента – база 3 | G | D | O | U | Размер сегмента | Байт доступа AR | Базовый адрес сегмента – база 2 |
Базовый адрес сегмента состоит из трех частей, занимает 32 бита, сложилось исторически и связано с обеспечением совместимости с предыдущими процессора семейства х86. Содержит физический адрес сегмента в ОП, записывается при загрузке сегмента в ОП.
Размер сегмента состоит из двух частей и занимает 24 бита.
Бит G (granularity) - определяет единицы измерения сегмента,
= 0 - размер задан в байтах, тогда сегмент не может быть больше 64 кбайт;
= 1 - размер задан в страницах по 4 кбайта
бит D - бит разрядности, =1 – 32=х разрядные адреса, = 0 – 16-ти разрядные адреса
бит О - не используется
бит U - используются по усмотрению программиста
байт доступа AR определяет права доступа к данному сегменту, то есть определяет можно ли обращаться к данному сегменту и какие действия можно выполнять.
7 5 – 6 4 3 2 1 0
P | DPL | S | I | C | R / W | A |
Бит A – определяет было ли обращение к данному сегменту;
= 1, если было обращение к сегменту;
= 0, если не было
бит R / W - определяет действие которое можно выполнять с сегментом
для сегмента кода = 1 – чтение (выполнение) разрешено, = 0 – не разрешено
для сегмента данных = 1 – запись разрешена, = 0 – запись запрещена
бит С – бит подчиненности, = 0 – обычный сегмент (весь целиком),
= 1 – подчиненный (часть большого сегмента)
бит I - предназначения, 0 – сегмент данных, 1 – кода
бит S – бит сегмента, 0 – системный сегмент, 1 – пользовательский
бит DPL – определяет уровень привилегии,
бит P – бит присутствия, 0 – сегмент выгружен на диск, = 1 – сегмент в ОП
Дескрипторы сегментов объединены в таблицы.
Для управления памятью поддерживается два типа таблиц дескрипторов
Глобальная таблица дескрипторов (GDT) – содержит описание (дескрипторы) системных сегментов ОС и общих сегментов для всех прикладных процессов, а так же адреса всех локальных таблиц дескрипторов;
Локальная таблица дескрипторов (LDT) - содержит дескрипторы сегментов конкретного пользовательского процесса.
Глобальная таблица – одна, она описывает общую часть виртуального адресного пространства всех процессов. Локальных таблиц столько сколько в данный момент выполняется процессов. В определенный момент времени ОС используется только одна из локальных таблиц, а именно та, которая соответствует выполняемому (активному) пользовательскому процессу. Таблицы GDT и LDT размещены в оперативной памяти в виде отдельных сегментов.
Адреса таблиц хранятся в специальных регистрах GDTR и LDTR.
Таблица LDT |
Дескриптор сегмента 1 |
Дескриптор сегмента 2 |
Дескриптор сегмента N |
Дата публикования: 2014-12-08; Прочитано: 538 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!