Главная Обратная связь

Дисциплины:






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



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

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.Начинается выполнение нового задания.

 

 

.

 





sdamzavas.net - 2020 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...