Эта карта используется в контроле привилегий только для команд ввода/вывода (IN, INS, OUT, OUTS, CLI, SII).
Без карты команд ввод/вывод для программ разрешен, если:
CPL £ IOPL IOPL находится в EFLSGS.
битовая карта сопоставляет каждому возможному порту ввода/вывода один бит.
порт 65535
если бит=0, то ввод/вывод в этот порт программе разрешен, иначе проверяется CPL £ IOPL.
Взаимодействие между задачами
Основано на том, что дескрипторы GDT доступны всем задачам (видны), а LDT — только для определееных задач.
3 типа взаимодействия:
1. — полное изолирование адресных пространств;
2. — полное перекрытие адресных пространств;
3. — частичное перекрытие адресных пространств;
1. Для каждой задачи создается свое LDT, а в GDT помещается только дескриптор LDT и TSS.
2.
a) существуют единые GDT;
b) все задачи разделяют одну и ту же LDT;
3. реализуется наличием псевдонимов одного сегмента в различных задачах.
|
|
Особенность управления псевло?:
— при изменении сегмента (увеличение, перемещение на диск [присутствие], частота использования) необходимо изменение всех псевло? дескриптора этого сегмента. (Необходим список псевло? для каждого сегмента (таблица), например, в сегменте TSS).
Организация прерываний и особых случаев
8086
прерывания — по входу NMI, INTR, т. е. формируется аппаратно, или команда INT n.
Особые случаи — формируются, если команда не может быть выплнена (деление на ноль, недоступность сегмента, нарушение защиты).
В i286+ вместо векторов прерываний используется дескрипторная таблица. IDT
В начале дескриптора могут использоваться дескриптор шлюзов задачи, прерывания и ловушки.
шлюз прерывания
шлюз ловушки
При обработке ловушки в отличие от прерывания флаг IF несбрасывается (не измняется).
При использовании дескриптора прерываний, ловушка используется стек, в котором помещаются регистры EFLAGS, CS, EIP (возможно помещение туда SS, ESP, кода ошибки).