Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Дескрипторы сегментов. Типы сегментов и дескрипторов. Обобщенный формат дескриптора сегмента49. Дескрипторные таблицы. 50. Селекторы сегментов. Формат селектора. В рамках сегментированной модели адресации для программы память представляется группой независимых сегментов. С каждым сегментом связана особая структура, хранящая информацию о нем, называемая дескриптором. Дескриптор – это 8-байтная единица описательной информации, распознаваемая устройством управления памятью в защищенном режиме. Дескриптор обеспечивает микропроцессор данными, которые необходимы для преобразования логического адреса в линейный. Для каждого сегмента дескриптор указывает: o базовый адрес сегмента, o предел сегмента, o тип сегмента, o права доступа к сегменту. В защищенном режиме сегменты могут начинаться с любого линейного адреса (который называется базовым адресом сегмента) и иметь любой предел до 4 Гбайт. Обобщенный формат дескриптора сегмента:
Рисунок - Обобщенный формат дескриптора сегмента В 32-разрядном микропроцессоре поле базового адреса занимает байты 3, 4, 5 и 8 формата дескриптора. В ходе выполнения команды эти байты объединяются в один 32-разрядный базовый адрес. Базовый адрес определяет местоположение сегмента в 4 Гбайтном линейном адресном пространстве. Поле предела длиной 20 бит занимает байты 1, 2 и младшую тетраду байта 7. Предел определяет длину сегмента и задает максимальное смещение в сегменте. В старшей тетраде седьмого байта дескриптора находятся следующие биты управления:
Байт с номером 6 дескриптора содержит права доступа, в частности, следующие биты управления: · бит присутствия P сегмента в оперативной памяти: P=1 – сегмент находится в оперативной памяти. В режиме виртуальной памяти операционная система может передавать содержимое некоторых сегментов на жесткий диск, при этом она сбрасывает бит P в ноль в дескрипторе этого сегмента. Если программа после этого снова обращается к сегменту, возникает исключение отсутствия сегмента. Операционная система ищет свободную область физической памяти (при этом, возможно, отправляет на диск некоторый другой сегмент), копирует содержимое запрошенного сегмента из диска в память, записывает в его дескриптор новый базовый адрес и осуществляет перезапуск команды, которая вызвала исключение отсутствия сегмента. Описанный процесс называется свопингом или подкачкой. · поле уровня привилегий сегмента DPLсодержит два бита, высшему уровню привилегии соответствует значение 0, низшему – значение 3. · системный бит Sопределяет принадлежность сегмента: S=1 – сегмент кодов команд и данных, S=0 – системный сегмент. · поле типа сегментазанимает три разряда и определяет тип сегмента и операции, которые в нем могут выполняться в соответствии с таблицей:
Все дескрипторы располагаются в специальных дескрипторных таблицах. Существует три вида дескрипторных таблиц:
Дескрипторные таблицы резидентно находятся в памяти. Эти таблицы создаются и заполняются до переключения в защищенный режим работы микропроцессора, они содержат описания используемых программой сегментов памяти. Дескрипторная таблица может иметь размер от 8 байт до 64 Кбайт. Глобальная дескрипторная таблица единственная. Она содержит дескрипторы для всех задач, выполняемых микропроцессором в многозадачном режиме. В глобальной дескрипторной таблице перечисляются сегменты, к которым могут обращаться все системные задачи с учетом ограничений только по уровням привилегий. В локальной дескрипторной таблице указаны сегменты, которые предоставляются только одной конкретной задаче. Для однозадачных систем локальная дескрипторная таблица может отсутствовать (вся информация содержится в глобальной дескрипторной таблице). При необходимости локальные дескрипторные таблицы создаются по одной для каждой задачи. Независимо от уровня привилегии программа не может обращаться к сегменту до тех пор, пока он не описан в дескрипторной таблице. Для доступности какого-либо сегмента задаче его дескриптор должен присутствовать либо в текущей локальной дескрипторной таблице, либо в глобальной дескрипторной таблице. Такой механизм защищает сегменты конкретной задачи и в тоже время позволяет иметь глобальные данные, которые разделяются между всеми задачами. Таблица дескрипторов прерываний применяется только при генерации прерываний и исключений. Дескрипторная таблица прерываний содержит вектора прерываний, которые указывают адреса программ обработки прерываний. Для работы с дескрипторными таблицами операционная система использует системные регистры защищенного режима: GDTR – регистр глобальной дескрипторной таблицы, задает базовый адрес таблицы и ее предел, LDTR – регистр локальной дескрипторной таблицы, являющийся селектором, содержимое которого определяет местонахождение информации о локальной дескрипторной таблице (начальный адрес, предел, права доступа) в глобальной дескрипторной таблице, IDTR – регистр таблицы дескрипторов прерываний, задает базовый адрес таблицы и ее предел. В защищенном режиме работы микропроцессора содержимое сегментных регистров называется селекторами сегментов. Микропроцессор использует селектор сегмента для нахождения дескриптора сегмента. Формат селектора:
Рисунок - Формат селектора Поле 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; Нарушение авторских прав Мы поможем в написании ваших работ! |