Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

1. При выполнении межсегментного перехода (FAR JMP) или межсегментного вызова (FAR CALL), когда в качестве селектора указан селектор TSS.

2. При выполнении межсегментного перехода (FAR JMP) или межсегментного вызова (FAR CALL), когда в качестве селектора указан селектор шлюза задачи.

3. При вызове обработчика прерывания или исключения, если ему в IDT соответствует шлюз задачи.

4. При выполнении команды IRET, когда EFLAGS.NT=1.

В процессе переключения процессор выполняет следующие действия:

1. Получает селектор TSS из кода команды (случай 1), из шлюза задачи (случаи 2 и 3), из поля "Связь TSS" текущей задачи (случай 4).

2. Выполняется контроль привилегий:

o случай 1: max(CPL,RPL)<=DPLTSS;

o случай 2: max(CPL,RPL)<=DPLшлюза (DPLTSS не играет роли);

o в случаях 3 и 4 контроль привилегий не выполняется (для исключений и аппаратных прерываний).

3. Выполняется контроль предела TSS.

4. Проверяется доступность задачи: в случаях 1-3 задача должна быть незанятой, в случае 4 (возврат из подзадачи) задача должна быть помечена как занятая.

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

6. Если переключение инициируется JMP или IRET для текущей задачи очищается флаг занятости (в поле типа дескриптора). В случае CALL или вызова обработчика прерывания/исключения флаг занятости в старой задаче остается установленным.

7. Если переключение инициируется IRET, для старой задачи сбрасывается бит вложенной задачи (NT) в регистре флагов. В остальных случаях значение EFLAGS.NT для старой задачи не меняется.

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

9. Если переключение инициировано CALL или вызовом обработчика прерывания/исключения, в контексте новой задачи выставляется бит вложенной задачи (EFLAGS.NT=1), а в поле "Связь TSS" новой задачи заносится селектор TSS старой задачи. В противном случае (JMP, IRET), бит остается без изменений.

10. Дескриптор TSS новой задачи помечается как занятый.

11. В регистр задачи (TR) загружается новое значение.

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

13. Выставляется флаг "задача переключена" CR0.TS=1 и начинается выполнение новой задачи.

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

При переключении задач не сохраняется контекст сопроцессора, т.к. не все задачи его использует, а сохранение контекста сопроцессора может потребовать дополнительного времени. Попытка выполнить инструкцию сопроцессора, когда CR0.TS=1, вызывает исключение. Это означает, что произошло переключение задач, контекст сопроцессора соответствует старой задаче, а новая задача также собирается использовать сопроцессор. В таком случае обработчик этого исключения может сохранить контекст сопроцессора для старой задачи и загрузить контекст сопроцессора для новой задачи, после чего флаг CR0.TS может быть сброшен.

Поле "Связь TSS" и бит NT регистра флагов обеспечивают вложение задач. Вложение задач происходит при переключении на новую задачу по CALL или вызовом обработчика прерывания/исключения. При этом в новой задаче выставляется EFLAGS.NT=1, а в поле "Связь TSS" заносится селектор TSS предыдущей задачи. Выполнение команды IRET в новой задаче вызывает обратное переключение на предыдущую приостановленную задачу.

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 306; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.047 сек.