Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Orgevm_Ekzamen.docx
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
999 Кб
Скачать
☆

Битовая карта ввода вывода

В регистре флагов ( ef ) имеется двух битовое поле IOPL, задающее уровень привилегий, на котором задаче разрешены операции ввода/вывода. Например, если CPL = 3, а в поле IOPL задана 2-ка при попытке выполнить команду in ( out или аналогичные) будет прерывание. Связано это с тем, что операции ввода/вывода - «опасные» операции, они могут вывести систему из строя. Поэтому система принимает меры защиты. Скорее всего наша команда in все же будет выполнена, но не напрямую. Обработчик прерывания запросит ОС и она, если это допустимо, выполнит нашу команду гарантированно корректно. Сменить содержимое поля IOPL можно только находясь на 0-м уровне привилегий.

Такое ограничение на операции ввода/вывода зачастую оказывается излишне жестким. Например имеет смысл ограничить доступ пользователя к 0-му каналу таймера (порт 40h), на работе которого базируется служба системного времени. Однако нет никакого смысла ограничивать доступ ко 2-му каналу таймера (порт 42h), заведующему генерацией звука. Для решения этой проблемы в TSS может быть создана битовая карта ввода/вывода.

Карта содержит в себе столько бит, сколько в системе портов. Каждый бит карты соответствует одному восьмиразрядному порту. Максимально в карте может быть 64Кбит. Если в i-ом бите записан 0-ль, то доступ к i-му порту разрешен всегда (IOPL игнорируется), если же там записана 1-ца, доступ к порту будет предоставлен только если не нарушаются права, заданные полем IOPL.

Процессор может работать не только с восьмиразрядными но и 16-ти и 32-х разрядными портами. 16-ти разрядному порту в карте ставятся в соответствие два смежных бита, начинающихся с четного номера. Аналогично 32-х разрядному порту соответствуют четыре смежных бита, начинающихся с номера, кратного 4-м. Приведем пример (рис. 61):

Из приведенного примера карты видно, что в системе всегда доступны 8-ми разрядные порты с адресами 1h, 2h, 3h, 4h и 6h, а также один 16-ти разрядный порт с адресом 2h. Остальные порты защищены полем IOPL.

Рис. 61

В режиме V86 условие CPL  IOPL при выполнении команд in и out не проверяется и доступ к портам определяется битом в битовой картой ввода-вывода, то есть последняя для задач V86 создается обязательно. Кроме того в TSS задачи V86 непосредственно перед битовой картой ввода-вывода может располагаться битовая карта перенаправления прерываний.

Билет 9 Программируемый таймер к1810ви54 (i8254)

Назначение и внутренняя структура таймера.

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

Микросхема таймера содержит три независимых канала (соответственно, Канал 0, Канал 1 и Канал 2), каждый из которых в процессе инициализации может быть настроен на счет в одном из шести режимов (режим 0 – режим 5). Внутри канала стоит 16 разрядный счетчик, работающий на вычитание. Перед началом работы канал должен быть запрограммирован (настроен). В процессе этой настройки каналу задается режим работы и система счисления (двоичная или двоично-десятичная), в которой он будет считать. После того как канал настроен, в счетчик канала загружается исходное число, из которого в процессе работы и будет производиться вычитание. Это число обычно называют коэффициентом пересчета и обозначают Кпр. Далее канал считает импульсы, поступающие на вход CLK канала. Декремент счетчика происходит по заднему фронту сигнала на этом входе. Например, пусть в счетчик загружен Кпр = 4, тогда после первого импульса на входе CLK содержимое счетчика будет равно 3, после второго – 2 и так далее. Результат работы канала формируется на его выходе OUT и напрямую зависит от режима, на который настроен данный канал.

Структурная схема таймера приведена на рис 1.1.

Рис 1.1. Структурная схема таймера ВИ54

Буфер шины данных. Это 8 битный буфер, связывающий таймер с системной шиной данных с помощью двунаправленных линий с тремя состояниями. Когда двунаправленные линии буфера переведены в Z-состояние, таймер отключен от шины данных. Подключение таймера к системной шине данных происходит, когда процессор, выполняя команду in или out, выставляет на шину адреса адрес одного из четырех адресуемых устройств таймера (соответственно канала 0, канала 1, канала 2 или регистра управляющего слова). Например:

out 43h, al

; запись настроечного слова в регистр ; управляющего слова

out 41h,al

; запись байта Кпр в канал 1

in al, 40h

; чтение байта из канала 0

Логика чтения/записи. Эта логика принимает сигналы с системных шин адреса и управления и на их основании генерирует управляющие сигналы для других внутренних блоков таймера. Комбинация сигналов на адресных входах А1 и А0 определяет выбор одного из четырех адресуемых устройств внутри таймера (один из каналов или регистр управляющего слова). Низкий уровень сигнала на входе IOR (input/output read – читаю порт внешнего устройства) говорит о том, что процессор выполняет команду in, читая информацию из порта какого-либо внешнего устройства. Аналогично, низкий уровень сигнала на входе IOW (input/output write – пишу в порт внешнего устройства) говорит о записи в порт (выполняется команда out). При этом невозможно одновременное поступление активного IOR и активного IOW, поскольку процессор не может выполнять команды in и out одновременно. Сигналы на входах IOR и IOW воспринимаются таймером только при наличии активного (низкого) сигнала на входе CS (chip select - выбор кристалла). Активный сигнал на CS подключает линии буфера шины данных к системной шине данных и означает, что процессор обращается именно к одному из устройств внутри таймера, а не к порту какого-либо другого внешнего устройства.

Регистр управляющего слова (РУС). Этот регистр выбирается при А0 = А1 = 1, CS = 0 и IOW = 0. При такой комбинации входных сигналов байт информации снимается с системной шины данных и через буфер шины данных и внутреннюю шину таймера попадает в РУС. Далее этот байт рассматривается как управляющее (настроечное) слово одного из каналов. Оно содержит в себе информацию о режиме работы канала, системе счисления и формате передачи Кпр в этот канал (точнее о формате передачи информации между процессором и каналом). Два старших бита управляющего слова задают номер канала, которому оно предназначено. Из РУС эта информация (без двух старших бит) переписывается в регистр статуса (смотри ниже) соответствующего канала. Важным является то, что в РУС информацию можно только записывать, считывание информации из РУС невозможно. То есть недопустима команда in al, 43h.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]