430.90K

n5_Подсистема_ввода_вывода_и_прерываний

1.

Тема Подсистема
ввода-вывода
План
1 Подключение аппаратного обеспечения
2 Подключение устройств ввода-вывода
3 Общие принципы работы аппаратуры ввода-вывода
4 Отображаемый на адресное пространство памяти вводвывод
5 Прямой доступ к памяти
6 Работа контроллера прерываний;
7 Обработка прерываний.

2.

Подключение аппаратного обеспечения
Процессор
Память
Шина Адреса
Шина данных
ЧтОП/ЗпОП
ЧтВУ/ЗпВУ
Дешифратор
адреса ВУ
INT
INTA
КПП
ВУ1 ... ВУn
HOLD
ПДП
HOLDA
01:14:08
2

3.

Система ввода-вывода
Система ввода-вывода, т. е. комплекс средств обмена информацией с
внешними устройствами, является важнейшей частью архитектуры
процессора и машины в целом.
К системе ввода-вывода можно отнести:
- способы подключения к системной шине различного оборудования,
- процедуры взаимодействия процессора с этим оборудованием,
- команды процессора, предназначенные для обмена данными с внешними
устройствами.
01:14:08
3

4.

Система ввода-вывода
Системная шина представляет собой набор интерфейсов, к которым
единообразно подключаются все устройства компьютера:
• интерфейс адреса;
• интерфейс данных;
• интерфейс сигналов управления.
mov mem,AL
AL=
12h
CPU
ША:=Адрес (mem)
ШД:=12h
ЗпОП
RAM
Mem=12
h
Процедуры записи и чтения
справедливы не только по
отношении к памяти. За каждым
устройством закреплена
определенная группа адресов, на
которые оно должно отзываться.
Обнаружив свой адрес на
магистрали, устройство либо
считывает с магистрали
поступившие данные, либо
устанавливает имеющиеся в нем
данные на магистраль.
01:14:08
4

5.

Устройства ввода-вывода
Устройства делят на две категории (некоторые не
попадают ни в одну):
блочные устройства - информация считывается
и записывается по блокам, блоки имеют свой
адрес (диски)
символьные
устройства
считывается и записывается
(принтер, сетевые карты, мыши)
информация
посимвольно

6.

Контроллеры устройств
Устройства ввода-вывода обычно состоят из двух частей:
механическая - диск, принтер, монитор
электронная - контроллер или адаптер
Интерфейс между контроллером и устройством стандартизован (ANSI, IEEE
или ISO). Т.о. независимые производители могут выпускать совместимые как
контроллеры, так и устройства. Например: диски IDE или SCSI.
Операционная система обычно
контроллером.
имеет дело не с
устройством, а с
Контроллер, как правило, выполняет простые функции, например, при
считывании с диска, преобразует поток бит в блоки, состоящие из байт, и
осуществляют контроль и исправление ошибок, проверяется контрольная сумма
блока, если она совпадает с указанной в заголовке сектора, то блок считан без
ошибок, если нет, то считывается заново.

7.

Адресное пространство ввода-вывода
Каждый контроллер имеет несколько регистров, которые
используются для взаимодействия с центральным процессором.
При помощи этих регистров ОС управляет (считывает, пишет,
включает и т.д.) и определяет состояние (готовность) устройства.
У многих
видеопамять).
устройств
есть
буфер
данных
(например:

8.

Реализации доступа к управляющим регистрам и буферам:
1) Раздельные адресные пространства ввода-вывода и
памяти
номер порта ввода-вывода - назначается каждому
управляющему регистру 8- или 16-рзрядное целое число.
Адресные пространства ОЗУ и устройства ввода-вывода в этой
схеме не пересекаются.
Недостатки:
- для чтения и записи применяются
специальные команды, например: IN и OUT
- необходим специальный механизм защиты от
процессов
- необходимо сначала
устройства в регистр процессора
считать
регистр

9.

Например, за контроллером
клавиатуры закреплены два
адреса: 60h и 61h. По адресу 60h
выполняется чтение кода нажатой
клавиши, а адрес 61h используется
для управления работой
контроллера. И тот, и другой адрес
имеются в оперативной памяти.
Идентификация
устройств
на
системной
шине
осуществляется с помощью
сигнала ЧтВУ/ЗпВУ, который
генерируется процессором в
любой операции записи или
чтения. При обращении к
памяти
или
видеобуферу
процессор
устанавливает
значение сигнала ЧтОП/ЗпОП.
Таким образом осуществляется
аппаратное
разделение
устройств «типа памяти» и
устройств «ввода-вывода».

10.

2)
отображаемый
на
адресное
пространство
памяти
ввод-вывод
регистры отображаются на
адресное
пространство
памяти.
Пример
видеобуфер,
входящий
в
видеосистему
компьютера.
Устройство
управления
видеобуфером
настроено на две группы
адресов, которые как бы
продолжают
адреса,
относящиеся к оперативной
памяти.
3)смешанная реализация используется в х86 и Pentium,
от 0 до 64К отводится портам,
от 640 до 1М зарезервировано
под буферы данных.
01:14:08
10

11.

Программное разделение устройств:
реализуется с помощью двух наборов команд процессора — для
памяти и для устройств ввода-вывода. В первую группу команд входят
практически все команды процессора, с помощью которых можно
обратиться по тому или иному адресу — команды пересылки mov и
movs, арифметических действий add, imul и div, сдвигов rol, ror, sal и sar,
анализа содержимого байта или слова test и многие другие, фактически
в эту группу команды входит большинство команд процессора. Вторую
группу команд образуют специфические команды ввода-вывода —
команда ввода in и команда вывода out.
Наличие двух категорий адресов устройств дает основание говорить о
существовании двух адресных пространств — пространства памяти,
куда входит сама память, а также видеобуферы и ПЗУ, и пространства
ввода/вывода (пространства портов), куда входят адреса остальной
аппаратуры компьютера.
Объем адресного пространства памяти составляет 1 Мбайт (в
защищенном режиме 4 Гбайт), адресное пространство портов - 64
Кбайт.
01:14:08
11

12.

Типичное распределение адресного
пространства памяти
01:14:08
12

13.

Прямой доступ к памяти (DMA - Direct Memory Access)
Прямой доступ к памяти реализуется с помощью DMA
контроллера.
Контроллер содержит несколько регистров:
регистр адреса памяти
счетчик байтов
управляющие регистры, могут содержать:
- порт ввода-вывода
- чтение или запись
- единицы переноса (побайтно или пословно)

14.

Работа без контроллера ПДП:
Процессор дает команду дисковому контроллеру прочитать
данные в буфер,
Считываются данные в буфер, контроллер проверяет
контрольную сумму считанных данных (проверка на
ошибки). Процессор, до прерывания, переключается на
другие задания.
Контроллер диска инициирует прерывание
Операционная система начинает работать и может считывать
из буфера данные в память

15.

Работа с контроллером ПДП:
Процессор программирует контроллер (какие данные и куда переместить)
Процессор дает команду дисковому контроллеру прочитать данные в буфер
Считываются данные в буфер, контроллер диска проверяет контрольную сумму считанных
данных, (процессор, до прерывания, переключается на другие задания).
Контроллер DMA посылает запрос на чтение дисковому контроллеру
Контроллер диска поставляет данные на шину, адрес памяти уже находится на шине, происходит
запись данных в память
Когда запись закончена, контроллер диска посылает подтверждение DMA контроллеру
DMA контроллер увеличивает используемый адрес и уменьшает значение счетчика байтов
Все повторяется с пункта 4, пока значение счетчика не станет равной нулю.
Контроллер DMA инициирует прерывание

16.

17.

Прерывания
После того как устройство ввода-вывода начало работу,
процессор переключается на другие задачи.
Чтобы сигнализировать процессору об окончании работы,
устройство инициализирует прерывание, выставляя сигнал на
выделенную устройству линию шины (а не выделенный провод).
Контроллер прерываний
прерывания от устройств:
-
обслуживает
поступающие
1) Если необработанных прерываний нет, прерывание выполняется
немедленно.
2) Если необработанных прерываний есть, контроллер игнорирует
прерывание. Но устройство продолжает удерживать сигнал
прерывания на шине до тех пор, пока оно не будет обработано.

18.

Работа контроллера прерываний

19.

Алгоритм работы:
1) Устройство выставляет сигнал прерывания
2) Контроллер прерываний
указывая номер устройства
инициирует
прерывание,
3) Процессор начинает выполнять обработку прерывания,
вызывая процедуру
4) Эта процедура подтверждает получение прерывания
контроллеру прерываний

20.

Принципы программного обеспечения ввода-вывода
Независимость от устройств - например, программа, читающая данные из файла
не должна задумываться с чего она читает (CD, HDD и др.). Все проблемы должна
решать ОС.
Единообразное именование - имя файла или устройства не должны отличаться. (В
системах UNIX выполняется дословно).
Обработка ошибок - ошибки могут быть отловлены на уровне контроллера,
драйвера и т.д.
Перенос данных - синхронный и асинхронный (в последнем случае процессор
запускает перенос данных, и переключается на другие задачи до прерывания).
Буферизация
Проблема выделенных (принтер) и невыделенных (диск) устройств - принтер
должен предоставляться только одному пользователю, а диск многим. ОС должна
решать все возникающие проблемы.

21.

Способы осуществления операций ввода-вывода
Программный ввод-вывод (всю работу выполняет
центральный процессор.)
Управляемый прерываниями ввод-вывод (по
прерыванию процессо\р вызывает планировщик и
переключается на другую задачу)
Ввод-вывод с использованием DMA

22.

Программные уровни и функции ввода-вывода

23.

Драйвера устройств
Драйвер устройства - необходим для каждого устройства.
Для разных ОС нужны разные драйверы.
Драйверы должны быть частью ядра (в монолитной системе),
что бы получить доступ к регистрам контроллера.
Это одна из основных причин приводящих к краху операционных систем. Потому что драйверы,
как правило, пишутся производителями устройств, и вставляются в ОС.

24.

Драйвера должны взаимодействовать с ОС через стандартные
интерфейсы.
Стандартные
драйвера:
интерфейсы,
Для блочных устройств
Для символьных устройств
которые
должны
поддерживать
Раньше для установки ядра приходилось перекомпилировать ядра
системы.
Сейчас в основном ОС загружают драйверы. Некоторые драйверы
могут быть загружены в горячем режиме.
Функции, которые выполняют драйвера:
обработка запросов чтения или записи
инициализация устройства
управление энергопотреблением устройства

25.

Обработчики прерывани
Прерывания должны быть скрыты как можно глубже в недрах операционной системы,
чтобы как можно меньшая часть ОС имела с ними дело. Лучше всего блокировать
драйвер, начавший ввод-вывод.
Алгоритм:
1) Драйвер начинает операцию ввод-вывод.
2) Драйвер блокирует сам себя,
- выполнив на семафоре процедуру down
- выполнив на переменной состояния процедуру wait
- выполнив на сообщении процедуру receive
3) Происходит прерывание
4) Обработчик прерываний начинает работу
5) Обработчик прерываний может разблокировать драйвер (например, выполнив на
семафоре процедуру up)

26.

Независимое
от
устройств
обеспечение ввода-вывода
Функции независимого
обеспечения ввода-вывода:
от
устройств
программное
программного
Единообразный интерфейс для драйверов устройств,
Буферизация
Сообщения об ошибках
Захват
и
(блокирование)
освобождение
выделенных
Размер блока, не зависящий от устройств
устройств

27.

Обобщение
вывода
уровней
и
функций
ввода-

28.

ПОДСИСТЕМА
ПРЕРЫВАНИЙ
01:14:08
28

29.

Подсистема прерываний
Система прерываний любого компьютера является его
важнейшей частью, позволяющей быстро реагировать на
события,
обработка
которых
должна
выполнятся
немедленно: сигналы от машинных таймеров, нажатия
клавиш клавиатуры или мыши, сбои памяти и пр.
принудительная передача управления от
выполняемой программы к системе, происходящая при
возникновении определенного события.
Идея прерывания была предложена в середине 50-х годов,
основная цель введения механизма прерываний –
реализация асинхронного (независимого для разных
компонентов) режима работы и распараллеливание работы
отдельных устройств.
Прерывание
01:14:08
29

30.

Суть механизма прерываний
Во время выполнения ЭВМ текущей программы внутри машины и в связанной с ней
внешней среде (например, в технологическом процессе, управляемом ЭВМ) могут
возникать события, требующие немедленной реакции на них со стороны машины.
Реакция состоит в том, что машина прерывает обработку текущей программы и
переходит к выполнению некоторой другой программы, специально предназначенной
для данного события. По завершении этой программы ЭВМ возвращается к
выполнению прерванной программы.
Каждое событие, требующее прерывания, сопровождается сигналом, оповещающим ЭВ
- запросами прерывания.
Запросы на прерывания могут возникать
- внутри самой ЭВМ
(появление ошибки в работе ее аппаратуры, переполнение разрядной сетки, попытка
деления на 0, выход из установленной для данной программы области памяти,
затребование периферийным устройством операции ввода-вывода, завершение
операции ввода-вывода периферийным устройством или возникновение при этой
операции особой ситуации и др. )
- во ее внешней среде
(порождаются самой программой, моменты их появления, как правило, невозможно
предусмотреть, могут возникать от других ЭВМ, от аварийных и некоторых других
датчиков технологического процесса и т.п.)

31.

Чтобы ЭВМ могла, не требуя больших усилий от
программиста, реализовывать с высоким быстродействием
прерывания
программ,
машине
необходимы
соответствующие аппаратные и программные средства,
совокупность которых получила название системы
прерывания программ или контроллера прерывания.
Главные функции механизма прерываний:
распознавание и классификация прерываний
передача управления обработчику прерываний
корректное возвращение к прерванной программе.

32.

Переход от прерванной программы к обработчику прерываний и обратно должен
выполняться как можно быстрее. Соответствующий промежуток времени
называется латентной задержкой и является важной характеристикой
вычислительной системы.
Замечания:
Передача управления осуществляется аппаратно.
Программой Q может быть и прерванная программа Р.
Для корректной обработки прерывания очень важно запретить любые
прерывания до окончания начатой обработки, поскольку иначе может
возникать бесконечная последовательность вложенных прерываний. По
окончанию обработки прерывания необходимо восстановить прежний
режим системы прерываний, т.е. разрешить их.

33.

34.

Подсистема прерываний
IRQ8
IRQ9
IRQ0
Ведомый
контроллер
прерываний
IRQ1
Таймер
Клавиатура
IRQ10
IRQ2
IRQ11
IRQ3
IRQ12
IRQ4
IRQ13
IRQ5
IRQ14 Жесткий диск
IRQ6
Гибкий диск
IRQ15
IRQ7
Принтер
Ведущий
контроллер
прерываний
INT
COM2
COM1
Номер
вектора
Номера базовых векторов заносятся в контроллеры автоматически в
процессе начальной загрузки компьютера. Для ведущего контроллера
базовый вектор всегда равен 8, для ведомого – 70Н. Таким образом, номера
векторов, закрепленных за аппаратными прерываниями, лежат в
диапазонах 08h...0Fh и 70h...77h. Очевидно, что номера векторов
аппаратных прерываний однозначно связаны с номерами линий, или
01:14:08 устройствами компьютера. 34
уровнями IRQ, а через них – с конкретными

35.

Подсистема прерываний
Процессор, получив сигнал прерывания, выполняет последовательность
стандартных действий, обычно называемых процедурой прерывания (здесь
идет речь лишь о реакции самого процессора на сигналы прерываний, а не об
алгоритмах обработки прерываний)
01:14:08
35

36.

Подсистема прерываний
Самое начало оперативной памяти (от адреса OOOOН до 03FFН) отводится
под векторы прерываний — четырехбайтовые области, в которых хранятся
адреса обработчиков прерываний. В два старшие байта каждого вектора
записывается сегментный адрес обработчика, в два младшие — смещение.
Векторы, как и соответствующие им прерывания, имеют номера, причем
вектор с номером 0 располагается, начиная с адреса 0, вектор 1 — с адреса
4, вектор 2 — с адреса 8 и т.д. Вектор с номером n занимает, таким образом,
байты памяти от n*4 до n*4+3. Всего в выделенной под векторы области
памяти помещается 256 векторов.
Получив сигнал на выполнение процедуры прерывания с определенным
номером, процессор сохраняет в стеке выполняемой программы текущее
содержимое трех регистров процессора: регистра флагов, CS и IP. Два
последних числа образуют полный адрес возврата в прерванную программу.
Далее процессор загружает CS и IP из соответствующего вектора
прерываний, осуществляя, тем самым, переход на обработчик прерывания,
связанный с этим вектором.
Обработчик прерываний всегда заканчивается командой iret (interrupt return,
возврат из прерывания), выполняющей обратные действия — извлечение из
стека сохраненных там слов и помещение их назад в регистры IP и CS, а
также в регистр флагов. Это приводит к возврату в основную программу в ту
самую точку, где она была прервана.
01:14:08
36

37.

Подсистема прерываний
Запросы на обработку прерываний могут иметь различную природу.
Имеются еще два типа прерываний: внутренние и программные.
Внутренние прерывания возбуждаются цепями самого процессора при
возникновении одной из специально оговоренных ситуаций, например, при
выполнении операции деления на ноль или при попытке выполнить
несуществующую команду. За каждым из таких прерываний закреплен
определенный вектор, номер которого известен процессору. Например, за
делением на 0 закреплен вектор 0, а за неправильной командой — вектор 6.
Программные прерывания вызываются командой int с числовым
аргументом, который рассматривается процессором, как номер вектора
прерывания. Если в программе встречается, например, команда
int 13h
то процессор выполняет ту же процедуру прерывания, используя в качестве
номера вектора операнд команды int. Программные прерывания
применяются в первую очередь для вызова системных обслуживающих
программ — функций DOS и BIOS.
01:14:08
37
English     Русский Правила