130
В случае ШП, ШСП из дескрипторов (ШП или ШСП) извлекается виртуаль-
ный адрес обработчика: 16 двоичных разрядов селектора и 16 (32) двоичных раз-
рядов вторичного смещения. Селектор позволяет обратиться к GDT или LDT, где
должен быть найден дескриптор сегмента кода. Из этого дескриптора извлекает-
ся вторичная база для формирования физического адреса сегмента кода (обработ-
чика).
ПКП
КР580ВН59 (i8259) имел всего 8 «каналов» — входов для запроса на пре-
рывание (IR0, … , IR7). Расширение (до 64 входов) обеспечивалось каскадирова-
нием ПКП: один ведущий и до 8 ведомых. Основной обмен с центральным про-
цессором связан с выходным сигналом INT и входным ответным INTA.
Инициализация (подготовка) ПКП первично требовала для определения внут-
реннего адреса в ПКП учета трех
обстоятельств: значение А{0}, признаки в запи-
сываемом байте, порядок задания байтов ICW1…3 и OCW1…3.
Предусматриваются режимы работы ПКП с фиксированными (статическими) и
с динамическими приоритетами. В последнем случае реализуется «циклический
сдвиг приоритетов» (близко к дисциплине БП). Имеется так же регистр масок IMR
(«на входе» в регистр прерываний IRR/ISR).
Процедура переключения задач во многом аналогична
процедуре прерыва-
ний. В процессорах i486+ она поддерживается так называемыми аппаратными
средствами мультизадачности.
Одновременно реализуется одна задача (процесс). Ей соответствует контекст
(среда).
Специальных команд переключения задач нет. Используются команды меж-
сегментного перехода (JMP) или межсегментного вызова (CALL), а также преры-
вания, в том числе, особые случаи.
JMP и CALL могут быть прямые — сразу с выходом
на дескриптор TSS (сег-
мента состояния задачи) в GDT или косвенные — через шлюз задачи ШЗ (в IDT).
Переключение задач по прерываниям — только косвенное — через ШЗ.
Обычный вызов подпрограммы CALL сохраняет содержимое нужных регист-
ров в стеке, программы могут быть реентрантными (обладающими свойством по-
вторной входимости). При переключении задач по CALL создается новая среда,
содержимое EFLAGS сохраняется,
но не в стеке, а в сегменте TSS. Задачи нереен-
трантны. Необходимо отметить также, время реакции (в сравнении с процедурой
прерывания) и время программного обслуживания — значительно бóльшие.
Можно специально выделить такие средства поддержки мультизадачности:
— сегмент TSS (находится в оперативной памяти);
— дескриптор TSS (в GDT);
— регистр задачи (TR);
— шлюз задачи (в LDT, IDT).
Значение поля «Предел
» в дескрипторе TSS — не менее 103 (67h), т.е. мини-
мальная длина TSS составляет 104 байта.