Cтраница 1
Типы прерываний. [1] |
Номер прерывания используется как индекс в таблице меток процедур прерывания. [2]
При векторном прерывании код номера прерывания передается процессору тем устройством ввода / вывода, которое данное прерывание запросило. Для этого процессор проводит цикл чтения по магистрали, и по шине данных получает код номера прерывания. Шина адреса в данном цикле обычно не используется, так как устройство, запросившее прерывание, и так знает, что процессор будет обращаться именно к нему. [3]
Здесь параметр N по-прежнему содержит номер прерывания, а параметр Adress должен содержать адрес специально оформленной процедуры, которую надо подставить в таблицу векторов. [4]
В случае прерываний, определяемых пользователем, номер прерывания задается вторым байтом кода команды INT. Данный вид прерывания может быть использован для вызова системных процедур и ( или) процедур пользователя в любом месте программы. [5]
Векторные прерывания - прерывания, при которых номер прерывания ( адрес вектора) выдается устройством, запросившим прерывание. [6]
Радиальные прерывания - прерывания, при которых номер прерывания ( адрес вектора) определяется номером используемой линии запроса прерывания. [7]
Получив прерывание, процессор откладывает текущую работу и по номеру прерывания обращается в специальную область оперативной памяти, в которой находится так называемый вектор прерываний. [8]
Упрощенный алгоритм обработки прерывания. [9] |
Программное прерывание тоже обслуживается через таблицу векторов прерываний, но номер прерывания указывается в составе команды, вызывающей прерывание. [10]
Конфликты между устройствами за обладание одними и теми же ресурсами ( номерами прерываний, адресами портов и каналами прямого доступа к памяти) вызывают массу проблем у пользователей при установке устройств, подключаемых к шине ISA. С появлением интерфейса PCI и с оформлением стандарта plug-and - play появилась возможность выполнять установку новых устройств с помощью автоматических программных средств - эти функции во многом были возложены на операционную систему. [11]
Последние три бита ( L2, LI, L0) соответствуют двоичному коду номера завершаемого прерывания. [12]
Процессор, получив аппаратное прерывание, заканчивает выполнение текущей команды и обращается к памяти в область таблицы векторов прерываний, в ту ее строку, которая определяется номером запрошенного прерывания. Затем процессор читает содержимое этой строки ( код вектора прерывания) и переходит в адрес памяти, задаваемый этим вектором. Начиная с этого адреса в памяти должна располагаться программа обработки прерывания с данным номером. В конце программы обработки прерываний обязательно должна располагаться команда выхода из прерывания, выполнив которую, процессор возвращается к выполнению прерванной основной программы. Параметры процессора на время выполнения программы обработки прерывания сохраняются в стеке. [13]
О загружает в CS и IP, соответственно, второе и первое слова вектора прерываний, считанного из таблицы векторов в ОЗУ по адресу 4 х орг ( 4 х номер прерывания); вся таблица векторов занимает 1024 байта, то есть всего может быть 256 различных векторов прерывания. Например, команда INT 1Ah считает из ОЗУ вектор, находящийся по адресу 68h 4 lAh, то есть в регистр CS будет загружен адрес сегмента из слова по адресу 6Ah, а в регистр IP - из слова по адресу 68h смещение программы обработки этого прерывания. [14]
Одна или несколько ячеек памяти, содержащие адрес программы обработки прерывания и, возможно, слово состояния процессора, устанавливаемое при обращении к этой программе; адрес вектора прерывания определяется по номеру прерывания; для обработки прерывания состояние процессора сохраняется на стеке, и в регистры процессора загружается информация из вектора прерывания. [15]