Системными ресурсами называются коммуникационные каналы, адреса и сигналы, используемые узлами компьютера для обмена данными с помощью шин. Обычно под системными ресурсами подразумевают:
* каналы запросов прерываний (IRQ);
* каналы прямого доступа к памяти (DMA);
* адреса портов ввода-вывода.
* адреса памяти;
Все эти ресурсы необходимы для различных компонентов компьютера. Платы адаптеров используют ресурсы для взаимодействия со всей системой и для выполнения своих специфических функций. Для каждой платы адаптера нужен свой набор ресурсов. Так, последовательным портам для работы необходим канал IRQ и уникальные адреса портов ввода-вывода, для аудиоустройств требуется еще хотя бы один канал DMA. Большинство сетевых плат использует блок памяти емкостью 16 Кбайт, канал IRQ и адрес порта ввода-вывода.
По мере установки дополнительных плат в компьютере растет вероятность конфликтов, связанных с использованием ресурсов. Конфликт возникает при установке двух или более плат, каждой из которых требуется линия IRQ или адрес порта ввода-вывода. Для предотвращения конфликтов на большинстве плат устанавливаются перемычки или переключатели, с помощью которых можно изменить адрес порта ввода-вывода, номер IRQ и т.д. А в современных операционных системах Windows9х, удовлетворяющих спецификации Plug and Play, установка правильных параметров осуществляется на этапе инсталляции оборудования. К счастью, найти выход из конфликтных ситуаций можно почти всегда, для этого нужно лишь знать правила игры.
Каналы запросов прерывания (IRQ, Interrupt Request), или аппаратные прерывания, используются различными устройствами для сообщения системной плате (процессору) о том, что должен быть обработан определенный запрос. Каналы прерываний представляют собой проводники на системной плате и соответствующие контакты в разъемах. После получения IRQ компьютер приступает к выполнению специальной процедуры его обработки, первым шагом которой является сохранение в стеке содержимого регистров процессора. Затем происходит обращение к таблице векторов прерываний, в которой содержится список адресов памяти, соответствующих определенным номерам (каналам) прерываний. В зависимости от номера полученного прерывания запускается программа, относящаяся к данному каналу. Указатели в таблице векторов определяют адреса памяти, по которым записаны программы-драйверы для обслуживания устройства, пославшей запрос. Например, для сетевой платы вектор прерывания содержит адрес сетевых драйверов, предназначенных для работы с ней; для контроллера жесткого диска вектор указывает на программный код BIOS, обслуживающий контроллер.
После выполнения необходимых действий по обслуживанию устройства, пославшего запрос, процедура обработки прерывания восстанавливает содержимое регистров процессора (извлекая его из стека) и возвращает управление компьютером той программе, которая выполнялась до возникновения прерывания.
Благодаря прерываниям компьютер может своевременно реагировать на внешние события. Разумеется, такие события, как нажатия на клавиши клавиатуры, передвижения мыши, отсчеты таймера должны обрабатываться независимо от того, какая программа выполняется в данный момент. Прерывания как раз и служат для того, чтобы отвлечь процессор от той программы, которая в данный момент выполняется, и заставить процессор выполнить необходимую обработку возникшего события.
Аппаратные прерывания имеют иерархию приоритетов: чем меньше номер прерывания, тем выше приоритет. Прерывания с более высоким приоритетом имеют преимущество перед прерываниями с более низкими приоритетами и могут "прерывать прерывания", В результате в компьютере может возникнуть несколько "вложенных" прерываний.
По шине ISA запросы на прерывание передаются в виде перепадов логических уровней, причем для каждого из них предназначена отдельная линия, подведенная ко всем разъемам. Каждому номеру аппаратного прерывания соответствует свой проводник. Системная плата не может определить, в каком разъеме находится пославшая прерывание плата, поэтому возможно возникновение неопределенной ситуации в том случае, если несколько плат используют один канал. Чтобы этого не происходило, система настраивается так, что каждое устройство (адаптер) использует свою линию (канал) прерывания. Применение одной линии сразу несколькими разными устройствами в большинстве случаев недопустимо. Совместное использование прерывания допускается только PCI-устройствами, и то не всеми, некоторые старые PCI-устройства могут некорректно работать при таком использовании прерываний. Эта возможность поддерживается BIOS и операционной системой.
Поскольку в шине ISA совместное использование прерываний обычно не допускается, при установке новых плат может обнаружиться недостаток линий прерываний. Если две платы используют одну и ту же линию IRQ, то их нормальную работу нарушит возникший конфликт. Хотя сейчас это уже не так актуально, как несколько лет назад - в современных платах попросту отстутствуют разъемы ISA.
Установка одинаковых прерываний для шин ISA и PCI обязательно приведет к конфликту. Также будут конфликтовать два устройства ISA с одинаковым прерыванием. Что же делать, если доступных прерываний недостаточно для всех установленных в системе устройств? Во всех новых системах допускается использование одного прерывания несколькими устройствами PCI. Все системные BIOS, удовлетворяющие спецификации Plug and Play, а также операционные системы, начиная с Windows 95b (OSR 2), поддерживают функцию управления прерываниями. В таких компьютерах всю заботу о распределении прерываний может брать на себя операционная система (хотя, на мой взгляд, гораздо лучше доверить эту функцию BIOS).
Всего архитектура персонального компьютера поддерживает 16 аппаратных прерываний: IRQ0 - IRQ15. Ряд этих прерываний зарезервирован за системными устройствами, а некоторые свободны для использования дополнительными адаптерами. Давайте рассмотрим, какие же прерывания зафиксированы за определенными устройствами:
IRQ0 - системный таймер;
IRQ1 - клавиатура;
IRQ2 - использует для своих нужд сам контроллер прерываний;
IRQ3 - обычно используется COM2;
IRQ4 - обычно используется COM1;
IRQ5 - обычно свободно, чаще всего используется аудиоплатой;
IRQ6 - используется контроллером дисковода;
IRQ7 - обычно используется портом принтера LPT1;
IRQ8 - используется часами реального времени;
IRQ9 - каскадом связано с IRQ2, используется самим контроллером прерываний;
IRQ10 - обычно свободно;
IRQ11 - обычно свободно;
IRQ12 - используется мышью в порту PS/2;
IRQ13 - используется математическим сопроцессором;
IRQ14 - используется первым каналом IDE0;
IRQ15 - используется вторым каналом IDE1;
Как видно из таблицы, свободным прерываний в системе всего 3: irq 5,10 и 11. А устройств, требующих прерывания много: видеоплата, контроллер USB, аудиоплата, сетевая плата, различные платы расширения. Но, вспомним, PCI устройства могут совместно использовать одно прерывание, хотя и не любое даже PCI устройство будет "дружить" с другим. Возникает проблема распределения прерываний. Однако нужно заметить, что такая проблема возникает только в случае, когда в компьютере много плат расширения: видео, аудио и USB вполне удовлетворяются тремя свободными прерываниями. Что же делать, если устройств много, а прерываний не хватает?
Для решения этой задачи есть несколько подходов. Простейший подход состоит в том, чтобы отключить неиспользуемые устройства. Если Ваша мышь установлена в СОМ порту, то можно отключить в BIOS Setup (об этом в следующих главах) использование порта PS/2. Если же Ваша мышь в порту PS/2, то зачем Вам 2 свободных СОМ порта? В один из них обычно устанавливают модем, второй же обычно остается свободным, и его можно отключить в BIOS Setup, освободив IRQ3 или IRQ4. Если Вы не пользуетесь устройствами в порту принтера, то его можно отключить. Если Вы не пользуетесь USB портом, то и его можно отключить, уменьшив список устройств, нуждающихся в прерываниях.
Кстати, теперь настало время сказать несколько слов о безусловной пользе шины USB. Вы можете подключить к USB принтер, сканер, мышь, клавиатуру, модем, видеокамеру и другие устройства, задействовав всего ОДНО прерывание!!! В этом огромное преимущество шины USB - она позволяет раз и навсегда решить проблему нехватки прерываний PC!!! Ведь применение шины USB для всех перечисленных устройств позволяет освободить IRQ 3(COM2),4(COM1),7(LPT1) и иногда IRQ1, освобождая таким образом достаточное количество прерываний для всех плат расширения персонального компьютера. В этом отношении шина USB весьма перспективна.
Помимо освобождения неиспользуемых прерываний, можно попытаться настроить, какие устройства будут делить между собой прерывания. Если установить платы расширения в материнскую плату и запустить компьютер, то при старте системы BIOS материнской платы сообщит о том, какие устройства получили какие прерывания. Беда в том, что BIOS раздаст прерывания произвольным образом, совершенно не заботясь о том, будет ли два устройства, которым назначено одно прерывание, нормально работать. Тогда возможны два решения.
Наиболее просто эта задача решается в случае, когда в BIOS Setup материнской платы предусмотрена настройка для каждого слота PCI номера прерывания, которое будет назначено при старте устройству в этом слоте PCI. А как решить задачу разделения прерываний, если таких возможностей в BIOS Setup не предусмотрено?
Тогда следует делать следующим образом. BIOS раздает платам при старте прерывания в соответствии с тем, в каких слотах PCI они установлены. Вообще говоря, если поменять местами платы в слотах PCI, то они получат иные прерывания при старте, и благодаря этому можно попытаться настроить соответствие прерываний платам расширения. Следует вручную подобрать такую расстановку плат расширения в слотах PCI, при которой BIOS распределит прерывания таким образом, как Вам нужно. Это весьма длительная, нудная и кропотливая работа, так как пять плат в пяти слотах переставлять вплоть до того, как они получат нужные прерывания - весьма долго, но такой способ тем не менее дает положительный результат.
Вы можете
получить под Windows список прерываний, используемый устройствами
Вашего компьютера. Для этого нужно в панели управления выбрать
приложение System, перейти на закладку Device Manager и дважды щелкнуть
на устройстве Computer. В появившемся окне Вы сможете видеть
используемые прерывания а также и другие ресурсы, о которых сейчас
пойдет речь.
Каналы прямого доступа к памяти (DMA) используются
устройствами, осуществляющими высокоскоростной обмен данными. C помощью
каналов прямого доступа к памяти устройства могут напрямую обращаться к
оперативной памяти миную центральный процессор, таким образом
освобождая его от дополнительной нагрузки. Последовательный и
параллельный порты, например, не используют DMA, в отличие от звуковой
платы. Один канал DMA может использоваться разными устройствами, но не
одновременно. Например, канал DMA 1 может использоваться как сетевым
адаптером, так и накопителем на магнитной ленте, но вы не сможете
записывать информацию на ленту при работе в сети. Для этого каждому
адаптеру необходимо выделить свой канал DMA. Всего в архитектуре РС
предусмотрено 8 каналов прямого доступа к памяти с номерами DMA0 -
DMA7, однако такой проблемы, как с прерываниями не возникает. Дело в
том, что только небольшому количеству устройств необходим для
правильного функционирования канал DMA. В стандартной системе только
два из 8-и каналов занято: канал DMA1 занимает контроллер дисководов, а
канал DMA2 занимает сам контроллер прямого доступа к памяти для своих
служебных нужд. Некоторые аудиоплаты требуют один, а то и два канала
прямого доступа к памяти, кроме того один канал иногда нужен порту
принтера. Обычно в системе много свободных каналов прямого доступа к
памяти, так что никаких проблем при конфигурировании не возникает.
Через порты ввода-вывода к компьютеру можно подключать разнообразные устройства для расширения его возможностей. Принтер, подключенный к одному из параллельных портов LPT, позволяет вывести на бумагу результаты работы. Модем, соединенный с одним из последовательных портов СОМ, обеспечивает связь по телефонным линиям с другими компьютерами, находящимися за тысячи километров от вас. Сканер, подключенный к порту LPT, позволяет ввести в компьютер графические изображения или текст непосредственно с листа бумаги и преобразовать их в необходимый формат для дальнейшей обработки.
В большинстве компьютеров имеется хотя бы два последовательных порта и один параллельный. Последовательные порты обозначаются как СОМ1 и COM2, а параллельный- LPT1. В принципе, в компьютере можно установить до четырех последовательных (СОМ1-СОМ4) и трех параллельных (LPT1-LPT3) портов.
Можно сказать, что известные Вам внешние порты - лишь малая часть айсберга портов, доступных персональному компьютеру.
Порты ввода-вывода позволяют установить связь между устройствами и программным обеспечением в компьютере. Они подобны двусторонним радиоканалам, так как обмен информацией в ту и другую сторону происходит по одному и тому же каналу. В отличие от прерываний IRQ и каналов прямого доступа к памяти, в персональных компьютерах множество портов ввода-вывода. Существует 65536 портов, пронумерованных от 0000h до FFFFh. Хотя многие устройства используют до восьми портов, все равно их количество более чем достаточно. Самая большая проблема состоит в том, чтобы двум устройствам случайно не назначить один и тот же порт. Наиболее современные системы, поддерживающие спецификацию Plug and Play, автоматически разрешают любые конфликты из-за портов, выбирая альтернативные порты для одного из конфликтующих устройств.
Хотя порты
ввода-вывода обозначаются шестнадцатеричными адресами, подобными
адресам памяти, они не являются памятью, они - порты. Различие состоит
в том, что данные, посланные по адресу памяти 1000h, будут сохранены в
модуле памяти SIMM или DIMM. Если вы посылаете данные по адресу 1000h
порта ввода-вывода, то они попадают на этот "канал" шины и любое
устройство, прослушивающее этот канал, может принять их. Если никакое
устройство не прослушивает этот адрес порта, то данные достигнут конца
шины и будут поглощены ее нагрузочными резисторами.
Любое устройство в компьютере может пользоваться некоторыми ресурсами. Для того, чтобы получить список ресурсов, использованных конкретным устройством, следует в упомянутом выше Device Manager'e выбрать свойства любого устройства и перейти на вкладку Resource.