Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4семестр / Отв_лр_№5

.docx
Скачиваний:
14
Добавлен:
30.04.2013
Размер:
39.58 Кб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Содержимое сегментных регистров (селектор) не может быть модифицировано, они допускают лишь загрузку и сохранение содержимого. С каждым из шести сегментных регистров связан программно-недоступный скрытый регистр дескриптора (Segment Descriptor Cache - 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 – Global Descriptor Table) является структурой данных и содержит дескрипторы, доступные всем задачам. Она может содержать дескрипторы любых типов, кроме дескрипторов прерываний и некоторых видов исключений. Нулевой элемент этой таблицы процессором не используется, и обращение к нему вызывает исключение #GP.

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

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

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

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