Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конюховавсит.doc
Скачиваний:
106
Добавлен:
28.03.2015
Размер:
1.56 Mб
Скачать

6.4 Аппаратные средства поддержки многозадачности

В структуре процессоров Pentium имеются средства поддержки многозадачного режима, с помощью которых реализуется защита и быстрое переключение задач /2/: специальная структура данных, организованная в виде сегмента состояния задачи TSS, дескриптор сегмента TSS, дескриптор шлюза задачи, 16-разрядный регистр TR (Task Register) и связанный с ним программно недоступный теневой 64-разрядный регистр TRт.

Переключение задачи сходно с вызовом процедуры, но требует сохранения большего количества информации о состоянии процессора. Содержимое регистров процессора, участвующих в выполнении задачи, называется средой задачи. Для каждой задачи создаётся собственный сегмент TSS, который фактически характеризует состояние виртуального процессора задачи в многозадачной системе. Выполнение задач процессора осуществляется в соответствии с планом и в порядке, определяемым ОС. При переключении задач среда выполняемой задачи переписывается в сегмент TSS этой задачи (на этот сегмент указывает регистр текущей задачи TRт) – (стрелка 1 на рисунке 6.3). После этого в регистр TR помещается селектор нового сегмента TSS (стрелки 2), и в регистры процессора из сегмента TSS вызываемой задачи загружается содержимое её среды (стрелка 3). Выполнение программы новой задачи продолжается с команды, адрес которой указан в регистре EIP новой задачи, а не с самого начала. Указанные операции реализуются автоматически с помощью аппаратных средств процессора. При этом в стеке, в отличие от вызова подпрограмм, никакой информации не сохраняется, управление передаётся полностью в среду выполняемой задачи. Схема переключения задач представлена на рисунке 6.3 /20/.

Длительность процедуры переключения задач составляет 200 тактов.

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

Основным назначением механизма переключения задач является организация очередных переходов между выполняемыми программами. Переключение программ может производиться командами JMP и CALL типа FAR (межсегментные переходы), командами вызова прерываний (INT n) или командой IRET, а также аппаратными прерываниями и ловушками.

Рисунок 6.3 – Схема переключения задач

При выполнении межсегментных переходов в защищённом режиме в регистре EIP содержится смещение (адрес команды внутри сегмента), а в регистре CS может находиться адрес или дескриптора сегмента, или шлюза дескриптора сегмента, или дескриптора TSS, или дескриптора шлюза TSS.

Сегмент TSS определяется одноимённым сегментным дескриптором, который может находиться только в глобальной дескрипторной таблице GDT. Этот дескриптор помимо адреса содержит ещё указание размера и уровня привилегий сегмента TSS. Выбор дескриптора TSS текущей задачи в таблице GDT осуществляется с помощью селектора, загружаемого в программно доступный регистр TR. Для уменьшения времени обращения к операндам сегмента TSS дескриптор TSS текущей задачи после выборки из таблицы GDT запоминается в программно недоступном регистре TRт. Содержимое этого регистра автоматически обновляется процессором при смене задачи. При инициализации системы с помощью специальной команды LTR в регистр TR загружается селектор исходной задачи, а в процессе работы его содержимое может изменяться.

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