Бройдо В.Л., Ильина О.П. Архитектура ЭВМ и систем (2006) (1186249), страница 78
Текст из файла (страница 78)
Условием прерывания решения текущей задачи служит либо истечение кванта выделенного времени, либо обращение к процессору какого-либо приоритетного внешнего устройства, например клавиатуры дэя ввода информации. Прерывание задачи от клавиатуры является типичным для диалогового режима работы ПК, представляющего собой частный случай режима разделения времени. Диалоговые режимы характерны для многопользовательских систем: они обеспечивают одновременную работу нескольких пользователей при решении задач в интерактивном режиме.
В процессе решения задачи пользователь имеет воэможность корректировать ход выполнения своего задания. Диалоговые системы активно используются при совместной работе нескольких пользователей даже с одной программой: формирование н корректировка баз данных, программ, чертежей, схем и документов. Режим реального времени — еще один вариант режима с разделением машинного времени. Этот режим применяется в основном в динамических системах управления и диагностики, когда строго регламентируется время ответа системы (выполнения задания) на случайно поступающие запросы. Все режимы разделения машинного времени обеспечивают пользователю работу в режиме «опйпе». Система прерываний программ в ЭВМ Основная нагрузка при реализации многопрограммных режимов, как уже говорилось, ложится на операционную систему.
Все операционные системы обеспечивают выполнение этих режимов. Все современные операционные системы обладают эффективными возможностями, поддерживающими не только многозадачные и многопользовательские режимы с развитой системой приоритетного прерывания, но и многопроцессорность их исполнения, то есть распределение заданий между несколькими микропроцессорами, имеющимися в системе. Система прерываний программ в ЭВМ Важнейшая роль в реализации сложных режимов работы отводится системе прерывания программ.
Прерывание — это приостановка выполнения в процессоре программы с целью выполнения какой-то более важной или нужной в данный момент другой программы или процедуры, после завершения которой продолжается выполнение прерванной программы с момента ее прерывания. Прерывание позволяет компьютеру приостановить любое свое действие и временно переключиться на другое, как заранее запланированное, так и неожиданное, вызванное непредсказуемой ситуацией в работе машины или ее компонента.
Каждое прерывание влечет за собой загрузку определенной программы, предназначенной для обработки возникшей ситуации — программы обработки прерывания. Организация и управление прерываниями функционально во многом смыкается с управлением задачами — одной из базовых функций операционных систем. Основой для управления процессом одновременного решения нескольких задач (равно как и управления прерываниями) являются процедуры: О выбора очередной задачи или определения приоритета задачи; О сохранения информации о статусе задачи при ее прерывании (формирование слова состояния программы); О упреждения и устранения конфликтов между задачами (координации и синхронизации выполнения задач).
Последовательность действий процессора при реализации прерывания такова. При появлении запроса на прерывание, запланированное заранее или неожиданное, процессор, как правило, после завершения выполнения текущей команды программы анализирует допустимость (разрешенность и приоритетность) данного вида прерывания. Если оно разрешено, процессор производит следующие действия: О запоминает в стековой памяти текущее состояние прерываемой программы (состояние некоторых регистров МПП, в частности, регистров Рь„СЗ, 1Р, а в микропроцессорах МП80286 и выше — и слова состояния программы, хранящегося в другом регистре МПП); ь) посылает источнику запроса на прерывание запрос о причине (коде) прерывания; 356 Глава 17. Программное управление — основа автоматизации вычисление (з анализирует код запрошенного прерывания (номер прерывания — Ф,) и формирует адрес ячейки (АР), хранящей вектор прерывания (вектор-адрес программы обработки прерывания) по формуле А тг - 4й( (векторы прерываний занимают начальную 1024-байтовую область ОП с адресами ячеек от 00000 до 00400Ь (шестнадцатеричный код) так, что адрес вектора вычисляется простым умножением номера прерывания на четыре, так как СЗ и 1Р занимают по два байта каждый); О считывает из ОП и записывает в регистры МПП (в регистры Е~, С8, 1Р и т.
д.) вектор прерывания и его атрибуты; О сбрасывает (устанавливает в О) флаги прерывания (1Р) и трассировки (ТР); С1 выполняет программу обработки прерывания (которую иногда нззывают драйвером прерывания); ьз после выполнения программы обработки прерывания возвращает из стековой памяти параметры прерванной программы в регистры МПП и восстанавливает процесс выполнения прерванной программы. Видов (номеров) прерывания может быть всего 256, и, соответственно, векторов прерывания (адресов СЗ:1Р программ обработки прерываний) в ОП насчитывается до 256. Классификация видов прерываний показана на рис.
17.2. Рис. 17.2. Классификация видов прерываний в МП Прикладные прерывания временно устанавливаются пользователем при много- программной работе МП для указания приоритета выполнения прикладных программ (при появлении необходимости выполнения более приоритетной программы текущая менее приоритетная программа прерывается). Система прерываний программ в ЭВМ 357 Псеедопрерывания служат для запоминания важных фиксированных адресов, которые могут быть использованы в программах, в частности, при условных и безусловных передачах управления (запоминание адресов передачи управления как векторов прерывания возможно благодаря аналогии выполнения прерывания и обращения к процедурам).
Аппараттгые прерывания инициируются при обращениях к МП со стороны внешних устройств (таймера, клавиатуры, дисководов, принтера и т. д.) с требованием уделить им внимание и выполнить совместно с ними те или иные процедуры. Прерывания от таймера, например, повторяются 18 раз в секунду, от клавиатуры — при каждом программно не запланированном нажатии некоторых клавиш и т. и. Аппаратные прерывания не координируются с работой программы и могут быть весьма разнообразны. Для их систематизации и определения очередности выполнения при одновременном возникновении нескольких из них обычно используется контроллер прерываний. Програм»шые прерывания — зто обычные процедуры, которые вызывает текущая программа для выполнения предусмотренных в ней стандартных подпрограмм, чаще всего подпрограмм — служебных функций работы с внешними устройствами, то есть, фактически, программные прерывания ничего не прерывают.
Они делятся на две большие группы, вызывающие служебные функции: 0 базовой системы ввода-вывода — прерывания В108; 0 операционной системы — прерывания 00$. Программы обработки прерываний РОВ, в отличие от программ обработки прерываний В108, не встроены в ПЗУ и для разных операционных систем могут быть разными. К программным прерываниям можно отнести также прерывания при пошаговом исполнении программы, при работе с контрольным остановом и т, д.
Технические прерывшшя (или, иначе, прерывания от схем контроля) возникают при появлении отказов и сбоев в работе технических средств (аппаратуре) ПК. Большинство технических прерываний не маскируются, то есть они разрешаются всегда, а некоторые из них относятся к категории «аварийных» (например, отключение питания), и при их возникновении даже не запрашивается причина прерывания, а просто по возможности спасаются важные промежуточные результаты — записываются в безопасное место, в НЖМД, например. Логические прерывания возникают при появлении ошибок в выполняемых программах (деление на О, потеря точности мантиссы, нарушение защиты памяти и т. п.).
Многие из логических прерываний также относятся к категории немаскируемых. Прерывания обслуживаются базовой системой ввода-вывода — модулем расширения В108 и модулем обработки прерываний 1)08. В105 и блок расширения В103 имеют дело в основном с непланируемыми техническими и логическими прерываниями, пользовательскими прикладными прерываниями, а также со многими планируемыми прерываниями, обслуживающими систему ввода-вывода, детализированными и не очень детализированными (прерывания, обслуживаемые В105, часто называют прерываниями нижнего уровня).
388 Глава 17. Программное управление — основа автоматизации вычислений Модуль обработки прерываний 005 обслуживает в большинстве планируемые прерывания, в том числе и прерывания системы ввода-вывода. Прерывания 005 часто называют прерываниями верхнего уровня, так как, с одной стороны, в этих прерываниях меньше учитываются технические особенности элементов ПК, с другой стороны, при обработке этих прерываний часто случаются обращения к программам прерываний системы В105. Большинство прерываний В105 имеют близкие аналоги среди прерываний !)05. Следует сказать, что использование прерываний В105 позволяет, как правило, более детально выполнять обращения к различным системным ресурсам ПК, к элементам информационных структур и их атрибутам.
Однако прерывания П05 более просты в использовании при программировании. Поэтому начинающим программистам можно рекомендовать работать с прерываниями !)05, особенно с расширенными функциями !)05 для работы с файлами. Схема организации приема запросов на прерывания показана на рис. 17.3. Рно. 17.3. Органиэация приема запросов на прерывания Для приема внешних прерываний имеются порты двух типов: ХМ! (Хопе Маз!сед 1птеггцрг) для приема немаскируемых прерываний и 1ХТК (?птеггпрг)— для приема прочих прерываний (1ХТК обычно используется для подсоединения контроллера прерываний).