Прерывающими программамиПрерывающие программы
Второй способ вывода процессора из состояния ожидания заключается в подаче запроса прерывания по входу INTR. Однако в этом случае процессор выходит из состояния ожидания только временно. По команде WAIT не происходит автоматического наращивания указателя команд IP, вследствие чего после выполнения соответствующей программы обслуживания прерывания процессор вновь перейдет к выполнению команды WAIT, т. е. перейдет в состояние ожидания. Таким образом, ВМ86 в отличие от ВМ80 может выполнять прерывающие программы во время ожидания сигнала готовности TEST от ВУ. Важно отметить, что при возобновлении работы процессора после ожидания (по сигналу TEST = 0) внешние прерывания не будут обслуживаться до тех пор, пока не выполнится следующая за WAIT команда.
Простейший способ указания начальных адресов состоит в том, что каждому уровню присваивается номер и отводится в памяти фиксированная ячейка, адрес которой, например, равен номеру уровня. В указанной таким образом ячейке памяти может находиться команда перехода к остальной части, прерывающей программы, которая может храниться в произвольном участке памяти. Набор фиксированных по отношению к своим уровням ячеек памяти образует таблицу входов в прерывающие программы, содержание которой программист может устанавливать и изменять в соответствии с потребностями своей программы.
Дальнейшее развитие этого метода состоит в том, что начальный адрес прерывающей программы образуется как сумма номера уровня и некоторой величины (базового адреса прерывания). Последний хранится в специальном базовом регистре, доступном программе. При появлении запроса устройство прерывания находит номер уровня N и использует величину A+N, где А —содержимое базового регистра, как адрес ячейки, в которой находится первая команда прерывающей программы. Преимущества этого метода состоят, во-первых, в том, что для каждого уровня можно иметь несколько прерывающих программ. Изменяя базовый адрес, число программ можно удвоить, утроить и т. д. Это свойство является полезным, если в различных режимах работы вычислительной системы она должна различным образом реагировать на одни и те же события. Во-вторых, сама таблица входов в прерывающие программы может быть размещена где угодно в памяти, что облегчает распределение памяти для данного набора программ.
значениях начальный адрес прерывающей программы равен А-2а +N, где ее — число двоичных разрядов номе-, ра уровня N. В этом случае таблица входов в прерывающие программы может быть начата не с любой ячейки памяти, а только с той, у которой а младших разрядов адреса имеет нулевое значение. Однако такое ограничение лишь незначительно уменьшает гибкость системы. Аппаратное распознавание причин прерывания требует специального оборудования, объем которого при большом количестве источников прерывания может быть значительным. Удовлетворительный компромисс достигается путем сочетания обоих методов распознавания: программного и аппаратного. Каждый уровень предназначается для обслуживания не одного, а нескольких источников прерывания, и физически уровень реализуется в виде некоторого количества прерывающих входов, объединенных схемой ИЛИ. Примером подобного компромисса может служить система прерывания управляющей машины IBM 1800, имеющей до 24 уровней прерывания, к каждому из которых может быть присоединено до 16 прерывающих входов. Состояние прерывающих входов в момент прерывания записывается в память в определенную для данного уровня ячейку. Для облегче-ния анализа причин прерывания в системе команд машины предусмотрена команда сдвига содержимого ячейки влево до появления первой единицы с подсчетом числа сдвигов в индексном регистре. Используя индексный регистр для модификации адресной части команды безусловного перехода, легко организовать разветвление прерывающей программы в соответствии с источниками прерывания.
обеспечивается специальными устройствами, включаемыми в состав аппаратуры, осуществляющей вход в прерывающие программы. Поэтому необходимо рассмотреть этот вопрос более подробно.
различным уровням, из них для немедленного рассмотрения может быть выбран только один. Этот вид приоритета, определяющий очередность восприятия запросов прерывания от различных уровней, может быть назван приоритетом между запросами прерывания. С другой стороны, прерывающие программы могут иметь относительно идущей в данный момент-программы различную степень важности, и не любая программа может быть прервана любым запросом. Текущая программа, в свою очередь., могла быть активизирована предшествующим запросом прерывания, и для того чтобы иметь право прервать ее, воспринятый аппаратурой прерывания запрос должен соответствовать программе более срочной, чем выполняемая в данный момент. Этот вид приоритета, определяющий порядок старшинства программ, называется приоритетом между прерывающими программами.
В состав дополнительной информации о прерванной программе входит содержимое арифметических регистров (аккумуляторов), индексных регистров и других программно-доступных регистров, общих для всех программ. Запоминание всей этой информации может привести к значительному возрастанию времени обслуживания прерывания. В то же время многие прерывающие программы фактически используют (и, следовательно, портят) только часть из указанных регистров. Поэтому обычно сохранение дополнительной информации достигается программными методами. При этом на программиста возлагается забота о сохранении только тех регистров, которые действительно портятся его программой.
Таким образом, прерывающие программы для одновременно поступивших запросов будут выполняться в следующем порядке: 1) прерывание от схем контроля; 2) прерывание от ввода-вывода; 3) внешние прерывания; 4) программные прерывания или обращение к супервизору.
1) активность всех периферийных устройств равна единице, т. е. устройства были запущены в работу до рассматриваемого интервала времени и закончат свою работу позже этого интервала. Тем самым подразумевается, что команды запуска периферийных устройств и прерывающие программы, сигнализирующие об освобождении периферийных устройств, входят в полезную часть программы;
значениях начальный адрес прерывающей программы равен А-2а +jV, где а — число двоичных разрядов номера уровня N. В этом случае таблица входов в прерывающие программы может быть начата не с любой ячейки памяти, а только с той, у которой а младших разрядов адреса имеет нулевое значение. Однако такое ограничение лишь незначительно уменьшает гибкость системы. Аппаратное распознавание причин прерывания требует специального оборудования, объем которого при большом количестве источников прерывания может быть значительным. Удовлетворительный компромисс достигается путем сочетания обоих методов распознавания: программного и аппаратного. Каждый уровень предназначается для обслуживания не одного, а нескольких источников прерывания, и физически уровень реализуется в виде некоторого количества прерывающих входов, объединенных схемой ИЛИ. Примером подобного компромисса может служить система прерывания управляющей машины IBM 1800, имеющей до 24 уровней прерывания, к каждому из которых может быть присоединено до 16 прерывающих входов. Состояние прерывающих входов в момент прерывания записывается в память в определенную для данного уровня ячейку. Для облегчения анализа причин прерывания в системе команд машины предусмотрена команда сдвига содержимого ячейки влево до появления первой единицы с подсчетом числа сдвигов в индексном регистре. Используя индексный регистр для модификации адресной части команды безусловного перехода, легко организовать разветвление прерывающей программы в соответствии с источниками прерывания.
При наличии нескольких источников запросов прерывания должен быть установлен определенный порядок (дисциплина) в обслуживании поступающих запросов. Другими словами, между запросами (и. соответствующими прерывающими программами) должны быть установлены приоритетные соотношения, определяющие, какой из нескольких поступивших запросов подлежит обработке в первую очередь, и устанавливающие, имеет право или не имеет данный запрос (прерывающая программа) прерывать ту или иную программу. Приоритетный выбор запроса для исполнения входит в процедуру Перехода к прерывающей программе.
Относительная степень важности программ, их частота повторения, относительная степень срочности в ходе вычислительного процесса могут меняться, требуя установления новых приоритетных отношений. Поэтому во многих случаях приоритет между прерывающими программами не может быть зафиксирован раз и навсегда. Необходимо иметь возможность изменять по Mfcflfe Надобности приоритетные соотношения программным путем, другими словами, приоритет между прерывающими программами должен быть динамичным, т. е. программно-управляемым.
Следует различать приоритет между запросами прерывания разных классов и приоритет между прерывающими программами. Первый устанавливает лишь очередность восприятия запросов, поступивших одновременно, а второй, более важный — старшинство (степень срочности} в выполнении прерывающих программ разных классов, другими словами, определяет, имеет ли право данная прерывающая программа прервать выполняемую в данный момент программу.
При обработке прерывания от схемы контроля прием других запросов прерывания не производится. Следовательно, этот класс прерываний имеет наивысший приоритет не только между запросами прерывания, но и между прерывающими программами. Для других классов прерывания приоритет между^прерыва-ющими программами имеет порядок, противоположный порядку-приоритета между запросами.
Фактический порядок исполнения прерывающих программ определяется приоритетом не между запросами прерывания, а между прерывающими программами [22а].
сопровождаться сигналом, оповещающим о его возникновении. Будем называть эти сигналы запросами прерывания. Программы, затребованные запросами прерывания, будем называть прерывающими программами, противопоставляя их прерванным программам, выполнявшимся машиной до появления запросов.
различным уровням, из них для немедленного рассмотрения может быть выбран только один. Этот вид приоритета, определяющий очередность восприятия запросов прерывания от различных уровней, может быть назван приоритетом между запросами прерывания. С другой стороны, прерывающие программы могут иметь относительно идущей в данный момент-программы различную степень важности, и не любая программа может быть прервана любым запросом. Текущая программа, в свою очередь., могла быть активизирована предшествующим запросом прерывания, и для того чтобы иметь право прервать ее, воспринятый аппаратурой прерывания запрос должен соответствовать программе более срочной, чем выполняемая в данный момент. Этот вид приоритета, определяющий порядок старшинства программ, называется приоритетом между прерывающими программами.
Приоритет между прерывающими программами определяет, какие программы могут прервать данную программу и для каких это запрещено. Этот вид приоритета для многоуровневых систем с достаточной глубиной прерывания имеет гораздо большее значение, чем приоритет между запросами прерывания. Предположим, одновременно возникли три запроса, соответствующие трем уровням прерывания: № 1, 2 и 3. Приоритет между запросами установлен таким образом, что предпочтение отдается запросу с меньшим номером. Предположим также, что приоритет между прерывающими программами, соответствующими указанным уровням, установлен в обратном порядке. В соответствии с приоритетом между запросами в начале процессор приступает к выполнению программы № 1, однако, как только поиск
Таким образом, приоритет между запросами нужен главным образом для селекции: он выбирает один запрос из многих, поскольку машина не может сразу принять несколько запросов. Приоритет между прерывающими программами определяет фактический порядок, в котором программы будут исполняться.
Относительная степень важности программ, их длина и частота повторения в ходе вычислительного процесса могут меняться, требуя установления новых приоритетных отношений. Поэтому если приоритет между запросами прерывания может быть установлен жестко, особенно в системах с однотактным распознаванием, то приоритет между прерывающими программами не может быть зафиксирован раз и навсегда. Должна иметься возможность изменять по мере надобности приоритетные соотношения программным путем. Говорят, что приоритет между прерывающими программами должен быть программно-управляемым.
При обработке прерывания от схем контроля прием других запросов прерывания не производится. Следовательно, этот класс прерываний имеет наивысший приоритет не только между запросами прерывания, но и между прерывающими программами. Для других классов пре-
Похожие определения: Противоположное направлению Противоположно положительному Противостоять разрушающему Проведения исследований Проведения мероприятий Проведение испытаний Проведении исследований
|