Системное программное обеспечение Кыргызско – Российский Славянский Университет Кафедра ИВТ, 3-й курс ИВТ, 5 семестр Лекция 9
План лекции u Многозадачность –Ресурсы задачи –Сегмент состояния задачи –Переключение задач u Литература
Многозадачность u Задача - это "единица измерения" заданий для процессора, которую процессор может выполнять, приостанавливать и осуществлять над ней диспетчеризацию. u В качестве задачи может выполняться прикладная программа, сервис операционной системы, ядро операционной системы, обработчик прерывания или исключения и т.п. u В защищенном режиме архитектура IA-32 предоставляет механизм для сохранения состояния задачи и переключения с одной задачи на другую. u Все команды процессора выполняются в контексте той или иной задачи.
Многозадачность u С точки зрения пользователя, многозадачность - это метод управления компьютерной системой, когда отдельные задачи выполняются так, как если бы они выполнялись параллельно на отдельных процессорах с общей памятью.
Ресурсы задачи Задачу составляют два компонента: u адресное пространство задачи и u сегмент состояния задачи (Task State Segment - TSS).
Ресурсы задачи u В адресное пространство задачи входят доступные ей сегменты кода, данных и стека.
Ресурсы задачи Сегмент состояния задачи хранит состояние регистров (контекст) процессора: u состояние сегментных регистров (селекторы сегментов, формирующие адресное пространство задачи); u состояние регистров общего назначения; u состояние регистра флагов (EFLAGS); u указатель очередной команды (EIP); u значение регистра CR3 (PDBR); u значение регистра LDTR.
Ресурсы задачи u В многозадачных системах TSS предоставляет механизм для связывания (вложения) задач. u Каждая задача идентифицируется селектором соответствующего ей TSS. Этот селектор загружается в регистр задачи (Task Register - TR) при переключении на задачу. u В теневую часть этого регистра загружаются базовый адрес, предел и атрибуты TSS. u Операционная система может предусматривать для каждой задачи свое линейное адресное пространство (свой набор страниц для страничного преобразования), тогда при переключении задачи загружается и регистр CR3 (PDBR), хранящий адрес каталога таблиц для страничного преобразования.
Сегмент состояния задачи u Состояние процессора, необходимое для восстановления задачи, хранится в системном сегменте, называемом сегментом состояния задачи (Task State Segment - TSS).
Сегмент состояния задачи
Назначение специальных полей: u Связь TSS (Link TSS) - содержит селектор TSS предыдущей задачи (обновляется при вызове новой задачи или обработчика исключения/прерывания в новой задаче). Это поле обеспечивает обратное переключение по команде IRET. u Флаг отладки (Debug Trap flag - T) - если выставлен, при переключении на задачу вызывается особый случай отладки. u Базовый адрес карты ввода-вывода (I/O Permission Map Base Address) - содержит 16-битное смещение двоичной карты разрешения ввода-вывода от начала TSS. Эта карта используется в случае выполнения операции ввода-вывода, когда IOPL
Сегмент состояния задачи u Сегмент состояния задачи содержит динамические (обновляемые) и статические (необновляемые) поля u К динамическим относятся поля, соответствующие регистрам общего назначения, сегментым регистрам, регистру флагов, указателю команд EIP, и поле "Связь TSS". u К статическим относятся все остальные поля: селектор LDT, адрес каталога таблиц (PDBR), указатели привилегированных стеков (SS0:SP0, SS1:SP1, SS2:SP2), флаг отладки (T) и базовый адрес карты разрешения ввода-вывода (I/O Permission Map Base Address).
Сегмент состояния задачи u Дескриптор TSS должен находиться в GDT. u Процессор генерирует нарушение общей защиты при попытке переключиться на задачу, селектор которой содержит бит TI=1. u Процессор не поддерживает рекурсию задач, поэтому попытка переключения задач при помощи селектора "занятого TSS" вызывает исключение.
Переключение задач Процессор инициирует переключение задач в следующих случаях: 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. Выполняется контроль привилегий: 1.случай 1: max(CPL,RPL)
Переключение задач 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 и начинается выполнение новой задачи.
Переключение задач u Если переключение задач прошло успешно, то контекст старой задачи сохранен, так что она может быть возобновлена позднее с того места, где была прервана. u Новая задача не наследует уровня привилегий старой задачи. Для новой задачи CPL устанавливается по полю TSS, соответствующему регистру CS. u При переключении задач не сохраняется контекст сопроцессора
Переключение задач u Поле "Связь TSS" и бит NT регистра флагов обеспечивают вложение задач u Вложение задач происходит при переключении на новую задачу по CALL или вызовом обработчика прерывания/исключения. –При этом в новой задаче выставляется EFLAGS.NT=1 –в поле "Связь TSS" заносится селектор TSS предыдущей задачи u Выполнение команды IRET в новой задаче вызывает обратное переключение на предыдущую приостановленную задачу
Литература u Защищенный режим. Broken Sword,