1 какие устройства должны иметь терминальный процессор устройства ввода-вывода и оба

Обновлено: 21.11.2024

Основные принципы программируемого логического контроллера, также известного как ПЛК

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

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

Как работает ПЛК?

Есть четыре основных рабочих шага для каждого ПЛК:

  1. Сканирование ввода: определяет состояние всех устройств ввода, подключенных к ПЛК.
  2. Сканирование программы: реализует логику программы, созданной пользователем.
  3. Сканирование выхода: либо включает, либо отключает все подключенные устройства вывода.
  4. Уборка: это включает связь с программными терминалами и внутреннюю диагностику.

Что такое устройства ввода/вывода?

Устройство ввода

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

  • Переключатели и кнопки
  • Датчики
  • Концевые выключатели
  • Датчики приближения
  • Фотоэлектрические датчики
  • Датчики состояния
  • Вакуумные выключатели
  • Температурные переключатели
  • Переключатели уровней
  • Реле давления

Устройства вывода

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

  • Клапаны
  • Пускатели двигателей
  • Сигналы и будильники
  • Огни стека
  • Реле управления
  • Насосы
  • Принтеры
  • Поклонники

Каковы основы системы ПЛК?

ЦП или процессор

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

Раздел ввода-вывода

Модули ввода-вывода действуют как реальный интерфейс данных между полем и ЦП. ПЛК знает реальное состояние полевых устройств и управляет ими с помощью соответствующих плат ввода/вывода.

Устройство для программирования

Карты ЦП можно подключить к устройствам программирования через канал связи через порт программирования на ЦП.
Операционная станция: Операционная станция используется для предоставления «рабочего окна» процессу ПЛК. Как правило, это отдельное устройство, например ПК, на котором установлено программное обеспечение человеко-машинного интерфейса.

Зачем мне использовать ПЛК?

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

Concept Systems — Модернизация ПЛК

Являясь признанным партнером Rockwell Automation Solutions, наши инженеры по системам управления обладают обширными знаниями во всем, от элементов управления PLC5 до инновационных контроллеров ControlLogix.

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

Эта глава из книги

Эта глава из книги

Эта глава из книги 

В этой главе рассматриваются следующие темы:

  • Знакомство с портами ввода-вывода. В этом разделе описываются типы портов ввода-вывода, используемые для отправки информации в процессор и память и обратно.
  • Устройства ввода. В этом разделе описываются важные характеристики клавиатур, мышей, биометрических считывателей и других устройств ввода.
  • Знакомство с типами дисплеев. В этом разделе описываются устройства вывода, такие как ЭЛТ, ЖК-дисплеи и проекторы данных.
  • Знакомство с типами видеоразъемов. В этом разделе рассказывается о распространенных видеоразъемах, таких как VGA, DVI и HDMI.
  • Основы печати. ​​В этом разделе описываются основы лазерных, струйных, ударных и термопринтеров.
  • Знакомство с мультимедийными устройствами. В этом разделе рассматриваются основные сведения о мультимедийных устройствах, таких как веб-камеры, цифровые камеры, MIDI-порты, микрофоны, звуковые карты и карты видеозахвата.

Устройства ввода-вывода (I/O) позволяют нам управлять компьютером и отображать информацию различными способами. Существует множество портов, которые подключают эти устройства к компьютеру, например, всем известный USB-порт. Чтобы полностью понять, как устанавливать, настраивать и устранять неполадки устройств ввода, вывода и мультимедиа, вам необходимо знать порты как свои пять пальцев. В этой главе вы узнаете о последовательных, параллельных, SCSI, USB, звуковых и FireWire портах и ​​соответствующих им устройствах; цель состоит в том, чтобы научить вас работать с различными интерфейсами, которые вы видите в ИТ-сфере.

Порты ввода/вывода

Слово "порт" часто используется в компьютерной индустрии и имеет множество различных значений в зависимости от того, о какой технологии идет речь. В этом разделе мы подробно описываем порты ввода/вывода (I/O). Порты ввода-вывода позволяют подключаться к оборудованию. Это оборудование может быть внутренним или внешним. Порты связаны с медными цепями и диапазонами памяти, которые обеспечивают обмен данными между ЦП, ОЗУ и самими портами. Общие порты ввода-вывода включают USB и FireWire. В этом разделе мы также обсудим SCSI, аудиосоединения, MIDI и коаксиальные порты RG-6. Хотя наиболее важным портом ввода-вывода в последних системах является порт USB, вы также можете столкнуться с другими портами, включая устаревшие порты, такие как последовательный и параллельный, о которых мы также говорим в этом разделе.

Порты универсальной последовательной шины (USB) в значительной степени заменили мышь и клавиатуру PS/2 (мини-DIN), последовательные (COM) и параллельные (LPT) порты в последних системах. Самые последние настольные системы имеют как минимум четыре USB-порта, а многие системы поддерживают до восьми или более USB-портов на передней и задней панели. На рис. 3-1 показана задняя панель типичной системы ATX, включая USB и другие типы портов, обсуждаемые в этой главе.

Рис. 3-1 Типичные порты ввода-вывода материнской платы ATX с устаревшими портами (последовательный, параллельный, мышь PS/2 и клавиатура), четырьмя портами USB, одним портом IEEE 1394, двумя портами Ethernet и аудиопортами.

В следующих разделах описываются типы портов USB и способы добавления дополнительных портов USB.

Типы USB-портов, скорости и технические характеристики

Существует три стандартных типа USB-портов, которые вам необходимо знать:

  • USB 1.1
  • USB 2.0 (также называемый высокоскоростным USB)
  • USB 3.0 (также называемый SuperSpeed ​​USB)

В стандартах используются те же типы кабелей и разъемов, которые показаны на рис. 3-2.

Рис. 3-2 USB-вилки и разъемы.

В кабелях USB используются два типа разъемов: серия A (также называемая типом A) и серия B (также называемая типом B). Разъемы серии A используются на корневых концентраторах USB (портах USB компьютера) и внешних концентраторах USB для поддержки USB-устройств. Разъемы серии B используются для устройств со съемным кабелем USB, таких как USB-принтер или универсальный (внешний) концентратор. Как правило, для подключения большинства устройств к корневому порту USB или внешнему концентратору требуется кабель серии A — серии B. Кабели серии A к серии A или серии B к серии B используются для удлинения стандартных кабелей и могут вызвать проблемы, если общая длина кабелей превышает рекомендуемые расстояния. Доступны адаптеры для преобразования кабелей серии B в кабели Mini-B, которые поддерживают конструкцию порта Mini-B, используемую во многих последних USB-устройствах.

Порты USB 1.1 работают с максимальной скоростью (полноскоростной USB) 12 мегабит в секунду (Мбит/с), низкоскоростные USB-устройства, такие как мышь или клавиатура, работают со скоростью 1,5 Мбит/с, а USB 2.0 (высокоскоростной USB) работают на максимальной скорости 480 Мбит/с. Порты USB 2.0 обратно совместимы с устройствами и скоростями USB 1.1 и управляют несколькими устройствами USB 1.1 лучше, чем порт USB 1.1. Порты USB 3.0 работают на максимальной скорости 4800 Мбит/с.

На упаковке USB и маркировке устройств часто используются официальные логотипы, показанные на рис. 3-3, чтобы отличать различные версии USB, которые обычно используются. Обратите внимание, что отрасль переходит от использования термина «USB 2.0» к термину «Hi-Speed ​​USB».

Рис. 3-3 Логотип USB (слева) используется для устройств, совместимых с USB 1.1, тогда как логотип Hi-Speed ​​USB (справа) используется для устройств, совместимых с USB 2.0. Устройства с этими логотипами сертифицированы организацией USB Implementers Forum, Inc.

В любой из версий USB один порт USB на плате расширения или материнской плате рассчитан на подключение до 127 устройств за счет использования многопортовых концентраторов и концентраторов с гирляндным подключением. Начиная с Windows 98, USB-устройства представляют собой устройства Plug and Play (PnP) с возможностью горячей замены (их можно подключать и отключать без выключения системы). Порты USB (каждая группа из двух портов подключена к корневому концентратору) на компьютере используют один IRQ и один адрес порта ввода-вывода, независимо от количества физических портов USB или устройств, подключенных к этим портам.

Номера IRQ и адреса ввода/вывода

IRQ — это запрос на прерывание, когда устройство прерывает работу ЦП, чтобы привлечь его внимание для отправки данных. Это делается с помощью линии ввода прерывания (фактическая схема). Устройствам или портам и связанным с ними управляющим чипам назначаются номера IRQ, которые помогают ЦП и контроллеру прерываний различать устройства. Например, микросхеме контроллера клавиатуры всегда назначается IRQ 1. Мыши PS/2 всегда назначается IRQ 12. Стандартные номера IRQ находятся в диапазоне от 0 до 15. Некоторые из них зарезервированы для использования в будущем владельцем компьютера; это помогает при расширении и добавлении устройств в систему.

Максимальная длина кабеля, подключенного к USB-устройствам со скоростью 12 Мбит/с или 480 Мбит/с, составляет пять метров, тогда как максимальная длина для низкоскоростных (1,5 Мбит/с) устройств, таких как мыши и клавиатуры, составляет три метра. Когда на компьютере под управлением Windows включен корневой концентратор USB, в диспетчере устройств Windows отображаются два устройства: корневой концентратор USB и универсальный хост-контроллер PCI-to-USB (USB 1.1) или расширенный хост-контроллер (USB 2.0). который использует один адрес IRQ и порта ввода-вывода, требуемый аппаратным обеспечением USB. Если к компьютеру подключен внешний концентратор USB, универсальный концентратор также отображается в диспетчере устройств Windows (см. Рисунок 3-4). Корневой концентратор поддерживает два порта USB. На рис. 3-4 перечислены два корневых концентратора, что указывает на наличие в системе четырех портов USB. Вы можете получить доступ к диспетчеру устройств, нажав «Пуск», щелкнув правой кнопкой мыши «Компьютер» (или «Мой компьютер» в старых операционных системах Windows) и выбрав «Управление». Откроется окно «Управление компьютером», и там находится «Диспетчер устройств». Вы также можете получить доступ к диспетчеру устройств из панели управления.

Рисунок 3-4 Раздел USB диспетчера устройств Windows XP в типичной системе. Обратите внимание на логотип USB в форме вилки рядом с категорией и каждым устройством.

Добавление портов USB

Нужно больше портов USB? Вы можете добавить порты USB одним из следующих способов:

  • Разъемы материнской платы для разъемов USB
  • Центры
  • Дополнительные карты

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

Универсальные концентраторы USB позволяют подключать несколько устройств к одному порту USB и увеличивать расстояние между устройством и портом USB. Существует два типа общих концентраторов:

Концентраторы с питанием от шины могут быть встроены в другие устройства, например мониторы и клавиатуры, или могут быть автономными устройствами. Концентратор с питанием от шины распределяет как сигналы USB, так и питание через шину USB на другие устройства. Разные USB-устройства потребляют разное количество энергии, и некоторым устройствам требуется больше энергии, чем другим. Концентратор с питанием от шины обеспечивает мощность не более 100 миллиампер (мА) для каждого подключенного к нему устройства. Таким образом, некоторые устройства выходят из строя при подключении к концентратору с питанием от шины.

С другой стороны, концентратор с автономным питанием имеет собственный источник питания; он подключается к настенной розетке переменного тока. Он может обеспечить до 500 мА мощности для каждого подключенного к нему устройства. Концентратор с автономным питанием поддерживает более широкий спектр USB-устройств, поэтому рекомендуется по возможности использовать его вместо концентратора с питанием от шины.

Вы также можете добавить порты USB с помощью платы расширения. Если у вас есть свободный слот в компьютере и вы знаете, какой это слот, вы можете легко вставить карту адаптера, которая имеет дополнительные два, четыре или восемь портов USB.Главное — убедиться, что плата адаптера полностью совместима со слотом расширения на материнской плате. Например, если у вас есть слот расширения PCI Express x2, вам необходимо приобрести плату адаптера PCI Express x2. Подробнее о платах расширения и слотах мы поговорим в главе 4, "Материнские платы и шины".

Серийный номер (COM)

Последовательный порт, также известный как порты RS-232 или COM (связь), исторически конкурировал с параллельным портом по универсальности (см. рис. 3-5).

Рис. 3-5. 9-контактный последовательный порт (разъем DB-9M, вверху) и 25-контактный последовательный порт (разъем DB-25M, внизу) на типичном удлинителе от платы с несколькими входами-выходами.

Последовательные порты использовались для подключения следующего:

  • Внешние модемы
  • Последовательная мышь или указывающие устройства, такие как трекболы или сенсорные панели.
  • Плоттеры
  • Принтеры этикеток
  • Последовательные принтеры
  • Док-станции для КПК
  • Цифровые камеры
  • Соединения ПК-ПК, используемые программами передачи файлов, такими как Direct Cable Connection, LapLink и Interlink

Разъем DB-9 на самом деле представляет собой разъем DE-9, но в просторечии известен как «DB-9». Чем меньше разъем D-sub, тем выше буква.

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

Последовательные порты бывают двух видов:

Любой тип можно адаптировать к другому типу разъема с помощью недорогого адаптера (см. рис. 3-6). Разница возможна, потому что для последовательной связи требуется всего несколько проводов. В отличие от параллельных принтеров, в которых используется стандартный кабель, для каждого типа последовательного устройства используется специальный кабель. Разъемы DB-9M используются во всех системах, кроме самых старых.

Рис. 3-6 Типичный преобразователь последовательного порта DB-25F в DB-9M. Разъем DB-25F (внизу слева) подключается к 25-контактному последовательному порту и преобразует его сигналы для использования устройствами, подключенными к порту DB-9M на другом конце (вверху справа).

Последовательное соединение должно иметь кабель, соединяющий устройство с портом. Затем устройство использует настройки IRQ и порта ввода-вывода, назначенные последовательному порту. Теперь давайте обсудим кабели и настройки.

Типы последовательных кабелей

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

Некоторые из наиболее распространенных примеров последовательных кабелей включают

  • Нуль-модемный кабель (передача данных)
  • Кабель модема

Нуль-модемный кабель позволяет двум компьютерам связываться друг с другом напрямую, пересекая провода приема и передачи (это означает, что два компьютера могут отправлять и получать данные, как в компьютерной сети, но намного медленнее). Наиболее известной из этих программ является LapLink, но утилиты Windows Direct Cable Connection/Direct Serial Connection также могут использовать этот тип кабеля. Хотя эти программы поддерживают передачу по последовательному кабелю, передача через параллельный порт выполняется намного быстрее, а передача по USB намного быстрее, чем через параллельный порт; эти методы прямого подключения рекомендуются для большинства версий Windows. Однако Windows NT 4.0 и более ранние версии не поддерживают использование параллельного порта для передачи файлов, поэтому необходимо использовать нуль-модемный кабель, например, показанный на рис. 3-7.

Рис. 3-7. Последовательный кабель LapLink с разъемами для 25-контактного или 9-контактного последовательного порта. Требуется всего три провода, что позволяет сделать кабель намного тоньше, чем 9-контактный последовательный удлинитель, также показанный на рисунке.

Кабель модема используется для подключения внешнего модема к последовательному порту. Некоторые модемы имеют встроенный кабель, но для других требуется использовать кабель DB-9F — DB-25M от 9-контактного разъема последовательного порта к 25-контактному порту модема. А серийные принтеры? Эти принтеры используются в основном со старыми терминалами, а не с ПК, и, поскольку разные принтеры используют разные выводы, их кабели должны изготавливаться на заказ. На самом деле, я построил несколько сам. К счастью, самые современные терминалы используют параллельные или USB-принтеры.

Стандартные IRQ и адреса портов ввода/вывода

Для последовательных портов требуются два аппаратных ресурса: IRQ и адрес порта ввода-вывода.В Таблице 3-1 перечислены стандартные адреса IRQ и портов ввода-вывода, используемые для COM-портов 1–4. Некоторые системы и дополнительные карты позволяют использовать альтернативные IRQ либо с помощью блоков перемычек (старые карты), либо с помощью конфигурации программного обеспечения/диспетчера устройств (более новые карты).

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

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

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

Устройства ввода

Устройство ввода может отправлять данные на другое устройство, но не может получать данные с другого устройства. Ниже приведены примеры устройств ввода.

  • Клавиатура и мышь — принимает ввод данных от пользователя и отправляет эти данные (ввод) на компьютер. Они не могут принимать или воспроизводить информацию (вывод) с компьютера.
  • Микрофон — принимает звук, генерируемый источником входного сигнала, и отправляет этот звук на компьютер.
  • Веб-камера. Получает изображения, созданные тем, на что она направлена ​​(ввод), и отправляет эти изображения на компьютер.

Дополнительную информацию и примеры см. на странице устройств ввода.

Устройства вывода

Устройство вывода может получать данные от другого устройства и генерировать выходные данные с этими данными, но не может отправлять данные на другое устройство. Ниже приведены примеры устройств вывода.

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

Дополнительную информацию и примеры см. на странице устройства вывода.

Устройства ввода/вывода

Устройство ввода/вывода может получать данные от пользователей или другого устройства (ввод) и отправлять данные на другое устройство (вывод). Ниже приведены примеры устройств ввода/вывода.

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

Наши редакторы рассмотрят то, что вы отправили, и решат, нужно ли пересматривать статью.

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

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

Как Интернет перемещает информацию между компьютерами? Какая операционная система сделана Microsoft? Войдите в этот тест и проверьте свои знания о компьютерах и операционных системах.

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

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

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

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

Редакторы Британской энциклопедии Эта статья была недавно отредактирована и обновлена ​​Эриком Грегерсеном.

Много вкусов. В общих чертах их можно разделить на: Блочные устройства Дисковые накопители, ленточные накопители, USB-накопители и т. д. На абстрактном уровне они выглядят как большая куча байтов, организованных в блоки определенного фиксированного размера. (Технически использование блоков — это оптимизация для амортизации затрат на управление многими байтами данных.) Типичные операции: чтение (блоки), запись (блоки), поиск (следующий блок для чтения/записи). Символьные устройства

Также называются потоковыми устройствами. Клавиатуры, модемы, принтеры, звуковые карты, роботы, пушки USB Nerf. Они выглядят как поток байтов без особой структуры, навязанной устройством. Типичные операции: чтение, запись. Некоторые могут предоставлять очень сложную функциональность в дополнение к тому, что предоставляется необработанным устройством; Драйверы терминала Unix являются хорошим (?) Примером. Сетевые устройства Несколько похожи на потоковые устройства, но отличаются встроенными высокоуровневыми сетевыми протоколами, которые могут добавлять дополнительную структуру (например, дейтаграммы UDP, соединения TCP).

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

>

Есть также несколько проблем, которые быстро возникают при разработке пользовательского интерфейса ввода-вывода: асинхронный и синхронный ввод-вывод

Асинхронный ввод-вывод не блокируется: программа (или ЦП) продолжает работу после запуска операции ввода-вывода и получает уведомление об окончании операции с помощью прерывания. Большинство операций ввода-вывода на аппаратном уровне асинхронны — это хорошо, потому что ввод-вывод медленный. Но программировать асинхронный ввод-вывод на уровне пользователя сложно. Таким образом, ядро ​​обычно представляет синхронный или блокирующий интерфейс, в котором низкоуровневые асинхронные операции кажутся синхронными благодаря простой возможности блокировки ожидающих их процессов. Буферизация Данные с устройств ввода-вывода часто поступают в неудобное время или в неудобных единицах измерения. Использование буферов в устройствах и в ядре может частично скрыть это от пользователя.Однако хранение данных в буферах может замедлить ввод-вывод из-за необходимости чрезмерного копирования, поэтому приходится идти на компромиссы. Совместное использование Можно ли совместно использовать или мультиплексировать устройство ввода-вывода между несколькими процессами? Если это так, ядро ​​должно взять на себя ответственность за обработку нескольких запросов. Примеры совместно используемых устройств включают дисковые накопители (обычно через высокоуровневый интерфейс файловой системы), дисплеи (через оконные системы) или аудиоустройства (если вы не используете старую версию Linux). Другие устройства, такие как ленточные накопители или модемы, могут быть недоступны для совместного использования, и ядро ​​должно обеспечить, чтобы только один процесс мог использовать каждое из них одновременно. Именование

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

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

2.1. Контроллеры

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

2.2. Инструкции ввода и вывода

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

  • Можно использовать отдельную низкоскоростную шину для ввода-вывода и высокоскоростную шину для памяти.

2.3. Ввод/вывод с отображением памяти

Здесь вместо использования отдельного адресного пространства для ввода-вывода мы используем то же адресное пространство, что и для памяти. Аппаратное обеспечение преобразования адресов берет на себя ответственность за перенаправление адресов ввода-вывода на устройства ввода-вывода.

  • Ввод/вывод выглядит так же, как доступ к памяти, который мы уже знаем, как делать.
  • Обработка ввода-вывода как памяти может плохо взаимодействовать с системой кэширования.
  • Не допускается использование нескольких автобусов.
  • Переносит сложность с ЦП на оборудование шины.

2.4. Гибридный подход

Одним из распространенных подходов является использование как инструкций ввода-вывода, так и ввода-вывода с отображением памяти. Идея состоит в том, что инструкции ввода-вывода можно использовать для небольших значений, которые быстро изменяются (например, регистры управления), а отображение памяти можно использовать для больших фрагментов данных, которые считываются или записываются в большом количестве (например, память дисплея). Так, например, архитектура ПК выделяет диапазон памяти 0xA0000–0xFFFF0 (640K–1M) для ввода-вывода с отображением памяти, и именно здесь находится память дисплея VGA и т. д.

Этот подход по-прежнему требует, чтобы контроллер шины перенаправлял адреса ввода-вывода, отображаемые в памяти, на шину ввода-вывода.

2.5. Прямой доступ к памяти (DMA)

Для блочных устройств часто имеет смысл обойти ЦП и предоставить им прямой доступ к памяти. Обычно это делается путем создания моста между шиной ввода-вывода и шиной памяти в виде контроллера прямого доступа к памяти. Контроллер прямого доступа к памяти обращается к устройствам ввода/вывода точно так же, как ЦП: он посылает те же инструкции управления и считывает данные по той же шине. Но он гораздо более ограничен в том, что он делает с данными; все, что он может сделать, это поместить его в память по физическому адресу памяти, указанному ЦП (через управляющие регистры на контроллере DMA, доступ к которому ЦП осуществляет через шину ввода-вывода), и выдать прерывание, когда операция выполнена.

Обратите внимание: поскольку ЦП и контроллер прямого доступа к памяти используют одни и те же шины, необходим некоторый механизм управления параллелизмом, чтобы они не мешали друг другу. (Аналогичная проблема возникает с несколькими процессорами). Здесь есть несколько вариантов того, насколько агрессивно контроллер DMA относится к захвату шины. Вежливый DMA-контроллер может ограничиться кражей циклов, время от времени захватывая шину на несколько тактов, чтобы ЦП никогда не терял контроль над шиной более чем на несколько тактов. Менее вежливый, но более эффективный контроллер прямого доступа к памяти может использовать пакетный режим, когда он захватывает память и шины ввода-вывода на время, достаточное для завершения операции чтения или записи полного блока или, возможно, даже нескольких таких операций. Недостатком этого подхода является то, что ЦП может зависнуть, потому что в его кеше недостаточно данных для продолжения работы, пока операция ввода-вывода не будет завершена.

Использование контроллера прямого доступа к памяти усложняет как оборудование, так и ОС.Выгода заключается в том, что он снимает нагрузку с ЦП, что может позволить ему выполнять свои собственные задачи, интенсивно использующие ЦП.

ЦП управляет всем сам. Контроллер устройства — это жалкая заглушка, единственная цель которой — транслировать команды шины ЦП непосредственно на оборудование ввода-вывода. Примерами являются WinModems, некоторые контроллеры принтеров, некоторые очень ранние примитивные графические контроллеры. Преимущество: позволяет использовать более дешевое оборудование; может позволить очень сложное программирование ввода-вывода (удобно с модемами). Недостаток: это как нанять механика Формулы-1 для замены масла; ЦП должен опрашивать устройство ввода-вывода, чтобы узнать, нужно ли ему что-то делать; в худшем случае устройство ввода-вывода съедает весь ЦП, блокируя все остальное, пока выполняется операция ввода-вывода. Контроллер устройств ввода-вывода, управляемый прерываниями, выполняет большую часть работы, уведомляя ЦП о завершении. CPU по-прежнему должен сам извлекать данные. Ввод-вывод на основе прямого доступа к памяти Контроллер прямого доступа к памяти берет на себя роль ЦП, прерывая ЦП, когда данные доступны в памяти. Преимущество: минимальная нагрузка на процессор, особенно в виде меньшего количества прерываний, так как DMA-контроллер может выполнять большую буферизацию. Недостаток: максимальная аппаратная сложность.

С самого начала у нас есть обработчики прерываний

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

Интерфейс более высокого уровня, который переводит видимые пользователю абстракции устройств (например, блочные устройства) в низкоуровневые заклинания, отправляемые контроллерам устройств. Обычно в ядре из-за необходимости в привилегированных инструкциях ввода-вывода. В портативных операционных системах часто разделяются на верхнюю половину, которая не зависит от машины, и нижнюю половину, которая зависит от архитектуры ЦП. Нижняя половина выполняет машинно-специфические инструкции ввода-вывода и обычно обеспечивает внутреннюю часть процедуры обслуживания прерывания. Аппаратно-независимое программное обеспечение ввода-вывода Все, что не зависит от конкретных деталей устройства, помимо его абстрактного описания, например, символ или блочное устройство. Это может включать механизмы более высокого уровня, такие как сетевые стеки или файловые системы, а также механизмы более низкого уровня, такие как управление виртуальной памятью или системы планирования ввода-вывода. Библиотеки ввода-вывода на уровне пользователя

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

4.1. Архитектура драйвера устройства

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

4.1.1. Как выглядит модуль драйвера устройства

Сначала нам нужно установить стандартный интерфейс. Для блочного устройства в стиле Unix у нас может быть что-то вроде:

Символьное устройство было бы аналогичным, за исключением того, что оно не обеспечивало бы seek.

По сути, это реализация на C таблицы методов C++ или Java. Лазейка ioctl предназначена для предоставления дополнительных методов для устройств, которые в них нуждаются (например, для установки параметров на диске, отключения автоматического огня на пушке Nerf или переключения светодиодов на клавиатуре). В реальном объектно-ориентированном языке программирования это было бы реализовано путем создания подклассов.

Поскольку разработка ядра продолжается и определенные операции начинают появляться на нескольких устройствах, они, скорее всего, переместятся из контейнера ioctl в основную структуру. Конечным результатом может быть что-то вроде структуры данных file_operations из ядра Linux 2.6 (см. /usr/src/linux/include/linux/fs.h):

Здесь аргументы struct file * являются указателями на внутреннюю структуру данных ядра, связанную с устройством (которое притворяется файлом с точки зрения файловой системы), эквивалентно self или this в объектно-ориентированном языке. Это позволяет использовать одни и те же процедуры драйвера для нескольких похожих устройств.

4.1.2. Загрузка драйвера устройства

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

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

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

4.1.3. Риски

Загружаемые модули ядра представляют наибольший риск для целостности ядра, поскольку они часто пишутся обезьянами, но запускаются с полным доступом к внутренним компонентам ядра. Эмпирическое правило гласит, что драйверы устройств содержат на 5-10 ошибок больше на тысячу строк кода, чем основной код ядра, и, в отличие от пользовательского процесса, неисправный драйвер устройства может вывести из строя всю систему. В худшем случае модули ядра могут быть злонамеренно использованы для создания руткитов и подобных вредоносных программ. Как минимум это означает, что мы не можем позволить никому загружать новые модули в ядро. В долгосрочной перспективе возникает необходимость обеспечить лучшее сдерживание драйверов устройств либо путем использования строго типизированных языков и/или подписанного кода для ограничения или, по крайней мере, проверки их поведения, либо путем вытеснения их в менее деструктивную часть системы. используя обман микроядра.

4.2. Аппаратно-независимые компоненты ввода/вывода

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

Давайте посмотрим, как можно написать драйвер для консоли (со встроенным VGA-дисплеем) и клавиатуры на ПК. Мы можем захотеть или не захотеть разделить их на отдельные устройства, но на данный момент давайте представим, что мы объединили их вместе как односимвольное устройство, где запись на устройство выводит на экран, а чтение с устройства считывает символы с клавиатура.

5.1. Вывод

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

  1. Принимает буфер символов и копирует их в экранную память в местонахождение текущего курсора.
  2. Обновляет положение курсора.
  3. При необходимости переворачивает или прокручивает экран (что может потребовать значительного копирования!)

Эта подпрограмма обычно вызывается внутри потока ядра какого-либо процесса после того, как она была отправлена ​​системным вызовом write более высокого уровня.

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

На практике стоимость выполнения нескольких системных вызовов означает, что все ОС, кроме самых ленивых, предоставляют некоторый механизм для обработки escape-последовательностей. Этот выбор аналогичен «маленькому языку», который появляется в спецификаторах формата printf (или операторах FORTRAN FORMAT перед ними), где чисто процедурный интерфейс снова заменяется обработкой строк.

5.2. Ввод

    Обработка прерывания. Как минимум, нам нужно где-то сохранить входящий скан-код.

Интересно, что у нас есть много вариантов, где выполнять эти операции. Если наша цель состоит в том, чтобы выйти из обработчика прерывания как можно быстрее, мы могли бы просто выполнить здесь шаг 1, вставив входящий код сканирования куда-нибудь в кольцевой буфер и немедленно вернувшись. Затем этапы трансляции и доставки могут выполняться любым из (а) потоком ядра, который время от времени просыпается, когда кольцевой буфер не пуст (семафор!) и выполняет трансляцию (подход монолитного ядра); (б) демон пользовательского пространства, который делает то же самое (микроядерный подход); или (c) стандартная библиотечная подпрограмма, использующая сопоставление адресного пространства, которое обеспечивает прямой доступ к буферу необработанного кода сканирования (экзоядерный подход). Чем дальше мы делаем процесс перевода и доставки от ядра ядра, тем больше контроля мы даем пользователю (например, возможность заменять различные схемы перевода, возможность вставлять поддельные события клавиатуры во входной поток, возможность создадим причудливый демон диспетчеризации клавиатуры, который отправляет все гласные в процесс 1 и все согласные в процесс 2 — кто знает?), но тем больше мы накладываем затрат.Для ввода с клавиатуры затраты, вероятно, будут довольно низкими, независимо от того, что мы делаем, поэтому, вероятно, лучше всего использовать простой подход. Это, вероятно, включает в себя предоставление необработанного непереведенного ввода или выполнение перевода на уровне ядра, возможно, даже в обработчике прерываний (поскольку это не очень дорого).

У нас также есть независимый выбор когда доставлять персонажей. Многие процессы могут заботиться только о получении символов, когда пользователь нажимает ввод, и могут требовать, чтобы ОС обрабатывала такие детали, как буферизация входящих символов и обработка простых команд редактирования. Есть хороший шанс, что процесс также захочет, чтобы ОС выводила на экран каждый введенный символ (по крайней мере, некоторое время). Логичным ответом будет предоставление сложного драйвера терминала, который справляется со всеми этими задачами, доставляя предварительно обработанные строки текста в процесс с помощью системных вызовов read (если драйвер терминала находится в ядре) или Механизм IPC (если это не так — в этом случае мы можем дать механизму IPC файловый интерфейс, чтобы принимающий процесс не заметил). Чем сложнее этот драйвер терминала, тем больше стимулов для его удаления из ядра, чтобы ошибки не портили ничего другого, но тем больше стимулов для того, чтобы оставить его в ядре, чтобы он имел быстрый доступ к -данные ядра. Неясно, в пределе, когда драйвер терминала будет включать оконную систему, какой подход лучше; широко используются как внутренние оконные системы (Windows), так и внешние оконные системы (X11, используемые в Linux и OS/X).

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

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

Читайте также: