русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Битовый массив разрешения ввода/вывода


Дата добавления: 2015-06-12; просмотров: 539; Нарушение авторских прав


Процессор i486 может генерировать исключение при ссылках к конкретным адресам ввода/вывода. Эти адреса задаются битовым массивам разрешения ввода/вывода, находящимся в TSS (см. Рисунок 8-2). Размер этого массива и его позиция в TSS переменны. Процессор находит битовый массив ввода/вывода при помощи базового адреса массива ввода/вывода в TSS. Базовый адрес представляет собой 16-разрядное смещение в TSS. Это смещение задает начало битового массива. Граница TSS является и границей размера битового массива разрешения ввода/вывода.

Сегмент состояния задачи (TSS) ----------------------------------- | 11111111 | | |-------------- | | | | Битовый массив | | разрешения ввода/вывода | -->| | | |---------------------------------| | | |---------------------------------| ---| База массива | | | ввода/вывода | | |---------------------------------| |---------------------------------| | | | |---------------------------------| | | | ----------------------------------- Примечание: базовый адрес битового массива разрешения ввода/вывода не должен превышать DFFF (шестнадцатиричное). За последним байтом битового массива должен следовать байт, в котором всебиты установлены. Рисунок 8-2. Битовый массив разрешения ввода/вывода

Поскольку каждая задача имеет свой собственный TSS, то каждая задача имеет и свой собственный битовый массив разрешения ввода/ вывода. Доступ к конкретным портам ввода/вывода может быть определен для конкретных задач.

Если CPL <= IOPL в защищенном режиме, то процессор позволяет выполнение операций ввода/вывода. Если CPL > OPL, либо если процессор работает в виртуальном режиме 8086, то процессор проверяет битовый массив разрешения ввода/вывода. Каждый бит в этом массиве соответствует одному адресу байта ввода/вывода; например, управляющий бит для адреса 41 (десятичного) в адресном пространстве ввода/вывода будет находиться в позиции 1 шестого байта битового массива. Процессор проверяет все биты, соответствующие порту ввода/вывода, к которому выполняется доступ; например, операция с размером операнда в двойное слово проверяет четыре бита, соответствующих четырем смежным адресам байтов адресуемого двойного слова. Если хоть один из проверяемых битов установлен, то генерируется исключение общей защиты. Если же все проверяемые биты очищены, то операция ввода/вывода продолжается.



Поскольку допускается существование портов ввода/вывода, не выравненных по границе слова или двойного слова, процессору может понадобиться при проверке разрешения ввода/вывода доступ к двум байтам битового массива. Для максимального быстродействия Процессор устроен таким образом, что при каждом доступе к порту ввода/вывода прочитывается два байта массива. Для предотвращения генерации исключений при доступе к самым старшим адресам портов после битового массива находится лишний байт. Все биты этого байта должны быть установлены, и он должен лежать в пределах границы сегмента. Битовый массив ввода/вывода не обязан представлять все адреса ввода/вывода. Адреса ввода/вывода, не отображаемые в массиве, рассматриваются, как если бы соответствующие им биты массива были установлены. Например, если граница сегмента TSS находится в 10 байтах после базового адреса битового массива, то этот массив имеет 11 байтов, отображающих 80 портов ввода/вывода. Более старшие адреса при обращении к адресному пространству ввода /вывода приведут к генерации исключения. Если базовый адрес битового массива ввода/вывода больше или равен границе сегмента TSS, то битового массива разрешения ввода /вывода не существует, и все команды ввода/вывода будут генерировать исключение. Базовый адрес должен быть меньше или равен 0DFFFH.

 



<== предыдущая лекция | следующая лекция ==>
Уровень привилегированности ввода/вывода | Глава 9. Исключения и прерывания


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.468 сек.