Как отключить системные прерывания windows 10. что это такое? Прерывания и цикл команды

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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


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


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

,

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


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

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

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

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

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

Не закрывая окошко , откройте и штатный Диспетчер устройств и начинайте последовательно отключать/включать устройства, раз за разом проверяя, не снизились ли показатели загрузки в окошке утилиты и не снизился ли процент загрузки процесса «Системные прерывания» в Диспетчере задач.

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

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

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

www.thesycon.de/eng/latency_check.shtml

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

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

что это такое?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что за процесс Системные прерывания

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

Те самые "Системные прерывания". Значения в пределах нескольких десятых процента или 1-2% - норма.

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

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

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

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

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

  • Шаг №1 : перезагрузите компьютер. Смешно, но в большом количестве случаев это универсальное решение, способное решить миллионы неполадок в компьютере. После включения компьютера последите за сведениями в диспетчере задач и, если все нормально, тогда вы столкнулись с элементарным багом.
  • Шаг №2 : обновление Windows. Если перезагрузка не помогла, тогда отправляйтесь в центр обновлений Windows и проверьте наличие обновлений. Это важно сделать, так как через этот раздел система скачивает большое количество драйверов. Быть может, неправильно работающий драйвер приводит к повышенной нагрузке на процессор, поэтому Windows может скачать более новую версию драйвера (если она есть, конечно) и заменит ею старую. Если причина была в этом, процесс системные прерывания успокоится.
  • Шаг №3 : скачивание драйверов вручную. Обязательно проверьте драйвера, которые центр обновлений Windows не скачивает сам. Причина такая же, как и в предыдущем шаге.
  • Шаг №4 : диагностика устройств. Если вы дошли до этого пункта, а системные прерывания все еще заставляет ваш процессор кряхтеть, значит вам пора провести диагностику подключенных к компьютеру устройств. Диагностика частей ПК – дело, которое стоит десятка отдельных статей. Здесь мы расскажем только базовые сведения, которые вам надо знать.

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

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

Нажмите Win + X и выберите из открывшегося меню Диспетчер устройств . В нем вы увидите список подключенных девайсов. Придется отключить все, что только можно, за исключением некоторых важных компонентов. Для этого из категории выберите устройство, нажмите по нему правой кнопкой мыши и выберите Отключить устройство . Внимание : Не отключайте устройства из категории Компьютер, Процессоры или Системные устройства . Это приведет к аварийной перезагрузке компьютера. Сосредоточьтесь только на второстепенных девайсах, не способных нарушить стабильность системы. Это могут быть сетевые адаптеры, звуковые карты, Bluetooth-адаптеры и другие дополнения. Попробуйте переключиться на встроенное видеоядро процессора (если ваш процессор имеет такое, разумеется). Это позволит проверить, не скрылась ли проблема в вашей видеокарте. Если процессор не имеет встроенного ядра, придется найти резервную видеокарту или попробовать вашу карточку в другом компьютере. Имейте в виду, что отключение сетевой карты лишит вас интернета, отключение звуковой карты лишит звука, а выключенная видеокарта приведет к тому, что подключенные к ней мониторы не будут работать. В последнем случае надо переключить видеовыход на тот, что в материнской плате.

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

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

Могут быть и другие причины повышенной нагрузки процессом системные прерывания. Проблема в батареи устройства или блоке питания, а также помирающий жесткий диск. В случае с диском выполните проверку накопителя на ошибки, а также воспользуйтесь утилитами S.M.A.R.T. Если же подозреваете блок питания (к примеру, отключение других компонентов не решает проблему), тогда единственным способом проверить вашу гипотезу будет только замена БП.

Как отключить системные прерывания в Windows 10

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

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

Таблица 1.1. Классы прерываний

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

Такое положение дел проиллюстрировано на рис. 1.5,а. Программа пользователя содержит ряд вызовов процедуры записи WRITE, в промежутках между которыми расположены другие команды. В отрезках 1, 2 и 3 находятся последовательности команд кода, в которых не используется ввод-вывод. При вызове процедуры WRITE управление передается системной утилите ввода-вывода, которая выполняет соответствующие операции. Программа ввода-вывода состоит из трех частей.

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

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

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

Рис. 1.5. Ход выполнения программы без прерываний и с их использованием

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

Прерывания и цикл команды

Благодаря прерываниям во время выполнения операций ввода-вывода процессор может быть занят обработкой других команд. Рассмотрим ход процесса, показанный на рис. 1.5,6. Как и в предыдущем случае (без использования прерываний), вызвав процедуру WRITE, программа обращается к системе. При этом активизируется программа ввода-вывода, которая состоит из подготовительного кода и собственно команд ввода-вывода. После исполнения этих команд управление передается программе пользователя. Тем временем внешнее устройство занято приемом данных из памяти компьютера и их обработкой (например, если этим устройством является принтер, то под обработкой подразумевается распечатка). Ввод-вывод происходит одновременно с выполнением команд программы пользователя.

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

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


Рис. 1.6. Передача управления через прерывание

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

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

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


Рис. 1.7. Цикл команды с прерываниями

Чтобы оценить выигрыш в эффективности, рассмотрим временную диаграмму (рис. 1.8), иллюстрирующую ход процессов, показанных на рис. 1.5,а и б. В ситуации, показанной на рис. 1.5,6 и 1.8, предполагается, что для выполнения операций ввода-вывода требуется сравнительно короткое время, т.е. меньшее, чем время обработки команд, которые расположены в программе пользователя между операциями записи. Более типичным, особенно для таких медленных устройств, как принтер, является случай, когда операции ввода-вывода занимают намного больше времени, чем требуется для выполнения последовательности команд пользователя. Такая ситуация показана на рис. 1.5,в. В этом случае программа пользователя дойдет до следующего вызова WRITE еще до завершения операции ввода-вывода, порожденной предыдущим вызовом. В результате в этом месте программа пользователя будет приостановлена. После завершения обработки предыдущей операции ввода-вывода придет очередь обработать новое обращение к процедуре WRITE, и будут запущены новые операции ввода-вывода. На рис. 1.9 представлена диаграмма выполнения программы в среде без прерываний и с прерываниями для описанного случая. Как видно, в такой ситуации выигрыш в эффективности все равно существует, так как часть времени, в течение которого выполняются операции ввода-вывода, перекрывается выполнением команд пользователя.


Рис. 1.8. Временная диаграмма программы: быстрый ввод-вывод

Обработка прерываний

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

Устройство посылает процессору сигнал прерывания.

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


а) без прерываний
Рис. 1.9. Временная диаграмма программы: медленный ввод-вывод

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


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

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

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

  • Содержимое программного счетчика и слово состояния прерываемой программы уже хранятся в системном стеке. Однако это еще не вся информация, имеющая отношение к состоянию исполняемой программы. Например, нужно сохранить содержимое регистров процессора, так как эти регистры могут понадобиться обработчику прерываний. Поэтому необходимо сохранить всю информацию о состоянии программы. Обычно обработчик прерываний начинает свою работу с записи в стек содержимого всех регистров. Другая информация, которая должна быть сохранена, обсуждается в главе 3, "Описание процессов и управление ими". На рис. 1.11,а показан простой пример, в котором программа пользователя прерывается после выполнения команды из ячейки N. Содержимое всех регистров, а также адрес следующей команды (N+1), в сумме составляющие М слов, заносятся в стек. Указатель стека при этом обновляется, указывая на новую вершину стека. Обновляется и программный счетчик, указывая на начало программы обработки прерывания.
  • Теперь обработчик прерываний может начать свою работу. В процесс обработки прерывания входит проверка информации состояния, имеющая отношение к операциям ввода-вывода или другим событиям, вызвавшим прерывание. Сюда может также входить пересылка устройствам ввода-вывода дополнительных инструкций или уведомляющих сообщений.
  • После завершения обработки прерываний из стека извлекаются сохраненные ранее значения, которые вновь заносятся в регистры, возобновляя таким образом то состояние, в котором они пребывали до прерывания (см., например, рис. 1.11,6).
  • Последний этап - восстановление из стека слова состояния программы и содержимого программного счетчика. В результате следующей будет выполняться команда прерванной программы.

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

Множественные прерывания

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


Рис. 1.11. Изменение памяти и регистров при обработке прерывания

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


б) Вложенная обработка прерываний
Рис. 1.12. Передача управления при множественных прерываниях

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

При втором подходе учитывается приоритет прерывания, что позволяет приостановить обработку прерывания с более низким приоритетом в пользу прерывания с более высоким приоритетом (рис. 1.12,6). Как пример применения этого подхода рассмотрим систему с тремя устройствами ввода-вывода: принтером, диском и коммуникационной линией, которым присвоены приоритеты в возрастающей последовательности - 2, 4 и 5, соответственно. На рис. 1.13 показана очередность обработки прерываний, поступивших от этих устройств. Программа пользователя запускается в момент времени t = 0. В момент t = 10 происходит прерывание принтера. Информация о программе пользователя заносится в системный стек, и в действие вступает стандартная программа обслуживания прерывания (interrupt service routine - ISR). Во время ее работы в момент t = 15 происходит коммуникационное прерывание. Из-за того что его приоритет выше, чем приоритет прерывания принтера, процессор приступает к его обработке. ISR принтера прерывается, информация о ее состоянии заносится в стек, а управление передается коммуникационной ISR. Далее, пока эта программа выполняется, происходит прерывание диска (в момент времени t = 20). Так как его приоритет ниже, коммуникационная ISR продолжает свою работу, пока не закончит ее.


Рис. 1.13. Пример последовательности обработки множественных прерываний

После выполнения ISR коммуникационной линии (t = 25) восстанавливается предыдущее состояние процессора, т.е. работа с ISR принтера. Однако прежде чем успеет выполниться хоть одна команда этой программы, процессор приступает к обработке прерывания диска, которое обладает более высоким приоритетом, и управление передается ISR диска. Только после завершения этой программы (t = 35) возобновляет работу ISR принтера. И, наконец, после завершения обработки этого прерывания управление передается программе пользователя.



Понравилась статья? Поделиться с друзьями: