Cтраница 1
![]() |
Схема переме-щения информации при. [1] |
Время обработки прерывания прг / Вх / сохр / обр / восст / вых, где / вх - время переключения процессора на прерывающую программу ( складывается из времени завершения выполнения текущей команды, сохранения значения старого ССП и загрузки нового. Возврат из прерывания требует только восстановления старого ССП); / сохр, восст - время, необходимое прерывающей программе для сохранения и восстановления программно-доступных регистров; / обр - время работы собственно обрабатывающей программы; / вых - время выполнения команды возврата из прерывания. [2]
Например, если во время обработки прерывания происходит еще одно прерывание, может быть вызвана специальная программа управления очередью прерываний. Если во время работы этой программы снова произойдет прерывание, то снова будет вызвана программа управления очередью прерываний, что может привести к потере одного из прерываний. [3]
Прерывания часто происходят в очень неподходящие моменты, например во время обработки другого прерывания. По этой причине центральный процессор обладает возможностью запрещать прерывания и разрешать их позже. Пока прерывания запрещены, все устройства, завершившие работу, продолжают посылать свои сигналы, но работа процессора не прерывается до тех пор, пока прерывания не будут разрешены. Если заканчивают работу сразу несколько устройств в то время, когда прерывания запрещены, контроллер прерываний решает, какое из них должно быть обработано первым, обычно основываясь на статических приоритетах, назначенных для каждого устройства. Устройство с высшим приоритетом побеждает. [4]
В процессорах ЕС ЭВМ используют развитую систему прерываний, позволяющую быстро анализировать причины прерывания и переключать процессор в новое состояние. Время аппаратно-программной обработки прерываний сокращено в несколько десятков раз по сравнению с процессорами ЭВМ второго поколения. Система прерываний ЕС ЭВМ организует взаимодействие между программами операционной системы и пользователя и является основой для создания конкретных разновидностей многопрограммного режима обработки. [5]
Затем операционная система принимает предусмотренные меры, по окончании которых обработанный разряд в регистре прерываний сбрасывается, производит восстановление запомненного состояния ЭВМ и возвращает управление прерванному процессу. Во время обработки текущего прерывания операционная система может блокировать менее важные события, вызываемые параллельно работающими устройствами. Более приоритетные сигналы могут прервать выполнение текущего обработчика, и эта ситуация напоминает ту, что происходит при обращении к вложенным подпрограммам. [6]
После возврата из прерывания операция возобновляется, как обычно, с точки прерывания. Однако во время обработки прерывания МП помнит действие только одного префикса, непосредственно предшествующего команде. Поэтому, если с цепочечной командой используется несколько префиксов ( префикс замены сегмента, префикс блокировки), необходимо запрещать прерывания на время ее выполнения. [7]
Например, запоминание состояния ЦП во время обработки прерывания прерывать нельзя, иначе невозможно гарантировать возвращение к программе. Кроме того, маскирование или запрещение прерываний - это способ управления ресурсами, позволяющий программисту управлять теми частными функциями, которые не допускают последовательного повторного использования. Однако злоупотребление маской, аппаратной или программной, может значительно снизить эффект от преимуществ применения принципа приоритетного прерывания. Поэтому использование маски должно быть объектом пристального внимания как разработчика ОС, так и программиста прикладных задач. [8]
Компилятор PL / M определяет пространство в стеке для каждой переменной, массива и структуры, описанных в процедуре. Благодаря этому процедура может быть вызвана во время обработки прерывания даже в том случае, если прервано было ее собственное выполнение. Запомните, что каждая процедура, вызываемая реентерабельной процедурой, должна быть также объявлена реентерабельной. [9]
Использовать стек ядра гораздо проще, так как при этом больше шансов, что указатель стека указывает на область памяти, в которой можно сохранять данные. Перегрузка всех этих кэшей статически или динамически увеличит время обработки прерывания и вызовет растрату процессорного времени. [10]
Использовать стек ядра гораздо проще, так как при этом больше шансов, что указатель стека указывает на область памяти, в которой можно сохранять данные. Перегрузка всех этих кэшей статически или динамически увеличит время обработки прерывания и вызовет растрату процессорного времени. [11]
Основная задача клавиатурного драйвера состоит в сборе символов. Если каждое нажатие на клавишу вызывает прерывание, драйвер может получать введенный символ во время обработки прерывания. Если прерывания преобразуются низкоуровневым программным обеспечением в сообщения, каждый полученный символ может помещаться в сообщение. В качестве альтернативы символ может помещаться в небольшой буфер в памяти, а сообщение использовать только для извещения драйвера о том, что что-то прибыло. Второй подход более надежен, особенно если сообщение может быть послано только ожидающему его процессу, а драйвер клавиатуры может оказаться занятым обработкой предыдущего символа. [12]
Схема приоритетов прерываний может быть задана процессором программным путем. Но в принципе высший уровень приоритета задается для любого из входов запросов, можно также установить циклическое переключение приоритетов ( последний обслуженный запрос получает низший приоритет), обеспечивая тем самым всем запросам равные приоритеты. Если во время обработки прерывания с меньшим уровнем приоритета приходит более приоритетный запрос, то процессор переходит на программу обработки более приоритетного запроса, а после ее выполнения возвращается к программе обработки менее приоритетного запроса. Отметим, что немаскируемое прерывание NMI имеет приоритет выше любого другого аппаратного прерывания. [13]
При возникновении прерывания вычислительная машина запоминает слово состояния прерванной программы в постоянно фиксированной области основной памяти и передает управление Супервизору. Он производит анализ прерывания и определяет часть управляющей программы, которая его обрабатывает. Если во время обработки прерывания не должно произойти прерывание, управление передается РЗ программам. [14]
Техника, используемая при написании подпрограмм с повторным входом, существенно зависит от операционной системы. Следует избегать сложной ситуации, которая возникает при изменении слова в главной или массовой памяти большого объема двумя командами, выполняемыми на разных уровнях. Если операционная система обеспечивает сохранение и восстановление информации в машинном регистре во время обработки прерывания, то этот регистр может использоваться для аргументов и промежуточных результатов. Чтобы иметь возможность работать с программами с повторным входом, некоторые операционные системы предусматривают отдельные рабочие области для каждого уровня прерывания. В этом случае подпрограмма должна использовать регистр для указания рабочей области и определить всю переменную память, относящуюся к данному регистру. [15]