Аппаратное обеспечение многозадачного режима
Многозадачность - способ организации работы системы, при котором в ее памяти содержится (одновременно) программы и данные нескольких процессов обработки информации (задач). Для решения каждой задачи выделяются кванты времени.
Многозадачная система - система поддерживающая многозадачность.
Аппаратные средства обеспечения многозадачного режима:
· сегмент состояния задачи TSS (Task Status Segment)
· дескриптор TSS
· регистр задачи TR
· шлюз задачи
1. Сегмент состояния задачи.
Каждая программа объявляет себя задачей, после определения сегмента состояния задачи, выделения памяти и включение в таблицу дескрипторов соответствующего дескриптора. TSS можно разделить на 2 части:
1 часть: содержащая контекст задачи
2 часть: определяется ОС и используется ОС по своему назначению
В 1-ую часть TSS заносится текущее значение основных регистров процессора: регистры общего назначения, сегментные регистры, IP, флаги, управляющие регистры CR0, поле связи. Минимальный объем TSS 104 байта.
2. Дескриптор TSS.
Дескриптор TSS - это элемент общей таблицы дескрипторов (GDT в Intel). Формат дескриптора TSS практически совпадает с дескриптором памяти.
3. Регистр задачи TR.
В регистр задач заносится селектор TSS.
4. Шлюз задачи.
Используется для реализации одного из двух способов переключения с одной задачи на другую.
Переключение задач
Задачи выполняются в порядке, определенном ОС. Переход с задачи на задачу выполняется с помощью обычной команды перехода с сегмента на сегмент (call dword ptr). Процессор выбирает селектор из команды и по нему обращается в таблицу дескрипторов. Если по селектору в таблице дескрипторов обнаружен дескриптор состояния задачи, то смещение игнорируется (надо выполнить переход с задачи на задачу. B TSS текущей задачи заносится контекст текущей задачи. B TR заносится селектор новой задачи. По дескриптору TSS определяет местоположение в памяти этого сегмента. Из него извлекается контекст новой задачи и загружается в регистр. Выполнение начинается с команды, логический адрес которой только что был загружен в регистры CS, EIP. Возврат к предыдущей задаче производится командой iret. В TSS каждой задачи есть поле связи, в него заносится селектор старой задачи.
|
|
NT - флаг в регистре флагов (выполняется вложенная задача). NT влияет на выполнение команды iret.
NT = 0 - iret выполняется как выход из обработчика прерываний
NT = 1 - iret - переключение с задачи на задачу
Пример: Пусть имеется 2 задачи:
Задача task_0
main proc
.
.
.
call
CS:IP из TSS_1
переход на выполнение task_1
tss_0
Задача task_1
aaa proc
.
.
.
iret
|
|
CS:IP TSS_0
tss_1
Переключения с задачи на задачу по некоторым внешним событиям (нажатие клавиши)
Процесс переключения с задачи на задачу по некоторым внешним событиям (нажатие клавиши) происходит с помощью шлюза. Внешнее событие вызывает прерывание определенного типа, по которому выбирается шлюз задачи из таблицы дескрипторов прерывания (IDT). В шлюзе задачи находится селектор TSS.
Дата добавления: 2016-01-04; просмотров: 16; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!