Системные ресурсы
В определенном смысле все в РС является системным ресурсом - системная память, скорость процессора, емкость жесткого диска и др. Однако в системе есть несколько специальных ресурсов, которые разделяют использующие их различные устройства. Большей частью это не физические компоненты системы, хотя они реализованы аппаратными средствами. По существу, это логические компоненты системы, которые управляют ее работой; именно поэтому их называют системными ресурсами (system resources) РС.
Системные ресурсы имеют важное значение, потому что их разделяют различные устройства РС. К этим устройствам относятся не только материнская плата и другие основные компоненты РС, но устройства расширения, дополнительные карты и периферийные устройства. Ресурсы используются, главным образом, для взаимодействия и передач информации между этими устройствами. По историческим причинам объем системных ресурсов довольно ограничен и по мере добавления в РС новых периферийных устройств становится труднее найти достаточно ресурсов для удовлетворения всех требований. Такая ситуация может привести к конфликтам ресурсов (resource conflicts), которые являются наиболее распространенными проблемами при конфигурировании новых РС, а эти проблемы наиболее трудно диагностировать и устранять.
Далее рассмотрены все типы системных ресурсов РС и основные аппаратные устройства, которые управляют ими или доступом к ним. Для каждого ресурса приведены таблицы, показывающие распределение ресурсов в типичном РС, а также какие ресурсы обычно используют различные периферийные устройства. Отметим, что звуковая карта считается основным компонентом современного РС и она требует для работы значительных ресурсов. Обсуждаются также конфликты ресурсов и их устранение. Рассмотрена также технология Plug and Play, которая упрощает распределение ресурсов и автоматически устраняет конфликты ресурсов.
Примечание: Термин "системный ресурс" иногда применяется для областей
памяти, используемых операционной системой Windows. Однако это совершенно другое
понятие и мы этого касаться не будем.
Прерывания
Прерывания являются наиболее известными системными ресурсами и о них слышал каждый пользователь РС. Прерывание (interruption) представляет собой сообщение от одного компонента компьютера другому (обычно процессору), которое указывает ему остановить текущие действия и выполнить что-то другое. Запрос прерывания (Interrupt ReQuest - IRQ) - это название реального сигнала, который используется, когда периферийное устройство запрашивает прерывание процессора.
Прерывания играют ключевую роль в выполнении процессором ввода-вывода и
интерфейсах с каждым периферийным устройством компьютера - от клавиатуры и мыши
до жесткого диска и модема. При установке карты расширения в слот она
подключается к шине ввода-вывода и теперь может передавать и принимать данные.
Управление передачами данных осуществляется с помощью прерываний.
Причины применения прерываний
Процессор может одновременно выполнять только одну работу. Однако мы используем компьютеры таким образом, который требует, чтобы процессор, хотя бы виртуально, выполнял одновременно несколько работ. В операционной системе Windows 95 это проявляется наиболее отчетливо: можно редактировать документ и одновременно загружать информацию через модем, а также прослушивать компакт-диск. Процессор способен реализовать это, разделяя свое время между различными выполняемыми программами и различными устройствами, требующими его внимания. Нам только кажется, что процессор одновременно выполняет несколько работ благодаря той огромной скорости, с какой он может переключаться между задачами.
Большинству компонентов РС требуется посылать информацию процессору и принимает ее от процессора и они должны "уметь" привлечь внимание процессора, когда им требуется произвести передачу информации. Процессор должен организованно управлять передачами информации от различных компонентов РС. Имеются два основных способа, которыми может воспользоваться процессор:
- Опрос: Процессор может по очереди обращаться к каждому устройству, проверяя требуется ли им его внимание. Такой способ называется опросом, или полингом (polling). В некоторых компьютерах такой способ применяется на практике, но для процессора РС он не годится по двум основным причинам. Во-первых, на него бесполезно расходуется время процессора: непрерывный опрос всех устройств расходует много тактов, которые процессор мог бы использовать на выполнение чего-то полезного. Это тем более малоэффективно, потому что в большинстве случаев ответом будет "нет". Во-вторых, разные устройства требуют от процессора разной скорости опроса, например мышь требует внимания намного реже, чем жесткий диск, когда он активно передает данные.
- Прерывание: Второй способ для процессора управлять передачами информации состоит в том, чтобы разрешить устройствам самим запрашивать процессор, когда им требуется его внимание. Собственно, этот способ и лежит в основе прерываний. Когда устройство имеет данные для передачи, оно генерирует прерывание, которое сообщает "Мне требуется внимание". Процессор прекращает текущую работу и работает с устройством, которое запросило его внимание. Фактически процессор может одновременно обрабатывать несколько таких запросов, учитывая приоритеты каждого запроса и определяя, какое устройство обслуживать первым.
Может показаться, что постоянно прерываемый РС будет работать неэффективно. Это напоминает ситуацию, когда телефон в офисе звонит через пять минут и вы не можете делать ничего другого кроме ответов на звонки. Однако без звонка в телефоне вам пришлось бы брать трубку через каждые 30 секунд, проверяя, не пытается ли кто-то связаться с вами. Интересно сравнить, насколько быстрее процессор по сравнению с другими устройствами, которые передают ему информацию. Предположим, что ввод с клавиатуры производится с очень быстрой скоростью 120 слов в минуту. Если принять, что в среднем слово состоит и пяти букв, получается 600 символов в минуту. Оказывается, при вводе с такой скоростью процессор с рабочей частотой 500 МГц выполнит 50 млн команд между каждым ударом по клавише! Теперь становится понятнее, почему процессор практически будет простаивать, постоянно проверяя, готов ли символ на клавиатуре.
Наряду с рассматриваемыми здесь аппаратными прерываниями имеются и
программные прерывания
(software interrupts). Их используют различные программы в ответ на
разнообразные события, возникающие при выполнении операционной системы или
приложения. По существу оказывается, что процессор прерывает сам себя! Этим
объясняется, почему процессор способен выполнять много работ одновременно.
Программные прерывания позволяют также одной программе обращаться к другой, не
зная, где в памяти находится эта вторая программа.
Контроллеры прерываний
Прерывания устройств подаются в процессор с помощью схемы, называемой контроллером прерываний (interrupt controller). С первых РС контроллером прерываний служила микросхема 8259 фирмы Intel; полное название этой микросхемы - программируемый контроллер прерываний (Programmable Interrupt Controller - PIC). В современных материнских платах микросхема 8259 встроена в чипсет.
Контроллер прерываний имеет восемь входных линий, которые воспринимают
запросы от восьми устройств. Контроллер передает запрос в процессор, сообщая,
какое устройство выдало запрос (номер прерывания от 0 до 7, запущенного
устройством). В первых компьютерах PC и XT был один контроллер и они
поддерживали только прерывания от 0 до 7.
На рисунке приведена блок-схема контроллера прерываний. Восемь линий запросов прерываний вначале подаются в регистр маски прерываний (Interrupt Mask Register - IMR) для проверки того, замаскированы (запрещены) они или нет. Если прерывание замаскировано, оно больше не обрабатывается. Незамаскированные прерывания регистрируют свои запросы в регистре запроса прерывания (Interrupt Request Register - IRR).
Регистр запроса прерывания сохраняет все запрошенные IRQ до их полной обработки. При необходимости содержание этого регистра процессор может считать для анализа. Далее схема учета приоритетов (Priority Resolver) просто выбирает IRQ с высшим приоритетом. Высший приоритет имеют прерывания с меньшими номерами. Например, наивысший приоритет имеет IRQ0, затем идет IRQ1 и т.д.
После того, как контроллер определил подлежащий обработке запрос IRQ, он должен сообщить об этом процессору, чтобы он выполнил соответствующую процедуру обслуживания прерывания (Interrupr Service Routine - ISR). Для этого контроллер формирует активный сигнал на выходной линии INT. При восприятии этого сигнала процессор прекращает текущие операции и подтверждает получение запроса прерывания сигналом подтверждения прерывания INTA (INTerrupt Acknowledge).
При получении сигнала INTA от процессора соответствующий запрос IRQ сохраняется в регистре обслуживания (In Service Register - ISR) контроллера, который показывает текущий обслуживаемый запрос IRQ. Кроме того, сбрасывается бит IRQ в регистре запроса прерывания IRR, так как запрос с точки зрения контроллера обслужен.
Еще один сигнал INTA от процессора заставляет контроллер поместить на шину данных 8-битовый указатель, соответствующий номеру IRQ. Этот указатель с помощью таблицы векторов прерываний, которая находится в самом начале системной памяти RAM, преобразуется в начальный адрес процедуры обслуживания прерывания. Процессор осуществляет переход по этому адресу и выполняет команды процедуры.
После того, как процедура обслуживания прерывания выполнила необходимые
действия, в контроллер выдается сигнал конца прерывания (End Of Interrupt -
EOI). Этот сигнал используется для сброса бита в регистре обслуживания
прерывания ISR. После этого контроллер определяет следующее прерывание с высшим
приоритетом и повторяет аналогичный процесс. Если запросы прерываний
отсутствуют, контроллер ожидает появления следующего прерывания.
Начиная с компьютера IBM AT был введен второй контроллер для расширения системы; это совпало с расширением системной шины ISA с восьми до 16 битов. Чтобы обеспечить совместимость, разработчики не захотели изменять одну линию прерывания, идущую в процессор. Поэтому они каскадировали два контроллера прерываний.
Первый контроллер по-прежнему имеет восемь входов и один выход, поступающий в процессор. Второй аналогичный контроллер воспринимает восемь новых входов (удваивая число прерываний), а его выход подается на линию 2 первого контроллера. Если любой из входов второго контроллера становится активным, выход этого контроллера запускает прерывание #2 на первом контроллере, который затем сигнализирует процессору.
Так что же произошло с линией IRQ #2? Теперь эта линия используется для каскадирования второго контроллера, поэтому разработчики АТ изменили монтаж на печатной плате для направления всех устройств, которые использовали IRQ2, на IRQ9. В результате все старые устройства, которые использовали IRQ2, теперь используют IRQ9, и если настроить любое устройство на использование IRQ2 в АТ и последующих компьютерах, оно фактически будет использовать IRQ9.
Устройства, расчитанные на использование IRQ2 как первичной установки, в современных РС встречаются редко, так как IRQ2 не применяется уже более 10 лет. В большинстве случаев IRQ2 просто считается "не используемой", а IRQ9 считается обычной линией прерывания. Однако некоторые модемы все еще предлагают использование IRQ2 как способ обхода того факта, что COM3 и COM4 по умолчанию разделяют прерывания с COM1 и COM2. Это может потребоваться при наличии многих устройств, претендующих на IRQ с малыми номерами (что встречается довольно часто).
Примечание: Если выбрать IRQ2 для устройства, например модема,
фактически будет использоваться IRQ9. Любой программе, которая использует
устройство, необходимо указать, что она работает с IRQ9, а не с IRQ2. Кроме
того, сделав это, невозможно использовать "настоящую" IRQ9 ни для какого
устройства. Никогда нельзя пытаться использовать IRQ2, если в РС уже
используется IRQ9, и наоборот.
Линии IRQ и системная шина
Использующие прерывания устройства инициируют их сигналами на системной шине ISA или PCI. Большинство прерываний доступны на системной шине для использования устройствами, но некоторые из них уже заняты системой и для них линий на системной шине нет. Эти прерывания 0, 1, 2, 8 и 13 никогда недоступны картам расширения (помните, что на материнской плате IRQ2 подключена к IRQ9).
Первоначально шина ISA была 8-битовой и карты расширения имели только один разъем. Впоследствии шина была расширена до 16 битов и рядом с первым слотом был добавлен второй; все современные РС используют 16-битовые слоты.
Добавление дополнительного разъема совпало с введением второго контроллера прерываний и линии для новых IRQ были подключены ко второму слоту. Поэтому для использования этих IRQ (10, 11, 12, 14 и 15) карта должна иметь оба разъема. Хотя сейчас практически нет материнских плат только с 8-битовыми слотами, но есть много карт расширения, которые используют только один разъем ISA. Наиболее типичным примером служит внутренний модем. Такие карты могут использовать только IRQ с номерами 3, 4, 5, 6 и 7 (линия 6 почти всегда недоступна, так как ее использует контроллер гибкого диска). Они могут также косвенно использовать IRQ 9, если могут использовать IRQ2, так как линия 9 подключена к линии 2.
Примечание: Все сказанное применимо только к слотам шин ISA и VESA
Local Bus. Слоты шины PCI работают с прерываниями по-другому, используя свою
внутреннюю систему прерываний. Если карта шины PCI должна использовать обычную
линию IRQ, то BIOS и чипсет обычно "отображают" прерывание PCI на обычную
систему прерываний. Для этого обычно используется IRQ9 вместо IRQ12.
Приоритеты прерываний
PC обрабатывает прерывания устройств в соответствии с их уровнями приоритетов. Приоритет зависит от линий прерывания, которые устройства используют для сигнализации контроллеру прерываний. Другими словами, уровни приоритетов прямо связаны с номерами прерываний:
- В старых PC/XT приоритет прерывания имел вид 0, 1, 2, 3, 4, 5, 6, 7.
- В современном РС ситуация несколько сложнее. Напомним, что второй набор из восьми прерываний направляется через канал IRQ2 первого контроллера прерываний. Следовательно, первый контроллер считает любое из этих прерываний имеющим уровень приоритета его "IRQ2". В результате приоритеты принимают вид 0, 1, (8, 9, 10, 11, 12, 13, 14, 15), 3, 4, 5, 6, 7. Линии IRQ от 8 до 15 используются вместо IRQ2.
В любом случае уровень приоритета IRQ почти не влияет на производительность
РС, поэтому о них можно не заботиться. Однако помните, что линии IRQ с более
высоким приоритетом немного повышают производительность использующих их
устройств.
Немаскируемые прерывания
Все обычные прерывания с номерами называются еще маскируемыми (maskable) прерываниями. Процессор при необходимости может временно замаскировать (т.е. временно игнорировать) любое прерывание, чтобы закончить более важную работу. Однако в РС имеется также немаскируемое прерывание (Non-Maskable Interrupt - NMI), которое можно использовать для серьезных событий, требующих немедленного внимания процессора. Система не может игнорировать прерывание NMI, если оно специально не отключено.
Когда принимается сигнал NMI, процессор немедленно прекращает свои действия и
обрабатывает это прерывание. Конечно, при неправильном использовании это может
вызвать хаос. На практике сигнал NMI обычно применяется только для критических
ситуаций, например серьезных аппаратных ошибок. Чаще всего NMI применяется для
сигнализации об ошибке паритета в подсистеме памяти. Такую ошибку необходимо
обработать немедленно для предотвращения возможного искажения данных.
Прерывания нескольких устройств и конфликты
В общем, прерывания считаются ресурсами отдельных устройств. Из-за способа организации системной шины нельзя, чтобы несколько устройств использовали прерывание одновременно, так как это может запутать процессор и заставить его реагировать на неверное устройство в неверное время. Если попытаться использовать с одним IRQ два устройства, возникает конфликт IRQ, который представляет собой один из типов конфликтов ресурсов (resource conflicts).
Возможно разделять IRQ среди нескольких устройств, но только в ограниченных ситуациях. Если, например, в РС есть два устройства, которые используются редко и никогда одновременно, можно организовать разделение ими IRQ. Однако этот способ не рекомендуется, так как он менее удобен по сравнению с ситуацией, когда каждое устройство имеет свою линию прерывания.
Одной из частых проблем с разделением IRQ связана с использованием последовательных портов COM3 и COM4. По умолчанию порт COM3 использует то же прерывание, что и COM1 (IRQ4), а COM4 использует то же прерывание, что и COM2 (IRQ3). Если мышь подключена к COM1 и модем настроен на COM3 (такая настройка встречается очень часто), то представляете, что произойдет при выходе в Internet? Можно разделять порты COM с одним и тем же прерыванием, но одновременно использовать оба устройства нельзя; в общем, такая конфигурация не рекомендуется.
Чтобы избежать этой проблемы, многие модемы позволяют изменить используемую
ими IRQ на IRQ5 или IRQ2. Конфликты прерываний также возникают на линиях IRQ5,
IRQ7 и IRQ12.
Сводка IRQ и их типичных применений
В следующей таблице приведена сводная информация о линиях IRQ в типичном РС. Эту информацию можно использовать при конфигурировании системы и разрешения конфликтов IRQ:
IRQ |
Линии шины |
Приоритет |
Типичное применение |
Другие применения |
0 |
Нет |
1 |
Системный таймер |
Нет |
1 |
Нет |
2 |
Контроллер клавиатуры |
Нет |
2 |
Нет (перенаправлена) |
- |
Нет; каскад для IRQ 8-15. Заменена на IRQ 9 |
Модемы, старые видеокарты (EGA), COM3, COM4 |
3 |
8/16 бит |
11 |
COM2 |
COM4, модемы, звуковые карты, сетевые карты |
4 |
8/16 бит |
12 |
COM1 |
COM3, модемы, звуковые карты, сетевые карты |
5 |
8/16 бит |
13 |
Звуковая карта |
LPT2, LPT3, COM3, COM4, модемы, сетевые карты, контроллер жесткого диска в старых PC/XT |
6 |
8/16 бит |
14 |
Контроллер ГД |
Карты ленточных накопителей |
7 |
8/16 бит |
15 |
LPT1 |
LPT2, COM3, COM4, модемы, звуковые карты, сетевые карты |
8 |
Нет |
3 |
Часы реальн. времени |
Нет |
9 |
Только 16 бит |
4 |
Сетевые карты, звуковые карты, хост-адаптеры SCSI, устройства PCI, устройства с перенаправленной IRQ2 |
|
10 |
Только 16 бит |
5 |
Сетевые карты, звуковые карты, хост-адаптеры SCSI, вторичный канал IDE, устройства PCI |
|
11 |
Только 16 бит |
6 |
Сетевые карты, звуковые карты, хост-адаптеры SCSI, видеокарты VGA, устройства PCI |
|
12 |
Только 16 бит |
7 |
Мышь PS/2 |
Сетевые карты, звуковые карты, хост-адаптеры SCSI, видеокарты VGA, устройства PCI |
13 |
Нет |
8 |
Матем. сопроцессор |
Нет |
14 |
Только 16 бит |
9 |
Первичный канал IDE |
Хост-адаптеры SCSI |
15 |
Только 16 бит |
10 |
Вторичный канал IDE |
Сетевые карты, хост-адаптеры SCSI |
Каналы прямого доступа к памяти
Каналы прямого доступа к памяти (Direct Memory Access - DMA)
представляют собой системные тракты, используемые многими устройствами для
передачи данных прямо в память или из памяти. Работа DMA-каналов совсем не
похожа на работу системных ресурсов IRQ - этих каналов меньше и их используют
меньше устройств. Однако конфликты в DMA-каналах могут вызвать серьезные
проблемы и их трудно диагностировать. Сейчас DMA-каналы наиболее широко
применяются для накопителей на гибком диске, ленточных накопителей и звуковых
карт.
Функция и работа DMA-канала
Далее рассмотрены типы DMA-каналов и контроллер DMA, а также приведена сводка
различных DMA-каналов современных РС.
Почему DMA-каналы применяются для передачи данных
Напомним, что процессор считается "мозгом" РС, но его также можно считать и
"дирижером оркестра". В первых РС процессор управлял практически всем. В
дополнение к выполнению программ он также управлял и передачами данных в
периферийные устройства и из этих устройств. К сожалению, заставлять процессор
выполнять эти передачи оказалось неэффективным, так как при этом он не мог
делать больше ничего.
Разработка DMA-каналов позволила устройствам убрать "посредника", разрешив процессору выполнять другую работу, а устройствам самим производить передачи данных, что повышает производительность РС. Были разработаны специальные каналы и схемы управления ими, поэтому стало возможны производить передачи данных без участия процессора. Такие схемы обычно являются компонентами системного чипсета на материнской плате.
Отметим, что DMA-каналы имеются только на шинах ISA и VLB, а устройства на
шине PCI совсем не используют стандартные DMA-каналы.
Мастеринг шины
Стандартный DMA иногда называется "трехсторонним " (third party) DMA. Это подчеркивает тот факт, что передачу данных осуществляет системный контроллер DMA (двумя другими "сторонами" являются отправитель и получатель данных). Имеется также такой тип DMA, который называется "односторонним" (first party) DMA. Здесь выполняющее передачу данных периферийное устройство в процессе передачи само управляет системной шиной. Такой способ называется также мастерингом шины (bus mastering).
Мастеринг шины повышает производительность по сравнению с обычным DMA, так
как в современные устройства встроены более "интеллектуальные" и быстрые схемы
DMA, чем в старом стандартном контроллере ISA DMA. Разработаны новые режимы DMA,
например Ultra DMA (режим 3 или DMA-33), которые обеспечивают очень высокие
скорости передачи данных.
Ограничения стандартного DMA
Несмотря на то, что применение DMA обеспечивает значительное повышение производительности по сравнению с управлением передачами процессором, DMA неизбежно достигает точки, в которой его производительность становится ограничивающим фактором. DMA на шине ISA "застыл" на том же уровне производительности, что и 10 лет назад. Для старых жестких дисков 10 МБ DMA-канал вполне подходил, но для современных жестких дисков 20 МБ, передающих много мегабайтов в секунду, скорости DMA недостаточно.
В новых РС для управления дисками используется либо программный ввод-вывод
(Programmed Input/Output - PIO), либо мастеринг шины на шине PCI, а не
стандартный ISA DMA, который применяется для таких устройств, как звуковая
карта. Современный DMA не привлекает медленных контроллеров ISA DMA и
обеспечивает быстрым устройствам необходимую пропускную способность. Сейчас
многие из устройств, например карты SCSI, сетевые карты и видеокарты, которые
использовали DMA на шине ISA, применяют мастеринг шины на шине PCI.
Контроллеры DMA
В современных РС передачами данных в стандартных DMA-каналах управляет контроллер DMA, встроенный в системный чипсет. Старые компьютеры PC и XT имели один контроллер, который поддерживал четыре DMA-канала от 0 до 3.
Начиная с компьютера IBM AT, был добавлен второй контроллер DMA. Аналогично
тому, как второй контроллер прерываний был каскадирован с первым, первый
контроллер DMA был каскадирован со вторым. В результате появилось восемь
DMA-каналов от 0 до 7, но DMA 4 не используется. Перенаправления, аналогичного
IRQ2 и IRQ9, здесь нет, так как все первоначальные DMA-каналы (от 0 до 3)
продолжают использоваться прямо.
DMA-каналы и системная шина
Все DMA-каналы, за исключением канала 4, доступны устройствам на системной шине ISA. Канал 4 используется для каскадирования двух контроллеров DMA. Устройства на шине PCI не используют стандартных DMA-каналов.
Как и в случае с линиями IRQ, второй контроллер DMA был добавлен при
расширении шины ISA до 16 битов в компьютере АТ. Линии для доступа к новым
DMA-каналам были расположены на второй части слота АТ, которая использовалась
16-битовыми картами. Это означает, что DMA-каналы 5, 6 и 7 доступны только
16-битовым картам. К сожалению, даже сейчас многие устройства используют
8-битовые карты. Об этом можно узнать по их разъему.
Запрос DMA (DRQ) и подтверждение DMA (DACK)
Каждый DMA-канал представлен двумя сигналами: сигналом запроса DMA (DMA
reQuest - DRQ) и сигналом подтверждения DMA (DMA ACKnowledgment - DACK).
На картах некоторых устройств имеются отдельные перемычки для этих сигналов
вместо одной перемычки для DMA-канала. В этом случае необходимо установить
сигналы DRQ и DACK на один и тот же номер, так как в противном случае устройство
не будет работать.
DMA нескольких устройств и конфликты
Как и прерывания, DMA-каналы являются ресурсами отдельных устройств. Если два устройства попытаются одновременно использовать один и тот же DMA-канал, возникает множество проблем. Конфликты DMA-каналов очень трудно диагностировать.
Однако при определенных условиях можно разделять DMA-канал между несколькими устройствами. Если имеются два устройства, которые требуются редко и никогда одновременно, можно выделить им один DMA-канал. Однако этот прием не рекомендуется, так как здесь могут возникнуть такие проблемы, которых не бывает при выделении каждому устройству своего ресурса.
Большинство устройств "хотят" использовать DMA-каналы с номерами от 0 до 3 (первого контроллера DMA). DMA-каналы от 5 до 7 привлекаются реже, потому что они требуют 16-битовые карты. С учетом того, что DMA-канал 0 никогда недоступен, а канал DMA 2 занят контроллером гибкого диска, остается совсем немного вариантов.
Еще одним источником конфликтов DMA является параллельный порт ECP. Многие
пользователи не знают, что этот скоростной порт требует использования
DMA-канала. (Программа настройки BIOS обычно имеет параметр для выбора
DMA-канала там, где производится разрешение порта ECP.) По умолчанию для порта
принимается DMA 3, который также используется и другими устройствами.
Сводка DMA-каналов и их типичных применений
В следующей таблице приведена сводная информация о восьми DMA-каналах типичного РС. Эта информация полезна для конфигурирования РС и разрешения конфликтов DMA.
DMA |
Линии шины |
Типичное применение |
Другие применения |
0 |
Нет |
Регенерация памяти |
Нет |
1 |
8/16 бит |
Звуковая карта |
Хост-адаптеры SCSI, параллельный порт ECP, сетевые карты, речевые модемы |
2 |
8/16 бит |
Контроллер гибкого диска |
Карты ленточных накопителей |
3 |
8/16 бит |
Нет |
Параллельный порт ECP, хост-адаптеры SCSI, звуковая карта, сетевые карты, речевые модемы, контроллер жесткого диска в старых PC/XT |
4 |
Нет |
Нет; каскадирование для DMA 0-3 |
Нет |
5 |
Только 16 бит |
Звуковая карта |
Хост-адаптеры SCSI, сетевые карты |
6 |
Только 16 бит |
Нет |
Звуковые карты, сетевые карты |
7 |
Только 16 бит |
Нет |
Звуковые карты, сетевые карты |
Адреса ввода-вывода
Адреса ввода-вывода, обычно называемые адресами ввода-вывода (I/O
addresses), или сокращенно адресами ВВ, представляют собой ресурсы, используемые
почти каждым устройством РС. В общем, они довольно простые; они являются
запоминающими ячейками (регистрами), предназначенными для использования
различными устройствами с целью обмена данными между самими устройствами и
остальными компонентами РС. Отметим, что адреса ввода-вывода обычно даются в
16-ричной нотации.
Ввод-вывод с отображением на память
Можно считать адреса ВВ набором небольших двунаправленных "почтовых ящиков" в системной памяти. Рассмотрим для примера коммуникационный (СОМ) порт, к которому подключен модем. Когда модем принимает информацию, ему необходимо передать ее РС. Куда он должен помещать информацию, полученную из телефонной линии?
Ответ на этот вопрос состоит в том, чтобы выделить каждому устройству
небольшую область рабочей памяти. Такой прием называется вводом-выводом с
отображением на память
(memory-mapped I/O). Когда модем принимает байт данных, он посылает его через
порт СОМ в выделенное порту адресное пространство ввода-вывода. Когда процессор
готов обрабатывать принятые данные, он знает, где найти их. Когда впоследствии
процессору нужно отправить данные через модем, он вновь использует этот адрес
(или другой близкий адрес). Таким простым способом решается проблема обмена
данными между устройствами.
Ширина адресного пространства ввода-вывода
В отличие от линий IRQ и DMA-каналов, которые имеют постоянный размер и выделяются по одному на устройство, адреса ВВ оказываются переменными по размеру. Объясняется это тем, что некоторые устройства, например сетевые карты, должны передавать намного больше данных, чем другие, например клавиатура.
Размер адресного пространства ввода-вывода иногда определяется конструкцией карты и причинами совместимости со старыми устройствами. Многие устройства используют адресное пространство ввода-вывода в 4, 8 или 16 байтов; другие - всего один байт, а третьи - 32 байта и более. Широкое разнообразие адресов ВВ затрудняет определение и разрешение конфликтов ресурсов, так как часто адреса ВВ задаются только первым байтом адреса ВВ.
Например, пользователь может сказать "помести сетевую карту по адресу 360h",
что вроде бы не конфликтует с параллельным портом LPT1 по адресу 378h.
Фактически многие сетевые карты используют для ввода-вывода до 32 байтов; в
результате получается диапазон 360-37Fh, который полностью перекрывается с
параллельным портом (378-37Fh). Приведенная далее сводная карта адресов ВВ
поможет определить наиболее часто используемые адреса ВВ и разобраться в
потенциальных конфликтах.
Адреса ВВ нескольких устройств и конфликты
Адреса ВВ, как и другие системные ресурсы, обычно используются отдельными устройствами. Когда несколько устройств пытаются использовать один и тот же адрес, информация перепутывается и перезаписывается, вызывая трудно диагностируемые проблемы.
Однако имеется несколько необычных исключений, объясняемых историческими причинами (см. далее обсуждение отдельных адресов). Одна из проблем с адресами ВВ и конфликтами состоит в том, что нужно просто следить за ними. Адреса ВВ довольно запутаны, так как различные устройства используют адресные пространства разного размера.
Адреса ВВ страдают от той же проблемы, что и линии IRQ и DMA-каналы: многие конфликты возникают не потому, что не хватает адресов ВВ, а потому что они не распределяются и не разносятся организованным способом. Слишком много устройств пытаются использовать одни и те же адреса или имеют мало вариантов конфигурирования, позволяющих достаточно разнести адреса. Все это объясняется, в основном, историческими причинами.
Порт |
"Монохроматические" системы |
"Цветные" системы |
LPT1 |
3BC-3BFh |
378-37Fh |
LPT2 |
378-37Fh |
278-27Fh |
LPT3 |
278-27Fh |
-- |
Еще одно замечание касается параллельных портов. Адреса ВВ, используемые для
различных параллельных портов (LPT1, LPT2, LPT3) не универсальны. Первоначально
компания IBM определила различные значения по умолчанию для РС с
монохроматическими дисплеями и с цветными дисплеями. Сейчас все РС имеют цветные
дисплеи, но даже в некоторых новых РС для LPT1 по умолчанию принимается 3BCh. В
таблице слева приведены два способа распределения.
Численные адреса ВВ
Приведем наиболее важные адреса ВВ в типичном РС:
- 060h и 064h: Эти два адреса использует контроллер клавиатуры, который работает с клавиатурой и мышью PS/2.
- 130-14Fh и 140-15Fh: Эти адреса иногда предлагаются как опции для хост-адаптеров SCSI. Отметим, что эти опции частично перекрываются (140-14Fh).
- 220-22Fh: Это принимаемый по умолчанию адрес для многих звуковых карт. Он также служит опцией для некоторых хост-адаптеров SCSI (первые 16 байтов).
- 240-24Fh: Необязательный адрес для звуковых карт и сетевых карт (первые 16 байтов для карт NE2000).
- 260-26Fh и 270-27Fh: Необязательный адрес для звуковых карт и сетевых карт. NE2000-совместимые сетевые карты занимают 32 байта; при конфигурировании на этот адрес ВВ они будут конфликтовать с несколькими системными устройствами, а также с адресом ВВ для LPT2 или LPT3 в области 270-27Fh.
- 280-28Fh: Необязательный адрес для звуковых карт и сетевых карт (первые 16 байтов для карт NE2000).
- 300-30Fh: Принимаемые по умолчанию адреса ВВ для многих сетевых карт (карты NE2000 расширяют диапазон до 31Fh). Адреса 300-301h являются также опциями для порта MIDI во многих звуковых картах.
- 320-32Fh и 330-33Fh: Это очень занятая область на карте ввода-вывода. Адреса 330-331h принимаются по умолчанию для порта MIDI во многих звуковых картах. Адреса 320-33Fh являются опцией для некоторых NE2000-совместимых сетевых карт и будут конфликтовать с портом MIDI при этой установке. Некоторые хост-адаптеры SCSI также предлагают адреса 330-34Fh как опцию. Наконец, контроллер жесткого диска старого PC/XT также использует адреса 320-323h.
- 340-34Fh: Здесь перекрываются области для некоторых типов устройств, включая две опции для хост-адаптеров SCSI (330-34Fh и 340-35Fh), а также сетевых карт.
- 360-36Fh и 370-37Fh: Это еще одна область с напряженным "трафиком". Адреса 378-37Fh используются в большинстве систем для первого параллельного порта, а адреса 376-377h для ведомого накопителя вторичного контроллера IDE. Может возникнуть конфликт с NE2000-совместимой сетевой картой, установленной на адрес 360h.
- 3B0-3BBh и 3C0-3DFh: Используются видеоадаптерами VGA, которые занимают все области, ранее выделявшиеся для монохроматических карт (3B0-3BBh), адаптеров CGA (3D0-3DFh) и адаптеров EGA (3C0-3CFh).
- 3E8-3EFh: Здесь возникает потенциальный конфликт по адресам 3EE-3EFh, если используется третий последовательный порт COM3.
- 3F0-3F7h: Здесь возникает "стандартный" конфликт: контроллер гибкого диска и ведомый накопитель первичного контроллера IDE "разделяют" адреса 3F6-3F7h. Эти устройства присутствуют во многих РС. К счастью, это конфликт (который объясняется историческими причинами) хорошо известен и компенсируется, поэтому в типичном РС проблем не возникает.
Логические устройства
Некоторые устройства имеют и физический адрес, и логическое имя. Наиболее
известны из них последовательные порты (называемые COM1 - COM4) и параллельные
порты (LPT1 - LPT3). Фактически так же обозначаются и жесткие диски, например
A:, C: и др., хотя большинство пользователей этого не понимают. Логическое
именование упрощает обращение к устройствам, не зная их конкретных адресов. В
программе проще обратиться к порту COM по имени, чем по адресу.
Присваивание логических имен
Порт |
Адрес ВВ |
IRQ по умолчанию |
COM1 |
3F8-3FFh |
4 |
COM2 |
2F8-2FFh |
3 |
COM3 |
3E8-3EFh |
4 |
COM4 |
2E8-2EFh |
3 |
Имена логическим устройствам присваивает BIOS в процессе самоконтроля при включении питания. BIOS отыскивает устройства по адресам ВВ в предопределенном порядке и динамически присваивает им логические имена в численном порядке. В таблице слева приведены принимаемые по умолчанию присваивания для последовательных портов (COM-портов) по порядку.
Порт |
"Монохроматические" системы |
"Цветные" системы |
IRQ по умолчанию |
LPT1 |
3BC-3BFh |
378-37Fh |
7 |
LPT2 |
378-37Fh |
278-27Fh |
5 |
LPT3 |
278-27Fh |
-- |
5 |
Для параллельных портов ситуация несколько сложнее. Первоначально компания IBM
определила разные значения по умолчанию для РС с монохроматическими дисплеями и
цветными дисплеями. Конечно, уже давно выпускаются только "цветные" РС, но даже
в некоторых новых РС порт LPT1 имеет адрес 3BCh.
Проблемы с именами логических устройств
Большинство проблем с именами логических устройств возникают при добавлении или удалении устройств. Наиболее распространенная состоит в том, что программа не работает потому, что имя логического устройства, присвоенное физическому устройству, изменилось в результате добавления или удаления устройства.
Большинство программ обращаются к устройству по имени, например "LPT1".
Однако имена динамически присваивает BIOS во время загрузки, когда он проверяет
аппаратные средства РС. Если в РС был порт "LPT1" по адресу 378-37Fh и
пользователь добавил новый параллельный порт и определил для него адрес
3BC-3BFh, то теперь новый порт будет LPT1, а старый порт превратится в
LPT2. Это объясняется тем, что порты именуются динамически в предопределенном
порядке поиска и 3BC обнаруживается первым. В этом случае все программы, которые
ранее использовали для печати LPT1, теперь будут печатать на LPT2, и придется
либо переключить соединения устройств, либо изменить программы.
Адреса памяти и BIOS устройств
Адреса памяти обычно не считаются системными ресурсами, но их целесообразно рассмотреть. Некоторые устройства наряду с линиями IRQ, DMA-каналами и адресами ВВ требуют для себя некоторое пространство области верхней памяти (Upper Memory Area - UMA). Как и с другими ресурсами, могут возникнуть проблемы и конфликты при попытке перекрыть пространства двух таких устройств или использовать память для программ, когда она требуется адаптеру.
Обычно устройства используют память для своих BIOS, которые содержат код для управления устройством и вызываются прямыми вызовами или вызовами системного BIOS. Эти BIOS устройств "отображаются" в определенные места области верхней памяти и системный BIOS отыскивает их именно там и выполняет. Такие операции являются частью процесса загрузки системы.
В большинстве РС есть три стандартных BIOS, которые размещаются в одних и тех же местах:
- Системный BIOS: Основной системный BIOS находится в блоке памяти 64 КБ по адресам F0000h - FFFFFh.
- VGA видео-BIOS: Это BIOS, который управляет видеокартой. Обычно он занимает блок 32 КБ с адресами C0000h - C7FFFh.
- BIOS жесткого диска IDE: BIOS, который управляет жестким диском IDE, находится по адресам C8000h - CBFFFh.
Дополнительным устройством, которое использует для своего BIOS особое адресное пространство памяти, является хост-адаптер SCSI. По умолчанию принимаются адреса C8000 - CBFFFh, которые конфликтуют с имеющимся в системе накопителем IDE, но хост-адаптер можно конфигурировать на другие адреса, например D0000 - D7FFFh. Кроме того, сетевые карты, которые способны загружать РС через сеть, обычно также используют область памяти для загрузочного BIOS.
Предупреждение: Многие системы используют менеджер памяти типа EMM386,
чтобы программы могли работать с неиспользуемой памятью в области верхней памяти
ради экономии стандартной памяти (обычно программам доступны 640 КБ). Если в
системе работает менеджер памяти и добавляется устройство, которому для своего
BIOS требуется часть области верхней памяти, нужно ввести в менеджер памяти
параметр для указания менеджеру не использовать занятое устройством пространство
памяти.
Конфигурирование системы
Под конфигурированием системы (system configuration) понимается
процесс настройки аппаратных устройств и присваивания им ресурсов, чтобы они
работали без проблем. Правильно конфигурированная система позволяет избежать
раздражающих проблем конфликтов ресурсов и проще осуществлять модернизацию
системы в будущем. Неправильно конфигурированная система вызывает появление
странных ошибок и проблем, а ее модернизация превращается в мучение.
Знание конфигурации системы
Чтобы система работала без проблем, ее необходимо правильно конфигурировать. Для достижения этого нужно разобраться с ее конфигурацией. Довольно трудно узнать, какие устройства имеются в системе и какие ресурсы они используют. Чтобы помочь пользователям в этом, разработаны специальные программы, которые обычно называются диагностическими утилитами (diagnostic utilities). Некоторые из них встроены в операционную систему, а другие имеются в Internet.
Кроме того, определенную помощь в конфигурировании могут оказать таблицы
системных ресурсов, приведенные ранее в настоящем разделе (см. таблицы линий
IRQ, DMA-каналов и адресов ВВ).
Присваивание ресурсов устройствам
Для многих устройств присваивание ресурсов фиксировано и его изменить нельзя. К таким устройствам относится большинство системных устройств. Кроме того, рекомендуется не изменять параметры ресурсов для стандартных устройств, например жестких дисков IDE, если нет веских причин для такого изменения. Следующие устройства обычно имеют фиксированные параметры ресурсов, которые изменять нельзя: системные устройства, клавиатура, мышь PS/2, контроллер гибкого диска, первичный контроллер IDE и видеокарта. Ресурсы других устройств можно изменять.
Для установки или изменения параметров ресурсов устройства применяются следующие способы:
- Аппаратные параметры: Присваивание ресурсов на некоторых картах, особенно старых, производятся аппаратно - изменяются состояния перемычек на схемной плате устройства для указания используемого ресурса. Этот способ похож на конфигурирование большинства материнских плат. Основной недостаток этого способа очевиден - чтобы добраться до перемычек, нужно открыть корпус и вытащить карту. Однако к него имеется и достоинство - определенность: если перемычка выбирает IRQ 7, карта всегда будет использовать IRQ 7. Кроме того, всегда можно визуально проверить, какой ресурс использует карта.
- Программы конфигурирования: Многие новые карты конфигурируются с
помощью поставляемых с ними программ конфигурирования. Пользователь
запускает программу и выбирает используемые ресурсы, а программа записывает
информацию в специальную микросхему EEPROM. Этот способ похож на применение
флэш-BIOS, но в меньшем масштабе.
Устройства с программами конфигурирования намного удобнее устройств с аппаратными параметрами, так как допускают изменение ресурсов без открывания корпуса. Но у этого способа имеются и недостатки, объясняемые зависимостью от программы конфигурирования: при потере диска с программой необходимо приобретать новую копию программы; невозможно узнать параметры при выключенном питании и имеется небольшой риск искажения параметров карты в случае аварийного выключения питания при записи параметров в микросхему EEPROM. - Технология Plug and Play (PnP): Новые устройства, рассчитанные на
PnP-технологию, допускают автоматическое конфигурирование в РС, который
поддерживает PnP-технологию, и операционной системой, которая также
поддерживает эту технологию. PnP-технология явилась попыткой упростить
присваивание ресурсов устройствам и разрешения конфликтов. При правильной
работе PnP-технологии ресурсы динамически присваиваются и переприсваиваются,
так что пользователь совершенно не касается этого.
Кроме того, операционная система типа Windows 95 позволяет изменять параметры ресурсов устройств с помощью встроенного Device Manager, с помощью которого пользователь может заменить присвоенные ресурсы.
Совет: Рекомендуется всегда записать наиболее удобную конфигурацию
системы.
Проблемы изменения принимаемого по умолчанию присваивания ресурсов
Теоретически любое устройство должно работать с любыми параметрами ресурсов, которые оно поддерживает. К сожалению, на практике так бывает не всегда. Одна из частых причин состоит в том, что программы иногда делают такие предположения, которые делать нельзя. Одно из таких предположений заключается в том, что устройство использует принимаемые по умолчанию параметры ресурсов. Если пользователь изменил параметры, программа не будет работать. Такая ситуация больше характерна для старых программ.
Одной из самых неприятных проблемных областей является звуковая карта, а из программ наиболее часто вызывают проблемы игры. Игры требуют от РС наибольшей производительности и для этого игровые программы часто работают непосредственно с аппаратными средствами. Для этого применяются специальные драйверы и иногда игровые программы поддерживают только устройства с принимаемыми по умолчанию параметрами ресурсов. Поэтому рекомендуется оставить принимаемые по умолчанию параметры звуковой карты, а при необходимости изменять параметры других устройств.
Еще одна проблема изменения принимаемых по умолчанию параметров вызывается
недостаточным тестированием программ, которое должно выполняться с
разнообразными аппаратными средствами при различных параметрах. Программисты
часто не проводят полного тестирования в результате чего при необычных значениях
параметров появляются странные ошибки. Поэтому не рекомендуется изменять в РС
принимаемые по умолчанию ресурсы для "стандартных" устройств.
Сводка использования ресурсов устройствами
В следующей таблице показаны основные устройства типичного РС и используемые ими ресурсы. Ее можно использовать как справочник при добавлении нового устройства, а также для отладки. Конечно, приведенные сведения следует считать правилами, из которых всегда имеются исключения. Жирным шрифтом показано использование ресурсов по умолчанию в типичном РС, а обычным шрифтом показано необязательное распределение ресурсов и ресурсы, используемые нестандартными устройствами:
Тип устройства |
Устройство |
Линии IRQ |
DMA-каналы |
Адреса ВВ |
Система |
Зарезервировано системой |
0, 2, 8, 13 |
0, 4 |
000-0FFh (кроме 060h и 064h) и 100-12Fh и 20C-20Dh и 270-277h |
Устройства PCI |
9, 10, 11, 12 |
(зависит от устройства) |
||
Последовательные порты |
COM1 |
4 |
3F8-3FFh |
|
COM2 |
3 |
2F8-2FFh |
||
COM3 |
2/9, 4, 5, 7 |
3E8-3EFh |
||
COM4 |
2/9, 3, 5, 7 |
2E8-2EFh |
||
Параллельные порты |
LPT1 |
7 |
1, 3 (если ECP) |
378-37Fh, 3BC-3BFh |
LPT2 |
5, 7 |
1, 3 (если ECP) |
278-27Fh, 378-37Fh |
|
LPT3 |
5 |
1, 3 (если ECP) |
278-27Fh |
|
Устройства ввода |
Контроллер клавиатуры |
1 |
060h и 064h (разделяет с мышью PS/2) |
|
Мышь PS/2 |
12 |
060h и 064h (разделяет с клавиатурой) |
||
Порт джойстика |
200-207h |
|||
Запоминающие устройства |
Контроллер гибкого диска |
6 |
2 |
3F0-3F7h |
Первичный контроллер IDE |
14 |
1F0-1F7h и 3F6-3F7h |
||
Вторичный контроллер IDE |
15, 10 |
170-177h и 376-377h |
||
Третичный контроллер IDE |
11, 12 |
1E8-1EFh и 3EE-3EFh |
||
Четверичный контроллер IDE |
10, 11 |
168-16Fh и 36E-36Fh |
||
Хост-адаптер SCSI |
9, 10, 11, 12, 14, 15 |
1, 3, 5 |
130-14Fh, 140-15Fh, 220-23Fh, 330-34Fh, 340-35Fh |
|
Карта ленточного ускорителя |
3, 4, 5, 6, 7 |
1, 2, 3 |
360h, 370h, 3E0h, 3F0h |
|
Контроллер жесткого диска PC/XT |
5 |
3 |
320-327h |
|
Видео |
Видеокарта VGA |
11, 12 |
3B0-3BBh и 3C0-3DFh |
|
Видеокарта EGA |
2/9 |
3C0-3CFh |
||
Модемы |
Модем |
2/9, 3, 4, 5, 7 |
1, 3 (речевые модемы) |
(использует порт COM) |
Звуковые карты |
Звуковая карта |
3, 4, 5, 7, 9, 10, 11, 12 |
(1, 3) и |
(220-22Fh, 240-24Fh, 260-26Fh, 280-28Fh) и (300-301h, 330-331h) и 388-38Bh |
Сетевые устройства |
Сетевая карта не-NE2000 |
3, 4, 5, 7, 9, 10, 11, 12, 15 |
1, 3, 5, 6, 7 |
240-243h, 260-263h, 280-283h, 2A0-2A3h, 300-303h, 320-323h, 340-343h, 360-363h |
Сетевая карта NE2000 |
3, 4, 5, 7, 9, 10, 11, 12, 15 |
1, 3, 5, 6, 7 |
240-25Fh, 260-27Fh, 280-29Fh, 2A0-2BFh, 300-31Fh, 320-33Fh, 340-35Fh, 360-37Fh |
Конфликты ресурсов и их устранение
Как было показано ранее, одна из проблем, связанных с системными ресурсами,
заключается в конфигурировании устройств РС таким образом, чтобы они не "мешали"
друг другу. Когда несколько устройств пытаются использовать один и тот же
ресурс, возникает конфликт ресурсов
(resource conflict).
Природа конфликтов ресурсов
Конфликты ресурсов проявляются несколькими способами. Некоторые конфликты распознать довольно легко, а другие найти и исправить очень трудно, так как они проявляют себя косвенно, а также такими симптомами, которые, на первый взгляд, не имеют ничего общего с вызвавшим проблему устройством. Приведем некоторые способы проявления конфликтов:
- Зависание или блокировка системы, особенно при использовании периферийного устройства.
- Ошибки паритета памяти в системах, поддерживающих паритет.
- Шум или другие проблемы в звуковых картах.
- Неразборчивая печать ("мусор" на принтере.
- Указатель мыши отказывается перемещаться или движется хаотично.
- Сообщения об ошибках операционной системы Windows 95.
- Ошибки и зависания в приложения без очевидных причин.
Как видно, некоторые способы явно связаны с ресурсами, а другие нет. Например, зависание системы могут вызвать многие проблемы, не относящиеся к ресурсам. Если мышь работает до тех пор, пока не используется модем, можно разобраться в причине проблемы или, по крайней мере, определиться, с чего начать. В общем, если после добавления в РС нового устройства возникает конфликт ресурсов, то причиной почти наверняка является новое устройство.
Совет: Если приведенный список проблем напоминает список симптомов
компьютерных вирусов, схожесть вполне закономерна. Возможно, что РС,
показывающий проблему конфликта ресурсов, на самом деле страдает от вируса. При
появлении любой проблемы необходимо прежде всего проверить возможность наличия
вирусов.
Разделять или не разделять
Имеются ситуации, когда можно разделять ресурсы между несколькими устройствами, но обычно это не рекомендуется. Действительно, разделение опирается на то, что программа или пользователь "не делают" того, что создает конфликт, а соблюдать это условие иногда затруднительно. Это также создает запутанную ситуацию для других пользователей РС и затрудняет модернизацию компьютера. Более того, разделение ресурсов может вызвать странные проблемы, так как система выполняет такие операции с устройствами, о которых не знает пользователь. Например, многие мультизадачные системы типа Windows 95 могут обращаться к аппаратным средствам, даже когда пользователь прямо не запрашивает этого.
Но в некоторых случаях разделение ресурсов имеет смысл. Если, например, в РС
есть два устройства, которые редко используют последовательный порт, и
пользователю не хватает линий IRQ, остается присвоить обоим устройствам одну и
ту же линию IRQ, но после этого никогда не использовать оба устройства
одновременно. Однако все же этот прием не рекомендуется, особенно разделение
DMA-каналов, так как их конфликты очень трудно диагностировать.
Разрешение конфликтов ресурсов
Если в РС подозревается конфликт ресурсов, его необходимо устранить. Сделать это довольно легко, если знать, с чего начать, или очень трудно, если таких сведений нет. Разработаны общие этапы устранения конфликтов, которые вкратце сводятся к следующему:
- Определить ресурсы, используемые всеми устройствами в РС. В этом большую помощь может оказать сводная таблица использования ресурсов устройствами.
- Идентифицировать конфликтующие устройства.
- Изменить параметры ресурсов для одного или нескольких устройств так, чтобы они больше не конфликтовали.
Технология Plug and Play
Огромное разнообразие различных карт, которые можно добавить в РС для расширения их возможностей оказывается и привлекательным, и опасным. Приведенный материал по системным ресурсам показывает, что конфигурирование системы и конфликты ресурсов представляют опасность наличия в РС множества нестандартных устройств. Решение возникающих при этом проблем оказывается очень сложной и трудоемкой задачей. Фактически для многих пользователей эта задача оказывается наиболее неприятной при модернизации РС.
Для решения этой проблемы компания Microsoft и многие компании, выпускающие аппаратные средства, разработали спецификацию, или технологию, Plug and Play (или PnP). Цель заключалась в создании компьютера, в котором аппаратные и программные средства могли автоматически конфигурировать устройства и присваивать ресурсы, чтобы изменения и добавления устройств не влекли за собой перенастройки ресурсов вручную. Как показывает название технологии, нужно просто вставить (Plug) новое устройство и получить возможность сразу же использовать (Play) его без сложной настройки.
Разновидность Plug and Play появилась много лет назад при разработке шин EISA
и MCA. Однако ни одна из этих шин не получила широкого распространения. Интерес
к Plug and Play возник в 1995 г., когда появились операционная система Windows
95 и аппаратные средства, предназначенные для работы с этой системой.
Требования к Plug and Play
Автоматическое обнаружение и конфигурирование аппаратных и программных средств оказывается непростой задачей. Для решения ее требуются совместные усилия в нескольких аппаратных и программных областях. Чтобы все работало правильно, необходимы четыре "партнера", которые удовлетворяют требованиям Plug and Play:
- Системные аппаратные средства: Аппаратные средства системы, от чипсета до контроллеров системной шины, должны "уметь" работать с PnP-устройствами. Для современных систем на базе шины PCI это обеспечивается автоматически. Большинство таких систем поддерживают PnP и на своей шине ISA благодаря специальным схемам, которые объединяют обе шины для разделения информации о ресурсах. Старые РС с шинами ISA и VLB не поддерживают Plug and Play.
- Периферийное оборудование: Добавляемые в систему устройства должны быть PnP-совместимыми. Сейчас PnP поддерживается многими устройствами от модемов и сетевых карт до принтеров и даже мониторов. Такие устройства должны по запросу идентифицировать себя и воспринимать присваивания ресурсов от системы.
- Системный BIOS: Системный BIOS играет ключевую роль в обеспечении работы Plug and Play. Встроенные в BIOS процедуры собирают информацию об имеющихся в системе устройствах и определяют, какие ресурсы они должны использовать. BIOS также сообщает эту информацию операционной системе, которая использует ее для конфигурирования своих драйверов и других программ, чтобы устройства работали правильно.
- Операционная система: Наконец, и операционная система должна быть рассчитана на работу с BIOS (и косвенно с аппаратными средствами). Операционная система настраивает программы нижнего уровня, например драйверы устройств, которые требуются для использования устройства приложениями. Она также взаимодействует с пользователем, извещая его об изменениях в конфигурации и позволяя при необходимости внести изменения в параметры ресурсов. Сейчас полную поддержку PnP обеспечивает Windows 95/98/2000.
Работа Plug and Play
Большую часть работы в обеспечении функционирования Plug and Play выполняет системный BIOS в процессе загрузки. На определенном этапе процесса загрузки BIOS выполняет специальную процедуру для определения и конфигурирования PnP-устройств. Приведем вкратце те операции, которые BIOS выполняет при загрузке системы:
- Создать таблицу ресурсов доступных линий IRQ, DMA-каналов и адресов ввода-вывода, исключая ресурсы, зарезервированные для системных устройств.
- Отыскать и идентифицировать PnP- не-PnP-устройства на шинах PCI и ISA.
- Загрузить последнюю известную конфигурацию системы из области ESCD, которая хранится в энергонезависимой памяти.
- Сравнить текущую конфигурацию с последней известной конфигурацией. Если она не изменилась, продолжать процесс загрузки. Данная часть процесса загрузки заканчивается и продолжается обычная загрузка.
- Если конфигурация новая, начать реконфигурирование системы. Начать с таблицы ресурсов и удалить все ресурсы, используемые не-PnP-устройствами.
- Проверить параметры BIOS - не зарезервированы ли дополнительные системные ресурсы для не-PnP-устройств и удалить их из таблицы ресурсов.
- Присвоить ресурсы PnP-картам из тех ресурсов, которые остались в таблице ресурсов, и сообщить устройствам о новых присваиваниях.
- Обновить область ESCD, сохраняя в ней новую конфигурацию системы. Большинство BIOS выводят при этом сообщение "Updating ESCD ... Successful".
- Продолжить загрузку.
Расширенные данные системной конфигурации
Если бы BIOS присваивал ресурсы каждому PnP-устройству при каждой загрузке, сразу возникли бы две проблемы. Во-первых, пришлось бы расходовать время на то, что уже сделано раньше в предыдущей загрузке. Ведь большинство пользователей изменяют аппаратные средства РС довольно редко. Во-вторых, и это важнее, вполне возможно, что BIOS не всегда примет одно и то же решение при распределении ресурсов, и может оказаться, что распределение ресурсов изменилось даже в том случае, когда аппаратные средства не изменились.
Для решения этих проблем в РС введены расширенные данные системной конфигурации (Extended System Configuration Data - ESCD). Область ESCD представляет собой специальную часть CMOS-памяти BIOS, в которой хранятся настройки BIOS. Эта область памяти применяется для хранения информации о конфигурации аппаратных средств РС. Во время загрузки BIOS проверяет эту область памяти и, если после последней загрузки изменений не произошло, конфигурировать ничего не нужно и данный этап процесса загрузки можно пропустить.
ESCD также используется как коммуникационный канал между BIOS и операционной
системой. BIOS и операционная система считывают из ESCD текущее состояние
аппаратных средств и регистрируют изменения. Windows 95 считывает ESCD,
проверяя, не изменились ли аппаратные средства, и соответственно реагирует.
Windows 95 также разрешает пользователям вручную заменить присваивания ресурсов
Plug and Play с помощью Device Manager. Эта информация записывается в область
ESCD, поэтому BIOS знает об изменении при следующей загрузке и не пытается вновь
сменить присваивание.
PnP- и не-PnP-устройства
Устройства, которые не поддерживают PnP-технологию, все же можно использовать в PnP-системе, но при этом возникают специальные проблемы. Такие устройства называются "старьем" (legacy). Они значительно затрудняют присваивание ресурсов, так как BIOS не может конфигурировать их автоматически.
В общем, BIOS игнорирует не-PnP-устройства и избегает всех ресурсов, которые
используют эти устройства. Обычно проблем с применением не-PnP-устройств в
PnP-системе не возникает, но наличие слишком большого числа не-PnP-устройств
затрудняет работу Plug and Play из-за большого числа ресурсов, которых нельзя
"трогать".