Общая организация системы прерываний Появление системы прерывания в компьютерах конца 50-х годов позволило существенно продвинуться в разработках ЭВМ, по-новому переосмыслив их возможности и среды применения. Действительно, уже на первых ЭВМ, обладающих этим свойством, появилась возможность автономной работы устройств ввода-вывода после их запуска центральным процессором. По окончании работы или в связи с другой причиной устройство ввода-вывода могло через прерывание заставить центральный процессор обратить на себя внимание. Это открыло путь к широкому совмещению операций, что повлекло за собой естественное усложнение математического обеспечения. Современные операционные системы полностью разрабатываются и базируются на развитой системе прерываний. Суть работы любой системы прерываний сводится к следующему. При возникновении события, требующего немедленной реакции со стороны ЭВМ, ЦП прекращает обработку текущей программы и переходит к выполнению другой программы, специально предназначенной для данного события, по завершении которой возвращается к выполнению отложенной программы. Такой режим работы называется прерыванием. Каждое событие, требующее прерывания, сопровождается специальным сигналом, который называется запросом прерывания (ЗП). Программа, затребованная запросом прерывания, называется обработчиком прерыванияили прерывающей программой. Каждому запросу прерывания в ЭВМ присваивается свой номер(тип прерывания), используемый для определения адреса обработчика прерывания. Запросы на прерывание могут возникать из-за сбоев в аппаратуре, зафиксированных схемами контроля, переполнения разрядной сетки, деления на нуль, выхода за установленные для данной программы области памяти, затребования внешним устройством операции ввода-вывода, завершения этой операции ввода-вывода или возникновения при этой операции особых условий и т.д. Некоторые из этих запросов порождаются самой программой, но время их возникновения невозможно предсказать заранее. По окончании работы обработчика прерывания переход может быть осуществлен либо к прерванной программе, либо к другой прерывающей программе. Так как всевозможные запросы на прерывание вырабатываются независимо и асинхронно, то возможны такие ситуации: · приход запросов последовательный; · одновременный приход нескольких запросов; · приход запроса во время выполнения обработчика прерывания. Поступившие запросы должны обрабатываться в определенном порядке. Если в ЭВМ имеются средства для обслуживания запросов в порядке присвоенного им приоритета, то такие системы прерывания называются приоритетными. Прерывания можно разделить на аппаратные, логические и программные. Аппаратные прерывания вырабатываются аппаратурой ЭВМ или устройствами ввода-вывода с целью переключить внимание процессора на обработку того или иного внешнего события. Примерами аппаратных прерываний могут служить сигнал о сбое питания, сигналы от внешних устройств – клавиатуры, модема, принтера и др. Запросы прерываний от ВУ поступают в ЦП по специальным линиям. Запросы на логические прерывания вырабатываются внутри процессора при появлении исключительных ситуаций: при попытке деления на ноль, при переполнении разрядной сетки арифметико-логического устройства, при нарушении защиты памяти; при достижении программой одной из контрольных точек и т.п. Общим для аппаратных и логических прерываний является то, что запрос на них вырабатывается в виде специального электрического сигнала. Аппаратные и логические прерывания определенных типов могут быть запрещены в определенные моменты времени, т.е. запрос на прерывание запрещенного типа будет проигнорирован системой. Запрещенные в данный момент времени прерывания называются замаскированными. Программные прерывания вырабатываются самой программой путем выполнения специальной команды вызова прерывания. Программные прерывания используются для обращения прикладной программы к сервисным функциям операционной системы (чтение-запись файла, взаимодействие с различными устройствами ввода-вывода, межпроцессное взаимодействие и т.п.). При выполнении программы после каждого рабочего такта процессора изменяются содержимое регистров, счетчиков, состояние отдельных управляющих триггеров, т.е. изменяется состояние процессора. Информация о состоянии процессора лежит в основе многих процедур управления вычислительным процессом. Например, важнейшим элементом является значение программного счетчика, определяющее адрес следующей команды выполняемой программы. Информация, без которой невозможно продолжение работы процессора, должна сохраняться при каждом переключении процессора с прерываемой программы на обработчик прерывания и обратно. Совокупность значений наиболее существенных информационных элементов называется вектором состоянияили словом состояния процессора - ССП(в некоторых случаях ССП называют словом состояния программы). ССП в каждый момент времени должно содержать информацию, достаточную для продолжения выполнения программы или повторного пуска ее с точки, соответствующей моменту формирования данного вектора. ССП формируется в соответствующем регистре процессора или в группе регистров, которые могут использоваться и для других целей. ССП, как минимум, включает в себя текущие значения программного счетчика и регистра флагов программы. При поступлении запроса прерывания ЭВМ выполняет следующую последовательность действий: 1. Определение наиболее приоритетного незамаскированного запроса на прерывание (если одновременно поступило несколько запросов); 2. Определение типа выбранного запроса; 3. Сохранение слова состояния текущей (прерываемой) программы; 4. Определение адреса обработчика прерывания и передача управления первой команде этого обработчика; 5. Выполнение программы-обработчика прерывания; 6. Восстановление сохраненного ССП прерванной программы; 7. Продолжение выполнения прерванной программы. Этапы 1-4 выполняются аппаратными средствами ЭВМ автоматически при появлении запроса прерывания. Этап 6 также выполняется аппаратно по команде возврата из обработчика прерывания. Обработчик прерывания, как и любая другая программа, пишется человеком-программистом. Как правило, эта программа должна начинаться с сохранения состояния тех регистров ЯП, которые будут ею изменяться и заканчивается восстановлением состояния этих регистров. Завершается она специальной командой, указывающий ЦП на необходимость возврата в прерванную программу. Рис. 2.8. Временная диаграмма прерывания Рассмотрим временную диаграмму прерывания (рис. 2.8). Запрос прерывания приходит в некоторый момент работы прерываемой программы. Как бы ни была организована система прерываний в ЭВМ, между поступлением запроса прерывания и началом выполнения программы-обработчика прерывания неизбежно проходит некоторое время tр, называемое временем реакциисистемы прерываний. Время реакции определяется для запроса прерывания, имеющего наивысший приоритет. Прежде чем обработчик прерывания приступит непосредственно к обработке, он должен обеспечить полноценное восстановление прерываемой программы. Общее время tо выполнения программы-обработчика прерывания складывается из следующих составляющих: · времени tс сохранения слова состояния прерываемой программы, другой информации, необходимой для ее продолжения, а также тех регистров, значения которых будут изменяться программой-обработчиком прерывания; · времени tп исполнения так называемых «полезных» команд, т.е. тех команд, с помощью которых непосредственно происходит обработка события, вызвавшего прерывание; · времени tв восстановления слова состояния прерываемой программы и прочей сохраненной информации. Кроме указанных временных характеристик часто выделяют время обслуживания прерывания tобс – разность между полным временем выполнения прерывающей программы (tо) и временем выполнения всех полезных команд, т.е. tобс = tс + tв. Под глубиной прерывания понимают максимальное число программ, которые могут прерывать друг друга. Возможны случаи: · только один запрос воспринимается системой; · глубина прерывания фиксирована (n); · программы могут сколько угодно раз прерывать друг друга. Очевидно, что чем больше глубина прерывания, тем с большей эффективностью можно организовать приоритетное обслуживание. Так, если при глубине прерывания nво время обработки n-го запроса пришел n+1-й запрос, то он будет принят к исполнению только после обработки n-го прерывания, даже если n+1-й запрос имеет наивысший приоритет. Если время реакции tp или время обработки запроса tо настолько велики, что запрос окажется необслуженным к моменту прихода нового запроса того же типа, то возникает явление, называемое насыщением системы прерывания. В этом случае очередной запрос того или иного типа может быть утрачен. Параметры системы прерываний должны быть согласованы таким образом, чтобы насыщение системы не наступило. Рассмотрим последовательность действий системы прерываний по обработке поступившего запроса более подробно. |