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

Подсистема прерываний

Читайте также:
  1. Биологически унаследованные качества человека должны быть поняты как подсистема развития определенных психических качеств.
  2. Вопрос №30. Система прерываний микропроцессора. Алгоритм работы микропроцессора при обработки сигналов маскируемого и немаскируемого прерываний.
  3. Диспетчеризация и приоритезация прерываний в ОС
  4. Институциональная подсистема
  5. Менеджмента в подсистемах
  6. Место военных судов в судебной системе РФ. Подсистема военных судов. Порядок их формирования
  7. Механизм прерываний
  8. Назначение и типы прерываний
  9. Обработка прерываний в персональной ЭВМ
  10. Обработчики прерываний и исключительных состояний.
  11. Организация обработки прерываний в ЭВМ
  12. Организация прерываний

 

В модели учебной ЭВМ предусмотрен механизм векторных внешних преры­ваний. Внешние устройства формируют запросы на прерывания, которые по­ступают на входы контроллера прерываний. При подключении ВУ, способ­ного формировать запрос на прерывание, ему ставится в соответствие номер входа контроллера прерываний — вектор прерывания, принимающий значе­ние в диапазоне 0—9.

Контроллер передает вектор, соответствующий запросу, процессору, который начинает процедуру обслуживания прерывания.

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

Механизм прерываний, реализованный в модели учебной ЭВМ, поддержива­ет таблицу векторов прерываний, которая создается в оперативной памяти моделью операционной системы (если она используется) или непосредствен­но пользователем.

Номер строки таблицы соответствует вектору прерывания, а элемент табли­цы — ячейка памяти, в трех младших разрядах которой размещается началь­ный адрес подпрограммы, обслуживающей прерывание с этим вектором. Таблица прерываний в рассматриваемой модели жестко фиксирована— она занимает ячейки памяти с адресами 100—109. Таким образом, адрес обработ-

чика с вектором 0 должен располагаться в ячейке 100, с вектором 2 — в ячей­ке 102. При работе с прерываниями не рекомендуется использовать ячейку 100—109 для других целей.

Процессор начинает обработку прерывания (если они разрешены), завершив текущую команду. При этом он:

1. Получает от контроллера вектор прерывания.

2. Формирует и помещает в верхушку стека слово, три младших разряда ([3:5]) которого — текущее значение PC (адрес возврата из прерывания), а разряды [1:2] сохраняют десятичный эквивалент шестнадцатеричной циф­ры, определяющей значение вектора флагов (I, OV, S, Z). Например, если 1=1, OV = 0, S = 1, Z= 1,то в разряды [1:2] запишется число 1110 =Ю112.

3. Сбрасывает в 0 флаг разрешения прерывания I.

4. Извлекает из таблицы векторов прерываний адрес обработчика, соответст­вующий обслуживаемому вектору, и помещает его в PC, осуществляя тем самым переход на подпрограмму обработчика прерывания.

Таким образом, вызов обработчика прерывания, в отличие от вызова подпро­граммы, связан с помещением в стек не только адреса возврата, но и текуще­го значения вектора флагов. Поэтому последней командой подпрограммы обработчика должна быть команда iret, которая не только возвращает в PC три младшие разряда ячейки — верхушки стека (как ret), но и восстанавли­вает те значения флагов, которые были в момент перехода на обработчик прерыва㾸ия.

Не всякое событие, которое может вызвать прерывание, приводит к прерыва­нию текущей программы. В состав процессора входит программно-доступный флаг I разрешения прерывания. При 1 = 0 процессор не реагирует на запросы прерываний. После сброса процессора флаг I так же сброшен v все прерывания запрещены. Для того чтобы разрешить прерывания, следует в программе выполнить команду ei (от англ. enable interrupt).

Выше отмечалось, что при переходе на обработчик прерывания флаг I автоматически сбрасывается, в этом случае прервать обслуживание одного прерывания другим прерыванием нельзя. По команде iret значение флагов вос­станавливается, в т. ч. вновь устанавливается 1=1, следовательно, в основной программе прерывания опять разрешены.

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

Таким образом, флаг I разрешает или запрещает все прерывания системы-Если требуется выборочно разрешить некоторое подмножество прерывании,

используются программно-доступные флаги разрешения прерываний непо­средственно на внешних устройствах.

Как правило, каждое внешнее устройство, которое может вызвать прерыва­ние, содержит в составе своих регистров разряд флага разрешения прерыва­ния (см. формат регистров CR и CTR на рис. 8.9, 8.13), по умолчанию уста­новленный в 0. Если оставить этот флаг в нуле, то внешнему устройству за­прещается формировать запрос контроллеру прерываний.

Иногда бывает удобно (например, в режиме отладки) иметь возможность вы­звать обработчик прерывания непосредственно из программы. Если исполь­зовать для этих целей команду call, которая помещает в стек только адрес возврата, то команда iret, размещенная последней в обработчике, может ис­казить значения флагов (все они будут сброшены в 0, т. к. команда call фор­мирует только три младшие разряда ячейки верхушки стека, оставляя осталь­ные разряды в 000).

Поэтому в системах команд многих ЭВМ, в т. ч. и нашей модели, имеются команды вызова прерываний— int n (в нашей модели л е {0, 1,..., 9}), где в-— вектор прерывания. Процессор, выполняя команду int n, производит те же действия, что и при обработке прерывания с вектором n.

характерно, что с помощью команды int л можно вызвать обработчик прерывания даже в том случае, когда флаг разрешения прерывания I сброшен.

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |

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



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