- •Глава 6.Мультипрограммирование на основе прерываний .
- •Назначение и типы прерываний .
- •Механизм прерываний
- •Программные прерывания .
- •Диспетчеризация и приоритезация прерываний в ос .
- •Функции централизованного диспетчера прерываний на примере Windows nt. Прерывания на аппаратном уровне.
- •Процедуры обработки прерываний и текущий процесс .
- •Системные вызовы .
- •Принципы обработки прерываний в ос Unix .
Глава 6.Мультипрограммирование на основе прерываний .
Мультипрограммиравание или многозадачность – это способ организации вычислительного процесса , при котором на одном процессоре попеременно выполняются сразу несколько программ .Эти программы совместно используют не только процессор , но и другие ресурсы компьютера : оперативную и внешнюю память , устройства ввода-вывода , данные . Мультипрограммирование прзивано повысить эффективность использования вычислительной системы , однако эффективность может пониматься по-разному . Наиболее характерными критериями эффективности вычислительных систем являются :
пропускная способность – количество задач , выполняемых вычислительной системой в единицу времени ;
удобство работы пользователей , заключающееся , в частности , в том , что они имеют возможность интерактивно работать одновременно с несколькими приложениями на одной машине ;
реактивность системы – способность системы выдерживать заранее заданные (возможно , очень короткие ) интервалы времени между запуском программы и получением результата .
Назначение и типы прерываний .
Система прерываний переводит процессор на выполнение потока команд , отличного от того , который выполнялся до сих пор , с последующим возвратом к исходному коду. Механизм прерываний очень похож на механизм выполнения процедур , однако есть важное отличие . Переход по команде происходит в заранее определенных программистом точках программы в зависимости от исходных данных , обрабатываемых программой , а прерывание же происходит в произвольной точке потока команд программы , которую программист не может прогнозировать . Прерывание возникает либо в зависимости от внешних по отношению к процессу выполнения данной программы событий , либо при появлении непредвиденных аварийных ситуаций в процессе выполнения данной программы . Сходство прерываний с процедурами состоит в том , что в обоих случаях выполняется некоторая подпрограмма , обрабатывающая специальную ситуацию , а затем продолжается выполнение основной ветви программы .
В зависимости от источника прерывания делятся на три больших класса :
внешние ;
внутренние ;
программные ;
Внешние прерывания могут возникать в результате действий пользователя или оператора за терминалом , или же в результате поступления сигналов от аппаратных устройств – сигналов завершения операции ввода – вывода , вырабатываемых контроллерами внешних устройств компьютера , такими как принтер или накопитель на жестких дисках , или же сигналов от датчиков управляемых компьютером технических объектов . Внешние прерывания называют также аппаратными , отражая тот факт , что прерывание возникает в следствие подачи некоторой аппаратурой (например , контроллером принтера) электрического сигнала , который передается (возможно , проходя через другие блоки компьютера , например контроллер прерываний ) на специальный вход прерывания процессора . Данный класс прерывания является асинхронным по отношению к потоку инструкций прерываемой программы . Аппаратура процессора работает так ,что асинхронные прерывания возникают между выполнением двух соседних инструкций , при этом система после обработки прерывания продолжает выполнение процесса ,уже начиная со следующей инструкции .
Внутренние прерывания , называемые также исключениями (exeption) , происходят синхронно выполнению программы при появлению аварийной ситуации в ходе исполнения некоторой инструкции программы . Примером исключений являются деление на нуль , ошибки защиты памяти , обращения по несуществующему адресу , попытка выполнить привилегированную инструкцию в пользовательском режиме и т.п. Исключения возникают непосредственно в ходе выполнения тактов команды («внутри» выполнения).
Программные прерывания отличаются от предыдущих двух классов тем , что они по своей сути не являются «истинными» прерываниями . Программные прерывания возникают при выполнении особой команды процессора , выполнение которой имитирует прерывание , то есть переход на новую последовательность инструкций.
Прерываниям присваивается приоритет , с помощью которого они ранжируются по степени важности и срочности . О прерываниях имеющих одинаковое значение приоритета , говорят , что они относятся к одному уровню приоритета прерываний .
Прерывания обычно обрабатываются модулями операционной системы , так как действия , выполняемые по прерыванию , относятся к управлению разделяемыми ресурсами вычислительной системы – принтером , диском , таймером , процессором и т.п. Процедуры, вызываемые по прерываниям , обычно называют обработчиками прерываний , или процедурами обслуживания прерываний (Interrupt Service Routine , ISR) . Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств , исключения – специальными модулями ядра , а программные прерывания – процедурами ОС , обслуживающими системные вызовы . Кроме этих модулей в операционной системе может находиться так называемый диспетчер прерываний , который координирует работу отдельных обработчиков прерываний .
