Армеи скии магазин военторг в воронеже.
Системными ресурсами называются коммуникационные каналы, адреса и сигналы, используемые узлами компьютера для обмена данными с помощью шин. Обычно под системными ресурсами подразумевают следующее:
В приведенном списке порядок размещения системных ресурсов соответствует уменьшению вероятности возникновения из-за них конфликтных ситуаций в компьютере. Наиболее распространенные проблемы связаны с ресурсами памяти; иногда разобраться в них и устранить причины их возникновения довольно сложно. Более подробно эти проблемы рассматриваются в главе 6. В настоящей главе речь пойдет о других видах перечисленных выше ресурсов.
Исторически сложилось так, что конфликты запросов к прерываниям IRQ всегда вызывали больше проблем, чем использование каналов прямого доступа к памяти (DMA). Это связано преимущественно с тем, что практически все платы расширения используют прерывания, а каналы DMA в основном требуют только платы, поддерживающие устаревший стандарт ISA. К тому же каналов прямого доступа к памяти более чем достаточно. Порты вводавывода также используются всеми устройствами, взаимодействующими с шинами. Однако количество портов ограничено только 64 Кбайт памяти; это значит, что в данном вопросе есть где разгуляться. Для обеспечения индивидуализации всех устройств нужно гарантировать, что каждый конкретный системный ресурс используется не более чем одной платой или устройством; в большинстве случаев системные ресурсы не могут использоваться совместно.
Все эти ресурсы необходимы для различных компонентов компьютера. Платы адаптеров используют ресурсы для взаимодействия со всей системой и для выполнения специфических функций. Каждой плате адаптера нужен свой набор ресурсов. Так, последовательным портам для работы необходимы каналы IRQ и уникальные адреса портов ввода-вывода, а аудиоустройствам требуется еще хотя бы один канал DMA. Большинством сетевых плат используются блок памяти емкостью 16 Кбайт, канал IRQ и адрес порта ввода-вывода.
По мере установки дополнительных плат в компьютере растет вероятность конфликтов, связанных с использованием ресурсов. Конфликт возникает при установке двух или более плат, каждой из которых требуется одна и та же линия IRQ или адрес порта ввода-вывода. Иногда в таких ситуациях на помощь приходит функция автоматического конфигурирования Plug and Play. Эта технология позволяет “развести” разные устройства на разные ресурсы. В некоторых старых платах расширения имеются перемычки или переключатели, установив которые, можно изменить предусмотренную по умолчанию конфигурацию потребления ресурсов. Некоторые карты адаптеров сопровождаются программным обеспечением, позволяющим сконфигурировать их настройки. Также настройка ресурсов отдельных устройств может быть выполнена в диспетчере устройств операционных систем семейства Windows 9x и более поздних версий. Даже если автоматическая настройка отработала неправильно, всегда можно применить логический подход и вручную назначить разные ресурсы конфликтующим устройствам. Главное здесь — знать правила игры.
К счастью, все современные системы с поддержкой ACPI и все новые шины типов PCI и PCI-Express редко сталкиваются с проблемами конфигурирования этих ресурсов. Практически всегда конфигурирование выполняется автоматически и без проблем.
Запросы на прерывания (IRQ), или аппаратные прерывания, используются различными устройствами для сообщения системной плате (процессору) о необходимости обработки определенного запроса. Эта процедура подобна поднятию руки студентом, чтобы привлечь внимание преподавателя.
Каналы прерываний представляют собой проводники на системной плате и соответствующие контакты в разъемах. После получения запроса IRQ компьютер приступает к выполнению специальной процедуры его обработки, первым шагом которой является сохранение в стеке содержимого регистров процессора. Затем происходит обращение к таблице векторов прерываний, в которой содержится список адресов памяти, соответствующих определенным номерам (каналам) прерываний. В зависимости от номера полученного прерывания запускается программа, относящаяся к данному каналу.
Указатели в таблице векторов определяют адреса памяти, по которым записаны программы-драйверы для обслуживания платы, пославшей запрос. Например, для сетевой платы вектор прерывания содержит адрес сетевых драйверов, предназначенных для работы с ней; для контроллера жесткого диска вектор указывает на программный код BIOS, обслуживающий контроллер.
После выполнения необходимых действий по обслуживанию устройства, пославшего запрос, процедура обработки прерывания восстанавливает содержимое регистров процессора (извлекая его из стека) и возвращает управление компьютером той программе, которая выполнялась до возникновения прерывания.
Благодаря прерываниям компьютер может своевременно реагировать на внешние события. Каждый раз, когда последовательный порт передает байт данных системе, генерируется соответствующее прерывание, благодаря которому система должна обработать байт данных до поступления следующих данных. Учтите, что в некоторых случаях устройство, подключаемое к порту (например, модем с микросхемой UART 16550 или выше), может содержать специальный буфер, позволяющий сохранять несколько символов перед генерированием прерывания.
Аппаратные прерывания имеют иерархию приоритетов: чем меньше номер прерывания, тем выше приоритет. Прерывания с более высоким приоритетом обладают преимуществом и могут, так сказать, прерывать обработку других прерываний. В результате в компьютере может возникнуть несколько “вложенных” прерываний.
При генерации большого количества прерываний стек может переполниться и компьютер “зависнет”. При этом будет выдано сообщение Internal stack overflow — system halted. Если при работе в DOS такая ошибка возникает слишком часто, попытайтесь исправить ситуацию, увеличив значения параметра Stacks (размер стека) в файле Config.sys.
По шине ISA запросы на прерывание передаются в виде перепадов логических уровней, причем для каждого из них предназначена отдельная линия, подведенная ко всем разъемам. Каждому номеру аппаратного прерывания соответствует свой проводник. Системная плата не может определить, в каком разъеме находится пославшая прерывание плата, поэтому возможно возникновение неопределенной ситуации в том случае, если несколько плат используют один канал. Чтобы этого не происходило, система настраивается так, чтобы каждое устройство (адаптер) использовало свою линию (канал) прерывания. Использование одной линии сразу несколькими разными устройствами в большинстве случаев недопустимо.
Компания IBM в свое время разработала методы совместного использования прерываний на шине ISA, однако лишь некоторые устройства придерживались необходимых правил, и данная методология так и не была воплощена в жизнь. В то же время в шине PCI изначально предусмотрена возможность совместного использования прерываний. На самом деле все устройства, подключенные к шине PCI, используют прерывание A — прерывание самой шины. Реальная проблема состоит в том, что в действительности в системе одновременно используются два набора прерываний: ISA и PCI. Чтобы карты PCI могли работать в системе, прерывания PCI отображаются на прерывания ISA, которые уже не допускают совместного использования. Таким образом, лучше назначить всем картам (даже с интерфейсом PCI) различные прерывания. Конфликты, возникающие между прерываниями PCI и ISA, были свойственны ранним поколениям компьютеров и вызывали множество проблем. И они не самоустранились после выхода в свет операционной системы Windows 95 и технологии Plug and Play.
Технология совместного использования прерываний для адаптеров PCI называется PCI IRQ Steering и поддерживается уже более десятилетия операционными системами, начиная с Windows 95 OSR 2.x, а также BIOS системной платы. Эта технология дает возможность Windows с поддержкой устройств Plug and Play динамически распределять стандартные прерывания для плат PCI (обычно использующих прерывание PCI INTA#), а также назначать одно прерывание нескольким платам PCI.
Внешние аппаратные прерывания часто называются маскируемыми , т.е. их можно отключить (“замаскировать”) на время, пока процессор выполняет другие важные операции. В целом же вопросы правильной обработки прерываний являются уделом системной BIOS и отдельных программ.
Поскольку в шине ISA совместное использование прерываний обычно не допускается, при установке новых плат может обнаружиться недостаток линий прерываний. Если две платы используют одну и ту же линию IRQ, то их нормальную работу нарушит возникший конфликт.
В компьютерах PC и XT с 8-разрядным процессором 8088 имеется восемь внешних аппаратных прерываний. Стандартное распределение этих прерываний, пронумерованных от 0 до 7, приведено в таблице.
В компьютере с 8разрядной шиной ISA имеющихся прерываний (ресурсов) часто катастрофически не хватает. Попытка установить в компьютер PC/XT несколько устройств, требующих обработки своих прерываний, может привести к тому, что разрешить проблему нехватки прерываний можно будет единственным способом — вынуть реже всего используемую плату адаптера.
В компьютере AT с процессором 286 количество линий внешних аппаратных прерываний увеличилось. Оно удвоилось благодаря использованию двух контроллеров прерываний, причем прерывания, генерируемые вторым контроллером, подаются на неиспользуемый вход IRQ 2 первого. Фактически существует 15 линий IRQ, так как прерывание IRQ 2 становится недоступным.
Поскольку все прерывания со второго контроллера передаются на первый через один вход IRQ 2, в иерархии приоритетов они размещаются между IRQ 1 и IRQ 3. Так, прерывание IRQ 15 получает больший приоритет, чем прерывание IRQ 3. На рисунке схематически показано подключение двух микросхем 8259, которые образуют каскад из двух контроллеров прерываний.
Для того чтобы не возникало проблем при генерации фактически несуществующего IRQ 2, конструкторы выделили дополнительное прерывание IRQ 9 для заполнения образовавшейся бреши. Это означает, что любая добавленная в компьютер плата, для которой характерно использование прерывания IRQ 2, на самом деле будет использовать IRQ 9. Это следует учитывать, чтобы случайно не назначить прерывание IRQ 9 другому устройству.
В таблице описаны стандартные функции прерываний 16-разрядной шины и 32-разрядных шин PCI/AGP; при этом приоритет прерываний указан от высшего к низшему. Подобная схема распределения прерываний использована также в шинах EISA и MCA.
Отметим, что линии прерываний 0, 1, 2, 8 и 13 не выведены на разъемы шины и не используются платами адаптеров. Линии прерываний 8, 10, 11, 12, 13, 14 и 15 подключены ко второму контроллеру. Они могут использоваться только адаптерами с 16-разрядным разъемом, поскольку подведены к контактам в “расширенных” частях слотов. Линия IRQ 9 подключена к разъему 8-разрядного слота вместо IRQ 2 и доступна 8-разрядным платам, которые используют ее как линию IRQ 2.
Примечание!
Несмотря на то что в 16-разрядной шине ISA вдвое больше линий прерываний, чем в 8-разрядной, их все же может не хватить, так как новые прерывания могут использоваться только 16-разрядными адаптерами.От дополнительной линии IRQ в компьютере с 16-разрядной шиной ISA мало толку, если платы адаптеров нельзя переключить на одну из свободных линий. Некоторые устройства жестко закреплены за конкретной линией IRQ. Если в компьютере уже установлена плата, которая использует данную линию, необходимо устранить этот конфликт перед установкой второго адаптера. Если ни один из них нельзя переключить на другую линию IRQ, скорее всего, вам не удастся их использовать в одной системе.
Шина PCI поддерживает аппаратные прерывания, которые используют установленные на шину устройства, чтобы привлечь к себе внимание. Это прерывания INTA#, INTB#, INTC# и INTD#. Прерывания INTx# чувствительны к уровню сигнала, что позволяет распределять их среди нескольких устройств PCI. Если одиночное устройство PCI использует только одно прерывание, то им должно быть INTA#, что является одним из основных правил спецификации шины PCI. Остальные дополнительные устройства должны использовать прерывания INTB#, INTC# и INTD#.
Для нормального функционирования шины PCI в персональном компьютере ее прерывания должны быть отображены на существующие прерывания ISA. Последние не могут использоваться совместно, поэтому в большинстве случаев для каждой платы PCI, использующей прерывание INTA# шины PCI, следует установить прерывания, отличные от неразделяемых прерываний шины ISA. Рассмотрим в качестве примера систему, имеющую четыре разъема PCI и четыре установленные платы PCI, каждая из которых использует прерывание INTA#. В таком случае каждой из плат должен быть назначен отдельный запрос прерывания ISA, например IRQ9, IRQ10, IRQ11 или IRQ5.
Установка одинаковых прерываний для шин ISA и PCI обязательно приведет к конфликту. Также будут конфликтовать и два устройства ISA с одинаковыми прерываниями. Что же делать, если доступных прерываний недостаточно для всех установленных в системе устройств? В большинстве новых систем допускается использование одного прерывания несколькими устройствами PCI. Все системные BIOS, удовлетворяющие спецификации Plug and Play, а также операционные системы, начиная с Windows 95b (OSR 2), поддерживают функцию управления прерываниями PCI IRQ Steering. В таких компьютерах всю заботу о прерываниях берет на себя система. Следует отметить, что оригинальная версия Windows 95, а также Windows 95a эту функцию не поддерживают.
Чаще всего BIOS назначает уникальные прерывания устройствам PCI. А если операционная система поддерживает управление прерываниями, то эту задачу она выполняет самостоятельно. Следует заметить, что даже если активизирована системная функция управления прерываниями, их начальное распределение берет на себя BIOS. Если свободных прерываний недостаточно, то операционная система распределяет одно прерывание между несколькими устройствами PCI. Если же операционная система не обладает функцией управления прерываниями, то она просто отключает устройство до появления свободного прерывания. Чтобы определить, поддерживается ли описанная функция в вашем компьютере, выполните ряд действий.
В Windows 2000/XP/Vista отключить распределение прерываний нельзя, поэтому вкладка Управление IRQ отсутствует в диалоговом окне свойств шины PCI.
Управление прерываниями осуществляется с помощью нескольких таблиц. Порядок просмотра таблиц изменить нельзя, однако, установив или сбросив флажок Получить таблицу IRQ, можно отменить поиск определенных таблиц, тем самым указав нужную для первоначального обнаружения таблицу. В поисках необходимых параметров Windows последовательно просматривает такие таблицы IRQ.
Для устранения проблем, связанных с распределением прерываний, попробуйте по одному отключать установленные по умолчанию флажки во вкладке Управление IRQ. В первую очередь, система использует таблицу IRQ из ACPI BIOS, затем — таблицу из PCIBIOS 2.1 в защищенном режиме и только после этого — таблицу из PCIBIOS 2.1 в реальном режиме. Система Windows 95 OSR2 и более поздние версии предлагают установку всего одного флажка — PCIBIOS 2.1, который по умолчанию снят. В Windows 98 проверка всех таблиц включена по умолчанию, за исключением PCIBIOS 2.1 в защищенном режиме.
Если возникли проблемы с некоторым устройством PCI, связанные с распределением прерываний в Windows 95, попробуйте установить флажок PCIBIOS 2.1 и перезагрузить компьютер. В Windows 98 попытайтесь снять флажок ACPI BIOS и перезагрузить компьютер. Если проблема не исчезнет, установите флажок PCI BIOS в защищенном режиме и снова перезагрузите систему. К выбору таблицы прерываний из PCIBIOS 2.1 в защищенном режиме следует прибегать только тогда, когда некоторое устройство PCI работает некорректно. Для доступа к этим настройкам в диспетчере устройств Windows 98 выполните следующие действия.
Если в диспетчере устройств функции управления прерываниями отключены, проверьте, установлен ли флажок Использовать управление IRQ. После установки этого флажка и перезагрузки компьютера вкладка управления IRQ может оставаться отключенной. Это значит, что таблица маршрутизации прерываний, которая должна передаваться в Windows системой BIOS, либо отсутствует, либо содержит ошибки. Проверьте в настройках BIOS, включена ли функция PCI IRQ Steering, и, если это не так, включите ее. Если доступ к управлению прерываниями так и не открылся, можете попробовать получить таблицу из защищенного режима PCIBIOS 2.1. В крайнем случае свяжитесь с производителем материнской платы и узнайте, поддерживает ли она функцию IRQ Steering.
В системах, которые поддерживают управление прерываниями, в узле Системные устройства диспетчера устройств должен отображаться элемент IRQ Holder for PCI Steering. Это указывает на то, что некоторые прерывания IRQ отображены на шину PCI и недоступны устройствам ISA, даже если ни одно из устройств ISA в настоящий момент не использует прерываний. Для просмотра прерываний, запрограммированных на режим PCI, выполните следующие действия.
Следует отметить, что с функцией управления и сопоставления прерываний могут быть связаны определенные недоразумения. Даже несмотря на возможность совместного использования прерываний PCI (INTx#) (данная функция активизирована по умолчанию) каждое устройство, которое использует общее прерывание PCI, все равно должно быть связано с уникальным прерыванием IRQ ISA, которое, в свою очередь, совместного использования не допускает. С одним прерыванием IRQ ISA можно сопоставить несколько устройств PCI только в следующих случаях:
Без активизации функции PCI IRQ Steering (управление IRQ PCI) возможности совместного использования прерываний PCI оказываются минимальными, так как все сопоставления прерываний IRQ PCI-ISA должны быть уникальными. Без функции PCI IRQ Steering очень легко столкнуться с недостатком прерываний ISA IRQ. Если функция PCI IRQ Steering поддерживается и активна, несколько устройств PCI могут использовать одно прерывание IRQ, что позволяет задействовать в системе намного больше устройств без риска оказаться в ситуации, когда доступных прерываний IRQ просто не хватит. Улучшенная поддержка функции PCI IRQ Steering — одна из основных причин перехода к Windows 98 или более новым версиям операционной системы, особенно в том случае, если в настоящий момент используется первая версия Windows 95 OSR1.
Еще одна проблема состоит в том, что в списке прерываний, представленном в диспетчере устройств Windows 9x, назначения PCI–ISA могут быть показаны в виде многочисленных записей для избранного прерывания ISA. Только одна запись будет указывать на устройство, действительно получившее то или иное прерывание (например, встроенный контроллер USB), в то время как другая запись для того же прерывания IRQ будет выглядеть, как надпись IRQ Holder for PCI Steering. Последняя запись, несмотря на декларируемое применение аналогичного прерывания, на самом деле не указывает на конфликт ресурсов; она определяет резервное прерывание, выделенное набором микросхем системной логики для возможного назначения какому-либо устройству. Это характерно для шины PCI с поддержкой технологии Plug and Play и для современных наборов микросхем системных плат. В Windows 2000/XP нескольким устройствам также может быть назначено одно прерывание, однако во избежание путаницы термин IRQ Holder не используется.
К шине PCI могут быть подключены внутренние устройства, даже если все разъемы PCI свободны. Например, в большинстве систем есть два контроллера IDE и контроллер USB, по сути представляющие собой устройства, подключенные к шине PCI. Обычно контроллеры PCI IDE получают прерывание ISA 14 (основной IDE) и 15 (вторичный IDE). Контроллеру USB присваивается прерывание 9, 10, 11 или 5. Многие современные системы оснащены двумя или более контроллерами USB (каждый из них обычно поддерживает два порта USB), но каждый контроллер USB должен быть сопоставлен с некоторым прерыванием ISA.
Шина PCI позволяет использовать два типа устройств — bus master (инициатор) и slave (получатель). Устройство bus master берет на себя управление шиной и инициирует передачу данных на устройство slave. Согласно спецификации PC 97, все устройства PCI могут выступать как в роли инициатора, так и в роли получателя. В настоящее время все разъемы PCI должны поддерживать платы инициаторов.
Шиной PCI управляет арбитр, который является частью контроллера шины PCI в наборе микросхем системной логики. Именно он управляет доступом всех устройств к шине. Перед “захватом” управления шиной устройство инициатора получает на это разрешение у арбитра. При предоставлении устройству разрешения арбитр определяет максимальное количество тактов. Арбитр равномерно распределяет доступ к шине между всеми устройствами. Это предотвращает монопольный захват шины всего одним из устройств, на ней установленных, а также ситуации взаимоблокировки, когда сразу несколько устройств пытаются получить доступ к ресурсам друг друга. Аналогичные процессы происходят в локальной сети, но сетевые ресурсы распределяются не между устройствами одной системы, а между компьютерами.