Способы реализации мультипрограммирования

Понятие прерывания [1 c. 28 – 29; 2 разд. 3.3]

 

Прерывание (interrupt – прерывать) – аппаратный сигнал, заставляющий ЭВМ изменить обычный порядок исполнения команд в ответ на некоторое событие, например, завершение операции ввода-вывода, нажатие или отпускание клавиши клавиатуры или кнопки мыши, истечение заданного интервала времени, попытка деления на ноль или выполнение программой особой команды для обращения на себя внимания операционной системы: INT в компьютере IBM PC, SVCвызов супервизора (supervisor call) в других компьютерах. У каждого типа ЭВМ – свой набор возможных причин прерываний.

Появление в компьютерах системы прерываний обеспечило:

1) возможность одновременной работы устройств компьютера (уменьшить простои оборудования), и в начале 1960-х годов появились мультипрограммные (многозадачные) ОС;

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

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

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

Для каждого типа прерывания – своя программа обработки в операционной системе. Иногда прикладным программам разрешают по-своему обрабатывать некоторые типы прерываний – исключительных ситуаций (исключений), но при бесконтрольном использовании это может нарушить работу других программ или ОС.

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

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

Если на IBM PC программе требуется, например, ввести символ с клавиатуры, то можно выполнить команды (на языке ассемблера):

MOV AH,1 ; Засылка в регистр AH номера требуемой функции

INT 21h ; Инициация прерывания с номером 21h

Программа обработки прерывания с номером 21h выполняет много функций. Номер функции указывается ей в регистре AH. Функция номер 1 в приведенном примере вводит символ с клавиатуры с эхо-отображением его на экране и пересылкой кода символа в регистр AX. Функция номер 8 вводит символ без его появления на экране.