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

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 12:07, 3 июня 2017.

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

Компоненты устройства ввода-вывода

Компоненты устройства ввода-вывода - устройство ввода-вывода обычно состоят из двух компонентов: самого устройства и контроллера.

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

Устройство имеет простые интерфейсы, и должно удовлетворять двум обязательным условиям: [Источник 1]

  1. Обладать простыми возможностями;
  2. Отвечать общим стандартам.

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

Типы устройств ввода-вывода - обычно выделяют 2 типа устройств ввода-вывода - блок-ориентированные и байт-ориентированные. [Источник 2]

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

Драйвер устройств

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

Цикл жизни драйвера устройств:

  • Инициализация - получение ресурсов драйвером;
  • Поиск аппаратуры - получение аппаратуры от ядра или нахождение им самостоятельно;
  • Активация - драйвер начинает работу;
  • Деактивация - прекращение обслуживания запросов;
  • Выгрузка - освобождение всех ресурсов ядра, драйвер больше не существует.

Модели построения драйвера устройств:

  1. Поллинг
  2. Прерывание
  3. Нити

Рассмотрим каждую из них.

Поллинг

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

Прерывание

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

Нити

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

Способы установки драйвера в ядро

  1. Заново скомпоновать ядро вместе с новым драйвером и затем перезагрузить систему.
  2. Создать в специальном файле операционной системы запись, сообщающую ей о том, что требуется, и затем следует перезагрузка системы. Во время перезагрузки ОС сама находит нужный ей драйвер и загружает его.
  3. Динамический способ загрузки драйвера - ОС принимает самостоятельно новые драйверы в процессе работы и оперативно устанавливает их, при этом не требуя ее перезагрузки.

Ввода и вывод данных

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

Способ 1 : ( способ активного ожидания) - пользовательская программа производит системный вызов, затем драйвер приступает к процессу ввода-вывода. При этом он выполняет короткий цикл, постоянно спрашивая устройство и отслеживая завершение операции. Именно опрос устройства и есть самый главный недостаток данного способа. После завершения операции ввода-вывода драйвер помещает данные в нужное место и возвращает управление.

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

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

Способ 3 : в данном способе используется специальный контроллер прямого доступа к памяти (Direct Memory Access (DMA) ), который может управлять потоками битов между оперативной памятью и некоторыми контроллерами без постоянного вмешательства центрального процессора. Центральный процессор, в свою очередь, выполняет настройку контроллера DMA, сообщая ему о том, сколько байтов следует передать, какое устройство и адрес памяти задействовать, также в каком направлении передать данные, а затем дает ему возможность действовать самостоятельно[Источник 3].

Примеры устройств ввода-вывода

  • жесткий диск (винчестер) (входящий в него дисковод) - для ввода-вывода информации на жесткие пластины жесткого диска;
  • флэшка (флешка или USB-флеш-накопитель) - для ввода-вывода информации на микросхему памяти флэшки
  • дисководод оптических дисков - для ввода-вывода информации на оптические диски,
  • дисководод гибких дисков - для ввода-вывода информации на дискеты,
  • стример - для ввода-вывода информации на картриджи (ленточные носители);
  • кардридер - для ввода-вывода информации на карту памяти;
  • многофункциональное устройство (МФУ) - копировальный аппарат с дополнительными функциями принтера (вывод данных) и сканера (ввод данных);
  • модем (телефонный) - для связи компьютеров через телефонную сеть;
  • сетевая плата (сетевая карта или сетевой адаптер) - для подключения персонального компьютера к сети и организации взаимодействия с другими устройствами сети (обмен информацией по сети)[Источник 4].

Источники

  1. Операционные системы. Физическая организация устройства ввода-вывода сайт. URL: http://citforum.ru/operating_systems/sos/glava_9.shtml (дата обращения: 18.03.2017).
  2. Анатомия драйвера сайт. URL: https://habrahabr.ru/post/282564/ (дата обращения: 18.03.2017).
  3. Таненбаум Э., Бос Х. Устройства ввода-вывода // Современные операционные системы. 4-е изд. - СПб.: Питер, 2015. - С.51-55.(дата обращения: 05.03.2017).
  4. infoegehelp.ru : Примеры устройств ввода-вывода / сайт. URLРежим доступа: http://infoegehelp.ru/index.php?option=com_content&view=article&id=248:vvod-vivod&catid=50:ustr-comp&Itemid=100.ru (дата обращения: 07.03.2017).