link0 link1 link2 link3 link4 link5 link6 link7 link8 link9 link10 link11 link12 link13 link14 link15 link16 link17 link18 link19 link20 link21 link22 link23 link24 link25 link26 link27 link28 link29 link30 link31 link32 link33 link34 link35 link36 link37 link38 link39 link40 link41 link42 link43 link44 link45 link46 link47 link48 link49 link50 link51 link52 link53 link54 link55 link56 link57 link58 link59 link60 link61 link62 link63 link64 link65 link66 link67 link68 link69 link70 link71 link72 link73 link74 link75 link76 link77 link78 link79 link80 link81 link82 link83 link84 link85 link86 link87 link88 link89 link90 link91 link92 link93 link94 link95 link96 link97 link98 link99 link100 link101 link102 link103 link104 link105 link106 link107 link108 link109 link110 link111 link112 link113 link114 link115 link116 link117 link118 link119 link120 link121 link122 link123 link124 link125 link126 link127 link128 link129 link130 link131 link132 link133 link134 link135 link136 link137 link138 link139

PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Системные платы

Прерывания

Запросы на прерывания (IRQ), или аппаратные прерывания, используются различными устройствами для сообщения системной плате (процессору) о необходимости обработки определенного запроса. Эта процедура подобна поднятию руки студентом, чтобы привлечь внимание преподавателя.

Каналы прерываний представляют собой проводники на системной плате и соответствующие контакты в разъемах. После получения запроса IRQ компьютер приступает к выполнению специальной процедуры его обработки, первым шагом которой является сохранение в стеке содержимого регистров процессора. Затем происходит обращение к таблице векторов прерываний, в которой содержится список адресов памяти, соответствующих определенным номерам (каналам) прерываний. В зависимости от номера полученного прерывания запускается программа, относящаяся к данному каналу.

Указатели в таблице векторов определяют адреса памяти, по которым записаны программы-драйверы для обслуживания платы, пославшей запрос. Например, для сетевой платы вектор прерывания содержит адрес сетевых драйверов, предназначенных для работы с ней; для контроллера жесткого диска вектор указывает на программный код BIOS, обслуживающий контроллер.

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

Благодаря прерываниям компьютер может своевременно реагировать на внешние события. Каждый раз, когда последовательный порт передает байт данных системе, генерируется соответствующее прерывание, благодаря которому система должна обработать байт данных до поступления следующих данных. Учтите, что в некоторых случаях устройство, подключаемое к порту (например, модем с микросхемой UART 16550 или выше), может содержать специальный буфер, позволяющий сохранять несколько символов перед генерированием прерывания.

Аппаратные прерывания имеют иерархию приоритетов: чем меньше номер прерывания, тем выше приоритет. Прерывания с более высоким приоритетом обладают преимуществом и могут, так сказать, прерывать обработку других прерываний. В результате в компьютере может возникнуть несколько “вложенных” прерываний.

При генерации большого количества прерываний стек может переполниться и компьютер “зависнет”. При этом будет выдано сообщение Internal stack overflow — system halted. Если при работе в DOS такая ошибка возникает слишком часто, попытайтесь исправить ситуацию, увеличив значения параметра Stacks (размер стека) в файле Config.sys.

По шине ISA запросы на прерывание передаются в виде перепадов логических уровней, причем для каждого из них предназначена отдельная линия, подведенная ко всем разъемам. Каждому номеру аппаратного прерывания соответствует свой проводник. Системная плата не может определить, в каком разъеме находится пославшая прерывание плата, поэтому возможно возникновение неопределенной ситуации в том случае, если несколько плат используют один канал. Чтобы этого не происходило, система настраивается так, чтобы каждое устройство (адаптер) использовало свою линию (канал) прерывания. Использование одной линии сразу несколькими разными устройствами в большинстве случаев недопустимо.

Компания IBM в свое время разработала методы совместного использования прерываний на шине ISA, однако лишь некоторые устройства придерживались необходимых правил, и данная методология так и не была воплощена в жизнь. В то же время в шине PCI изначально предусмотрена возможность совместного использования прерываний. На самом деле все устройства, подключенные к шине PCI, используют прерывание A — прерывание самой шины. Реальная проблема состоит в том, что в действительности в системе одновременно используются два набора прерываний: ISA и PCI. Чтобы карты PCI могли работать в системе, прерывания PCI отображаются на прерывания ISA, которые уже не допускают совместного использования. Таким образом, лучше назначить всем картам (даже с интерфейсом PCI) различные прерывания. Конфликты, возникающие между прерываниями PCI и ISA, были свойственны ранним поколениям компьютеров и вызывали множество проблем. И они не самоустранились после выхода в свет операционной системы Windows 95 и технологии Plug and Play.

Технология совместного использования прерываний для адаптеров PCI называется PCI IRQ Steering и поддерживается уже более десятилетия операционными системами, начиная с Windows 95 OSR 2.x, а также BIOS системной платы. Эта технология дает возможность Windows с поддержкой устройств Plug and Play динамически распределять стандартные прерывания для плат PCI (обычно использующих прерывание PCI INTA#), а также назначать одно прерывание нескольким платам PCI.

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

Поскольку в шине ISA совместное использование прерываний обычно не допускается, при установке новых плат может обнаружиться недостаток линий прерываний. Если две платы используют одну и ту же линию IRQ, то их нормальную работу нарушит возникший конфликт.