Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР АВМиС заочное ввод-вывод, стек.doc
Скачиваний:
9
Добавлен:
01.04.2014
Размер:
145.92 Кб
Скачать

Формат дескриптора tss

        Дескриптор TSS определяет сегмент состояния задачи. Этот дескриптор описывает системный объект, т.к. бит S в нём равен 0 (это 44-й бит дескриптора или 4-й бит прав доступа). То, что дескриптор описывает системный объект означает, что непосредственно пользоваться этим объектом может только процессор, но не программа - любая попытка загрузки селектора этого дескриптора в сегментный регистр вызовет генерацию исключения общей защиты (#GP - прерывание 0Dh).

Как уже говорилось в предыдущей главе, в локальной дескрипторной таблице LDT нельзя использовать некоторые системные объекты. Т.к. дескрипторы LDT и TSS являются такими объектами, то их нельзя применять в LDT, иначе при обращении к ним будет генерироваться исключения. Смысл такого ограничения состоит в том, что задаче запрещено определять задачи внутри себя и устанавливать дополнительные дескрипторные таблицы и таким образом, эти действия может выполнять только ядро ОС.

Обратите внимание на то, что в сегменте состояния задачи нет полей для регистров модулей FPU, MMX и XMM. Дело в том, что не всякая задача работает с каким-либо из этих модулей и наличие дополнительных полей замедлило бы переключение задачи. Сегмент TSS и так достаточно большой, к тому же поля из него загружаются по одному - процессор выполняет проверку параметров значений каждого сегментного и системного регистра.

Если в системе несколько задач использует FPU, MMX и/или XMM, то при смене задач необходимо менять контекст соответствующего модуля. Процессор автоматически этого не делает, зато он создаёт условия для операционной системы, позволяя ей дополнить контекст задачи, например, сохранить состояние FPU, используемое старой задачей и загрузить в FPU значения, используемые новой задачей.

Порты ввода-вывода. Первое, что надо знать: стандартный диапазон адресов используемых портов ввода-вывода для IBM PC – совместимых компьютеров  (исключение составляют компьютеры с шиной EISA) составляет от 1 до 3FFh включительно. Сюда входят порты контроллеров клавиатуры, жестких и гибких дисков,EGA/VGA, последовательных и параллельных портов и т.д.

Распределение адресов портов ввода-вывода 

Диапазон адресов

Использование

АТ

ХТ

00 – 01F

000 – 01F

Контроллер DMA №1

020 – 03F

020 – 021

Контроллер прерываний №1

040 – 05F

040 – 043

Таймер

069 – 063

Программируемы или периферийный интерфейс,PPI

060 – 06F

Контроллер клавиатуры 8042

070 – 07F

RTC, CMOS, RAM

080 – 09F

080 – 083

Порты DMA (регистры страниц)

0A0 – DBF

Контроллер прерываний №2

0C0 – 0DF

Контроллер DMA №2

0F0 – 0FF

Математический сопроцессор

170 – 177

Жесткий диск (вторичный)

1F0 – 1F7

Жесткий диск

200 – 207

200 – 20F

Игровой порт

278 – 27F

278 – 27F

Параллельный порт №2

2C0 – 2DF

2C0 – 2DF

Адаптер EGA №2

2F8 – 2FF

2F8 – 2FF

Последовательный порт №2

300 – 31F

Платы прототипов

320 – 32F

Жесткий диск

370 – 377

Контроллер флоппи (вторичный)

378 – 37F

378 – 37F

Параллельный порт №1

3B0 – 3DF

3B0 – 3DF

Адаптер VGA

3C0 – 3CF

3C0 – 3CF

Адаптер EGA №1

3D0 – 3DF

3D0 – 3DF

Адаптеры CGA и EGA

3F0 – 3F7

3F0 – 3F7

Контроллер флоппи

3F8 – 3FF

3F8 – 3FF

Последовательный порт №1

Диапазон адресов портов ввода-вывода с 300h по 31 Fh предназначается  для так называемых  плат-прототипов  (proto-type card), которые могут быть разработаны независимыми производителями. Об этом следует помнить, поскольку большое количество плат различных существующих адаптеров действительно используют этот диапазон адресов.

Напомним, что поры ввода-вывода, как правило, используются блоками. Иначе говоря, всегда имеется некий базовый адрес порта (часто указываемый в документации), а непосредственно за ним может последовать еще несколько адресов, также используемых для регистров данного устройства. Проще всего «по умолчанию» предположить, что адаптер после базового занимает еще 15 адресов, хотя на практике число последовательно задействованных портов для одного устройства обычно меньше.

Самый простой пример, на котором можно проиллюстрировать сказанное, — это адаптер параллельного интерфейса. Как известно, чаще всего этот адаптер используется для подключения принтера (принтер-порт). Так вот, начиная с базового, каждый такой адаптер реально занимает всего три адреса. Первый соответствует регистру данных, посылаемых от компьютера, второй (базовый адрес плюс 1) — регистру статуса и третий (базовый адрес плюс 2) — регистру управления. Таким образом, например, для LPT1, базовый адрес которого 370h, используются также порты 371h и 372h. Следует отметить, что, вообще говоря, для адаптера параллельного интерфейса в адресном пространстве портов резервируется 16 адресов: от 370h до 37F.