На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » Железо
Разделы в "Железо":
Новое в разделе "Железо"НакопителиМат. платы и процессорыПолезняшкиНакопителиВидеоПринтерыЗвукСканерыЦифровые камеры

Как избежать зависаний компьютера или О прерываниях. Маленький ликбез

Редко какой компьютер, особенно домашний, проживет всю свою жизнь, ни разу не подвергшись или модернизации, или добавлению новых устройств. В большинстве случаев, естественно, при соблюдении самых элементарных правил, такая операция проходит безболезненно, не вызывая никаких особых проблем. Но примерно каждый десятый (или даже двадцатый - не суть важно) компьютер доводится до нерабочего состояния: начинает часто зависать, отказывается выполнять какие-либо функции, а то и просто вываливается в столь любимый всеми нами синий экран смерти. Как правило, наиболее вероятная причина таких неполадок кроется в конфликтах оборудования (нового и старого), не поделивших какие-либо аппаратные ресурсы. Хорошо, если Ваша квалификация позволяет решить возникшие проблемы, или поблизости есть кто-то, который может Вам помочь, а если ничего подобного нет? Однако не боги, как известно, горшки обжигают, посидим, подумаем - глядишь, и прорвемся, ведь не так уж все и сложно, хотя проблема совместимости самого различного оборудования, с момента своего возникновения в середине 80-х годов, до сих пор ни сколько не уменьшилась. Предлагаемая статья поможет пользователю разобраться с одним из видов аппаратных ресурсов, требующихся для оборудования, и чаще всего являющихся первопричиной всевозможных конфликтов - с аппаратными прерываниями (IRQ).

Аппаратные ресурсы системы

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

Гораздо реже используются каналы прямого доступа к памяти (DMA - Direct Memory Access). Данный тип взаимодействия предназначен для устройств, обменивающихся большими блоками данных с оперативной памятью, например, дисковые накопители или принтеры. Весь обмен идет в обход центрального процессора, который лишь инициирует операцию обмена и сразу же приступает к выполнению другой работы. Такой подход способен значительно увеличить производительность всей системы.

А третьим видом ресурсов являются аппаратные прерывания, которые являются базовым механизмом реакции системы на внешние события. Аппаратные прерывания, называемые обычно IRQ (Interrupt ReQuest) - это физические сигналы, с помощью которых контроллер устройства информирует процессор о необходимости обработать некоторый запрос. Условно схема обработки прерывания может выглядеть следующим образом:

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

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

Распределение прерываний

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

  • IRQ 0 - прерывание системного таймера. Генерируется 18,2 раза в секунду. Применяется в данном качестве с момента создания первого компьютера IBM PC (для другого использования этот номер недоступен);
  • IRQ 1 - прерывание клавиатуры. Генерируется контроллером клавиатуры при каждом нажатии на клавишу (для другого использования номер недоступен);
  • IRQ 2 в компьютерах класса XT, использовавших только 8 линий прерываний, был зарезервирован для дальнейшего расширения системы и, начиная с машин класса AT, стал использоваться для подключения второго контроллера. Сегодня IRQ 2 используется системой для совместимости со старым программным обеспечением, для другого использования номер недоступен;
  • IRQ 3 - прерывание асинхронного порта COM 2. Этим же прерыванием пользуются еще и устройства, работающие через порт COM 4. При желании их можно отключить, но присвоить IRQ 3 все равно больше никому не удастся;
  • IRQ 4 по аналогии с предыдущим, это прерывание используется устройствами, занимающими порты СОМ 1/COM 3;
  • IRQ 5 изначально предназначалось для использования вторым параллельным портом LPT2, но потом, когда от второго параллельного порта отказались, IRQ 5 перешло в разряд свободных. Позже активно использовалось большинством звуковых карт ISA. современные PCI-звуковые карты используют это прерывание исключительно для совместимости со старыми играми, подавляющее большинство которых поддерживают SB Pro. IRQ 5 можно использовать для других целей и привязать к слоту PCI;
  • IRQ 6, начиная с первых PC, используется флоппи-контроллером (для другого использования номер недоступен);
  • IRQ 7 - по умолчанию прерывание первого параллельного порта LPT 1. При отключенном порте (если принтер отсутствует или рассчитан на USB) может использоваться различными устройствами. IRQ 7 можно привязать к слоту PCI;
  • IRQ 8 - прерывание часов реального времени, впервые появившихся в IBM AT. Другое использование невозможно;
  • IRQ 9 и IRQ 10 свободны;
  • IRQ 11 обычно резервируется для шины USB, однако может применяться и в других целях (для этого следует отключить поддержку USB в BIOS);
  • IRQ 12 используется для мыши типа PS/2, однако может применяться в других целях (если мышь PS/2 отсутствует или отключена);
  • IRQ 13 изначально применялось арифметическим сопроцессором, и теперь оно зарезервировано для совместимости со старым программным обеспечением (для другого использования номер недоступен);
  • IRQ 14 и IRQ 15 применяются, соответственно, первичным и вторичным IDE-контроллерами.

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


Или, если Вы все еще работаете с Windows 9x, то в панели управления есть иконка Система, щелкните на ней - и выбирайте закладку "Устройства". В свойствах устройства "Компьютер" можно найти перечень всех устройств с указанием их IRQ. В Windows 2000/ХР у нас нет непосредственного доступа к управлению прерываниями, поэтому для просмотра списка IRQ нужно воспользоваться стандартной информационной утилитой (Панель управления/Администрирование/Управление компьютером/Сведения о системе/Ресурсы аппаратуры). Ну и, наконец, никто не отменял использование утилит, тестирующих аппаратные и программные возможности компьютера.


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

Конфликты устройств

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

Как Вы знаете, персональные компьютеры начались с IBM PC ХТ. Его архитектура предусматривала всего восемь линий аппаратных прерываний, которыми управлял специальный контроллер. Каждой из них назначался свой уникальный номер, который определял приоритет прерывания и адрес его обработчика (так называемый вектор прерывания). Следующий вариант архитектуры, IBM PC AT, дополнил существующие линии еще восемью, для управления которыми использовался второй контроллер, подключаемый к одной из линий прерывания первого контроллера. К сожалению, на этом данная архитектура остановилась в своем развитии, поэтому все современные компьютеры, несмотря на значительно возросшее число используемых в них дополнительных устройств, по-прежнему имеют только шестнадцать линий прерываний, одно из которых резервируется для эмуляции второго контроллера.

Изначально у компьютера IBM PC AT была только одна шина, по которой устройства могли общаться с процессором и памятью - ISA. Большинство линий прерываний были закреплены за стандартными ISA-устройствами, поэтому, когда появилась новая универсальная шина PCI, выяснилось, что на ее долю осталось всего четыре свободные прерывания, обозначаемые как INT A, INT B, INT C, INT D, поэтому всего только четыре PCI устройства могут получить в системе независимые прерывания. Но при этом необходимо учитывать, что на особенном положении находится контроллер IDE, который не входит в число тех четырех устройств только потому, что, хотя по способу передачи данных он и является PCI-устойством, но за ним жестко закреплены свои прерывания IRQ 14 и IRQ 15, как для старых устройств ISA. Для шины AGP, которая является разновидностью шины PCI, "пожертвован" INT A, а шина USB, как один из системных компонентов, подключается к PCI, используя INT D, что уменьшает число "честных" PCI устройств всего до двух. Не следует забывать и о подсистеме управления питанием Power Management/System Management, которая так же требует своего прерывания. Таким образом, в реальной жизни, при наличии нескольких устройства PCI, использующих прерывания, невозможно обеспечить им уникальные аппаратные IRQ, и в таких случаях используются аппаратно-программный способ, основанный на базе технологии Plug & Play, что теоретически позволяет избежать возникновения конфликтов. Хотя в реальной жизни может случиться все, что угодно, да и оставшиеся до сих пор устройства ISA не умеют делиться линиями прерываний, потому являются основными провокаторами конфликтов. Таким образом, задача устранения конфликтов сводится к правильному распределению номеров прерываний в случае возникновения проблем с устройствами ISA или "глючными" драйверами.

В системе номера IRQ распределяются между физическими линиями дважды. Первый раз это делает системный BIOS при начальной загрузке системы. Каждому Plug & Play-устройству (а к ним относятся все PCI, современные ISA и все интегрированные на системной плате устройства) назначается один номер из числа доступных. Если номеров не хватает, несколько линий получают один общий. Для устройств PCI это не страшно - при наличии нормальных драйверов и поддержки со стороны операционной системы все должно нормально работать. А вот если один номер получают несколько ISA-устройств или не менее "гремучая" смесь из PCI- и ISA-устройств, то конфликт попросту неизбежен, и тогда придется вмешиваться в процесс автоматического распределения прерываний. В этом случае необходимо отключить все неиспользуемые ISA-устройства (в системах без слотов ISA они, тем не менее, присутствуют: это порты COM1, COM2 и дисковод). Также можно отключить режимы EPP и ECP порта LPT, освободив при этом прерывание IRQ7. Все операции по изменению прерываний в BIOS Setup осуществляются в разделе "PCI/PNP Configuration". Есть два способа повлиять на распределения номеров IRQ: заблокировать конкретный номер и напрямую назначить номер линии. Первый способ доступен для всех BIOS, корректируются пункты меню "IRQ x used by:" (в новых BIOS скрывается в подменю "IRQ Resources"). Тем прерываниям, которые должны быть назначены исключительно ISA-устройствам, нужно поставить "Legacy ISA". Тем самым при раздаче номеров для PCI-устройств данные прерывания будут пропущены. Поступать так следует в том случае, если какое-либо ISA-устройство упорно становится на одно прерывание с PCI-устройством, из-за чего оба они не работают. В таком случае необходимо найти номер этого IRQ и заблокировать его. PCI-устройство переходит на новый номер IRQ, а ISA-устройство остается "при своих". Второй способ управления номерами IRQ - прямое назначение, хотя и несколько сложнее первого, но гораздо более эффективный. Очень прискорбно, что далеко не все современные системные платы позволяют осуществлять эту операцию. В том же подменю BIOS Setup могут быть пункты вида "Slot X use IRQ" (другие названия: "PIRQx use IRQ", "PCI Slot x priority", "INT Pin x IRQ"). Эта опция позволяет устанавливать прерывания индивидуально каждому устройству на PCI и AGP шине. При этом необходимо соблюдать следующие правила:

  • Каждый PCI слот может активизировать до четырёх прерываний - INT A, INT B, INT C и INT D;
  • AGP слот может активизировать два прерывания - INT A и INT B;
  • Нормально когда каждый слот назначен как INT A. Остальные прерывания зарезервированы, если PCI/AGP устройство потребует больше, чем одно прерывание или если запрашиваемое прерывание занято;
  • AGP слот и PCI слот 1 распределяют одинаковые прерывания;
  • PCI слоты 4 и 5 так же распределяют одинаковые прерывания;
  • USB использует PIRQ_4.

Ниже приведена таблица, показывающая связь между PIRQ (Programmable Interrupt Request - программируемый запрос прерывания) и INT (Interrupt - прерывание):

Сигнал
AGP Slot
PCI Slot 1
PCI Slot 2
PCI Slot 3
PCI Slot 4
PCI Slot 5
PIRQ_0
INT A
INT D
INT C
INT B
PIRQ_1
INT B
INT A
INT D
INT C
PIRQ_2
INT C
INT B
INT A
INT D
PIRQ_3
INT D
INT C
INT B
INT A

Обычно следует оставить опцию в положении AUTO. Но, если возникла необходимость установить индивидуальное IRQ устройству на AGP или PCI шине, прежде всего, необходимо определить, в каком слоте установлено устройство. Потом, сверившись с таблицей, можно установить основной PIRQ. Например, если сетевая карта установлена в слот 3, то основной PIRQ будет PIRQ_2, потому как все слоты назначаются, по возможности, на INT A. После этого выбирается желаемое IRQ, присваивая ему соответствующее значение PIRQ. Только необходимо помнить, что BIOS будет пытаться назначить PIRQ в INT A для каждого слота. Так что, для AGP и PCI 1 слотов основной PIRQ это PIRQ_0, тогда как для PCI слота 2 основной PIRQ это PIRQ_1 и так далее. Второй раз номера прерываний распределяются операционной системой, хотя Windows 9х начинает вмешиваться в произведенные BIOS-ом действия только в крайних случаях. В Windows 98 управление системой распределения IRQ осуществляется с помощью стандартного менеджера устройств. В списке системных устройств нужно найти шину PCI.


В ее свойствах есть особая закладка. Если все настроено правильно, там будет упомянут минипорт ("успешно загружен"), а управление шиной PCI (Steering) будет включено. Таким образом, Windows'98 имеет средства для управления распределением номеров прерываний между физическими линиями. Но поскольку и BIOS чаще всего с этим хорошо справляется, этот механизм не задействуется. Но иногда он просто необходим. При использовании устаревших ISA-устройств, не поддерживающих технологию Plug & Play, BIOS может его и не заметить, отдав занятое им прерывание PCI-устройству - опять конфликт. Для его разрешения необходимо нужное прерывание зарезервировать в диспетчере устройств Windows'98.

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

А вот о Windows 2000 (а равно и ХР) - разговор отдельный. Если у Вас достаточно современный компьютер, то он наверняка поддерживает интерфейс конфигурирования ACPI. Windows 2000 в таком случае вообще проигнорирует действия BIOS и "повесит" все PCI-устройства на одно логическое прерывание. В общем случае это будет отлично работать (когда нет устройств ISA), но иногда могут возникнуть проблемы. Чтобы получить возможность изменять номера прерываний, нужно либо поменять HAL-ядро, либо переустановить Windows 2000 с отключенным в BIOS ACPI. Замена ядра производится так: в диспетчере устройств выбирается "Компьютер/Компьютер с ACPI", после этого необходимо изменить драйвер на "Стандартный компьютер" и перезагрузиться. Если это не поможет, придется переустановить Windows 2000 заново.

Заключительные советы

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

Виктор Куц
4User.ru

Спонсор раздела

Лучшие статьи раздела читайте в еженедельном сетевом журнале
"I2R Computer"
Подпишитесь на рассылку
"Железо. И2Р"
Подписка на Subscribe.Ru
Другие разделы
Новое в разделе
Мат. платы и процессоры
Полезняшки
Накопители
Видео
Принтеры
Звук
Сканеры
Цифровые камеры
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100