Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_модуль1.doc
Скачиваний:
10
Добавлен:
25.08.2019
Размер:
276.48 Кб
Скачать

Опрос (проверка флагов)

Заключается в опросе на определенных циклах работы ЦП значений флаговых переменных, выставляемых на шину внешними устройствами. При наличии флага ЦП переключается на обработчик для этого ВУ.

Недостатки:

  1. в отличие от прерываний при опросе флагов ЦП не может заниматься другими задачами (т.е. теряется процессорное время, так как процессор вынужден сам проверять значения).

  2. Реакция на изменение флага происходит только после завершения текущей команды.

Достоинство: Минимальные программные и аппаратные затраты на реализацию.

Исключения

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

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

Недостатки:

1. Повторное выполнение команды далеко не всегда необходимо для решения проблемы.

2. При прерывании выполнения команды теряются наработанные данные.

3. Исключения реализуют мультизадачность только на программном уровне (логические прерывания).

Достоинства аналогичны Опросу.

Прерывания

Прерывание – это принудительная передача управления от выполняемой программы к обработчику прерывания, происходящая при наступлении определенного события.

Механизм прерываний очень похож на механизм выполнения процедур, но имеется важное отличие. Вызов процедуры происходит в заранее заданной точке программы, а прерывание происходит в произвольной точке потока команд.

Прерывание возникает:

  1. В результате внешнего (по отношению к активному процессу) события.

  2. При появлении аварийных ситуаций (или так предусмотрено) в самом процессе.

Однако в обоих случаях выполняется некоторая подпрограмма - обработчик, а затем продолжается выполнение основной программы.

Классификация прерываний

3 Класса прерываний:

  1. Прикладные.

  2. Справочные (или псевдопрерывания). Для запоминания важных для программы адресов.

  3. Системные.

Системные прерывания делятся на следующие:

  1. Внешние (аппаратные).

  2. Внутренние (Технические, Логические, программные DOS и BIOS).

Внешние прерывания (асинхронные) – прерывания, вызываемые внешними асинхронными событиями, которые происходят вне прерываемого процесса. Например:

  1. Прерывания от таймера. 18 раз в секунду.

  2. Прерывания от внешних устройств ввода-вывода.

  3. Прерывания при нарушении питания.

  4. Прерывания от другого процесса вычислительной системы.

Внутренние прерывания (синхронные) – прерывания, вызываемые самим ЦП и связанные с его операциями (синхронные с операциями процессора). Например:

  1. Прерывания при нарушении адресации (в команде указан запрещенный или несуществующий адрес).

  2. Ошибочный код команды.

  3. При делении на ноль.

  4. При переполнении числом ячейки памяти.

  5. При обнаружении ошибок в работе устройств.

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

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

Технические прерывания возникают при отказах и сбоях в работе аппаратуры ПК. Большинство ТП не маскируются, то есть они разрешаются всегда, а некоторые из них относятся к категории «аварийных» (например, отключение питания), и при их возникновении даже не запрашивается причина прерывания, а просто, по возможности, спасаются важные промежуточные результаты (например записываются в безопасное место, в НЖМД).

Логические прерывания возникают при появлении ошибок в выполняемых программах (деление на 0, потеря значности мантиссы, нарушение защиты памяти и т. п.). Многие из логических прерываний также относятся к категории немаскируемых.

Технические, логические и прикладные прерывания обслуживаются BIOS.

Программные BIOS и DOS прерывания обслуживаются модулем обработки прерываний DOS (Что это за модуль? – Конечно же это IO.SYS).

Для IBM PC номеров прерываний может быть 256 (по емкости регистров CS, IP)