А   Б  В  Г  Д  Е  Є  Ж  З  І  Ї  Й  К  Л  М  Н  О  П  Р  С  Т  У  Ф  Х  Ц  Ч  Ш  Щ  Ю  Я 


Перериває програма

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

Прерывающие программы добавляют сообщения об обращении с одного конца, Которые извлекаются с другого конца для начала процесса обработки. Такой механизм обеспечивает выполнение процесса обработки принятое информации в порядке поступления входных запросов.

Прерывающие программы при одновременно поступивших запросах выполняются в такой последовательности: 1) по вводу-1 выводу; 2) внешние; 3) программные или при обращении к супервизор. Порядок этот может быть изменен установкой соответствующей маски в ССП. Прерывание данного класса разрешается при наличии единицы в соответствующей разряде маски или запрещается (маскируется), если этот разряд. Под маской понимается определенный для каждого прерывания разряд в коде слова состояния программы.

Если прерывающая программа единственного, то прерывание может быть выполнено по схеме, Приведенное на рис. 547. Сигнал с выхода ПР БПП подается на вход разрешения выдачи адрес сроки PC СМУ.

Вектор состояния процессора в малых ЭВМ (СМ-1420 СМ-1300 и др. Каждая прерывающая программа может установить свою маску. При формировании маски 1 устанавливаются в разряды Соответствующие запросам ( прерывающих программам) с более высоким, чем в данной программы, приоритетом.

Набор прерывающих программ работает как бы в режиме мультипрограммной системы. Например, в типичном случае во время работы телетайпа по выводу длинного текста, записанно в буферной памяти, программа времени каждые 16 мс выдает сигнал начала регенерации изображения на дисплее и примерно один раз в секунду программа обработки клавиатуры воспринимает коды символов, вводимых оператором в ЭВМ через клавиатуру. Каждая из ЭТИХ программ работает асинхронно и совершенно независимо от всех других.

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

Схема прерывания. Каждой прерывающих программе соответствует своя маска. Вызов маски из памяти и ее засылка в JRG3IJP производится в начале выполнения программы. Маска может формироваться программным путем в процессе выполнения самой программы и свидетельствовать, например, о получении результатов, готовых к выдаче. Сигналы прерывания /7 (рис. 328) получают с помощью элементов И при наличии причины прерывания и отсутствии запрета на прерывание по данной причине. Для выборки одного из нескольких появившихся одновременно сигналов П1 имеется приоритетная схема прерывания Пспр. Сигнал с г-го выхода Пспр должен сформировать команду безусловно перехода БП к программе-диспетчеру.

Поэтому каждая прерывающая программа должна быть составлена так, чтоб она могла работать независимо от других. Для этого следует также избегать непосредственных связей между программами. Две и более программы могут работать с одними и теме же файлами данных, но следует избегать возможности появления взаимного влияния между различными программами, изменяющих один и тот же файл.
 Начальный адрес прерывающих программы запоминается в Специальных ячейках, находящихся за пределами программы.

Пример содержимого стека. После окончания прерывающих программы осуществляется возврат во вторую подпрограмму, а из нее-в первую подпрограмму. В приведенной примере обе команды PSH необходимо затем Дополнить соответствующих командами PUL, Которые обеспечат возврат в основную программу.

После выполнения прерывающих программы происходит возврат к Прерванное. Для этого прерывающую программу заключает команда Возврат из прерывания или, иначе, Загрузить (восстановить) ССП. В ЭВМ общего назначения из ячейки ОП, в которой хранится ССП Прерванное программы, извлекается и вновь становится текущим старое ССП. В мини - и микроЭВМ по этой команде старое ССП извлекается из магазинной памяти.

Рассмотрим пример прерывающих программы.

Для каждой прерывающих программы может быть установлена своя маска. Маски для всех программ обычно хранятся в памяти и засылаются в регистр маски, если соответствующая прерывающая программа вызывается к исполнению. При формировании маски состояние 1 получают лишь триггеры, Соответствующие программам с более высоким, чем в данной программы, приоритетом.

После исполнения прерывающих программы должен быть осуществлен выход из нее.

После исполнения прерывающих программы должен быть осуществлен выход яз нее. Если за это время в систему не появились запросы прерывания, Соответствующие заявкам на выполнение Иных более принципиальных работ, то выход заключается в восстановлении состояния Прерванное программы. Если управление запоминания состояния и выходом О возложенных на саму прерывающую программу, то она должна состоя из трех частей: подготовительной и заключительной, обеспечивающих переключение программ, и собственно прерывающих программы, осуществляющих ту работу, которая была затребований запросом прерывания.

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

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

Прерывание при использовании ССП. В конце выполнения прерывающих программы для перехода к Прерванное программе старое ССП записывается в качестве текущего.

Поскольку обмен информацией прерывающих программы с основной производится таким же способом, что и между разными прерывающих программами, возникает вопрос, существует ли разница между прерывающих программами и основной. Фактически разница между ними совершенно несущественно и заключается в уровне приоритета. Основная программа имеет наинизший приоритет и поэтому выполняется только тогда, когда не работает ни одна из прерывающих программ. Следовательно, можно допустит существование нескольких основных программ, связанных друг с другом через очередь сообщений. Для ЭТИХ программ или процессов обработки данных могут употребляться одни и те же файлы данных и могут, как и в случае прерывающих программ, возбуждаться другие процессы обработки данных. Такой режим работы аналогичен работе системы с разделением времени и хорошо подходит для организации любой интерактивной программы.

Схема механизма прерывания. По окончании работы прерывающих программы управление возвращается к команде А1 основной Прерванное программы путем переноса команды А 1 из РгАВ в СЧК - Основная программа продолжается с команды А1 следующей сразу же за то, на которой произошло прерывание.

При входе в прерывающую программу аппаратура машины записывает старое ССП по адресу, определяемом текущим значением АЗП, которое затем увеличивается на единицу. После этого машина выбирает новое ССП в согласовании со значением базового адрес и номера уровня. В конце прерывающих программы выполняется команда, которая уменьшает АЗП на единицу и вызывает ССП по адресу из АЗП. Ячейки массива старых ССП НЕ привязаны к уровням прерывания, и расположение в них информации определяется порядком следования запросов прерывания во времени. До сих пор для простоты предполагалось, что ССП Занимает одну ячейку памяти. В реальных системах длины одной ячейки Не хватает и ССП Занимает несколько последовательных ячеек памяти.

Процедура перехода к прерывающих программе и возврата из нее, реализуемая в ЕС ЭВМ, объяснена на рис. 917. Каждому классу прерывания отводятся в постоянно распределенной области памяти фиксированные ячейки ОП для хранения старого ССП и нового ССП.

После передачи управления прерывающих программе счетчик гасится и процедура поиска запросов прерывания возобновляется, начиная с нулевого уровня.

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

ЗП) процессор переходит к прерывающих программе Я2 не сразу, так как требуется время /р на анализ запроса и окончание действий по выполняемой команде прерываемой программы Пи называемое временем реакции системы на запрос прерывания. Сразу после ее окончания в течение tB восстанавливается состояние Прерванное программы Я и ей передается управление. Сумма времени, затрачиваемому на запоминание состояния Прерванное программы Я и на возврат к ней, называют временем обслуживания программы. Время реакции tp и обслуживания t0tg tB характеризуют потери машинного времени на организацию процесса прерывания и быстродействие ЭВМ по обслуживанию запросов прерывания.

Бит запроса INTF необходимо очистить прерывающих программой перед тем, как опять разрешить это прерывание. Прерывание INT может вывести процессор из режима SLEEP, если перед входом в этот режим бит INTE был установлен в единицу.

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

Возврат к Прерванное программе осуществляет заключительная часть прерывающих программы, в которой команды передачи данных с автоинкрементной прямой адресацией по указателя стека производят передачу из стека сохраненных в нем состояний общих регистров в Соответствующие регистры. Последней командой прерывающих программы - командой Возврат из прерываний - первое слово вектора состояния Прерванное программы загружается из стека в счетчик команд, а второе слово - в регистр слова состояния процессора. Передача каждого слова сопровождается увеличением УС на два. После этого восстанавливается выполнение Прерванное программы.

Код NAoAiA2 определяет адрес вектора прерывания соответствующей прерывающих программы, а точнее, начальный адрес группы ячеек ОП, хранящий информацию о начальном адресе прерывающих программы. В рассматриваемом МП сохранение в памяти вектора состояния прерываемой программы ft J & WtWi% Ju% teTWrrpax вектором прерывания прерывающих программы выполняются в основном не аппаратурными, а программными средствами.

Прерывание вычисления по основной программе и переход к прерывающих программе, а затем снова возвращение к основной программе Организуется по такой схеме.

Временная диаграмма процедуры прерывания и арбитража в интерфейсе Q-шина (время указано в наносекундах. | Временная диаграмма операции чтение слона в интерфейсе Q-шина (время указано в наносекундах. Процессор реализует прерывание текущей программы и переход к прерывающих программе. Прерывание вычисления по основной программе и переход к прерывающих программе, а затем снова возвращение к основной программе Организуется по такой схеме.

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

Код N - А0АгА2 определяет адрес вектора прерывания соответствующей прерывающих программы, а точнее, начальный адрес группы ячеек ОП, хранящий информацию о начальном адресе прерывающих программы. в рассматриваемом МП сохранение в памяти вектора состояния прерываемой программы и замена его в регистрах вектором прерывания прерывающих программы в отличие от малых ЭВМ СМ-4 выполняются в основном не аппаратурными, а программными средствами.

Все другие регистры обычно сохраняются программно, по командам прерывающих программы.

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

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

Управление переходит к команде, загружающей в СЧК адрес начала прерывающих программы. Начальная часть этой программы помещает в стек содержимое регистра-аккумулятора Л и регистра признаков F (команда PUSH PSW), а также и других программно доступных регистров МП, если прерывающая программа будет их использовать. При этом каждой командой передачи в стек передается содержимое соответствующей пары регистров. Далее выполняется собственно программа обработки прерывания.

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

При этом способе прерываний маска прерываний НЕ опрашивается, поэтому обе прерывающие программы тоже можно вложить друг в друга.

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

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

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

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