Каналы запросов прерывания (IRQ), или аппаратные прерывания, используются различными устройствами для сообщения системной плате (процессору) о необходимости обработки определенного запроса.
Каналы прерываний представляют собой проводники на системной плате и соответствующие контакты в разъемах. После получения IRQ компьютер приступает к выполнению специальной процедуры его обработки, первым шагом которой является сохранение в стеке содержимого регистров процессора. Затем происходит обращение к таблице векторов прерываний, в которой содержится список адресов памяти, соответствующих определенным номерам (каналам) прерываний. В зависимости от номера полученного прерывания, запускается программа, относящаяся к данному каналу.
Указатели в таблице векторов определяют адреса памяти, по которым записаны программы-драйверы для обслуживания платы, пославшей запрос. Например, для сетевой платы вектор прерывания содержит адрес сетевых драйверов, предназначенных для ра-боты с ней; для контроллера жесткого диска вектор указывает на программный код BIOS, обслуживающий контроллер.
После выполнения необходимых действий по обслуживанию устройства, пославшего запрос, процедура обработки прерывания восстанавливает содержимое регистров процессора (извлекая его из стека) и возвращает управление компьютером той программе, которая выполнялась до возникновения прерывания.
Благодаря прерываниям компьютер может своевременно реагировать на внешние события. Например, всякий раз, когда с последовательного порта в систему поступает новый байт, вырабатывается IRQ.
Аппаратные прерывания имеют иерархию приоритетов: чем меньше номер прерывания, тем выше приоритет. Прерывания с более высоким приоритетом обладают преимуществом и могут "прерывать прерывания". В результате в компьютере может возникнуть несколько "вложенных" прерываний.
При генерации большого количества прерываний стек может переполниться и компьютер зависнет. Если такая ошибка возникает слишком часто при работе в DOS, попытайтесь исправить ситуацию, увеличив параметр Stacks (размер стека) в файле Config.sys. В операционных системах Windows 9x и Windows NT такая ошибка встречается довольно редко.
По шине ISA запросы на прерывание передаются в виде перепадов логических уровней, причем для каждого из них предназначена отдельная линия, подведенная ко всем разъемам. Каждому номеру аппаратного прерывания соответствует свой проводник. Систем-ная плата не может определить, в каком разъеме находится пославшая прерывание плата, поэтому возможно возникновение неопределенной ситуации в том случае, если несколько плат используют один канал. Чтобы этого не происходило, система настраивается так, что каждое устройство (адаптер) использует свою линию (канал) прерывания. Применение одной линии сразу несколькими разными устройствами в большинстве случаев недопустимо. Совместное использование прерывания допускается только PCI-устройствами. Эта возможность поддерживается системной BIOS и операционной системой.
Внешние аппаратные прерывания часто называются маскируемыми прерываниями, т. е. их можно отключить ("замаскировать") на время, пока процессор выполняет другие критические операции.
Поскольку в шине ISA совместное использование прерываний обычно не допускается, при установке новых плат может обнаружиться недостаток линий прерываний. Если две платы используют одну и ту же линию IRQ, то их нормальную работу нарушит возникший конфликт.
суббота, 27 сентября 2008 г.
Подписаться на:
Комментарии к сообщению (Atom)
0 коммент.:
Отправить комментарий