Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4семестр / Методичка лр_№5.doc
Скачиваний:
19
Добавлен:
30.04.2013
Размер:
501.76 Кб
Скачать

000000000000 | Gdt[index[130], [5148]] |gdt[index[130], [150]]

- если бит гранулярности установлен (1), то размер сегмента указывается в 4Кб страницах, и к прочитанному 20-битному значению дописываются 12 нулей справа, чтобы всё 20-битное значение увеличилось в 4Кб = 212раз и стало 32 разряда:

SDC.LIMIT[310] =

GDT[INDEX[130], [5148]] | GDT[INDEX[130], [150]] | 000000000000

Поля атрибутов сегмента копируются в SDCиз строки таблицы дескрипторов поразрядно.

Попытка обращения к памяти по нулевому селектору, или при попытке загрузки нулевого селектора в регистр CS[0:15] или SS[0:15], или при ссылке на дескриптор, выходящий за рамки таблицы дескрипторов вызовет исключение#GP.

  1. Порядок выполнения работы

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

  1. Вопросы для самопроверки (защиты л/р)

  1. Структура и количество сегментных регистров процессора.

Существуют следующие регистры сегментов:

  • CS[0÷15] (CodeSegment– регистр сегмента кодов команд),

  • SS[0÷15] (StackSegment– регистр сегмента стека),

  • DS[0÷15] (DataSegment– регистр сегмента данных),

  • ES[0÷15],FS[0÷15],GS[0÷15]– регистры дополнительных сегментов данных.

Регистры сегментовсодержат 16-разрядные селекторы дескрипторов сегментов, включающие три поля:Index– № строки в таблице дескрипторов,TI– № таблицы дескрипторов,RPL– уровень привилегий (см. рис.3).

Рис. 3. Структура скрытого регистра SDCи сегментного регистра

  1. Сколько сегментов доступно задаче одновременно? Какие это сегменты?

Существуют следующие регистры сегментов:

  • CS[0÷15] (CodeSegment– регистр сегмента кодов команд),

  • SS[0÷15] (StackSegment– регистр сегмента стека),

  • DS[0÷15] (DataSegment– регистр сегмента данных),

  • ES[0÷15],FS[0÷15],GS[0÷15]– регистры дополнительных сегментов данных.

  1. Расскажите о порядке загрузки сегментных регистров?

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

  1. Что такое селектор сегмента и дескриптор сегмента?

Регистры сегментовсодержат 16-разрядные селекторы дескрипторов сегментов, включающие три поля:Index– № строки в таблице дескрипторов,TI– № таблицы дескрипторов,RPL– уровень привилегий

Дескрипторыиспользуются только в защищённом режиме работы процессора и представляют собой 8-байтные структуры данных, используемые для определения свойств программных элементов (сегментов).

  1. Назначение основных полей селектора сегмента и дескриптора сегмента?

Назначение скрытых полей дескриптора SDC следующее (для любого сегментного регистра):

сегм_рег.SDC[95÷64] – поле базового адреса сегмента, задающее начальный адрес сегмента в линейном адресном пространстве,

сегм_рег.SDC[63÷32] – поле размера сегмента, которое определяет размер сегмента в байтах,

сегм_рег.SDC.P[23] – признак присутствия сегмента в ОП компьютера (0 — сегмент «сброшен» на диск, 1 — сегмент присутствует в ОП),

сегм_рег.SDC.DPL[22÷21] – 2-разрядное поле, определяющее уровень привилегий описываемого дескриптором сегмента,

сегм_рег.SDC[19÷16] – поле «тип сегмента», определяющее тип сегмента и типы операций, допустимых над сегментом:

сегм_рег.SDC[19] – подчинённый (1) или неподчинённый (0) сегмент,

сегм_рег.SDC[17]=1, для сегмента разрешены операции чтения,

сегм_рег.SDC[18]=1, для сегмента разрешены операции записи.

сегм_рег[15÷3] – поле Index содержит номер дескриптора в таблице дескрипторов (LDT или GDT),

сегм_рег[2] – бит TI селектора, определяет выбор дескриптора сегмента из локальной или глобальной таблицы дескрипторов (TI=1 из LDT, TI=0 из GDT)

сегм_рег[1÷0] – поле RPL определяет запрашиваемый (при загрузке дескрипторов) уровень привилегий.

  1. Что такое таблица дескрипторов?

Таблица дескрипторов(илитаблица описаний) содержит описания блоковпамяти(сегментов): их расположение (влинейном адресном пространствеили надиске),права доступа, атрибуты использования,разрядностьи т. п.

  1. Назначение локальных и глобальных таблиц дескрипторов?

С помощью селекторов из предварительно сформированных таблиц дескрипторов сегментов (GDTилиLTD), прикладная программа выбрала дескрипторы тех сегментов которые разрешены для нее.

  1. Отличия локальных и глобальных таблиц дескрипторов?

Глобальная таблица (GDT – GlobalDescriptorTable) является структурой данных и содержит дескрипторы, доступные всем задачам. Она может содержать дескрипторы любых типов, кроме дескрипторов прерываний и некоторых видов исключений. Нулевой элемент этой таблицы процессором не используется, и обращение к нему вызывает исключение #GP.

Локальная таблица (LDT– LocalDescriptorTable) может быть собственной для каждой задачи и содержит только дескрипторы сегментов задачи и шлюзов межсегментных вызовов. ВсеLDTсами по себе являются сегментами, а значит, у них есть дескрипторы (хранятся вGDT) и селекторы (каждый из которых для выполняемой в процессоре задачи должен находиться в специальном регистреLDTR).

  1. Размеры и количество локальных и глобальных таблиц дескрипторов?

Глобальная таблица дескрипторов одна, и её адрес и размер всегда находится в регистре GDTRпроцессора. Но локальных таблиц дескрипторов может быть много (в пределе столько же, сколько задач в оперативной памяти). И для обрабатываемой задачи надо иметь информацию о еёLDTв специальном регистре процессораLDTR.

Соседние файлы в папке 4семестр