В приведенном списке порядок размещения системных ресурсов соответствует уменьшению вероятности возникновения из-за них конфликтных ситуаций в компьютере. Наиболее распространенные проблемы связаны с ресурсами памяти, иногда разобраться в них и устранить причины их возникновения довольно сложно. Более подробно эти проблемы рассматриваются в главе 6. В данной главе речь идет о других видах перечисленных выше ресурсов. В частности, возникает значительно больше конфликтов, связанных с ресурсами IRQ, чем с ресурсами DMA, поскольку прерывания запрашиваются чаще. Практически во всех платах используются каналы IRQ. Каналы DMA применяются реже, поэтому обычно их более чем достаточно. Порты ввода-вывода используются во всех подключенных к шине устройствах, но 64 Кбайт памяти, отведенной под порты, обычно хватает, чтобы избежать конфликтных ситуаций. Общим для всех видов ресурсов является то, что любая установленная в компьютере плата (или устройство) должна использовать уникальный системный ресурс, иначе отдельные компоненты компьютера не смогут разделить ресурсы между собой и произойдет конфликт.
Все эти ресурсы необходимы для различных компонентов компьютера. Платы адаптеров используют ресурсы для взаимодействия со всей системой и для выполнения специфических функций. Каждой плате адаптера нужен свой набор ресурсов. Так, последовательным портам для работы необходимы каналы IRQ и уникальные адреса портов ввода-вывода, для аудиоус-тройств требуется еще хотя бы один канал DMA. Большинством сетевых плат используется блок памяти емкостью 16 Кбайт, канал IRQ и адрес порта ввода-вывода.
По мере установки дополнительных плат в компьютере растет вероятность конфликтов, связанных с использованием ресурсов. Конфликт возникает при установке двух или более плат, каждой из которых требуется линия IRQ или адрес порта ввода-вывода. Для предотвращения конфликтов на большинстве плат устанавливаются перемычки или переключатели, с помощью которых можно изменить адрес порта ввода-вывода, номер IRQ и т.д. А в современных операционных системах Windows 9х, удовлетворяющих спецификации Plug and Play, установка правильных параметров осуществляется на этапе инсталляции оборудования. К счастью, найти выход из конфликтных ситуаций можно почти всегда, для этого нужно лишь знать правила игры.
Операционная система имеет объемную информацию, необходимую для загрузки и конфигурирования. Начиная с Windows 95, эта информация хранится в централизованной базе данных, называемой реестром (registry). Для модификации данных реестра имеются штатные утилиты (regedit или редактор реестра).
Данные реестра хранятся в виде иерархической древовидной структуры. Каждый узел или каталог называется разделом или ключом (keys), а каталоги верхнего уровня начинаются со строки HKEY. Раздел может содержать подраздел (subkey). Записи нижней части структуры называются параметрами (values), данные типизированы. Реестр содержит шесть корневых разделов:
HKEY_CURRENT_USER,
HKEY__USERS,
HKEY_CLASSES_ROOT,
HKEY_LOCAL_MACHINE,
HKEY_PERFORMANCE_DATA
и HKEY_CURRENT_CONFIG.
Наиболее важным является раздел HKEY_LOCAL_MACHINE. В нем содержится вся информация о локальной системе. Пространство имен реестра интегрировано с общим пространством имен ядра. Оно является третьим пространством имен в системе наряду с пространствами имен объектов и файлов. Для интеграции система поддерживает объект "раздел реестра" (key есть среди типов объектов). Реестр хранится на диске в виде набора файлов, называемых "кустами" или "ульями" (hives). Большинство из них находится в каталоге \Systemroot\System32\Config. Система ведет протоколы модификации кустов (при помощи так называемых регистрационных кустов, log hives), обеспечивая возможность восстановления постоянных кустов реестра. На диске поддерживаются копии критически важных кустов, их описатели можно просмотреть с помощью утилиты Handleex.exe с сайта www.sysinternals.com. Данные реестра доступны через Win32 API. Чтобы получить доступ к данным, открывают соответствующий раздел функцией RegOpenKeyEx. Для записи или удаления используют функции RegSetValue, RegDeleteValue.