АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Ввод-вывод и прерывания

Читайте также:
  1. Ввод-вывод нижнего уровня
  2. Ввод-вывод отдельных символов.
  3. Ввод-вывод строк.
  4. Ввод-вывод. Общие сведения
  5. Опрос устройств и прерывания. Исключительные ситуации и системные вызовы
  6. Организация машины: принципы фон Неймана, управляющее устройство, системы команд и типы команд. Ввод/вывод и прерывания.
  7. Потоковый ввод-вывод
  8. Форматный ввод-вывод.

Прерывание (англ. interrupt) – сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.

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

На современных ПК обработчики основных аппаратных и программных прерываний находятся в памяти BIOS. Современная операционная система, во время своей загрузки, заменяет эти обработчики своими.

1. Аппаратные, синхронные или внутренние прерывания – события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции.

2. Прерывание ввода-вывода, асинхронные или внешние – события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания фиксируется, как запрос на прерывание (англ. Interrupt request, IRQ).

3. Программные прерывания, исключения (частный случай внутреннего прерывания) – синхронное прерывание, которое может осуществить программа с помощью специальной инструкции. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения, драйверов и операционной системы.

4. Прерывание по таймеру (частный случай внутреннего прерывания) генерируется таймером процессора раз в 55 мс (примерно 18.2 раз в секунду). Это прерывание позволяет операци­онной системе выполнять некоторые свои функции периодически, через заданные промежутки времени.

С точки зрения программы пользователя, прерывания – это не что иное, как нарушение обычной последовательности исполнения. После завершения об­работки прерывания работа возобновляется. Таким образом, програм­ма пользователя не должна включать в себя какой-нибудь специальный код, чтобы приспосабливаться к прерываниям. За приостановку программы пользова­теля и возобновление ее работы с того самого места, в котором она была прерва­на, отвечают процессор и операционная система.

Множественные прерывания

До сих пор нами рассматривался случай возникновения одного прерывания. Представим себе ситуацию, когда может произойти несколько прерываний. На­пример, программа получает данные по коммуникационной линии и сразу же распечатывает результат. Принтер будет генерировать прерывание при каждом завершении операции печати, а контроллер коммуникационной линии – при каждом поступлении новой порции данных. Эта порция может состоять из одно­го символа или из целого блока, в зависимости от установленного порядка об­служивания. В любом случае возможна ситуация, когда коммуникационное пре­рывание произойдет во время обработки прерывания принтера.

В такой ситуации возможны два подхода. Первый – это запретить новые пре­рывания до тех пор, пока обрабатывается предыдущее.

Запрет прерываний означает, что процессор может и должен игнорировать любой новый сигнал прерывания. Если в это время происходит прерывание, оно обычно остается в состоянии ожидания, и до него дойдет очередь, когда процессору вновь будет можно обрабатывать прерыва­ния. Таким образом, если во время работы программы пользователя происходит прерывание, на другие прерывания тут же накладывается запрет. После завершения работы программы обработки прерывания запрет снимается, и перед возвратом к ис­полнению прерванной программы процессор проверяет наличие других прерываний. Это удачный и простой подход, при котором прерывания обрабатываются в строго последовательном порядке.

1) Маскирование прерываний

В зависимости от возможности запрета внешние прерывания делятся на:

маскируемые прерывания – прерывания, которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний (в x86-процессорах – сбросом флага IF в регистре флагов);

немаскируемые прерывания (англ. Non maskable interrupt, NMI) – обрабатываются всегда, независимо от запретов на другие прерывания. К примеру, такое прерывание может быть вызвано сбоем в микросхеме памяти.

Обработчики прерываний обычно пишутся таким образом, чтобы время их обработки было как можно меньшим, поскольку во время их работы могут не обрабатываться другие прерывания, а если их будет много (особенно от одного источника), то они могут теряться.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)