Организация ввода-вывода. Часть 2. Драйверы для WINDOWS NT. Рощин А.В. - 28 стр.

UptoLike

Составители: 

28
1.5 Переключение задач
Для многозадачных и многопользовательских операционных систем
важна способность процессора к быстрому переключению выполняемых
задач. Операция переключения задач процессора сохраняет состояние
процессора и связь с предыдущей задачей, загружает состояние новой
задачи и начинает ее выполнение. Состояние каждой задачи сохраняется в
сегменте состояния задачи (TSS), который, как и любой другой
сегмент,
определяется дескриптором (см. рисунок 1.6).
Дескриптор TSS может быть расположен только в GDT. Ни в LDT, ни
в IDT он не может быть расположен. При попытке обращения к TSS
селектором сегмента с установленным флагом TI (который указывает на
текущую LDT) генерируется исключение общей защиты #GP. Исключение
общей защиты генерируется и в том
случае, если производится попытка
загрузки селектора TSS в сегментный регистр.
Флаг занятости (В) в поле типа говорит о том, занята задача, или нет.
Занятой является выполняемая или приостановленная задача. Значение
поля типа 1001b индицирует неактивную задачу, а 1011b – занятую. Задачи
не являются рекурсивными.
Переключение задач выполняется по инструкции межсегментного
перехода (JMP) или
вызова (CALL), ссылающейся на сегмент состояния
задачи (TSS) или дескриптор вентиля задачи в GDT или LDT.
Переключение задач может происходить также по аппаратным и
программным прерываниям и исключениям, если соответствующий
элемент в IDT является дескриптором вентиля задачи. Дескриптор TSS
указывает на сегмент, содержащий полное состояние процессора, а
дескриптор вентиля задачи содержит
селектор, указывающий на
дескриптор TSS.
     1.5 Переключение задач
     Для многозадачных и многопользовательских операционных систем
важна способность процессора к быстрому переключению выполняемых
задач. Операция переключения задач процессора сохраняет состояние
процессора и связь с предыдущей задачей, загружает состояние новой
задачи и начинает ее выполнение. Состояние каждой задачи сохраняется в
сегменте состояния задачи (TSS), который, как и любой другой сегмент,
определяется дескриптором (см. рисунок 1.6).
     Дескриптор TSS может быть расположен только в GDT. Ни в LDT, ни
в IDT он не может быть расположен. При попытке обращения к TSS
селектором сегмента с установленным флагом TI (который указывает на
текущую LDT) генерируется исключение общей защиты #GP. Исключение
общей защиты генерируется и в том случае, если производится попытка
загрузки селектора TSS в сегментный регистр.
     Флаг занятости (В) в поле типа говорит о том, занята задача, или нет.
Занятой является выполняемая или приостановленная задача. Значение
поля типа 1001b индицирует неактивную задачу, а 1011b – занятую. Задачи
не являются рекурсивными.
     Переключение задач выполняется по инструкции межсегментного
перехода (JMP) или вызова (CALL), ссылающейся на сегмент состояния
задачи (TSS) или дескриптор вентиля задачи в GDT или LDT.
Переключение задач может происходить также по аппаратным и
программным прерываниям и исключениям, если соответствующий
элемент в IDT является дескриптором вентиля задачи. Дескриптор TSS
указывает на сегмент, содержащий полное состояние процессора, а
дескриптор вентиля задачи содержит селектор, указывающий на
дескриптор TSS.




                                   28