Верно ли утверждение что драйвер пу это программа управляющая контроллером периферийного устройства

Связь компьютера с периферийными устройствами

Механизмы взаимодействия компьютеров в сети многое позаимствовали у схе­мы взаимодействия компьютера с периферийными устройствами, поэтому нач­нем рассмотрение принципов работы сети с этого «досетевого» случая. Соедине­ние компьютера с периферийным устройством чаще всего представляет собой связь «точка-точка».

Для обмена данными между компьютером и периферийным устройством (ПУ) в компьютере предусмотрен внешний интерфейс, или порт (рис. 2.1), то есть на­бор проводов, соединяющих компьютер и периферийное устройство, а также на­бор правил обмена информацией по этим проводам.

Существуют как весьма специализированные интерфейсы, пригодные для под­ключения узкого класса устройств (например, графических мониторов высокого разрешения фирмы Vista), так и интерфейсы общего назначения, являющиеся стандартными и позволяющие подключать различные периферийные устройст­ва. Примерами стандартных интерфейсов, используемых в компьютерах, явля­ются параллельный интерфейс Centronics, предназначенный, как правило, для подключения принтеров, и последовательный интерфейс RS-232C, который под­держивается многими терминалами, принтерами, графопостроителями, манипу­ляторами типа «мышь» и многими другими устройствами.

Интерфейс реализуется со стороны компьютера совокупностью аппаратных и программных средств: контроллером ПУ и специальной программой, управляю­щей этим контроллером, которую часто называют драйвером соответствующего периферийного устройства.

Связь компьютера с периферийным устройством

«Установить начало листа», «Переместить магнитную головку», «Сообщить состояние устройства» и др.

Со стороны ПУ интерфейс чаще всего реализуется аппаратным устройством управления ПУ, хотя встречаются и программно-управляемые периферийные устройства.

Программа, выполняемая процессором, может обмениваться данными с помо­щью команд ввода-вывода с любыми модулями, подключенными к внутренней шине компьютера, в том числе и с контроллерами ПУ.

Периферийные устройства могут принимать от компьютера как данные, напри­мер байты информации, которую нужно распечатать на бумаге, так и команды управления, в ответ на которые устройство управления ПУ может выполнить специальные действия, например, перевести головку диска на требуемую дорож­ку или же вытолкнуть лист бумаги из принтера. Периферийное устройство использует внешний интерфейс компьютера не только для приема информации, но и для передачи информации в компьютер, то есть обмен данными по внешне­му интерфейсу, как правило, является двунаправленным. Так, например, даже принтер, который по своей природе является устройством вывода информации, возвращает в компьютер данные о своем состоянии.

Итак, приложение, которому требуется передать некоторые данные на перифе­рийное устройство, обращается с запросом на выполнение операции ввода-выво­да к операционной системе. В запросе указываются: адрес данных в оперативной памяти, идентифицирующая информация о периферийном устройстве и опера­ция, которую надо выполнить.

Получив запрос, операционная система запускает соответствующий драйвер, передавая ему в качестве параметра адрес выводимых данных. Дальнейшие действия по выполнению операции ввода-вывода со стороны компьютера реализуются совместно драйвером и контроллером ПУ. Контроллер работает под управлением драйвера. Контроллеры ПУ принимают команды и данные от драйвера в свой внутренний буфер, который часто называется регист­ром, или портом, а затем производят необходимые преобразования данных и ко­манд, полученных от драйвера, в соответствии с форматами, понятными устрой­ству управления ПУ, и выдают их на внешний интерфейс.

Распределение обязанностей между драйвером и контроллером может быть раз­ным, но чаще всего контроллер поддерживает набор простых команд по управле­нию периферийным устройством, а драйвер определяет последовательность их выполнения, заставляя периферийное устройство совершать более сложные дей­ствия по некоторому алгоритму. Например, контроллер принтера может поддер­живать такие элементарные команды, как «Печать символа», «Перевод строки», «Возврат каретки» и т. п. Драйвер же принтера с помощью этих команд органи­зует печать строк символов, разделение документа на страницы и другие более высокоуровневые операции. Для одного и того же контроллера можно разрабо­тать различные драйверы, которые с помощью одного и того же набора доступ­ных команд будут реализовывать разные алгоритмы управления ПУ.

Рассмотрим схему передачи одного байта информации от прикладной програм­мы на периферийное устройство. Программа, которой потребовалось выполнить обмен данными с ПУ, обращается к драйверу этого устройства, сообщая ему в качестве параметра адрес байта памяти, который нужно передать. Драйвер загру­жает значение этого байта в буфер контроллера ПУ, который начинает последо­вательно передавать биты в линию связи, представляя каждый бит соответст­вующим электрическим сигналом. Чтобы устройству управления ПУ стало понятно, что начинается передача байта, перед передачей первого бита информа­ции контроллер ПУ формирует стартовый сигнал специфической формы, а по­сле передачи последнего информационного бита — столовый сигнал. Эти сигна­лы синхронизируют передачу байта.

Кроме информационных бит, контроллер может передавать бит контроля четно­сти для повышения достоверности обмена. Устройство управления, обнаружив на соответствующей линии стартовый бит, выполняет подготовительные дейст­вия и начинает принимать информационные биты, формируя из них байт в сво­ем приемном буфере. Если передача сопровождается битом четности, то выпол­няется проверка правильности передачи: при правильно выполненной передаче в соответствующем регистре устройства управления устанавливается признак завершения приема информации.

На драйвер обычно возлагаются наиболее сложные функции протокола (напри­мер, подсчет контрольной суммы последовательности передаваемых байтов, ана­лиз состояния периферийного устройства, проверка правильности выполнения команды). Но даже самый примитивный драйвер контроллера должен поддер­живать как минимум две операции: «Взять данные из контроллера в оператив­ную память» и «Передать данные из оперативной памяти в контроллер».

В самом простом случае связь компьютеров может быть реализована с помощью тех же самых средств, которые используются для связи компьютера с перифери­ей, например, через последовательный интерфейс RS-232C. При этом, в отличие от процедуры обмена данными компьютера с периферийным устройством, когда программа работает, как правило, только с одной стороны (со стороны компью­тера), здесь происходит взаимодействие двух программ, выполняемых на каж­дом из компьютеров.

Программа, работающая на одном компьютере, не может получить непосредст­венный доступ к ресурсам другого компьютера — его дискам, файлам, принтеру. Она может только «попросить» об этом другую программу, выполняемую на том компьютере, которому принадлежат эти ресурсы. Эти «просьбы» выражаются в виде сообщений, передаваемых по каналам связи между компьютерами. Сообщения могут содержать не только команды на выполнение некоторых действий, но и соб­ственно информационные данные (например, содержимое некоторого файла).

Взаимодействие двух компьютеров

Источник: kazedu.com

41. Обмен данными между компьютером и периферийным устройством.

Наиболее простой случай соединения устройств — это непосредственное соединение двух устройств физическим каналом. Такое соединение называется связью «точка-точка».

Частным случаем связи «точка-точка» является соединение компьютера с периферийным устройством.

Для обмена данными компьютер и периферийное устройство (ПУ) оснащены внешними интерфейсами или портами (рисунок ниже). В данном случае к понятию «интерфейс» относятся:

  • электрический разъем;
  • набор проводов, соединяющих устройства;
  • совокупность правил обмена информацией по этим проводам.

Со стороны компьютера логикой передачи сигналов на внешний интерфейс управляют:

  • контроллер ПУ — аппаратный блок, часто реализуемый в виде отдельной платы;
  • драйвер ПУ – программа, управляющая контроллеромпериферийного устройства.

Со стороны ПУ интерфейс чаще всего реализуется аппаратным устройством управления ПУ, хотя встречаются и программно-управляемые периферийные устройства. К аппаратным интерфейсам периферийных устройств относятся последовательный интерфейс RS-232, параллельный интерфейс Centronixs, интерфейс SCSI, интерфейс USB. Для подключения адаптеров периферийных устройств используются шины на материнской плате ПК ( ISA, PCI, PCI Express, для видеоадаптеров AGP и PCI-16 Express). Интерфейс RS-232 используется для подключения плоттера, удаленного принтера, мыши, модема и т.д. Данные в нем передаются последовательно один за другим. Интерфейс Centronixs чаще всего используется для подключения принтера. Данные передаются параллельно по несколько бит одновременно. Стандарт USB предельно упрощает соединение с периферийными устройствами. Физически – это две витые пары для передачи в каждом направлении. Все устройства, подключаемые к этому интерфейсу, конфигурируются автоматически. Шины на материнской плате отличаются числом контактов, частотой шины, максимальной скоростью передачи данных, разрядностью данных. Шина ISA устарела и практически не используется. Наиболее распространена шина PCI ( частота шины ½ входной частоты процессора, макс. скорость до 132/264 Мбайт/с для 32/64 бит. ). В настоящее время появились более скоростные шины PCI Express. Обмен данными между ПУ и компьютером, как правило, является двунаправленным. Так, например, даже принтер, который представляет собой устройство вывода информации, возвращает в компьютер данные о своем состоянии. Таким образом, по каналу, связывающему внешние интерфейсы, передается следующая информация:

  • данные, поступающие от контроллера на ПУ, например байты текста, который нужно распечатать на бумаге;
  • команды управления, которые контроллер передает на устройство управления ПУ; в ответ на них оно выполняет специальные действия, например переводит головку диска на соответствующую дорожку или же выталкивает из принтера лист бумаги;
  • данные, возвращаемые устройством управления ПУ в ответ на запрос от контроллера, например данные о готовности к выполнению операции.
Читайте также:
All inc что это за программа

Рассмотрим последовательность действий, которые выполняются в том случае, когда некоторому приложению требуется напечатать текст на принтере. Со стороны компьютера в выполнении этой операции принимает участие, кроме уже названных контроллера,драйвера и приложения, еще один важнейший компонент — операционная система. Поскольку все операции ввода-вывода являются привилегированными, все приложения при выполнении операций с периферийными устройствами используют ОС как арбитра. Итак, последовательность действий такова:

  1. Приложение обращается с запросом на выполнение операции печати к операционной системе. В запросе указываются: адрес данных в оперативной памяти, идентифицирующая информация принтера и операция, которую требуется выполнить.
  2. Получив запрос, операционная система анализирует его, решает, может ли он быть выполнен, и если решение положительное, то запускает соответствующий драйвер, передавая ему в качестве параметров адрес выводимых данных. Дальнейшие действия, относящиеся к операции ввода-вывода, со стороны компьютера реализуются совместно драйвером и контроллером принтера.
  3. Драйвер передает команды и данные контроллеру, который помещает их в свой внутренний буфер. Пусть, например, драйвер загружает значение некоторого байта в буфер контроллера ПУ.
  4. Контроллер перемещает данные из внутреннего буфера во внешний порт.
  5. Контроллер начинает последовательно передавать биты в линию связи, представляя каждый бит соответствующим электрическим сигналом. Чтобы сообщить устройству управления принтера о том, что начинается передача байта, перед передачей первого бита данных контроллер формирует стартовый сигнал специфической формы, а после передачи последнего информационного бита — стоповый сигнал. Эти сигналы синхронизируют передачу байта. Кроме информационных бит, контроллер может передавать бит контроля четности для повышения достоверности обмена.
  6. Устройство управления принтера, обнаружив на соответствующей линии стартовый бит, выполняет подготовительные действия и начинает принимать информационные биты, формируя из них байт в своем приемном буфере. Если передача сопровождается битом четности, то выполняется проверка корректности передачи: при правильно выполненной передаче в соответствующем регистре устройства управления принтера устанавливается признак завершения приема информации. Наконец, принятый байт обрабатывается принтером — выполняется соответствующая команда или печатается символ.

Связь компьютера с периферийным устройством. Обязанности между драйвером и контроллером могут распределяться по-разному, но чаще всего контроллер поддерживает набор простых команд, служащих для управления периферийным устройством, а на драйвер обычно возлагаются наиболее сложные функции реализации обмена. Например, контроллер принтера может поддерживать такие элементарные команды, как «Печать символа», «Перевод строки», «Возврат каретки» и т. п. Драйвер же принтера с помощью этих команд реализует печать строк символов, разделение документа на страницы и другие более высокоуровневые операции (например, подсчет контрольной суммы последовательности передаваемых байтов, анализ состояния периферийного устройства, проверка правильности выполнения команды). Драйвер, задавая ту или иную последовательность команд, определяет тем самым логику работы периферийного устройства. Для одного и того же контроллера можно разработать различные драйверы, которые с помощью одного и того же набора доступных команд будут реализовывать разные алгоритмы управления одним и тем же ПУ. Возможно распределение функций между драйвером и контроллером (ПУ). Функции, выполняемые драйвером:

  • ведение очередей запросов;
  • буферизация данных;
  • подсчет контрольной суммы последовательности байтов;
  • анализ состояния ПУ;
  • загрузка очередного байта данных (или команды) в регистр контроллера;
  • считывание байта данных или байта состояния ПУ из регистра контроллера.

Функции, выполняемые контроллером:

    • преобразование байта из регистра (порта) в последовательность бит;
    • передача каждого бита в линию связи;
    • обрамление байта стартовым и стоповым битами – синхронизация;
    • формирование бита четности;
    • установка признака завершения приема/передачи байта.

    Источник: studfile.net

    Программа, управляющая контроллером периферийного устройства

    При создании вычислительных сетей разработчикам пришлось решать множество самых разных задач, связанных с кодированием и синхронизацией электрических (оптических) сигналов, выбором конфигурации физических и логических связей, разработкой схем адресации устройств, созданием различных способов коммутации, мультиплексированием и демультиплексированием потоков данных, совместным использованием передающей среды.

    Начнем с простого случая непосредственного соединения двух устройств физическим каналом, такое соединение называется связью «точка-точка» (point-to-point).

    Связь компьютера с периферийными устройствами

    Частным случаем связи «точка-точка» является соединение компьютера с периферийным устройством (ПУ).

    Для обмена данными компьютер и ПУ оснащены внешними интерфейсами или портами (рис. 1).

    Рис. 1. Связь компьютера с периферийным устройством

    • электрический разъем;
    • набор проводов, соединяющих устройства;
    • совокупность правил обмена информацией по этим проводам.
    • контроллер ПУ — аппаратный блок, часто реализуемый в виде отдельной платы;
    • драйвер ПУ – программа, управляющая контроллером периферийного устройства.

    Со стороны ПУ интерфейс чаще всего реализуется аппаратным устройством управления ПУ, хотя встречаются и программно-управляемые периферийные устройства.

    Обмен данными между ПУ и компьютером, как правило, является двунаправленным.

    • данные, поступающие от контроллера на ПУ;
    • команды управления, которые контроллер передает на устройство управления ПУ;
    • данные, возвращаемые устройством управления ПУ.
    • ведение очередей запросов;
    • буферизация данных;
    • подсчет контрольной суммы последовательности байтов;
    • анализ состояния ПУ;
    • загрузка очередного байта данных (или команды) в регистр контроллера;
    • считывание байта данных или байта состояния ПУ из регистра контроллера.
    • преобразование байта из регистра (порта) в последовательность бит;
    • передача каждого бита в линию связи;
    • обрамление байта стартовым и стоповым битами – синхронизация;
    • формирование бита четности;
    • установка признака завершения приема/передачи байта.

    Связь двух компьютеров

    Рис. 2. Взаимодействие двух компьютеров

    Программа, работающая на одном компьютере, не может получить непосредственный доступ к ресурсам другого компьютера. Она может только «попросить» об этом другую программу, выполняемую на том компьютере, которому принадлежат эти ресурсы. Эти «просьбы» выражаются в виде сообщений, передаваемых по каналам связи между компьютерами.

    Например, по кабелю через COM-порты, реализующие интерфейс RS-232C (нуль-модемное соединение). Связь между компьютерами осуществляется аналогично связи компьютера с ПУ. Только теперь контроллеры и драйверы портов действуют с двух сторон. Вместе они обеспечивают передачу по кабелю между компьютерами одного байта информации (В локальных сетях подобные функции выполняются сетевыми адаптерами и их драйверами).

    Клиент, редиректор и сервер

    Существует большое количество программ, которые самостоятельно решают все задачи по обмену данными между компьютерами. Но гораздо выгоднее создать специальный программный модуль, который будет выполнять формирование сообщений-запросов к удаленной машине и прием результатов для всех приложений. Такой служебный модуль называется клиентом.

    На стороне другой машины должна работать другая спец. программа — сервер, постоянно ожидающий запросов на удаленный доступ к ресурсам этой ЭВМ.

    Очень удобной и полезной функцией клиентской программы является способность отличить запрос к удаленному файлу от запроса к локальному файлу. Клиентская программа способная распознавать и перенаправлять (redirect) запрос к удаленной машине называется редиректор.

    Иногда функции распознавания выделяются в особый программный модуль, в этом случае редиректором называют не всю клиентскую часть, а только этот модуль.

    Программные клиент и сервер выполняют системные функции по обслуживанию запросов всех приложений компьютера А на удаленный доступ к файлам компьютера В. Чтобы приложения компьютера В могли пользоваться файлами компьютера А, описанную схему нужно симметрично дополнить клиентом для компьютера В и сервером для компьютера А.

    Читайте также:
    Программу жрс что это

    Рис. 3. Схема взаимодействия программных компонентов при связи двух компьютеров

    Для того, чтобы компьютер мог работать в сети, его ОС должна быть дополнена клиентским и/или серверным модулем, а также средствами передачи данных между компьютерами. В результате такого добавления ОС компьютера становится сетевой ОС.

    Задача физической передачи данных по линиям связи

    Даже при рассмотрении простейшей сети с соединением «точка-точка» возникает ряд проблем, присущих любой вычислительной сети, и на первый план выходит задача физической передачи данных по линиям связи.

    • кодирование и модуляцию данных;
    • взаимную синхронизацию передатчика одного компьютера с приемником другого;
    • подсчет контрольной суммы и передача ее по линиям связи после каждого байта или после некоторого блока байтов.

    Представление данных в виде электрических или оптических сигналов называется кодированием. Существуют различные способы кодирования двоичных цифр 1 и 0, например потенциальный способ, при котором единице соответствует один уровень напряжения, а нулю — другой, или импульсный способ, когда для представления цифр используются импульсы различной или одной полярности.

    Аналогичные подходы могут использоваться для кодирования данных и при их передаче по линиям связи. Однако эти линии связи отличаются от тех, которые существуют внутри компьютера.

    Главное отличие внешних линий связи в их большей протяженности, а также в том, что они проходят вне экранированного корпуса и подвержены воздействию сильных электромагнитных помех. Все это приводит к существенно большим искажениям импульсов, чем внутри компьютера. Поэтому при передаче данных внутри и вне компьютера не всегда можно использовать одни и те же скорости и способы кодирования.

    В вычислительных сетях применяют как потенциальное, так и импульсное кодирование дискретных данных, а также специфический способ представления данных, который не используется внутри ЭВМ, — модуляцию.

    При модуляции дискретная информация представляется синусоидальным сигналом той частоты, которую хорошо передает имеющаяся линия связи.

    Потенциальное или импульсное кодирование применяется на каналах высокого качества, а модуляция на основе синусоидальных сигналов предпочтительнее в том случае, когда канал вносит сильные искажения в передаваемые сигналы. Обычно модуляция используется в глобальных сетях при передаче данных через аналоговые телефонные линии.

    На способ передачи сигналов влияет и количество проводов в линиях связи между компьютерами (параллельная передача всех бит одного байта или последовательная, побитовая передача, требующая всего одной пары проводов).

    При передаче сигналов приходится еще решать проблему взаимной синхронизации передатчика одного компьютера с приемником другого. Проблема синхронизации при связи компьютеров может решаться разными способами, как с помощью обмена специальными тактовыми синхроимпульсами по отдельной линии, так и посредством периодической синхронизации заранее обусловленными кодами или импульсами характерной формы, отличной от формы импульсов данных.

    Всегда существует вероятность искажения некоторых бит передаваемых данных и поэтому для более надежной передачи данных часто используется стандартный прием — подсчет контрольной суммы и передача ее по линиям связи после каждого байта или после некоторого блока байтов.

    Часто в протокол обмена данными включается как обязательный элемент сигнал-квитанция, которая подтверждает правильность приема данных и посылается от получателя отправителю.

    Некоторые сетевые устройства, такие как модемы и сетевые адаптеры, специализируются на физической передаче данных.

    Модемы выполняют в глобальных сетях модуляцию и демодуляцию дискретных сигналов, синхронизируют передачу электромагнитных сигналов по линиям связи, проверяют правильность передачи по контрольной сумме и могут выполнять некоторые другие операции.

    Сетевые адаптеры рассчитаны на работу с определенной передающей средой — коаксиальным кабелем, витой парой, оптоволокном и т.п.

    Каждый тип передающей среды обладает определенными электрическими характеристиками, влияющими на способ использования данной среды, и определяет скорость передачи сигналов, способ их кодирования и некоторые другие параметры.

    Источник: geum.ru

    PersCom — Компьютерная ЭнциклопедияКомпьютерная Энциклопедия

    Вы здесь: Главная Введение Введение Взаимодействие программ с периферийными устройствами

    Архитектура ЭВМ

    • Базовая организация ЭВМ
    • Процессор
    • Память. Нижний уровень
    • Память. Верхний уровень
    • Ввод-вывод
    • Кодирование символов

    Компоненты ПК

    • Устройства вывода информации
    • Процессоры
    • Системные платы
    • BIOS: базовая система ввода-вывода
    • Оперативная память
    • Накопители на жёстких дисках
    • Видеоадаптеры
    • Устройства оптического хранения данных
    • Аудиоустройства

    Интерфейсы

    Мини блог

    • Операционные системы
    • Личное (разное)
    • IT
    • Сетевые технологии

    Самое читаемое

    • Арифметико логическое устройство (АЛУ)
    • Страничный механизм в процессорах 386+. Механизм трансляции страниц
    • Организация разделов на диске
    • Диск Picture CD
    • White Book/Super Video CD
    • Прямой доступ к памяти, эмуляция ISA DMA (PC/PCI, DDMA)
    • Карты PCMCIA: интерфейсы PC Card, CardBus
    • Таблица дескрипторов прерываний
    • Разъемы процессоров
    • Интерфейс Slot A

    http://callbacky.by/ виджет для заказа обратного звонка.

    Введение

    Взаимодействие программ с периферийными устройствами

    Подробности Родительская категория: vvedenie Категория: Введение

    Периферийные устройства могут подключаться к интерфейсам системного уровня (ISA, PCI, PCI-X, PCI-Express, AGP, LPC) или к периферийным интерфейсам (порты COM, LPT, Game; шины USB, FireWire, SCSI). Абстрагируясь от конкретной реализации подключения на системном уровне, можно говорить о логической системной шине PC-совместимого компьютера — интерфейсе со следующими базовыми свойствами:

    • интерфейс обеспечивает транзакции обращения к пространствам памяти и ввода/вывода;
    • в транзакциях фигурируют физические адреса пространств памяти и ввода/вывода;
    • адресные пространства памяти и ввода/вывода являются «плоскими»: адрес выражается одним числом в диапазоне, определенном принятой разрядностью адресации. Любой адрес может принадлежать регистру (ячейке памяти) только одного устройства (или системной памяти, включающей ОЗУ и энергонезависимую память);
    • транзакции могут инициироваться как центральным процессором (процессорами), так и активными устройствами (мастерами шины);
    • все адресуемые элементы безусловно доступны центральному процессору; на адресуемость элементов со стороны мастеров шин могут накладываться специфические ограничения;
    • устройства, подключенные к системной шине, могут посылать процессору (процессорам) запросы аппаратных прерываний.

    Взаимодействие программ с устройствами, подключенными к системной шине, возможно следующими способами:

    • через регистры устройств, отображенные на пространство памяти или пространство ввода/вывода;
    • через области адресов памяти, принадлежащей устройству (физически расположенной на контроллере или адаптере устройства);
    • через регистры конфигурационного пространства PCI (для устройств, подключенных к PCI, PCI-X, PCI-Express, AGP);
    • через области системного ОЗУ, доступные активным устройствам-мастерам шины (обмен с использованием DMA);
    • через аппаратные прерывания, сигнализируемые устройствами по доступным им линиям IRQx (ISA) или INTx# (PCI), а также по сообщениям MSI (PCI).

    Обращения к регистрам конфигурационного пространства PCI (также «плоского») не относятся к базовым свойствам системной шины, поскольку программно они реализуются операциями обращения к пространству ввода/вывода и (или) памяти. С устройствами, подключенными к интерфейсам периферийного уровня, взаимодействие возможно только через их контроллеры (адаптеры), подключенные к системной шине. На системной шине «видны» и доступны только эти адаптеры и контроллеры. Способы взаимодействия с устройствами определяются интерфейсом контроллера. Особенности взаимодействия с устройствами шин USB и FireWire рассмотрены далее, интерфейсы хост-контроллеров этих шин рассмотрены в следующих темах.

    Программное обеспечение компьютера состоит из ряда компонентов: прикладного ПО (исполняемые модули — .EXE-файлы), драйверов устройств, системных драйверов, динамически компонуемых модулей, BIOS. Эти компоненты имеют различные возможности взаимодействия с устройствами, состав используемых компонентов зависит от операционной системы и уровня разделяемости данного устройства. Между прикладным ПО и периферийными устройствами возможны следующие варианты отношений:

    • одиночное монопольное подключение: ПУ подключено к системной шине (возможно, через промежуточный периферийный интерфейс). С этим устройством в любой момент времени может взаимодействовать лишь одно приложение. Это самый простой вариант в плане организации взаимодействия ПО и устройства;
    • групповое монопольное подключение: группа конечных ПУ подключена через промежуточный интерфейс к одному контроллеру, подключенному к системной шине. С данными устройствами может в любой момент времени взаимодействовать только одно приложение. По сравнению с предыдущим вариантом, здесь появляется небольшое усложнение, связанное с выбором конкретного конечного устройства для текущей операции обмена. Промежуточный интерфейс должен обеспечивать адресацию, управляемую приложением;
    • одиночное разделяемое подключение: единственное конечное ПУ, подключенное к системной шине, может использоваться несколькими приложениями и/или процессами. Каждое из приложений (процессов) взаимодействует с устройством так, как будто оно — единственный «клиент» данного устройства. В структуре ПО, обеспечивающего взаимодействие с данным устройством, должны присутствовать средства виртуализации данного устройства. Эти средства и создают приложениям иллюзию монопольного взаимодействия с устройством. Пример — дисплей, подключенный к графическому адаптеру, с поддержкой оконного интерфейса. Здесь каждое приложение в отведенном ему логическом окне выполняет вывод изображения, не заботясь о текущем положении окна. Другой пример — клавиатура, обеспечивающая ввод символов в активное приложение;
    • множественное разделяемое подключение: множество конечных ПУ подключено через периферийный интерфейс к общему контроллеру, связанному с системной шиной. Возможно одновременное взаимодействие нескольких приложений (процессов) с различными конечными ПУ. Сложность заключается в разделяемости: все взаимодействия осуществляются через общий контроллер периферийного интерфейса. Дополнительно возможно и коллективное использование конечных ПУ, для чего требуется виртуализация этих устройств. Примеры подключения: шины SCSI, USB, FireWire.
    Читайте также:
    E2ru что это программа

    Вполне очевидно, что с точки зрения логических связей прикладное ПО может взаимодействовать с устройством непосредственно лишь в монопольном варианте использования. Все остальные варианты требуют выделения специальных модулей — драйверов, решающих задачи организации разделяемого использования контроллера и/или виртуализации устройства. Однако и для монопольного варианта отделение драйвера от прикладного ПО полезно с точки зрения модульности: при должной организации интерфейса между драйвером и прикладным ПО переход на использование новой модели устройства и/или на иной интерфейс его подключения потребует только смены драйвера, но не переработки прикладного ПО.

    Взаимодействие программ, выполняемых центральным процессором (хост-программ), с периферийными устройствами возможно тремя основными способами:

    • программно-управляемый обмен;
    • прямой доступ к памяти;
    • прерывания.

    Программно-управляемый обмен — PIO (Programmed Input-Output). В исполняемой программе (или драйверах, которыми она пользуется) присутствуют инструкции ввода/вывода для портов устройства или инструкции обращений к областям памяти, находящейся в устройстве.

    Реальное физическое взаимодействие с устройством (и вызываемые этим изменения состояния устройств) происходит в момент выполнения этих инструкций. Такая жесткая синхронизация программы и устройства из рассматриваемых шин имеется в PCI/PCI-X, когда устройство является ведомым (target).

    Из интерфейсов, не рассмотренных в данной книге, такой способ обмена используется в LPT и COM портах (в режимах без FIFO и DMA), а также в шине ATA (при доступе к регистрам устройства и обмене данными в режиме PIO). Данный способ взаимодействия позволяет предельно упростить интерфейсную часть периферийного устройства. Расплатой за это упрощение является нагрузка на центральный процессор. Отметим, что применительно к шине PCI (и всем ее «родственникам») программно-управляемый обмен не позволяет приблизиться к декларированной высокой пропускной способности шины. Причиной тому является неспособность процессора породить длинные пакетные транзакции на шине PCI (см. главу 2), поэтому следует избегать данного способа взаимодействия при интенсивном обмене данными;

    Прямой доступ к памяти — DMA (Direct Memory Access). Обмен между системной памятью (ОЗУ) и устройством выполняется без непосредственного участия процессора. Обмен осуществляет контроллер прямого доступа, для устройств шины PCI (и всех ее «родственников») контроллер является частью устройства — мастера шины (Bus Master). Штатного централизованного контроллера DMA, как это было в архитектуре ISA, для шины PCI нет. В зависимости от того, кто является инициатором обмена, различают два варианта прямого доступа:

    • DMA по инициативе хоста (Host Initiated DMA). Задание на пересылку каждого блока формирует программа, исполняемая на ЦП; она же сообщает контроллеру DMA параметры сеанса (начальный адрес, длину блока и направление передачи) записью в его регистры. Физические операции обмена синхронизируются с устройством — оно своими внутренними сигналами запускает обмен и, если требуется, управляет потоком (вводит сигнал готовности). Этот вариант требует довольно простых аппаратных средств устройства, расплата за упрощение — необходимость привлечения ЦП к организации каждого сеанса (обычно по прерываниям). Это не очень эффективно при передаче больших объемов данных, которые могут располагаться в разных не смежных страницах физической памяти;
    • DMA по инициативе устройства (Target Initiated DMA). Здесь хост-программа формирует в памяти программу ввода/вывода для устройства, обычно представляющую собой связанный список дескрипторов передач, и указывает устройству на начало списка. Контроллер устройства считывает эти дескрипторы из ОЗУ и по ним организует сеансы передачи данных между устройством и буферами в ОЗУ, описанными дескрипторами передач. Формирование программы может быть статическим или динамическим. В первом случае хост-программа передает устройству указатель на готовый список дескрипторов и не имеет права его модифицировать до тех пор, пока устройство не отработает список до конца. Так, например, работает PCI-контроллер шины ATA. При динамическом формировании хост может добавлять новые дескрипторы (в конец списка), постоянно «подбрасывая» контроллеру новые задания. Так работают контроллеры шины USB и FireWire, PCI-контроллеры локальных сетей и ряд других. Работа устройства по программе требует усложнения его контроллера, но эти затраты окупаются повышением производительности и эффективности ввода/вывода. При этом стараются минимизировать число прерываний центрального процессора, инициируемых устройством.

    Прерывания (Interrupts) — сигнализация от устройства (его контроллера) центральному процессору (процессорам в мультипроцессорных системах) о некоторых событиях, требующих программных действий хоста. Эти события асинхронны по отношению к программному коду, исполняемому процессором.

    Прерывания требуют приостановки выполнения текущего потока инструкций (с сохранением состояния) и запуска исполнения процедуры-обработчика прерывания ISR (Interrupt Service Routine). Эта процедура первым делом должна идентифицировать источник прерывания (а их может быть и несколько), затем выполнить действия, связанные с реакцией на событие.

    Если события должны вызывать некоторые действия прикладной программы, то обработчику прерывания следует только подать сигнал (через ОС), запускающий (или пробуждающий) поток инструкций, выполняющий эти действия. Собственно процедура ISR должна быть оптимизирована по затраченному времени.

    Обслуживание прерываний, особенно в защищенном режиме, в PC-совместимых компьютерах на процессорах x86 связано со значительными накладными расходами. По этой причине их число стараются сократить. Значительные хлопоты доставляет идентификация источника прерывания — в архитектуре PC-совместимых компьютеров для этого используются традиционные, но неэффективные механизмы. В ряде случаев прерывания от устройств заменяют поллингом — программно-управляемым опросом состояния устройств. При этом состояния множества устройств опрашивают по прерыванию от таймера.

    В компьютерных системах с «интеллектуальной» системой ввода/вывода (I2O—Intelligent Input-Output) кроме центрального процессора имеется процессор ввода/вывода (IOP — Input-Output Processor). Этот процессор обычно имеет сокращенную систему команд, ориентированную на задачи управления вводом/выводом. В круг этих задач входит пересылка блоков данных, подсчет четности (для дисковых массивов RAID 3 и 5), преобразование данных между форматами Big Endian (популярный в телекоммуникациях) и Little Endian (принятый в процессорах Intel). Процессор ввода/вывода может работать как в общем адресном пространстве, так и иметь свое обособленное адресное пространство для управляемой подсистемы ввода/вывода. Взаимодействие процессора ввода/вывода со своими устройствами ведется теми же тремя основными способами, что были описаны ранее.

    Врядовых компьютерах обычно ограничиваются прямым управлением шиной (bus mastering), которое позволяет контроллерам ПУ (или их интерфейсам) самим обращаться к системным ресурсам, выполняя необходимые обмены данными и управляющей информацией. Для этого контроллер ПУ должен взять на себя (на время) роль инициатора транзакций на интерфейсе, связывающем его с центром (главным образом, с памятью).

    Поскольку традиционно этот интерфейс является шинным, такой активный контроллер называют мастером шины (bus master), даже если он подключается к выделенному двухточечному интерфейсу (порту AGP). Чаще всего прямое управление шиной используется для прямого доступа к оперативной памяти. Прямое управление шиной может использоваться и для сигнализации прерываний (MSI на шине PCI, см. главу 3). В новых версиях шины PCI-X и в PCI Express появилась возможность равнорангового взаимодействия устройств (без участия процессора) — обмена сообщениями. При этом в адресации сообщений не фигурируют адреса пространства памяти или ввода/вывода — обращения адресуются по идентификатору устройства (DIM — Device Identified Messages).

    Источник: perscom.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru