русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Прерывания


Дата добавления: 2014-11-28; просмотров: 2326; Нарушение авторских прав


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

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

Механизм прерываний реализуется аппаратно-программными средствами. Струк­туры систем прерывания (в зависимости от аппаратной архитектуры) могут быть самыми разными, но все они имеют одну общую особенность — прерывание непре­менно влечет за собой изменение порядка выполнения команд процессором.

Механизм обработки прерываний независимо от архитектуры вычислительной системы подразумевает выполнение некоторой последовательности шагов.

1. Установление факта прерывания (прием сигнала запроса на прерывание) и
идентификация прерывания (в операционных системах идентификация пре­
рывания иногда осуществляется повторно, на шаге 4).

2. Запоминание состояния прерванного процесса вычислений. Состояние процесса
выполнения программы определяется, прежде всего, значением счетчика ко­
манд (адресом следующей команды, который, например, в i80x86 определяется
регистрами CS и IP — указателем команды [1,8, 48]), содержимым регистров
процессора, и может включать также спецификацию режима (например, режим
пользовательский или привилегированный) и другую информацию.



3. Управление аппаратно передается на подпрограмму обработки прерывания.
В простейшем случае в счетчик команд заносится начальный адрес подпро­
граммы обработки прерываний, а в соответствующие регистры — информация
из слова состояния. В более развитых процессорах, например в 32-разрядных
микропроцессорах фирмы Intel (начиная с i80386 и включая последние про­
цессоры Pentium IV) и им подобных, осуществляются достаточно сложная про­
цедура определения начального адреса соответствующей подпрограммы обра­
ботки прерывания и не менее сложная процедура инициализации рабочих
регистров процессора (подробно эти вопросы рассматриваются в разделе «Си­
стема прерываний 32-разрядных микропроцессоров i80x86» главы 4).

4. Сохранение информации о прерванной программе, которую не удалось спасти
на шаге 2 с помощью аппаратуры. В некоторых процессорах предусматривает­
ся запоминание довольно большого объема информации о состоянии прерван­
ных вычислений.

5. Собственно выполнение программы, связанной с обработкой прерывания. Эта
работа может быть выполнена той же подпрограммой, на которую было переда-


Прерывания_________________________________________________________ 19

но управление на шаге 3, но в операционных системах достаточно часто она реализуется путем последующего вызова соответствующей подпрограммы.

6. Восстановление информации, относящейся к прерванному процессу (этап, об­
ратный шагу 4).

7. Возврат на прерванную программу.

Шаги 1-3 реализуются аппаратно, шаги 4-7 — программно.

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

Итак, главные функции механизма прерываний — это:

- распознавание или классификация прерываний;

- передача управления соответствующему обработчику прерываний;

- корректное возвращение к прерванной программе.

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

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

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

- прерывания от таймера;

- прерывания от внешних устройств (прерывания по вводу-выводу); - прерывания по нарушению питания; - прерывания с пульта оператора вычислительной системы; - прерывания от другого процессора или другой вычислительной системы. Внутренние прерывания вызываются событиями, которые связаны с работой про­цессора и являются синхронными с его операциями. Примерами являются следу­ющие запросы на прерывания:


20_____________________________________________ Глава 1. Основные понятия

- при нарушении адресации (в адресной части выполняемой команды указан зап­рещенный или несуществующий адрес, обращение к отсутствующему сегменту или странице при организации механизмов виртуальной памяти);

- при наличии в поле кода операции незадействованной двоичной комбинации;

- при делении на ноль;

- вследствие переполнения или исчезновения порядка;

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

Рис. 1.2. Обработка прерывания

Могут еще существовать прерывания в связи с попыткой выполнить команду, ко­торая сейчас запрещена. Во многих компьютерах часть команд должна выполняться только кодом самой операционной системы, но не прикладными программами. Это делается с целью повышения защищенности выполняемых на компьютере вычис­лений. Соответственно в аппаратуре предусмотрены различные режимы работы, и пользовательские программы выполняются в режиме, в котором некоторое под-


Прерывания_________________________________________________________ 21

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

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

Сигналы, вызывающие прерывания, формируются вне процессора или в самом процессоре, они могут возникать одновременно. Выбор одного из них для обра­ботки осуществляется на основе приоритетов, приписанных каждому типу преры­вания. Так, со всей очевидностью, прерывания от схем контроля процессора долж­ны обладать наивысшим приоритетом (действительно, если аппаратура работает неправильно, то не имеет смысла продолжать обработку информации). На рис. 1.3 изображен обычный порядок (приоритеты) обработки прерываний в зависимости от типа прерываний. Учет приоритета может быть встроен в технические средства, а также определяться операционной системой, то есть кроме аппаратно реализо­ванных приоритетов прерывания большинство вычислительных машин и комп­лексов допускают программно-аппаратное управление порядком обработки сигна­лов прерывания. Второй способ, дополняя первый, позволяет применять различные дисциплины обслуживания прерываний.

Рис.1.3. Распределение прерываний по уровням приоритета

Наличие сигнала прерывания не обязательно должно вызывать прерывание ис­полняющейся программы. Процессор может обладать средствами защиты от пре­рываний: отключение системы прерываний, маскирование (запрет) отдельных сиг-


22_____________________________________________ Глава 1. Основные понятия

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

Программное управление специальными регистрами маски (маскирование сигна­лов прерывания) позволяет реализовать различные дисциплины обслуживания.

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

- С абсолютными приоритетами, то есть всегда обслуживается прерывание с наивысшим приоритетом. Для реализации этого режима необходимо на время обработки прерывания замаскировать все запросы с более низким приорите­том. При этом возможно многоуровневое прерывание, то есть прерывание про­грамм обработки прерываний. Число уровней прерывания в этом режиме изме­няется и зависит от приоритета запроса.

□ По принципу стека, или, как иногда говорят, по дисциплине LCFS (Last Come
First Served — последним пришел, первым обслужен), то есть запросы с более
низким приоритетом могут прерывать обработку прерывания с более высоким
приоритетом. Дли этого необходимо не накладывать маску ни на один из сиг­
налов прерывания и не выключать систему прерываний.

Следует особо отметить, что для правильной реализации последних двух дисцип­лин нужно обеспечить полное маскирование системы прерываний при выполне­нии шагов 1-4 и 6-7. Это необходимо для того, чтобы не потерять запрос и пра­вильно его обслужить. Многоуровневое прерывание должно происходить на этапе собственно обработки прерывания, а не на этапе перехода с одного процесса вы­числений на другой.

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


Прерывания_________________________________________________________ 23

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

Как мы уже знаем, при появлении запроса на прерывание система прерываний идентифицирует сигнал и, если прерывания разрешены, то управление передает­ся на соответствующую подпрограмму обработки. Из рис. 1.2 видно, что в под­программе обработки прерывания имеется две служебные секции. Это — первая секция, в которой осуществляется сохранение контекста прерываемых вычисле­ний, который не смог быть сохранен на шаге 2, и последняя, заключительная сек­ция, в которой, наоборот, осуществляется восстановление контекста. Для того что­бы система прерываний не среагировала повторно на сигнал запроса на прерывание, она обычно автоматически «закрывает» (отключает) прерывания, поэтому необ­ходимо потом в подпрограмме обработки прерываний вновь включать систему пре­рываний. В соответствии с рассмотренными режимами обработки прерываний (с относительными и абсолютными приоритетами и по правилу LCFS) установка этих режимов осуществляется в конце первой секции подпрограммы обработки. Таким образом, на время выполнения центральной секции (в случае работы в ре­жимах с абсолютными приоритетами и по дисциплине LCFS) прерывания разре­шены. На время работы заключительной секции подпрограммы обработки систе­ма прерываний вновь должна быть отключена и после восстановления контекста опять включена. Поскольку эти действия необходимо выполнять практически в каждой подпрограмме обработки прерываний, во многих операционных систе­мах первые секции подпрограмм обработки прерываний выделяются в уже упо­минавшийся специальный системный программный модуль, называемый супер­визором прерываний.

Супервизор прерываний прежде всего сохраняет в дескрипторе текущей задачи ра­бочие регистры процессора, определяющие контекст прерываемого вычислитель­ного процесса. Далее он определяет ту подпрограмму, которая должна выполнить действия, связанные с обслуживанием настоящего (текущего) запроса на преры­вание. Наконец, перед тем, как передать управление на эту подпрограмму, супер­визор прерываний устанавливает необходимый режим обработки прерывания. После выполнения подпрограммы обработки прерывания управление вновь пере­дается ядру операционной системы. На этот раз уже на тот модуль, который зани­мается диспетчеризацией задач (см. раздел «Планирование и диспетчеризация процессов и задач» в главе 2). И уже диспетчер задач, в свою очередь, в соответ­ствии с принятой дисциплиной распределения процессорного времени (между выполняющимися вычислительными процессами) восстановит контекст той за­дачи, которой будет решено выделить процессор. Рассмотренную нами схему ил­люстрирует рис. 1.4.

Как мы видим из рисунка, здесь отсутствует возврат в прерванную ранее програм­му непосредственно из самой подпрограммы обработки прерывания. Для прямого


24_____________________________________________ Глава 1. Основные понятия

возврата достаточно адрес возврата сохранить в стеке, что и делает аппаратура процессора. При этом стек легко обеспечивает возможность возврата в случае вло­женных прерываний, поскольку он всегда реализует дисциплину LCFS.

Рис. 1.4. Обработка прерывания при участии супервизоров ОС

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


Понятия вычислительного процесса и ресурса_______________________________ 25

Для полного понимания принципов создания и механизмов реализации рассмат­риваемых далее современных операционных систем необходимо знать архитекту­ру и, в частности, особенности системы прерывания персональных компьютеров. Этот вопрос более подробно рассмотрен в главе 4, посвященной архитектуре мик­ропроцессоров i80x86.



<== предыдущая лекция | следующая лекция ==>
Понятие операционной среды | Понятия вычислительного процесса и ресурса


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.184 сек.