Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Глава 5. Системные ресурсы используемые ПУ. Распределение системных ресурсов
Для того чтобы программы могли взаимодействовать со своими устройствами, не мешая другим (и не получая от них помех), все системные ресурсы адреса памяти и ввода-вывода, запросы прерываний и каналы DMA должны быть бесконфликтно распределены между системными (из набора микросхем) контроллерами и контроллерами внешних устройств устройствами1.
Для адресов памяти и портов ввода-вывода бесконфликтность означает, что диапазоны соответствующих адресов всех имеющихся устройств не должны перекрываться. Это в первую очередь касается адресов, по которым выполняется чтение. Если устройства, конфликтующие по чтению, находятся на одной физической шине, то результат чтения будет неопределенным из-за электрического конфликта. Если конфликтующие устройства находятся на разных шинах, то будут прочитаны данные только одного устройства, но какого именно зависит от настройки мостов, соединяющих шины. Конфликт по адресам для записи часто сознательно используют для одновременной передачи информации в несколько устройств (например, в PnP ISA). Информация при этом не искажается. Однако незапланированные конфликты по записи могут приводить к неожиданным побочным эффектам в работе устройств, не ожидающих данной записи.
Для самого главного ведущего устройства центрального процессора безразлично, к какой из шин подключено устройство: он только задает адрес и тип операции. Операции записи обычно выполняются широковещательно распространяются по всем шинам. Операции чтения маршрутизируются фактически чтение по конкретному адресу памяти или порта обычно выполняется только с одной из шин.
Для линий запросов прерываний бесконфликтность трактуется несколько сложнее. В классической системе ISA одну линию запроса может использовать только одно устройство, все остальные варианты конфликтные. В системах РnР ISA (имеющих PnP BIOS, более гибко программируемый контроллер прерываний и устройства ISA PnP) при корректных настройках устройства РnР аппаратно могут использовать разделяемые (общие для нескольких устройств) линии прерываний. На обычные карты (устройства) ISA эта возможность, как правило, не распространяется. Однако и для устройств РnР возможны конфликты программ, работающих с этими устройствами, если в них не заложена возможность разделяемости прерываний. В системах с PCI разделяемость прерываний аппаратно предусмотрена, но, опять-таки, возможны программные (причина в драйверах) и аппаратные конфликты (некорректно спроектированные карты). В комбинированных системах ISA/PCI доступные линии запросов прерываний делятся между старыми (legacy) устройствами ISA и устройствами РnР ISA и PCI, во второй группе разделяемые прерывания в принципе допустимы (но при «правильном» ПО).
Для каналов DMA бесконфликтным, как правило, является лишь монопольное использование канала одним устройством (хотя бывают и редкие исключения). На старых устройствах каналы выбирались двумя джамперами1. Естественно, они должны устанавливаться согласовано, на один и тот же номер канала.
Системные устройства могут быть встроены в системную плату, а также устанавливаться в слоты шин расширения. Системные ресурсы должны распределяться между всеми этими устройствами. В распределении всегда имеется относительно неизменная часть (устройства системной платы, установленные ее изготовителем) и переменная часть, определяемая составом карт, установленных пользователем. Настройками CMOS Setup могут быть заданы ресурсы устройств системной платы, а часть из них может быть даже отключена, если вместо них используются адаптеры, установленные в слоты расширения.
Ресурсы устанавливаемых карт задаются либо вручную, либо автоматически, в зависимости от возможностей шин. карт расширения и BIOS. Цель полной автоматизации достичь идеала PnP (Plug-and-Play, включай и играй), когда от пользователя требуется лишь механически установить новое устройство, а дальше все распределения и установки драйверов выполняются без его участия.
Наиболее распространенной для подключения карт расширения ПК является шина PCI. В шину PCI изначально были заложены возможности автоматического конфигурирования устройств, и она поддерживает стандарт PnP в полном объеме. Например, шина ISA не имела механизмов автоматического конфигурирования и распределения ресурсов, так что все заботы по конфигурированию устанавливаемых адаптеров и разрешению конфликтов ложились на пользователя. Задача конфигурирования осложнялась и из-за отсутствия общего механизма автоматической передачи установленных параметров прикладному и системному программному обеспечению. После конфигурирования адаптеров, выполняемого обычно переключением джамперов (в соответствии с документацией на устройство), установленные параметры заносились в какие-либо конфигурационные файлы, специфичные для каждого программного продукта. При этом, естественно, возможны ошибки.
Некоторое облегчение конфигурирования принесло применение в адаптерах энергонезависимой памяти (NVRAM, EEPROM), хранящей конфигурации настроек, в том числе и использования системных ресурсов. Конфигурирование этих адаптеров выполняется программно специальной утилитой, а не с помощью джамперов. Отсюда и два их названия: Software Configured (программно-конфигурируемые) или Jumperless (свободные от джамперов).
Сейчас большинство карт ISA поддерживают спецификацию PnP ISA, благодаря чему во многих случаях с пользователя действительно снимаются заботы по конфигурированию.
Пример конфликтов. При конфигурировании устройств возможны разные неожиданные эффекты. Например, возможен конфликт, если контроллер гибких дисков и контроллер АТА расположены на разных платах, а тем более на разных шинах, разделенных буферами. Дело в том, что бит смены носителя НГМД исторически находится по адресу дополнительного регистра состояния АТА (см. п. 13.1.2) и результат считывания по этому адресу зависит от многих факторов. Это, наверное, единственный случай, когда устройство должно передавать на шину не целый байт, и причины этого чисто исторические: в PC/AT контроллер НГМД был на одной плате с первой моделью контроллера НЖМД, и эта завязка не создавала неудобств. А дальше эти контроллеры обрели относительную самостоятельность, но для программной совместимости регистровую модель сохранили для обоих устройств. Все остальные конфликты в этом плане более тривиальны, хотя неприятностей могут доставить немало.
Кроме периферийных устройств конфигурированию подлежат и мосты PCI, соединяющие все шины современных ПК. При конфигурировании мостов им указывается распределение системных ресурсов по шинам, которые они связывают. Таким образом задаются пути транслирования управляющих сигналов по шинам и управление буферами данных, обеспечивая для каждого адреса памяти или ввода-вывода единственную шину назначения, по крайней мере для операций чтения (операции записи в принципе могут быть и широковещательными). Подобная «маршрутизация» необходима и для сигналов запросов прерывания (каналы DMA к шине PCI отношения не имеют). Конфигурирование мостов, как правило, происходит без участия пользователя, хотя некоторыми параметрами (выделением определенных ресурсов) можно управлять с помощью CMOS Setup.
1 Один для линии DRQx. другой для DACKx#