10.1.3 Программы обработки прерываний

10.1.3 Программы обработки прерываний

Как уже говорилось выше (раздел 6.4.1), возникновение прерывания побуждает ядро запускать программу обработки прерываний, в основе алгоритма которой лежит соотношение между устройством, вызвавшим прерывание, и смещением в таблице векторов прерываний. Ядро запускает программу обработки прерываний для данного типа устройства, передавая ей номер устройства или другие параметры для того, чтобы идентифицировать единицу устройства, вызвавшую прерывание. Например, в таблице векторов прерываний на Рисунке 10.6 показаны две точки входа для обработки прерываний от терминалов ("ttyintr"), каждая из которых используется для обработки прерываний, поступивших от 8 терминалов. Если устройство tty09 прервало работу системы, система вызывает программу обработки прерывания, ассоциированную с местом аппаратного подключения устройства. Поскольку с одной записью в таблице векторов прерываний может быть связано множество физических устройств, драйвер должен уметь распознавать устройство, вызвавшее прерывание. На рисунке записи в таблице векторов прерываний, соответствующие прерываниям от терминалов, имеют метки 0 и 1, чтобы система различала их между собой при вызове программы обработки прерываний, используя к примеру этот номер в качестве передаваемого программе параметра. Программа обработки прерываний использует этот номер и другую информацию, переданную механизмом прерывания, для того, чтобы удостовериться, что именно устройство tty09, а не tty12, прервало работу системы. Этот пример в упрощенном виде показывает то, что имеет место в реальных системах, где на самом деле существует несколько уровней контроллеров и соответствующих программ обработки прерываний, но он иллюстрирует общие принципы.

Если подвести итог, можно сказать, что номер устройства, используемый программой обработки прерываний, идентифицирует единицу аппаратуры, а младший номер в файле устройства идентифицирует устройство для ядра. Драйвер устройства устанавливает соответствие между младшим номером устройства и номером единицы аппаратуры.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Программы для обработки MP3-файлов

Из книги Музыкальный центр на компьютере автора Леонтьев Виталий Петрович

Программы для обработки MP3-файлов Mp3directCut Сайт: http://www.mpesch3.de/Размер: 0,1 МбСтатус: FreewareИзменять MP3-файлы с помощью громоздкого звукового редактора очень неудобно. Да и на качестве звука отражается не лучшим образом: сначала файл «разжимается», потом, после обработки,


Обработчики прерываний

Из книги Энциклопедия разработчика модулей ядра Linux автора Померанц Ори

Обработчики прерываний Везде, кроме последней главы, все, что мы пока делали в ядре, сводилось к запросам и ответам разным процессам или работали со специальными файлом, посылали ioctl или выдавали системный вызов. Но работа ядра не должна сводится только к обработке


Перенаправление прерываний

Из книги Тайм-менеджмент для системных администраторов автора Лимончелли Томас

Перенаправление прерываний Начнем с попытки устранить самое неприятное из возможных прерываний: к вам обращаются с проблемой, которую должен решить кто-то другой. Может быть, поступим так:— Том, проблема с веб-сервером.— Отлично! Сообщи мне о результатах, когда


Источники прерываний таймера

Из книги Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform автора Кёртен Роб

Источники прерываний таймера На этом мы, пожалуй, закончим наш краткий экскурс по стране таймеров и перейдем к вещам, которые уже не так очевидны.Откуда возникают прерывания таймера? На рисунке ниже приведены аппаратные компоненты (и некоторые характерные для PC значения


Написание обработчиков прерываний

Из книги Как заработать на фотографии в Интернете автора Зьомко Ольга

Написание обработчиков прерываний Давайте посмотрим, как настроить обработчики прерываний — вызовы, характеристики и кое-какие стратегии


Подключение обработчиков прерываний

Из книги Компьютер для тех, кому за… автора Грибова Оксана

Подключение обработчиков прерываний Для подключения к источнику прерывания воспользуйтесь функцией InterruptAttach() или InterruptAttachEvent().#include <sys/neutrino.h>int InterruptAttachEvent(int intr, const struct sigevent *event, unsigned flags);int InterruptAttach(int intr, const struct sigevent* (*handler)(void *area, int id), const void *area, int size, unsigned flags);Параметр


Обработчики прерываний

Из книги Разработка ядра Linux автора Лав Роберт

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


Глава 9 Программы для обработки снимков

Из книги автора

Глава 9 Программы для обработки снимков После того как съемка окончена, пришло время переносить получившиеся снимки на компьютер и подготавливать их к отправке на проверку Разумеется, вы уже знаете, как вынимать карточку из фотоаппарата, вставлять ее, например, в


Глава 14 Программы для обработки фото: краткий обзор, для чего могут пригодиться

Из книги автора

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


Глава 15 Программы для обработки видео: краткий обзор для чего могут пригодиться

Из книги автора

Глава 15 Программы для обработки видео: краткий обзор для чего могут пригодиться Аналогично с фотографиями вы можете обрабатывать и видео на компьютере. Для этого также есть масса программ, которые позволят вам видоизменять видеофайлы. Если несколько лет назад


Обработчики прерываний

Из книги автора

Обработчики прерываний Функция, которую выполняет ядро в ответ на определенное прерывание, называется обработчиком прерывания (interrupt handler) или подпрограммой обслуживания прерывания (interrupt service routine). Каждому устройству, которое генерирует прерывания, соответствует свой


Реализация системы обработки прерываний

Из книги автора

Реализация системы обработки прерываний Возможно, не вызовет удивления, что реализация системы обработки прерываний в операционной системе Linux очень сильно зависит от аппаратной платформы. Она зависит от типа процессора, типа контроллера прерываний, особенностей


Запрещение и разрешение прерываний

Из книги автора

Запрещение и разрешение прерываний Для локального запрещения прерываний на текущем процессоре (и только на текущем процессоре) и последующего разрешения можно использовать следующий код.local_irq_disable();/* прерывания запрещены ... */local_irq_enable();Эти функции обычно реализуются в


Состояние системы обработки прерываний

Из книги автора

Состояние системы обработки прерываний Часто необходимо знать состояние системы обработки прерываний (например, прерывания запрещены или разрешены, выполняется ли текущий код в контексте прерывания или в контексте процесса).Макрос irq_disabled(), который определен в файле


Реализация отложенных прерываний

Из книги автора

Реализация отложенных прерываний Отложенные прерывания определяются статически во время компиляции. В отличие от тасклетов, нельзя динамически создать или освободить отложенное прерывание. Отложенные прерывания представлены с помощью структур softirq_action, определенных


Использование отложенных прерываний

Из книги автора

Использование отложенных прерываний Отложенные прерывания зарезервированы для наиболее важных и критичных ко времени выполнения обработчиков нижних половин в системе. Сейчас только две подсистемы — подсистема SCSI и сетевая подсистема — напрямую используют механизм