Лекция 3. Контроллер прерываний, таймер и порты
Контроллер прерываний Возможность прерывания программ – важное свойство ВС, позволяющее существенно повысить эффективность использования ее ресурсов, а также использовать компьютеры для управления в системах реального времени. Для реализации прерываний должны существовать соответствующие программные и аппаратные средства, называемые системой прерывания программ. Классификация прерываний Прерывание – событие в вычислительной системе, на возникновение которого предусмотрена стандартная реакция аппаратуры. Посредством аппаратных прерываний аппаратура информирует процессор о том, что произошло какое–либо событие, требующее немедленной реакции (например, пользователь нажал клавишу). Важный тип аппаратных прерываний – прерывания таймера, которые генерируются периодически через фиксированный промежуток времени. Прерывания от таймера используются операционной системой для планирования выполнения процессов. Количество различных типов прерываний ограничено и определяется при разработке аппаратуры компьютера. Классы прерываний. Существует три класса прерываний: внутренние, внешние (аппаратные) и программные. Внутренние прерывания возникают в случае, если процессор не может выполнить очередную команду, например деление на ноль. Внешние (аппаратные) прерывания инициируются сигналами, подаваемыми в процессор другими компонентами системы (клавиатура, таймер). Аппаратное прерывание – это асинхронное событие, то есть оно возникает вне зависимости от того, какой код исполняется процессором в данный момент. Программные прерывания инициируются специальной командой int (с числовым аргументом) выполняющейся программы. Программные прерывания являются синхронными событиями, поскольку выполняются в контексте программы. По команде int процессор осуществляет те же действия, что и при аппаратных прерываниях. Данный механизм был специально введен для того, чтобы переключение на системные программные модули происходило не просто как переход на подпрограмму, а точно таким же образом, как и в аппаратных прерываниях. В многозадачных ОС тем самым обеспечивается автоматическое переключение процессора в привилегированный режим с возможностью исполнения любых команд. Многие процессоры используют механизм, родственный прерываниям, для обработки событий, называемых исключениями. Исключительные ситуации возникают в результате попытки выполнения программой команды, которая по каким–то причинам не смогла быть выполнена. Примерами таких команд могут быть попытки доступа к ресурсу при отсутствии достаточных привилегий, делении на ноль, арифметическом переполнении или, например, выходе значения операнда за допустимый диапазон. Исключительные ситуации можно разделить на исправимые и неисправимые. В случае серьезных ошибок ОС реагирует завершением программы. Возникновение в процессе работы операционной системы исправимых исключительных ситуаций считается нормальным явлением. Многие языки высокого уровня реализуют те или иные средства для обработки исключений. Уровень этих средств различен в разных языках программирования, начиная от пары функций setjmp() и longjmp() в Си и заканчивая операторами try/catch и throw в C++. Аппаратные прерывания Аппаратные прерывания нужны, чтобы при обслуживании процессором внешних устройств, требующих управления или обмена информацией, избежать циклов опроса устройств. В компьютерах первого поколения все внешние устройства опрашивались процессором периодически и последовательно на предмет того, требуют ли они обслуживания. На это уходило много процессорного времени, а также требовалась программная поддержка циклов опроса для всех программ, работающих на компьютере. Современная схема обработки прерываний была реализована гораздо позже в системе IBM/360. В современных ОС программа сама уже не заботится об обработке прерываний. Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств, исключения — специальными модулями ядра ОС, а программные прерывания — процедурами ОС, обслуживающими системные вызовы. Кроме этих модулей, в ОС может использоваться специальный модуль, так называемый диспетчер прерываний, который координирует работу отдельных обработчиков прерываний. Каждое аппаратное прерывание имеет собственный номер IRQ с числовым аргументом, однозначно определяющий источник прерывания. IRQ расшифровывается как Interrupt Request, или запрос на аппаратное прерывание. Каждому номеру соответствует адрес программы, предназначенной для обработки прерывания. Такую программу так и называют – программой обработчиком прерывания (Interrupt Service Routine, ISR). Адреса программ обработчиков прерываний находиться в таблице, которая называется таблицей векторов прерываний. В процессорах Intel х86 предусмотрена возможность применения 256 программ обработки прерываний. Инициализация таблицы происходит во время загрузки ОС. Номер прерывания является индексом в таблице из 256 адресов подпрограмм обработки прерываний, один из которых и используется для перехода к программе обработчику прерывания.
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (234)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |