Что такое прерывание в компьютере


Прерывания для самых маленьких / Хабр

Сегодня мы поговорим о прерываниях процессоров семейства x86 (-64). Подробнее под катом.
Прерывания — это как бы сигнал процессору, что надо прервать выполнение (их поэтому и назвали прерываниями) текущего кода и срочно сделать то, что указано в обработчике.
Все адреса обработчиков прерываний хранятся в IDT. Это таблица, в которой хранятся 256 (можно больше или меньше, но большие значения просто игнорируются) ячеек (векторы прерываний) с типом и атрибутами прерывания, одним просто нулевым значением, собственно адресом обработчика прерываний и селектором кода в GDT или LDT, который будет использовать данный вектор прерываний. Теперь немного о типе и атрибутах.
Тип прерывания и атрибуты занимают 8 бит. Первые 4 бита занимают тип:
  • 0b0101: 32-битный гейт задачи, при появлении такого прерывания происходит хардверное переключение задачи (да-да, есть и такое, но его уже давно не используют)
  • 0b0110: 16-битный гейт прерывания
  • 0b0111: 16-битный гейт trap'a (я не знаю, как это перевести на русский язык, извините)
  • 0b1110: 32-битный гейт прерывания
  • 0b1111: 32-битный гейт trap'a

Далее идут атрибуты. Первым атрибутом является 1 бит, который задан в 0 для гейтов прерывания и в 1 для остальных. Далее идет уровень привилегий дескриптора — 2 бита, задающие минимальный уровень привилегий для вызова прерываний, и 1 бит, заданный в 0 для неиспользуемых прерываний.
Теперь о том, как процессор вызывает обработчики.
Допустим, что вы вызвали инструкцию int 0 в ассемблере. Это даст сигнал процессору, что надо вызвать прерывание 0, если это возможно. Вот последовательность действий, которые происходят при этом.
  1. Поиск вектора №0 в IDT.
  2. Сравнение уровня привилегий дескриптора и текущего уровня привилегий процессора.
  3. Если текущий уровень привилегий процессора меньше уровня привилегий дескриптора, то просто вызвать генеральную ошибку защиты и не вызывать прерывание.
  4. Происходит сохранение адреса возвращения, регистра (E)FLAGS и другой информации.
  5. Происходит переход на адрес, указанный в векторе №0 IDT.
  6. После выполнения обработчика инструкция iret возвращает управление прерванному коду.

Еще есть прерывания, которые генерируются самим процессором при определенных обстоятельствах — исключения. Вот их список с краткими описаниями:
  • Деление на ноль. Генерируется при, собственно, делении на ноль.
  • Отладочное исключение. Генерироваться само не может, используется для, собственно, отладки.
  • Немаскируемое прерывание. Генерируется при ошибках ОЗУ и невосстановимых ошибках «железа». Их невозможно замаскировать с помощью PIC (Programmable Interrupt Controller — программируемый контроллер прерываний), так как оно идет сразу в процессор, минуя PIC, но можно просто отключить.
  • Точка останова. Тоже используется для отладки, потому что его опкод занимает всего 1 байт, в отличии от остальных INT N. Переназначалось DOS-отладчиками для своих целей.
  • Переполнение. Генерируется инструкцией INTO, если в (E)FLAGS включен бит переполнения.
  • Выход за пределы. Генерируется при ошибке инструкции BOUND.
  • Недопустимый опкод. Генерируется при попытке выполнения недопустимого кода операции.
  • Устройство недоступно. Сейчас не используется, генерировался при попытке использования операций с плавающей точкой на процессорах без FPU.
  • Double fault. Сложно перевести название. Ошибка невосстановима, происходит при невозможности вызвать обработчик исключения.
  • Переполнение сегмента сопроцессора. Больше не используется.
  • Недопустимый TSS. Сегмент состояния задачи задан неправильно.
  • Сегмент отсутствует. Возникает при попытке загрузки сегмента с битом Present == 0.
  • Ошибка сегмента стека. Возникает при попытке загрузки сегмента с битом Present == 0 или переполнении стека.
  • Общая ошибка защиты. Генерируется в очень большом числе случаев, среди них есть ошибка сегмента, попытка выполнения инструкции без необходимых прав, запись туда, куда не надо, попытка доступа к нулевому дескриптору GDT и многое другое.
  • Ошибка страницы. Происходит при чтении или записи в несуществующую страницу памяти, попытке доступа к данным без необходимых прав или другом.
  • Ошибка с плавающей точкой. Происходит при выполнении инструкции FWAIT или WAIT с битом №5 в CR0 == 0.
  • Ошибка при проверке на выравнивание. Происходит только в третьем кольце привилегий процессора, если эта ошибка, конечно, включена.
  • Ошибка при проверке машины. Генерируется процессором при обнаружении «железных» ошибок.
  • Исключение с плавающей точкой SIMD. Генерируется при ошибках с 128-битными числами с плавающей точкой.
  • Ошибка виртуализации.
  • Ошибка безопасности.
  • Тройная ошибка. По сути исключением не является, это даже не прерывание. Происходит при невозможности вызвать Double Fault. Вызывает немедленную перезагрузку компьютера.

Существует особый тип прерываний — IRQ (Interrupt ReQuest), или же аппаратные прерывания, но я буду их для краткости называть просто IRQ. Технически они почти не отличаются от любых других прерываний, но генерируются не процессором или самим кодом, а устройствами, подключенными к компьютеру. К примеру, IRQ №0 генерируется PIT (таймер с программируемым интервалом), IRQ 1 генерируется при нажатии клавиши на клавиатуре, а IRQ 12 — при действии с PS/2-мышью.
Еще есть так называемые программные прерывания. Их, как понятно из названия, программа должна вызывать сама — никто их за нее не вызывает. Таковыми являются, например, системные вызовы в некоторых системах. В Linux, например, они висят на векторе 0x80. Во многих хобби-ОС они тоже висят на векторе 0x80. Теперь немного отсебятины — я думаю, что сисвызовы сделаны в виде прерываний из-за того, что 1) их так очень легко вызывать, 2) их можно вызвать из любого кода, работающего в ОС — IDT-то одна на всю систему.
Информация взята с OSDev Wiki.

Прерывание (Операционные Системы) — Национальная библиотека им. Н. Э. Баумана

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:27, 5 июня 2019.

Прерывание — сигнал к процессору , испускаемый аппаратными средствами или программным обеспечением, и указывающий на событие, которое требует немедленного внимания. Прерывание предупреждает процессор о высокоприоритетном состоянии, требующем прерывания текущего кода, выполняемого процессором. Процессор отвечает, приостанавливая свои текущие действия, сохраняя свое состояние и выполняя функцию, называемую обработчиком прерываний (или подпрограммой обработки прерываний, ISR) для обработки события. Это прерывание является временным, и после завершения обработки обработчика прерывания процессор возобновляет обычную работу. Существует два типа прерываний: аппаратные прерывания и программные прерывания.[1]

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

История

Первое фактическое использование прерываний приписывают компьютеру UNIVAC 1103 в 1953 году.[2]На IBM 650 (1954) было применено впервые прерывание путём маскировки. Национальное бюро стандартов DYSEAC (1954) первым использовало прерывания для ввода / вывода. IBM 704 был первым компьютером, использующим прерывания для отладки с «передаточной ловушкой», которая может ссылаться на специальную процедуру, когда команда ветвления была имеет столкновение. Система TX-2 (1957) была первой, обеспечивающей несколько уровней приоритетных прерываний.[3]

Типы прерываний

Прерывания могут быть разделены на следующие типы:

  • Маскируемое прерывание (IRQ): аппаратное прерывание, которое можно игнорировать, устанавливая бит в битовой маске регистра маски прерываний (IMR).
  • Немаскируемое прерывание (NMI): аппаратное прерывание, в котором отсутствует связанная битовая маска, поэтому ее нельзя игнорировать. NMI используются для задач с высшим приоритетом, например таких как таймеры.
  • Межпроцессорное прерывание (IPI): особый случай прерывания, которое генерируется одним процессором для прерывания другого процессора в многопроцессорной системе.
  • Программное прерывание: прерывание, генерируемое в процессоре путем выполнения инструкции. Программные прерывания часто используются для реализации системных вызовов, поскольку они приводят к вызову подпрограммы с изменением уровня вызова ЦП.
  • Ложное прерывание: нежелательное аппаратное прерывание. Как правило, такие прерывания генерируются системными условиями, такими как электрические помехи в линии прерывания или из-за технически неправильно разработанного оборудования.

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

Прерывание, которое оставляет машину в четко определенном состоянии, называется точным прерыванием. Такое прерывание имеет четыре свойства:

  • Счетчик программ (PC — Program Counter) сохраняется в известном месте.
  • Все инструкции перед тем, на который указывает счетчик программ, полностью выполнены.
  • Никакая инструкция, кроме той, на которую указывает счетчик программ, не была выполнена, или любые такие инструкции отменяются до обработки прерывания.
  • Состояние выполнения инструкции, на которую указывает счетчик программ, известно.

Прерывание, которое не соответствует указанным выше требованиям, называется неточным прерыванием.

Аппаратные прерывания

Аппаратные прерывания используются устройствами для передачи информации о том, что они требуют внимания со стороны операционной системы.[4] Внутренние аппаратные прерывания реализуются с использованием электронных сигналов оповещения, которые отправляются процессору от внешнего устройства, которое является частью самого компьютера, например контроллер диска, или внешнее периферийное устройство. К слову, нажатие клавиши на клавиатуре или перемещение мыши вызывают аппаратные прерывания, которые заставляют процессор считывать нажатие клавиши или положение мыши. В отличие от типа программного обеспечения, аппаратные прерывания являются асинхронными и могут произойти в середине выполнения инструкции, что требует дополнительного внимания при программировании. Акт инициирования аппаратного прерывания называется запросом прерывания (IRQ). [1]

Программные прерывания

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

Рисунок 1 – Программное прерывание процесса

Сложность с разделением линий прерывания

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

Некоторые устройства с плохо разработанным программным интерфейсом не позволяют определить, запросили ли они обслуживание. Они могут запереться или иным образом плохо себя вести, если их обслуживают, когда они этого не хотят. Такие устройства не могут терпеть паразитные прерывания, а также не могут терпеть совместное использование линии прерывания. Карты ISA , из-за зачастую дешевого дизайна и конструкции, печально известны этой проблемой. Такие устройства становятся все более редкими, поскольку аппаратная логика становится дешевле, а новые системные архитектуры требуют разделяемых прерываний. [1]

Проблемы с производительностью

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

С многоядерными процессорами, дополнительные улучшения производительности в обработке прерываний могут быть достигнуты с помощью масштабирования на стороне приема (RSS), когда используются сетевые адаптеры с несколькими очередями. Такие NIC предоставляют несколько очередей приема, связанных с отдельными прерываниями; путем маршрутизации каждого из этих прерываний на разные ядра обработка запросов на прерывание, запускаемых сетевым трафиком, полученным одним NIC, может быть распределена между несколькими ядрами. Распределение прерываний между ядрами может выполняться операционной системой автоматически, либо маршрутизация прерываний (обычно называемая привязкой IRQ) может быть настроена вручную.

Чисто программная реализация распределения принимаемого трафика, известная как управление приемными пакетами (RPS), распределяет принятый трафик между ядрами позже в тракте данных как часть функциональности обработчика прерываний. Преимущества RPS по RSS не включают требований к конкретному оборудованию, более продвинутым фильтрам распределения трафика и уменьшенной частоте прерываний, создаваемых NIC. Как недостаток, RPS увеличивает частоту межпроцессорных прерываний (IPI). Управление потоком приема (RFS) расширяет программный подход, учитывая локальность приложений; Дальнейшее улучшение производительности достигается за счет обработки запросов на прерывание теми же ядрами, на которых конкретные сетевые пакеты будут использоваться целевым приложением. [1]

Типичное использование

Типичное использование прерываний включает в себя следующее: системные таймеры, дисковый ввод / вывод, сигналы-выключение и ловушки. Существуют прерывания для передачи байтов данных с использованием UART или Ethernet; для чувствительных нажатий клавиш, управления двигателями и т.д.

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

Например, прерывание диска сигнализирует о завершении передачи данных с или на периферийное устройство диска; процесс, ожидающий чтения или записи файла, запускается снова. В качестве другого примера — прерывание при отключении питания прогнозирует или запрашивает потерю мощности, позволяя компьютерному оборудованию выполнять упорядоченное завершение работы. Кроме того, прерывания используются в функциях "typeahead" для буферизации событий, таких как нажатия клавиш .

Прерывания используются для эмуляции инструкций, которые не реализованы на определенных моделях в компьютерной линии. Например, инструкции с плавающей запятой могут быть реализованы в аппаратных средствах в некоторых системах и эмулироваться в более дешевых системах. Выполнение невыполненной инструкции вызовет прерывание. Обработчик прерываний операционной системы распознает возникновение невыполненной инструкции, интерпретирует инструкцию в программной подпрограмме и затем вернется к программе прерывания, как если бы инструкция была выполнена. Это обеспечивает переносимость прикладного программного обеспечения по всей линии. [1]

Источники

Системные прерывания – что это? Описание, причины и методы устранения

Системные процессы, о которых рядовые пользователи компьютеров, часто не имеют представления, очень часто могут вызвать повышенные нагрузки на вычислительные ресурсы компьютера. К таковым, в частности, относятся так называемые системные прерывания. Что это такое, большинство не знает и часто пытается завершить работу данной службы непосредственно в «Диспетчере задач», где и отображается загрузка центрального процессора и оперативной памяти. Несколько забегая вперед, следует сказать, что заниматься такими вещами не стоит ни в коем случае. Но как тогда привести систему в чувство? Об этом предлагается поговорить более подробно, тем более, что при рассмотрении основного вопроса попутно могут обнаружиться и другие проблемы, связанные с некорректным функционированием «железных» компонентов, самих операционных систем Windows и установленного в их среде программного обеспечения. Но обо всем по порядку.

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

Но что это такое? Не вдаваясь в технические подробности и говоря о том, что это, системные прерывания можно сравнить с некой лакмусовой бумажкой или индикатором, который сигнализирует о том, что в системе наблюдаются сбои в работе какого-то оборудования. Кроме того, повышение нагрузки на ресурсы может быть связано еще с несовместимостью программной и аппаратной части компьютера. В обычном своем состоянии нагрузка на процессор со стороны этого процесса обычно не превышает пяти процентов или чуть больше, чего вполне достаточно для проведения диагностики всех используемых в данный момент «железных» устройств на предмет корректного функционирования в фоновом режиме. Если же нагрузка возрастает выше указанного лимита, необходимо срочно выявлять причину и устранять проблемы с оборудованием.

Как это работает: простейшее объяснение

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

Предположим, у вас на компьютере установлена какая-то современная игра, но видеокарта соответствует лишь минимальным ее системным требованиям, или конфигурация находится ниже этого порога. Если графический чип не справляется с обработкой программных компонентов, что ведет к повышению на него нагрузки, в дело включаются системные прерывания. За их счет обработка команд перенаправляется на центральный процессор, который и пытается помочь видеокарте справиться с возросшим числом обращений. Соответственно, и со стороны описываемого процесса в «Диспетчере задач» наблюдается увеличение нагрузки. И нередко возникновение таких ситуаций приводит не только к зависанию всей системы, но и даже к появлению синих экранов. То же самое относится и к случаям, когда оборудование начинает выходить из строя. К сожалению, при поломках «железных» компонентов системы все это в равной степени может относиться к любому из них (например, сыпется жесткий диск, дают сбои планки оперативной памяти и т. д.).

Системные прерывания грузят процессор: что делать в первую очередь?

Исходя из приведенных выше теоретических сведений, перейдем к практическим мерам, которые позволяют устранить возникающие проблемы и исправить такие ситуации. Что предпринять в первую очередь? Как ни странно это звучит, но иногда бывает достаточно выполнить самую обычную перезагрузку, что позволяет деактивировать все сторонние программные компоненты. Но ведь при повторном запуске какого-то приложения ситуация может повториться. В этом случае сразу же следует проверить состояние драйверов, используя для этого «Диспетчер устройств». Вполне возможно, что конфликт между программной и аппаратной частью как раз и был спровоцирован именно ими.

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

Отслеживание нагрузок при помощи специальной утилиты

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

Поэтому, если замечено, что системные прерывания грузят ресурсы, большинство специалистов рекомендует воспользоваться небольшой программой под названием DPC Latency Checker, которая представлена в портативном виде и не требует установки на ПК. В ней первым делом необходимо включить сканирование, после чего в результатах проверки будут приведены рекомендации по устранению проблем. Однако чаще всего связаны они только с завершением каких-то процессов, соответствующих и программам, и используемому в данный момент оборудованию, или будет выдана рекомендация обратиться к «Диспетчеру устройств». А вот его-то нам и нужно использовать, оставив диагностическую утилиту активной в качестве своеобразного средства изменения отслеживания нагрузок. Не путайте нагрузки, показанные в этой программе, с теми, которые видны в «Диспетчере задач».

Отключение компонентов в «Диспетчере устройств»

Что касается этого раздела управления оборудованием, суть устранения проблем сводится к тому, что последовательно отключать установленные в системе устройства с последующей проверкой нагрузок вышеупомянутой утилитой.

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

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

Что делать, если проблема с нагрузкой не устраняется?

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

Как вариант – в настройках звука средствами Windows, отключите данный пункт, что автоматически приведет к деактивации всех установленных эффектов. Заметьте, они относятся именно к программному, а не к аппаратному типу, поэтому отключение основного устройства может и не дать результата.

Проблемы с первичными системами ввода/вывода

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

Краткие итоги

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

Системные прерывания грузят процессор | remontka.pro

&nbsp windows

Если вы столкнулись с тем, что системные прерывания грузят процессор в диспетчере задач Windows 10, 8.1 или Windows 7, в этой инструкции подробно о том, как выявить причину этого и исправить проблему. Полностью убрать системные прерывания из диспетчера задач нельзя, но вернуть нагрузку в норму (десятые доли процента) вполне возможно, если выяснить, что вызывает нагрузку.

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

Что делать, если системные прерывания грузят процессор

Чаще всего, когда в диспетчере задач появляется неестественно высокая нагрузка на процессор, причиной является что-то из:

  • Неправильно работающее оборудование компьютера
  • Неправильная работа драйверов устройств

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

Прежде чем приступать к поиску конкретной причины, рекомендую, если это возможно, вспомнить, что выполнялось в Windows непосредственно перед появлением проблемы:

  • Например, если обновлялись драйверы, можно попробовать откатить их.
  • Если было установлено какое-то новое оборудование — убедиться в правильности подключения и работоспособности устройства.
  • Также, если ещё вчера проблемы не было, а с аппаратными изменениями связать проблему не получается, можно попробовать использовать точки восстановления Windows.

Поиск драйверов, вызывающих нагрузку от «Системные прерывания»

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

  1. Скачайте и установите LatencyMon с официального сайта разработчика http://www.resplendence.com/downloads и запустите программу.
  2. В меню программы нажмите кнопку «Play», перейдите на вкладку «Drivers» и отсортируйте список по колонке «DPC count». 
  3. Обратите внимание на то, какой драйвер имеет наибольшие значения DPC Count, если это драйвер какого-то внутреннего или внешнего устройства, с большой вероятностью, причина именно в работе этого драйвера или самого устройства (на скриншоте — вид на «здоровой» системе, т.е. более высокие количества DPC для приведенных на скриншоте модулей — норма).
  4. В диспетчере устройств попробуйте отключить устройства, драйверы которых вызывают наибольшую нагрузку согласно LatencyMon, а затем проверить, была ли решена проблема. Важно: не отключайте системные устройства, а также находящиеся в разделах «Процессоры» и «Компьютер». Также не стоит отключать видеоадаптер и устройства ввода. 
  5. Если отключение устройства вернуло нагрузку, вызываемую системными прерываниями в норму, удостоверьтесь в работоспособности устройства, попробуйте обновить или откатить драйвер, в идеале — с официального сайта производителя оборудования.

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

Проблемы с работой USB устройств и контроллеров

Также частой причиной высокой нагрузки на процессор со стороны системных прерываний является неправильная работа или неисправность внешних устройств, подключенных по USB, самих разъемов или повреждение кабелей. В этом случае в LatencyMon вы навряд ли увидите что-то необычное.

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

Поэтому могу рекомендовать более простой метод: откройте диспетчер задач, так чтобы было видно «Системные прерывания» и поочередно отключайте все без исключения USB устройства (включая клавиатуру, мышь, принтеры): если вы увидите, что при отключении очередного устройства нагрузка упала, то ищите проблему в этом устройстве, его подключении или том USB-разъеме, который для него использовался.

Другие причины высокой нагрузки от системных прерываний в Windows 10, 8.1 и Windows 7

В завершение некоторые менее часто встречающиеся причины, вызывающие описываемую проблему:

  • Включенный быстрый запуск Windows 10 или 8.1 в сочетании с отсутствием оригинальных драйверов управления электропитанием и чипсета. Попробуйте отключить быстрый запуск.
  • Неисправный или не оригинальный адаптер питания ноутбука — если при его отключении системные прерывания перестают грузить процессор, дело скорее всего в этом. Однако, иногда, виноват не адаптер, а батарея.
  • Звуковые эффекты. Попробуйте отключить их: правый клик по значку динамика в области уведомлений — звуки — вкладка «Воспроизведение» (или «Устройств воспроизведения»). Выбираем используемое по умолчанию устройства и нажимаем «Свойства». Если в свойствах присутствуют вкладки «Эффекты», «Пространственный звук» и похожие, отключаем их. 
  • Неправильная работа оперативной памяти — выполните проверку оперативной памяти на ошибки.
  • Проблемы с работой жесткого диска (основной признак — компьютер то и дело зависает при доступе к папкам и файлам, диск издает необычные звуки) — выполните проверку жесткого диска на ошибки.
  • Редко — наличие нескольких антивирусов на компьютере или специфических вирусов, работающих напрямую с оборудованием.

Есть еще один способ попробовать выяснить, какое оборудование виновато (но что-то показывает редко):

  1. Нажмите клавиши Win+R на клавиатуре и введите perfmon /report затем нажмите Enter. 
  2. Подождите, пока будет подготовлен отчет. 

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

А вдруг и это будет интересно:

Прерывания в конвейеризированных процессорах / Хабр

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

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

Если когда-нибудь вы задумывались над тем, что значат слова «the processor supports precise aborts» в даташите, прошу под кат.

Немного терминологии: процессор, процессы и прерывания

Чтобы не пытаться объять необъятное, я не буду рассматривать:
  • Процессоры с экзотическими архитектурами (стековыми, потоковыми, асинхронными и так далее), потому что их доля на рынке весьма мала, а в качестве примера логичнее использовать распространенную архитектуру. RISC я выбрал исключительно по религиозным соображениям
  • Многоядерные процессоры, потому что каждое процессорное ядро обрабатывает свои прерывания независимо от других ядер
  • Суперскалярные, многопоточные и VLIW процессоры, потому что с точки зрения организации прерываний они похожи на скалярные процессоры (хотя, разумеется, гораздо сложнее).

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

Итак, процессор — это устройство, выполняющее последовательность команд (программу) для решения некоторой задачи. Для каждой команды, в свою очередь, процессор должен выполнить последовательность операций, называемую циклом команды (instruction cycle) и состоящую из следующих этапов:

  1. Выборка команды из памяти
  2. Декодирование команды
  3. Исполнение команды
  4. Запись результатов в регистры и/или память

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

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

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

  • счетчика команд процессора (program counter, он же instruction pointer)
  • регистров процессора (общего назначения, статусных, флагов и так далее)
  • оперативной памяти

В системах реального времени необходимо также учитывать влияние кэш-памяти, буферов ассоциативной трансляции MMU (translation lookaside buffer, TLB) и таблиц динамического предсказания переходов.

Каждая выполненная команда каким-то образом обновляет состояние процесса:

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

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

В зависимости от источника прерывания оно может быть:

  1. Внутренним, если вызвано выполнением команды в процессоре:
    • Программным (software interrupt), если вызвано специальной командой
    • Исключением (exception, fault, abort – это все оно), если вызвано ошибкой при выполнении команды

  2. Внешним, если вызвано произошедшим снаружи процессора событием

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

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

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

После возврата управления прерванному процессу он должен иметь возможность продолжить работу так, как будто его и не прерывали. Это требование тривиально, однако для большинства современных процессоров его довольно сложно выполнить. Настолько сложно, что иногда от него отказываются. Прерывания, которые гарантируют выполнение этого требования, называют точными (precise), а прочие — неточными (imprecise).
Точные и неточные прерывания

Формально прерывание называется точным, если выполнены все перечисленные ниже условия:
  1. все команды, предшествующие прерываемой, были полностью выполнены и корректно сохранили состояние процесса
  2. все команды, следующие за прерываемой, не были выполнены и ни коим образом не изменили состояние процесса
  3. прерываемая команда, в зависимости от типа прерывания, либо была полностью выполнена, либо не была выполнена вовсе

Первые два условия точности не нуждаются в комментариях. Третье условие обусловлено следующим:
  • Команда, выполнявшаяся в момент прихода внешнего прерывания, должна обновить состояние процесса перед тем, как оно будет сохранено. То же самое касается команды, вызвавшей программное прерывание. В обоих случаях РАВ будет указывать на команду, которая, не случись прерывания, должна была быть выполнена следующей. Она и будет выполнена сразу после возврата из обработчика прерывания
  • Команда, вызвавшая исключение — «плохая» команда. Ее результаты, скорее всего, некорректны, поэтому она не должна обновлять состояние процесса. Вместо этого в РАВ сохраняется ее адрес, после чего вызывается обработчик прерывания, который попытается исправить ошибку. После возврата из обработчика эта команда будет выполнена повторно. Если она снова вызовет такое же исключение, значит ошибка неисправима и процессор сгенерирует фатальное прерывание

Очевидно, что внешние прерывания должны быть точными всегда. Кому нужен процессор, который не может корректно восстановить процесс после обработки прерывания от таймера?

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

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

В большинстве учебников по архитектуре компьютеров (включая классику типа Patterson&Hennessy и Hennessy&Patterson) точные прерывания обходятся стороной. Кроме того, неточные прерывания не представляют никакого интереса. По-моему, это отличные причины продолжить рассказ именно про точные прерывания.

Точные прерывания в процессорах с последовательным выполнением команд

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

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

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

Чтобы понять, где же должна быть расположена точка фиксации результатов, полезно вспомнить этапы цикла команды:

  1. Выборка команды из памяти
  2. Декодирование команды
  3. Исполнение команды
  4. Запись результатов в регистры и/или память

По определению, она должна находиться до записи результатов, но к этому моменту уже должно быть известно, вызвала команда исключение или нет. Исключение может произойти на любом из четырех этапов, например:
  1. ошибка памяти при выборке команды
  2. неизвестный код операции при декодировании
  3. деление на ноль при исполнении
  4. ошибка памяти при записи результатов

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

Как можно догадаться, эту проблему довольно сложно решить, поэтому во многих процессорах для простоты реализованы «почти точные» прерывания, то есть точными сделаны все прерывания, кроме исключений, вызванных ошибками памяти при записи результатов. В этом случае точка фиксации результатов находится между третьим и четвертым этапами цикла команды.
Важно! Нужно помнить, что счетчик команд тоже должен обновляться строго после точки фиксации результатов. При этом он изменяется вне зависимости от того, зафиксирована команда или нет — в него записывается либо адрес следующей команды, либо вектор прерывания, либо РАВ.

Точные прерывания в процессорах с параллельным выполнением команд

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

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

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

Для этого результаты каждого этапа, кроме последнего, сохраняются во вспомогательных элементах памяти (регистрах), расположенных между этапами:

  1. Результат выборки — закодированная команда — сохраняется в регистре, расположенном между этапами выборки и декодирования
  2. Результат декодирования — тип операции, значения операндов, адрес результата — сохраняются в регистрах между этапами декодирования и исполнения
  3. Результаты исполнения — новое значение счетчика команд для условного перехода, вычисленный в АЛУ результат арифметической операции и так далее — сохраняются в регистрах между этапами исполнения и записи результатов
  4. На последнем этапе результаты и так записываются в регистры и/или память, поэтому никакие вспомогательные регистры не нужны.

Вот так работает получившийся конвейер:
 Такт СК Выборка Декодирование Исполнение Запись_результатов 1 0x00 Команда1 - - - 2 0x04 Команда2 Команда1 - - 3 0x08 Команда3 Команда2 Команда1 - 4 0x0C Команда4 Команда3 Команда2 Команда1 5 0x10 Команда5 Команда4 Команда3 Команда2 

Обратите внимание на столбец СК («счетчик команд»). Его значение меняется каждый такт и определяет адрес в памяти, откуда выбирается команда.
Внимательный читатель уже заметил небольшую неувязочку — для обеспечения точности прерываний первая команда не имеет права изменить счетчик команд раньше четвертого такта. Чтобы это исправить, мы должны перенести счетчик команд за точку фиксации результата (предположим, что она находится между третьим и четвертым этапами):
 Такт Выборка Декодирование Исполнение Запись_результатов СК 1 Команда1 - - - 0х00 2 - Команда1 - - 0х00 3 - - Команда1 - 0х00 4 Команда2 - - Команда1 0х04 5 - Команда2 - - 0х04 

Производительность процессора немного упала, не так ли? На самом деле, решение лежит на поверхности – нам нужно два счетчика команд! Один должен находиться в начале конвейера и указывать, откуда читать команды, второй – в конце, и указывать на ту команду, которая должна быть зафиксирована следующей.
Первый называется «спекулятивным», второй – «архитектурным». Чаще всего спекулятивный счетчик команд не существует сам по себе, а встроен в предсказатель переходов. Выглядит это вот так:
 Такт ССК Выборка Декодирование Исполнение Запись_результатов АСК 1 0x00 Команда1 - - - 0х00 2 0x04 Команда2 Команда1 - - 0х00 3 0x08 Команда3 Команда2 Команда1 - 0х00 4 0x0C Команда4 Команда3 Команда2 Команда1 0х04 5 0x10 Команда5 Команда4 Команда3 Команда2 0х08 

Дальше происходит вот что. Команда, перемещаясь между этапами, тащит за собой адрес, из которого она была выбрана (то есть ее ССК). Перед точкой фиксации результата процессор смотрит, не пришло ли внешнее прерывание, не вызвала ли команда исключение, а также сравнивает ее адрес с АСК:
  • Если пришло внешнее прерывание, команда коммитится, но адрес следующей команды записывается не в АСК, а в РАВ. В АСК записывается адрес вектора прерывания.
  • Если возникло исключение, команда не коммитится, вместо этого в АСК записывается адрес вектора соответсвующего исключения, а адрес команды записывается в РАВ.
  • Если адрес команды не равен АСК, она тоже не коммитится (об этом позже). Если адрес равен АСК и исключения не произошло – процессор фиксирует команду и обновляет АСК (записывает адрес перехода в случае команды ветвления или просто инкрементирует в случае другой команды)

Почему адрес команды может быть не равен АСК? Возьмем мой любимый пример: процессор только что включили, и он выбирает первую команду из таблицы прерываний, которая является ни чем иным как командой перехода в далекую даль (по адресу 0х1234):
 Такт ССК Выборка Декодирование Исполнение Запись_результатов АСК 1 0x00 jump 0x1234 - - - 0х00 2 0x04 Команда2 jump 0x1234 - - 0х00 3 0x08 Команда3 Команда2 jump 0x1234 - 0х00 4 0x0C Команда4 Команда3 Команда2 jump 0x1234 0х1234 *** Для Команды2 на четвертом такте ее адрес (0х04) не равен АСК, потому что переход был предсказан неверно*** 5 0x1234 Команда666 - - - 0х1234 6 0x1238 Команда667 Команда666 - - 0х1234 7 0x1240 Команда668 Команда667 Команда666 - 0х1234 8 0x1244 Команда669 Команда668 Команда667 Команда666 0х1238 

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

Желающим усугубить взрыв мозга рекомендую ознакомиться с Implementation of precise interrupts in pipelined processors. Да-да, ваш новейший Интел Кор Ай Семь работает именно так, как описано в этой статье двадцатипятилетней давности. Добро пожаловать в восьмидесятые!

Прерывание - Настройка BIOS

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

 

Прерывание (interrupt, INT) – это приостановка центральным процессором выполнения приоритетной программы для обработки события, которое поступило от одного из устройств.

 

Механизм прерываний реализован следующим образом:

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

 

Контроллер прерываний (Programmable Interrupt Controller, PIC) – это микросхема (или встроенный в процессор модуль), которая выполняет обработку запросов на прерывание от различных устройств.

 

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

 

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

 

1. Немаскируемые прерывания (Non-Maskable Interrupt, NMI). Прерывания с высшим приоритетом. Прерывания данного типа обрабатываются в случаях возникновения аварийных ситуаций, вызванных ошибками в работе памяти или других устройств.

 

2. Маскируемые (аппаратные) прерывания. В эту группу относят прерывания от периферийных устройств. Обрабатываются контроллером прерываний. Стандартный контроллер прерываний позволяет обращаться к 16 прерываниям от различных устройств. Сегодня имеется возможность использовать расширенный контроллер прерываний APIC.

 

APIC (Advanced Programmable Interrupt Controller) – расширенный программируемый контроллер прерываний, позволяющий использовать 24 аппаратных прерываний вместо 16.

 

Примером аппаратного прерывания может быть сигнал от таймера, звуковой карты, нажатие клавиши клавиатуры.

 

Аппаратные прерывания и зарезервированные за ними устройства

 

Номер

Прерывания

Устройство

0

Системный таймер

1

Клавиатура

2

Контроллер прерываний

3

Порт СОМ1

4

Порт СОМ2

5

Нет

6

Контроллер дисковода для дискет

7

Порт LPT

8

Часы реального времени RTC

9

Нет

10

Нет

11

Нет

12

Мышь PS/2

13

Математический сопроцессор

14

Первичный канал контроллера IDE

15

Вторичный канал контроллера IDE

 

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

Опции BIOS Setup для настройки прериваний находятся здесь.


Еще по настройке БИОС (БИОЗ) плат:

  • PCI Express, (или PCIe, или PCI-E) – это компьютерная шина расшир...

  • PCI (Peripheral Component Interconnect) – это компьютерная шина в...

  • FSB (Front Side Bus, системная шина) – это шина (набор сигнальных...

  • Чипсет (chipset) – это набор микросхем (размещенных на системной ...

  • Центральный процессор (ЦП, CPU) – это микросхема, которая явля...

типов прерываний | Как обрабатывать прерывания?

Прерывания:

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

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

Что такое прерывание?

Прерывание - это сигнал с наивысшим приоритетом от аппаратного или программного обеспечения, процессор которого должен немедленно обработать его сигнал.

Типы прерываний:

Хотя прерывания имеют наивысший приоритет, чем другие сигналы, существует много типов прерываний, но основным типом прерываний является

.
  1. Аппаратные прерывания: Если сигнал для процессора исходит от внешнего устройства или оборудования, это называется аппаратными прерываниями.Пример: с клавиатуры мы нажимаем клавишу, чтобы выполнить какое-либо действие, это нажатие клавиши на клавиатуре генерирует сигнал, который передается процессору для выполнения действия, такие прерывания называются аппаратными прерываниями. Аппаратные прерывания можно разделить на два типа:
    • Маскируемое прерывание: Аппаратные прерывания, которые могут быть отложены при возникновении прерывания с наивысшим приоритетом для процессора.
    • Немаскируемое прерывание: Аппаратное обеспечение, которое не может быть задержано и должно обрабатываться процессором немедленно.
  2. Программные прерывания: Программные прерывания также можно разделить на два типа. Они есть
    • Нормальные прерывания: прерывания, вызванные программными инструкциями, называются программными инструкциями.
    • Исключение: незапланированных прерываний при выполнении программы называется Исключением. Например: если при выполнении программы мы получили значение, которое нужно разделить на ноль, это называется исключением.

Классификация прерываний по периодичности возникновения:

  1. Периодическое прерывание: Если прерывания произошли с фиксированным интервалом на временной шкале, то эти прерывания называются периодическими прерываниями
  2. Апериодическое прерывание: Если возникновение прерывания невозможно предсказать, то это прерывание называется апериодическим прерыванием.

Классификация прерываний по временной взаимосвязи с системными часами:

  1. Синхронное прерывание: Источник прерывания находится в фазе с системными часами, это называется синхронным прерыванием. Другими словами, прерывания, зависящие от системных часов. Пример: служба таймера, использующая системные часы.
  2. Асинхронные прерывания: Если прерывания независимы или не совпадают по фазе с системными часами, это называется асинхронным прерыванием.
Обработка прерываний:

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

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

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

Основные характеристики ISR:

  • Прерывания могут возникать в любое время, они асинхронны. ISR могут вызывать асинхронные прерывания.
  • Механизм обслуживания прерывания может вызывать ISR из нескольких источников.
  • ISR
  • могут обрабатывать как маскируемые, так и немаскируемые прерывания. Инструкция в программе может отключить или включить вызов обработчика прерывания.
  • ISR в начале выполнения отключит службы прерывания других устройств. После завершения выполнения ISR он повторно инициализирует службы прерывания.
  • Вложенные прерывания разрешены в ISR для перенаправления в другую ISR.
Типы обработчиков прерываний:
  1. Обработчик прерывания первого уровня (FLIH) - обработчик аппаратного прерывания или обработчик быстрого прерывания. Эти обработчики прерываний имеют больше джиттера во время выполнения процесса, и они в основном являются маскируемыми прерываниями
  2. Обработчик прерываний второго уровня (SLIH) - это обработчик мягких прерываний и обработчик медленных прерываний.У этих обработчиков прерываний меньше джиттер.
Задержка прерывания:

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

  • Tswitch = Время, затраченное на переключение контекста
  • ΣTexec = Сумма интервалов времени для выполнения ISR
  • Задержка прерывания = Tswitch + ΣTexec

Ссылка по теме: Операционная система реального времени

.

Что, операции, процессы, факты и резюме

GCSE Функции и характеристики процессора (14-16 лет)

  • Редактируемая презентация урока в PowerPoint
  • Редактируемые раздаточные материалы для исправлений
  • Глоссарий, охватывающий ключевые термины модуля
  • Тематические интеллектуальные карты для визуализации ключевых понятий
  • Печатные карточки, помогающие учащимся активнее вспоминать и повторять на основе уверенности
  • Викторина с сопровождающим ключом для проверки знаний и понимания модуля

A-Level Функции и характеристики процессора (16-18 лет)

  • Редактируемая презентация урока в PowerPoint
  • Редактируемые раздаточные материалы для исправлений
  • Глоссарий, охватывающий ключевые термины модуля
  • Тематические интеллектуальные карты для визуализации ключевых понятий
  • Печатные карточки, помогающие учащимся активнее вспоминать и повторять на основе уверенности
  • Викторина с сопровождающим ключом для проверки знаний и понимания модуля

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

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

Первая система, в которой использовался такой подход, появилась в 1954 году и называлась DYSEAC, которая была создана Национальным бюро стандартов для армии США.

(Это было реализовано на грузовике, что, вероятно, сделало его одним из первых мобильных компьютеров)

Хотя первой системой, в которой использовались прерывания, был компьютер UNIVAC 1103 в 1953 году, компьютер американского производства.

Что такое прерывания?

Прерывания - это реакция процессора на процесс / событие, требующее немедленного внимания со стороны программного обеспечения.

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

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

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

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

Прерывания

широко используются в компьютерной многозадачности, особенно в вычислениях в реальном времени. Более того, эти системы, которые используют прерывания, называются «управляемыми прерываниями».

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

Что такое обработчик прерывания?

Обработчики прерываний, также известные как процедура обслуживания прерываний (ISR), представляют собой блок кода, который связан с определенным условием прерывания.

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

Прерывания

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

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

Существует два типа обработчиков прерываний: обработчик прерывания первого уровня (FLIH) и обработчик прерывания второго уровня (SLIH).

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

Обработчик прерывания первого уровня (FLIH):

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

Функциональность FLIH заключается в быстром обслуживании прерывания или в записи важной информации, специфичной для платформы (которая доступна только во время прерывания), а затем в планировании выполнения SLIH для дальнейшей (более медленной) обработки прерываний.

Чтобы уменьшить джиттер и, следовательно, возможность потери данных из замаскированных прерываний в таких операционных системах (например, в операционных системах реального времени), программисты пытаются сократить время выполнения FLIH, пытаясь перенести как можно больше функциональных возможностей на SLIH.

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

Обработчик прерывания второго уровня (SLIH):

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

SLIH

, в отличие от FLIH, можно планировать аналогично процессам и потокам.

Типы прерываний

Сигналы прерывания, как упомянуто выше, являются ответом на программные или аппаратные события в системе. Эти события классифицируются как программные прерывания или аппаратные прерывания.

Для любого процессора общее количество типов прерываний ограничено архитектурой.

Аппаратные прерывания:

Все устройства подключены к линии запроса прерывания (IRQ) или обнаружены устройствами, встроенными в логику процессора (то есть таймером ЦП), чтобы сообщить, что определенное устройство требует внимания со стороны операционной системы, и если операционная система отсутствует, затем обратите внимание на «голую» программу, работающую на ЦП.

Считается, что перемещение мыши использует аппаратные прерывания.

Строка запроса прерывания (IRQ): IRQ относится к аппаратному сигналу, отправляемому процессору, который временно останавливает запущенную программу и позволяет вместо этого запускать обработчик прерывания.

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

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

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

Маскировка:

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

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

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

Такие типы прерываний имеют чрезвычайно высокий приоритет и не могут быть проигнорированы ни при каких обстоятельствах.

Следовательно:

  • Маскируемое прерывание:
    • Аппаратные прерывания могут быть отложены, если одновременно произошло прерывание с высоким приоритетом.
  • Немаскируемое прерывание:
    • Аппаратные прерывания, которые не могут быть задержаны и поэтому требуют от процессора их немедленной обработки.

Ложные прерывания:

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

Состояние гонки: Состояние гонки относится к нежелательной ситуации, которая возникает, когда устройство или система пытается выполнить две или более операций одновременно, хотя эти операции должны выполняться в правильной последовательности для правильного выполнения.

Программные прерывания:

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

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

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

(Вы можете связать это при кодировании, блоках try и catch, вы указываете возможность ошибки (ошибок) и позволяете системе обработать решение, если эта ошибка произойдет.)

Периодическое прерывание:

Прерывания, происходящие с фиксированным интервалом на временной шкале.

Апериодическое прерывание:

Прерывания, которые невозможно предсказать.

Синхронное прерывание:

Прерывания, зависимые и синхронизированные с системными часами.

Асинхронное прерывание:

Прерывания, которые не зависят от системных часов и не совпадают по фазе с ними.

Обработка прерываний более чем одного устройства

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

Ниже приведены несколько различных методов, которые процессор использует для принятия решения о выборе:

Голосование:

При опросе первое устройство, с которым сталкивается линия запроса прерывания (IRQ), - это устройство, которое обслуживается первым. Поэтому для обслуживания устройства вызывается соответствующая процедура обслуживания прерывания (ISR). Этот механизм аналогичен принципу «первым пришел - первым обслужен». Хотя опрос прост в реализации, много времени тратится на опрос IRQ всех устройств.

векторных прерываний:

Векторные прерывания идентифицируют себя с помощью специального кода, который отправляется процессору по шине компьютера. Этот метод позволяет процессору идентифицировать устройство, создавшее прерывание.

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

Вложение прерываний:

В этом методе устройства ввода / вывода организованы в соответствии со структурой приоритета.Это означает, что запросы на прерывание от устройства с более высоким приоритетом распознаются, а запросы с более низким приоритетом - нет.

Приоритет последовательного подключения:

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

Способы запуска прерывания

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

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

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

Метод, запускаемый по уровню:

Прерывания, запускаемые по уровню, запрашиваются путем приостановки сигнала прерывания на его конкретном (высоком или низком) активном логическом уровне.

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

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

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

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

Метод запуска по краю:

Прерывание, инициируемое фронтом, относится к прерыванию, о котором сигнализирует переход уровня на линии прерывания, либо спадающим, либо нарастающим фронтом.

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

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

Импульс: Термин «импульс» в обработке сигналов определяется как быстрое, переходное изменение амплитуды одиночного сигнала от базового значения к более высокому или более низкому значению с последующим быстрым возвратом базового значения.

Операции и процессы прерывания

Основные операции прерываний включают:

  1. ЦП выдает команду чтения.
  2. Пока процессор обрабатывает, модуль ввода / вывода получает данные от периферийного устройства.
  3. Данные запроса ввода / вывода.
  4. ЦП запросит данные,
  5. Ввод / вывод передает данные.

Процесс, который происходит при обработке прерывания:

  1. Драйвер устройства инициирует запрос ввода / вывода от имени процесса.
  2. Запрошенный ввод / вывод инициируется, когда драйвер сигнализирует контроллеру ввода / вывода о правильном устройстве.
  3. Устройство сигнализирует контроллеру ввода / вывода, что готов к приему ввода, более того, вывод завершен или возникла ошибка.
  4. ЦП получит сигнал прерывания от IRL, таким образом, затем передаст управление подпрограмме обработчика прерывания.
  5. На этом этапе обработчик прерывания определит причину прерывания и выполнит любую необходимую обработку, после ее завершения он выполнит команду прерывания «возврат из».
  6. ЦП вернется в состояние выполнения до выделения прерывания.
  7. ЦП продолжает обработку, пока цикл не начнется снова.

Резюме и факты

Что такое прерывания?

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

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

Что такое обработчик прерывания:

Обработчики прерываний, также известные как процедура обслуживания прерываний (ISR), представляют собой блок кода, который связан с определенным условием прерывания.

Есть два типа обработчиков прерываний:

  1. Обработчик прерываний первого уровня (FLIH)
  2. Обработчик прерываний второго уровня (SLIH)

Типы прерываний

  • Строка запроса прерывания (IRQ): IRQ относится к аппаратному сигналу, отправляемому процессору, который временно останавливает выполняющуюся программу и позволяет обработчику прерывания работать вместо этого.
  • Сигналы прерывания - это реакция на программные или аппаратные события в системе.Эти события классифицируются как программные прерывания или аппаратные прерывания.
  • Для любого процессора общее количество типов прерываний ограничено архитектурой.
  • Аппаратные прерывания
  • Маскировка
    • Маскируемое прерывание
    • Немаскируемое прерывание
  • Паразитные прерывания
  • Программные прерывания
  • Периодическое прерывание
  • Апериодическое прерывание
  • 000 Обработка синхронного прерывания 75000
  • Обработка синхронного прерывания 75000 чем одно устройство:

    • Опрос
    • Векторных прерываний
    • Вложение прерываний
    • Приоритет последовательного подключения

    Методы запуска прерывания:

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

    Метод, запускаемый по уровню:

    Прерывания, запускаемые по уровню, запрашиваются путем приостановки сигнала прерывания на его конкретном (высоком или низком) активном логическом уровне.

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

    Метод запуска по краю:

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

    Основные операции прерываний включают:

    1. ЦП выдает команду чтения.
    2. Пока процессор обрабатывает, модуль ввода / вывода получает данные от периферийного устройства.
    3. Данные запроса ввода / вывода.
    4. ЦП запросит данные,
    5. Ввод / вывод передает данные.

    Артикул:

    1. https://static.lwn.net/images/pdf/LDD3/ch20.pdf
    2. https://web.archive.org/web/20160426144654/http://www.sltf.com/articles/pein /pein9505.htm
    3. http://www.tldp.org/LDP/lkmpg/2.6/html/x1256.html
    4. geeksforgeeks.org/interrupts/
    5. https://techterms.com/definition/jitter
    6. https://techterms.com/definition/interrupt
    7. http://inputoutput5822.weebly.com/interrupt-driven-io.html
    8. https: // www.garystringham.com/level-triggered-vs-edge-triggered-interrupts/
    9. https://en.wikipedia.org/wiki/Pulse_(signal_processing)
    10. https://www.geeksforgeeks.org/priority-interrupts- sw-polling-daisy-chaining /
    11. https://www.geeksforgeeks.org/interrupts/
    12. https://en.wikipedia.org/wiki/Interrupt_handler
    13. https://medium.com/@waliamrinal/ what-are-interrupts-in-computer-organization-e23a223b3f75 #: ~: text = In% 20computer% 20architecture% 2C% 20an% 20interrupt, event% 20that% 20needs% 20immediate% 20attention
    14. https: // en.wikipedia.org/wiki/Polling_(computer_science)
    .

    Прерывание - Что такое прерывание? Типы прерываний.

    • Перейти к основному содержанию
    • Перейти к основной боковой панели
    • Перейти к дополнительной боковой панели
    • Перейти к нижнему колонтитулу

    Компьютерные заметки

    Библиотека
      • Computer Fundamental
      • Computer Memory
      • Операционная система
      • Компьютерные сети
      • Программирование на C
      • Программирование на C ++
      • Программирование на Java
      • Программирование на C #
      • Учебное пособие по SQL
      • Учебное пособие по управлению графикой
      • Компьютерное руководство по управлению графикой
      • Style Sheet
      • JavaScript Tutorial
      • Html Tutorial
      • Wordpress Tutorial
      • Python Tutorial
      • PHP Tutorial
      • JSP Tutorial
      • Angular4 Tutorial
      • Angular4 Tutorial 14 Структуры данных
      • E Commerce Tutorial
      • Visual Basic
      • Structs2 Tutorial
      • Digital Electronics
      • Internet Terms
      • Servlet Tutorial
      • Вопросы по разработке программного обеспечения
      • Вопросы по разработке программного обеспечения
      • Поиск и устранение неисправностей
    Меню

    Заголовок справа

    .

    Определение прерывания

    Прерывание - это сигнал, отправляемый процессору, который прерывает текущий процесс. Он может быть сгенерирован аппаратным устройством или программным обеспечением.

    Аппаратное прерывание часто создается устройством ввода, таким как мышь или клавиатура. Например, если вы используете текстовый редактор и нажимаете клавишу, программа должна немедленно обработать ввод. При вводе «hello» создается пять запросов на прерывание, что позволяет программе отображать набранные вами буквы.Точно так же каждый раз, когда вы щелкаете кнопкой мыши или касаетесь сенсорного экрана, вы отправляете на устройство сигнал прерывания.

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

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

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

    Обновлено: 17 марта 2018 г.

    TechTerms - Компьютерный словарь технических терминов

    Эта страница содержит техническое определение прерывания. Он объясняет в компьютерной терминологии, что означает прерывание, и является одним из многих технических терминов в словаре TechTerms.

    Все определения на веб-сайте TechTerms составлены так, чтобы быть технически точными, но также простыми для понимания. Если вы найдете это определение прерывания полезным, вы можете сослаться на него, используя приведенные выше ссылки для цитирования.Если вы считаете, что термин следует обновить или добавить в словарь TechTerms, напишите в TechTerms!

    .Аппаратное обеспечение

    - Что такое прерывание?

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
    4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
    .

    Simple English Wikipedia, бесплатная энциклопедия

    Эта диаграмма показывает, что происходит при вызове прерывания.

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

    Аппаратный или программный вызов прерывания (известный как запрос прерывания , или IRQ) обрабатывается «обработчиком прерывания» или «подпрограммой обслуживания прерывания» (ISR) в процессоре. Он помещает то, что делает в данный момент, в стек, а затем следует определенным инструкциям, которые выполняют данную задачу от имени системы, которая не обязательно должна быть частью выполняемой программы.Как только это будет выполнено в соответствии с инструкциями, ISR затем заберет то, что она поместила в стек, и продолжит то, что делала до того, как произошло прерывание.

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

    1. Мэсси, Рассел (1 июня 2001 г.). «Введение в прерывания». Встроенный .
    .

    Смотрите также