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

ORGANIZATsIYa_EVM

.pdf
Скачиваний:
9
Добавлен:
29.03.2016
Размер:
3.03 Mб
Скачать

Величина лимита=0 соответствует 1 байт, поэтому т.к. дескриптор сегмента 8 байт, предел GDT должен быть на 1 меньше т.е. 8N-1.

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

1ый дескриптор в GDT не используется в процессоре. Селектор сегмента для этих «нулевых» дескрипторов не генерирует исключения, когда загружен в регистр сегмента данных (DS , ES, FS, GS), но всегда генерирует исключение в защищенном режиме, когда делается попытка доступа к памяти, используя дескриптор.

LDT размещается в системном сегменте поэтому GDT должна содержать сегментный дескриптор для LDT сегмента. Если система поддерживает несколько LDT, каждая таблица должна иметь отдельный селектор сегмента и сегментный дескриптор в GDT. Сегментный дескриптор для LDT может быть размещен в любом месте GDT.

LDT доступна через ее селектор, базовый линейный адрес, предел, права доступа.

Дескриптор LDT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

База сегм. 15:-0

 

 

Lim 15:-0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

G

P

 

 

тип

 

 

 

 

База

 

 

0

0

0

Lim

 

DPL

 

 

 

 

База 16:-23

31:-24

 

 

 

 

 

16:-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

 

 

 

 

 

 

 

 

 

Поле DPL в дескрипторе для LDT не используется.

И так при переключении задач для доступа к сегментам состояния задач имеется два вида дескрипторов. Дескриптор сегмента состояния задачи является прямым указателем на расположение сегмента состояния задачи в линейном адресном пространстве виртуальной памяти и соответственно содержит адрес начала сегмента в памяти. Дескриптор шлюза задачи является элементом косвенной адресации при обращении к сегменту состояния задачи. Введение дополнительного этапа адресации объясняется следующими причинами.

Во первых, дескрипторы сегментов состояния задач могут находиться только в глобальной дескрипторной таблице и обычно имеют наивысший уровень привилегий (DPL=0).

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

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

[CPL,RPL]<,=DPL шлюза задачи Таким образом, операционная система, располагая

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

Регистр задачи.

Регистр задачи предназначен для хранения 16 битного селектора сегмента состояния задачи во время ее выполнения в процессоре причем значение селектора сегмента состояния задачи является видимой частью регистра то есть доступной для чтения и изменения программным обеспечением , а невидимая его часть, которая доступна только аппаратным средствам, предназначена для кэширования самого дескриптора сегмента состояния задачи .

Дав определение задачи, как единице работы, следует помнить что понятие задачи классифицирует процесс в вычислительной системе не с точки зрения объема и сложности выполняемых вычислений ,а c точки зрения цели,

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

Связь между этими блоками во время выполнения задачи осуществляется через аппаратно-программный интерфейс , активизируемый системными командами CALLи JMP Передача управления от одного сегмента к другому осуществляется и внутри задачи через дескрипторы сегментов, поэтому для передачи управления от одной задачи к другой используются специальные дескрипторы, классифицируемые как системные данные для управления задачами.

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

Переключение задачи.

Процессор выполняет следующие операции при переключении к новой задаче.

1.Получает селектор сегмента для нового задания как операнд команд УМР, или CALL, или из шлюза задачи или по команде IRET (возврата).

2.Проверяет, что текущей задаче разрешено переключение к новой задаче. Управление привилегиями доступа к данным контролирует исполнением УМР, и CALL инструкции (доп.п.2) CPL текущей задачи и RPL селектора сегмента (для нового задания должны быть меньше чем величина DPL в дескрипторе)

Исключения, прерывания (за исключением прерываний генерируемых командой I NTn) и команда IRET выполняют переключения независимо от DPL, указанных в шлюзе или дескрипторе TSS.

3.Проверяется, что дескриптор TSS нового задания отменен как присутствующий и значения предела none Limit =>67.

4.Контролируется, что новое задание доступно (Call, УМР, прерывание или исключение)

5.Проверяется, что текущее TSS, новые TSS и все дескрипторы сегментов используемые при переключении находятся в системной памяти.

6.Если переключение было инициировано УМР или IRET, процессор устанавливает бит BUSY (занято) в О. в текущем дескрипторе TSS задачи. Если инициировано командой CALL, исключением или прерыванием «В» флаг (занято) остается установленным.

7.Если переключение было инициировано IRET, процессор чистит NT флаг во времени регистре Флагов, если инициировано CALL или УМР, исключением или прерыванием NT флаг не изменяется.

8.Сохраняется состояние текущей задачи в текущем сегменте TSS. Процессор находит базовый адрес текущего сегмента TSS в регистре задачи и затем копирует состояние следующих регистров в текущий сегмент TSS: регистры общего назначения, селекторы сегментов из сегментных регистров, регистр флагов, регистр IP.

9.Если переключение было инициировано CALL инструкцией, исключением или прерыванием процессор устанавливает NT флаг в регистре флагов сохраняемом в TSS нового задания если инициировано IRET, процессор восстанавливает NT флаг из регистра Флагов сохраняемом в стеке. Если инициировано УМР, NT флаг остается без изменения.

10.Если переключение задания было инициировано CALL, УМР, исключением или прерыванием процессор устанавливает В (занято) в новом дескрипторе TSS, если инициировать IRET В (занято) остается установленным.

11.Устанавливает TSS флаг в управляющем регистре GRO с целью дать возможность устройству с плавающей точкой не прерывать работу при переключении задачи, а в случае необходимости т.е. операции FPO в новой задаче доступ к FPO будет осуществлен только через исключение NH (TS=1 запрещ. FPO), которое вызовет образование этого исключения, в котором используя системную команду CLTS, установит бит TS в GRO в «О» сохранит состояние FPO, и даст возможность выполнить операции FPO в новой задаче.

12.Загружает регистр задачи селектором сегмента и дескриптор для нового TSS/

13.Загружает новое состояние из TSS в процессор. Любая ошибка, соответствующая загрузке квалифицируется в контексте новой задачи.

14.Начинается выполнение нового задания.

.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]