![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Переключение задач производится с использованием специальных сегментов состояния задач (TSS). Это системные сегменты, предназначенные для копирования основных программно-доступных регистров процессора, хранящих "контекст" программы. Иногда переключение задач называют сменой контекста. В многозадачном режиме работы в стадии выполнения могут находиться несколько задач. Для каждой из них создается сегмент состояния задачи – TSS. Выполнение этих задач может производиться одним процессором в режиме разделения времени. Основным назначением механизма переключения задач является организация очередных переходов между выполняемыми программами.
Переключение программ может производиться командами JMP и CALL типа FAR (межсегментные переходы), командами вызова прерываний, например, INT n, или командой IRET. Кроме этого, переключения задач могут инициироваться прерываниями и ловушками.
В защищенном режиме команды межсегментных переходов содержат полный указатель CS и IP (адрес команды в сегменте – offset). Указатель CS, в свою очередь, может указывать на:
· дескриптор сегмента,
· шлюз дескриптора сегмента,
· дескриптор TSS,
· дескриптор шлюза TSS.
Все зависит от выбора стратегии разработчиками ОС.
В первых двух случаях реализуется процедура передачи управления:
· прямой передачи управления (без изменения уровней привилегий), если селектор указывает на дескриптор сегмента,
· передачи управления с возможностью увеличения уровня привилегий, (по командам, предусматривающим возвращение, – например Call), если селектор указывает на шлюз дескриптора сегмента
В двух последних случаях реализуется процедура переключения задач:
· прямого переключения задач, если селектор указывает на дескриптор задачи (используется при переключениях задач на одном уровне привилегий),
· косвенного переключения задач, если селектор указывает на шлюз задачи (используется при переключениях с изменениями уровня привилегий).
При косвенном переключении задач производится дополнительное обращение к таблице дескрипторов GDT.. Обращение производится по значению селектора дескриптора целевого кодового сегмента, указанного в шлюзе.
Сегмент состояния задачи (TSS) является сегментом, но системным. Дескриптор TSS по структуре совпадает с дескриптором программных сегментов (см. рис. 3.8.), в поле атрибутов которых отмечено, что они системные.
![]() |
Процедура переключения задач состоит из 3-х пересылок
(см. рис.3.10):
1. сохранение содержимого всех программно-доступных регистров процессора в сегменте TSS; базовый адрес сегмента TSS берется из системного регистра TR,
2. адрес сегмента TSS новой задачи по селектору из прямой команды перехода или по содержимому поля CS дескриптора шлюза задачи переписывается в системный регистр TR.
3. содержимое TSS новой задачи переписывается в регистры процессора, и процессор начинает выполнение программы-цели.
Длительность процедуры переключения задач – 200 тактов.
Длительность процедуры переключения задач – 200 тактов.
С точки зрения взаимодействия программ, переключение программ равнозначно завершению одной программы с сохранением всего контекста программы и запуску следующей программы. При переключении задач запоминается текущее значение указателя команд IP. Поэтому при ее повторном запуске задача запускается не с начальной точки, а продолжает выполнение с прерванной точки.
До аппаратной реализации этой процедуры, например в реальном режиме работы, переключение задач (в многозадачных режимах работы) производилось чисто программными способами, что уменьшало производительность процессора.
Дата публикования: 2014-11-03; Прочитано: 352 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!