Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Дескрипторы сегментов. Типы сегментов и дескрипторов. Обобщенный формат дескриптора сегмента

Читайте также:
  1. Автоматическое регулирование напряжения трансформаторами с РПН
  2. Автотрансформаторы.
  3. Александр 1: трагедия реформатора
  4. Векторные диаграммы замещенного трансформатора
  5. Выбор трансформаторов напряжения
  6. Выбор трансформаторов тока
  7. Данные холостого хода трехфазных трансформаторов
  8. Датчики на основе дифференциальных трансформаторов
  9. Двухтактные выходные каскады с трансформаторной связью
  10. Деление в ASCII-формате

49. Дескрипторные таблицы.

50. Селекторы сегментов. Формат селектора.

В рамках сегментированной модели адресации для программы память представляется группой независимых сегментов. С каждым сегментом связана особая структура, хранящая информацию о нем, называемая дескриптором. Дескриптор – это 8-байтная единица описательной информации, распознаваемая устройством управления памятью в защищенном режиме. Дескриптор обеспечивает микропроцессор данными, которые необходимы для преобразования логического адреса в линейный. Для каждого сегмента дескриптор указывает:

o базовый адрес сегмента,

o предел сегмента,

o тип сегмента,

o права доступа к сегменту.

В защищенном режиме сегменты могут начинаться с любого линейного адреса (который называется базовым адресом сегмента) и иметь любой предел до 4 Гбайт.

Обобщенный формат дескриптора сегмента:

63 56 51 48 права доступа 39 32  
Базовый адрес 31-24 G D   U Предел 19-16 P DPL S Тип A Базовый адрес 23-16  
 
Байт 8 Байт 7 Байт 6 Байт 5  
                                 
                         
Базовый адрес 15-0 Предел 15-0  
 
Байт 4 - 3 Байт 2 - 1  

Рисунок - Обобщенный формат дескриптора сегмента

В 32-разрядном микропроцессоре поле базового адреса занимает байты 3, 4, 5 и 8 формата дескриптора. В ходе выполнения команды эти байты объединяются в один 32-разрядный базовый адрес. Базовый адрес определяет местоположение сегмента в 4 Гбайтном линейном адресном пространстве.

Поле предела длиной 20 бит занимает байты 1, 2 и младшую тетраду байта 7. Предел определяет длину сегмента и задает максимальное смещение в сегменте.

В старшей тетраде седьмого байта дескриптора находятся следующие биты управления:

  • бит гранулярности (бит дробления) G. При G=0 единицей памяти в сегменте является байт (максимальный размер сегмента составляет 1 Мбайт), при G=1 – единицей памяти в сегменте является страница длиной 4 Кбайт (максимальный размер сегмента равен 4 Мбайт).
  • бит размера D. При D=0 операнды в памяти считаются 16-разрядными, D=1 – 32-разрядными.
  • бит пользователя U –поле, доступное для использования системным программистом, бит пользователя U может быть установлен или сброшен программно.

Байт с номером 6 дескриптора содержит права доступа, в частности, следующие биты управления:

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

· поле уровня привилегий сегмента DPLсодержит два бита, высшему уровню привилегии соответствует значение 0, низшему – значение 3.

· системный бит Sопределяет принадлежность сегмента: S=1 – сегмент кодов команд и данных, S=0 – системный сегмент.

· поле типа сегментазанимает три разряда и определяет тип сегмента и операции, которые в нем могут выполняться в соответствии с таблицей:

Разряды поля Тип Тип сегмента Разрешенные операции
данных только считывание
данных считывание и запись
стека только считывание
стека считывание и запись
кодов только выполнение
кодов выполнение и считывание
подчиненный сегмент кодов только выполнение
подчиненный сегмент кодов выполнение и считывание
  • бит обращения А: А=0 – к сегменту не было обращений. Если в системе реализуется обмен сегментов между оперативной и внешней памятью, то, отслеживая состояние бита обращения, операционная система может определять частоту обращения к каждому сегменту и принимать решение о выборе сегмента для удаления из памяти.

Все дескрипторы располагаются в специальных дескрипторных таблицах. Существует три вида дескрипторных таблиц:

  1. глобальная дескрипторная таблица GDT,
  2. локальная дескрипторная таблица LDT,
  3. таблица дескрипторов прерываний IDT.

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

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

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

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

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

Для работы с дескрипторными таблицами операционная система использует системные регистры защищенного режима:

GDTR – регистр глобальной дескрипторной таблицы, задает базовый адрес таблицы и ее предел,

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

IDTR – регистр таблицы дескрипторов прерываний, задает базовый адрес таблицы и ее предел.

В защищенном режиме работы микропроцессора содержимое сегментных регистров называется селекторами сегментов. Микропроцессор использует селектор сегмента для нахождения дескриптора сегмента. Формат селектора:

     
Индекс TI RPL

Рисунок - Формат селектора

Поле RPL определяет уровень привилегий, который требует задача. На самом высоком уровне привилегий (0 уровень) работает ядро операционной системы. Уровень 1 присваивается системным сервисам, управляющим ресурсами ввода-вывода, распределением памяти, планированием заданий. Уровень 2 присваивается расширениям операционной системы, уровень 3 – прикладным программам пользователя. Привилегии – это свойство, которое определяет, какие компьютерные операции разрешаются в любой момент времени и какие доступы к памяти возможны. Система защиты микропроцессора позволяет ограничить доступ к отдельным сегментам в зависимости от уровня привилегий задачи.

Разряд TI определяет в какой таблице необходимо искать дескриптор. При TI=0 поиск ведется в глобальной дескрипторной таблице, при TI=1 – в локальной дескрипторной таблице.

Селектор позволяет выбрать из таблицы дескрипторов необходимый дескриптор, номер которого указывает 13-разрядное поле «индекс». Поле «индекс» определяет смещение относительно начального адреса дескрипторной таблицы. Процессор умножает значение поля «индекс» на 8 (размер дескриптора) и добавляет полученный результат к базовому адресу таблицы дескрипторов. Полученное значение и является адресом дескриптора.

После того, как операционная система сформировала в памяти таблицы дескрипторов (GDT, LDT, IDT), выполняется их инициализация. В процессе инициализации заносится информация в регистры GDTR, LDTR, IDTR. Далее селектор загружается в один из сегментных регистров и в зависимости от разряда TI происходит обращение к глобальной или локальной дескрипторной таблице. По индексу выбирается дескриптор нужного сегмента и заносится в скрытый регистр соответствующего сегментного регистра.

Рисунок – Выбор дескриптора из таблиц GDT или LDT


<== предыдущая страница | следующая страница ==>
Работа МП в защищенном режиме. Управление памятью в защищенном режиме. Формирование адреса ячейки памяти в защищенном режиме | Преобразование адресов в защищенном режиме: сегментная организация памяти

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




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.