Аппаратное обеспечение многозадачного режима



Многозадачность - способ организации работы системы, при котором в ее памяти содержится (одновременно) программы и данные нескольких процессов обработки информации (задач). Для решения каждой задачи выделяются кванты времени.

Многозадачная система - система поддерживающая многозадачность.

Аппаратные средства обеспечения многозадачного режима:

· сегмент состояния задачи 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!