Что такое система ввода
Ввод/вывод
С информатике, ввод/вывод (в англ. языке часто используется сокращение I/O — input/output) означает взаимодействие между обработчиком информации (например, компьютер) и внешним миром, который может представлять как человек, так и любая другая система обработки информации. Ввод — сигнал или данные, полученные системой, а вывод — сигнал или данные, посланные ею (или из нее). Термин также может использоваться как обозначение (или дополнение к обозначению) определенного действия: «выполнять ввод/вывод» означает выполнение операций ввода или вывода. Устройства ввода-вывода используются человеком (или другой системой) для взаимодействия с компьютером. Например, клавиатуры и мыши — специально разработанные компьютерные устройства ввода, а мониторы и принтеры — компьютерные устройства вывода. Устройства для взаимодействия между компьютерами, как модемы и сетевые карты, обычно служат устройствами ввода и вывода одновременно.
Стоит отметить, что назначение устройства в качестве устройства ввода или вывода зависит от перспективы. Мыши и клавиатуры принимают физическое взаимодействие, осуществляемое человеком-пользователем (кстати, относительно него это будут действия по выводу информации), и превращает его в сигналы, понятные компьютеру. Вывод информации из этих устройств является вводом ее в компьютер. Аналогично, принтеры и мониторы получают на входе сигналы, которые выводит компьютер. Затем они преобразуют эти сигналы в такой вид, который человек сможет увидеть или прочитать. (Для людей-пользователей процесс чтения или просмотра подобных вариантов представления информации является вводом или получением информации).
В компьютерной архитектуре объединение процессора и основной памяти (то есть памяти, из которой процессор может читать и записывать в нее напрямую с помощью особых инструкций) составляет «мозг» компьютера, и с этой точки зрения, любой обмен информацией с этим объединением, например, с дисковым накопителем, подразумевает ввод-вывод. Процессор и его сопутствующие электронные цепи реализуют ввод-вывод с распределением памяти, используемый в низкоуровневом программировании при реализации драйверов устройств.
Высокоуровневая операционная система и программное обеспечение используют другие, более абстрактные концепции и примитивы ввода-вывода. Например, большинство операционных систем реализуют прикладные программы через концепцию файлов. Языки программирования Си и C++, а также операционные системы семейства Unix, традиционно абстрагируют файлы и устройства в виде потоков данных, из которых можно читать и в которые можно записывать, или и то и другое вместе. Стандартная библиотека языка Си реализует функции для работы с потоками для ввода и вывода данных.
Альтернативой специальным простейшим функциям служит монада ввода-вывода, которая позволяет программам просто описывать ввод-вывод, а действия выносятся за рамки программы. Это весьма примечательно, так как функции ввода-вывода имеют побочные эффекты в любом языке программирования, но сейчас получило распространение чисто функциональное программирование.
Содержание
Интерфейс ввода-вывода
Интерфейс ввода-вывода требует управления процессором каждого устройства. Интерфейс должен иметь соответствующую логику для интерпретации адреса устройства, генерируемого процессором.
Установление контакта должно быть реализовано интерфейсом при помощи соответствующих команд типа (ЗАНЯТ, ГОТОВ, ЖДУ), чтобы процессор мог взаимодействовать с устройством ввода-вывода через интерфейс.
Если существует необходимость передачи различающихся форматов данных, то интерфейс должен уметь конвертировать последовательные (упорядоченные) данные в параллельную форму и наоборот.
Должна быть возможность для генерации прерываний и соответствующих типов чисел для дальнейшей обработки процессором (при необходимости).
Компьютер, использующий ввод-вывод с распределением памяти, обращается к аппаратному обеспечению при помощи чтения и записи в определенные ячейки памяти, используя те же самые инструкции языка ассемблера, которые компьютер обычно использует при обращении к памяти.
Режимы адресации
Существует несколько способов, которыми данные могут быть прочитаны или помещены в память. Каждый метод представляет собой режим адресации и имеет собственные преимущества и ограничения.
Режимы адресации делятся на множество типов, как например, прямая адресация, косвенная (непрямая) адресация, непосредственная адресация, индексная адресация, базовая адресация, базово-индексная адресация, предполагаемая адресация и т. д.
Прямая адресация
В этом типе адрес данных сам является частью инструкции. Когда процессор декодирует инструкцию, он получает адрес ячейки памяти, откуда может быть считана (куда может быть записана) требуемая информация.
В данном случае операнд Addr указывает на область памяти, содержащее данные и копирует их в указанный регистр Reg.
Косвенная адресация
В этом случае адрес может храниться в регистре. Инструкции будут обращаться к регистру, содержащему адрес. То есть, для получения данных, инструкция должна декодировать данные соответствующего регистра. Содержимое регистра будет обработано как адрес, используя который, будет считана/записана информация из/в соответствующую область памяти.
Ввод-вывод с распределением (вводимой информации) по портам (памяти)
Ввод-вывод с распределением (вводимой информации) по портам (памяти) обычно требует применения инструкций, специально разработанных для выполнения операций ввода-вывода.
Система ввода вывода, оперативная память компьютера.
В этой статье речь пойдет о таких темах как система ввода вывода, а также мы поговорим об оперативной памяти компьютера, разберемся, как она взаимодействует с системой ввода вывода.
Система ввода вывода
Одной из главных задач ОС является обеспечение обмена данными между приложениями и периферийными устройствами компьютера. В современных ОС эту функцию выполняет подсистема ввода/вывода.
Основные компоненты подсистемы ввода/вывода:
Подсистема ввода/вывода мультипрограммной ОС при обмене данными с внешними устройствами компьютера должна решать ряд общих задач, из которых наиболее важными являются следующие:
Организация параллельной работы устройств ввода/вывода и процессора
Каждое устройство ввода/вывода вычислительной системы снабжено устройством управления – контроллером. Контроллер взаимодействует с драйвером – системным программным модулем, предназначенным для управления данным устройством.
Контроллер периодически принимает от драйвера выводимую на устройство информацию, а также команды управления, которые говорят о том, что с этой информацией нужно сделать. Под руководством контроллера устройство может выполнять некоторое время свои операции автономно, не требуя внимания со стороны ЦП. Это время зависит от многих факторов – объема выводимой информации, степени интеллектуальности управляющего устройством контроллера, быстродействия устройства и т.п. Даже самый примитивный контроллер, выполняющий простые функции, обычно тратит довольно много времени на реализацию подобной функции после получения очередной команды от процессора. Это же справедливо и для сложных контроллеров, т.к. скорость работы любого устройства ввода/вывода обычно существенно ниже скорости работы процессора.
Процессы, происходящие в контроллерах, протекают в периоды между выдачей команд независимо от ОС. От подсистемы ввода/вывода требуется спланировать в реальном масштабе времени (в котором работают внешние устройства) запуск и приостановку большого количества разнообразных драйверов, обеспечив приемлемое время реакции каждого драйвера на независимые события контроллера. С другой стороны, необходимо минимизировать загрузку процессора задачами ввода-вывода, оставив как можно больше процессорного времени на выполнение пользовательских потоков.
Данная задача обычно решается на основе многоуровневой приоритетной схемы обслуживания по прерываниям.
Согласование скоростей обмена и кэширование данных
Накопители на магнитных дисках обладают крайне низкой скоростью по сравнению с быстродействием центральной части компьютера: средняя скорость работы процессора с ОП на 2-3 порядка выше, чем средняя скорость передачи данных из внешней памяти в ОП.
Буферизация только на основе ОП в подсистеме ввода-вывода оказывается недостаточной – разница между скоростью обмена с ОП, куда процессы помещают данные для обработки, и скоростью работы внешнего устройства часто становится слишком значительной и объема ОП просто может не хватить.
Для того чтобы сгладить такое сильное несоответствие в производительности основных подсистем, используется буферирование и/или кэширование данных.
Часто в качестве буфера используют используется дисковый файл, называемый также спул-файлом (spool – шпулька).
Пример. Организация вывода данных на принтер.
Другое решение этой проблемы – использование большой буферной памяти в контроллерах внешних устройств. Такой подход особенно полезен в тех случаях, когда помещение данных на диск слишком замедляет обмен (или когда данные выводятся на сам диск).
Пример. Буферная память в контроллерах графических дисплеев.
Кэширование исключительно полезно в том случае, когда программа неоднократно читает с диска одни и те же данные. После того как они один раз будут помещены в кэш, обращений к диску больше не потребуется и скорость работы программы значительно возрастет.
Разделение устройств и данных между процессами
Устройства ввода/вывода могут предоставляться процессам как в монопольное, так и в совместное (разделяемое) использование. При этом ОС должна обеспечивать контроль доступа теми же способами, что и при доступе процессов к другим ресурсам вычислительной системы – путем проверки прав пользователя или группы пользователей, от имени которых действует процесс, на выполнение той или иной операции над устройством. Например, определенной группе пользователей последовательный порт разрешено захватывать монопольное владение, а другим пользователям это запрещено.
ОС может контролировать доступ не только к устройству в целом, но и к отдельным порциям данных, хранимых или отображаемых этим устройством. Диск является типичным примером устройства, для которого важно контролировать доступ не к устройству в целом, а к отдельным каталогам и файлам.
Разнообразие устройств ввода-вывода делают особенно актуальной функцию ОС по созданию логического интерфейса между периферийными устройствами и приложениями. Практически все современные ОС поддерживают в качестве основы такого интерфейса файловую модель периферийных устройств, когда любое устройство выглядит для прикладного программиста последовательным набором байт, с которым можно работать с помощью унифицированных системных вызовов (например, read и write), задавая имя файла-устройства и смещения от начала последовательности байт.
Обмен с любым внешним устройством выглядит как обмен с файлом, имеющим имя и представляющим собой неструктурированную последовательность байтов. В качестве файла может выступать как реальный файл на диске, так и алфавитно-цифровой терминал, печатающее устройство или сетевой адаптер.
Пример.
PRN, LPT1 – для порта принтера, CON – для клавиатуры (символьные имена, а для ОС – это файлы).
Привлекательность модели файла-устройства состоит в ее простоте и унифицированности для устройств любого типа, однако во многих случаях для программирования операций ввода-вывода некоторого устройства она является слишком бедной. Поэтому данная модель часто используется только в качестве базиса, над которым подсистема ввода-вывода строит более содержательную модель устройств конкретного типа.
Достоинством подсистемы ввода/вывода любой универсальной ОС является наличие разнообразного набора драйверов для наиболее популярных периферийных устройств.
Прекрасно спланированная и реализованная ОС может потерпеть неудачу на рынке только из-за того, что в ее состав не включен достаточный набор драйверов и администраторы и пользователи вынуждены искать нужный им драйвер или заниматься его разработкой (первые версии OS/2).
Таким образом, для пользователя очень важно, чтобы ОС включала как можно больше разнообразных драйверов, так как это гарантирует возможность подключения к компьютеру большого числа внешних устройств различных производителей.
Драйвер взаимодействует, с одной стороны, с модулями ядра ОС (модулями подсистемы ввода-вывода, модулями системных вызовов, модулями подсистем управления процессами и памятью), а с другой стороны – с контроллерами внешних устройств. Поэтому существует два типа интерфейсов:
Для поддержки процесса разработки драйверов ОС обычно выпускается так называемый пакет DDK (Driver Development Kit), представляющий собой набор соответствующих инструментальных средств – библиотек, компиляторов и отладчиков.
Кроме проблемы разработки новых драйверов существует также проблема включения драйвера в состав модулей работающей ОС, то есть динамической загрузки-выгрузки драйвера. Так как набор потенциально поддерживаемых данной ОС периферийных устройств всегда существенно шире набора устройств, которыми ОС должна управлять при установке на конкретной машине, то ценным свойством ОС является возможность динамически загружать в ОП требуемый драйвер и выгружать его после того, как потребность в поддержке устройства миновала, что может существенно сэкономить системную область памяти.
Поддержка нескольких файловых систем
Пользовательские и системные файлы хранятся на дисках. Эти данные организуются в файловые системы. Свойства файловой системы во многом определяют свойства самой ОС: отказоустойчивость, быстродействие, максимальный объем хранимых данных.
Файловая система – подсистема ОС, определяющая способ организации данных на диске.
Файловая система отвечает за выполнение следующих действий:
Популярность файловой системы часто приводит к ее «миграции» из «родной» ОС в другие ОС.
Файловая система FAT появилась первоначально в MS-DOS, затем была реализована в OS/2, в семействе MS Windows и многих реализациях UNIX.
Ввиду этого поддержка нескольких популярных файловых систем для подсистемы ввода-вывода также важна, как и поддержка широкого спектра периферийных устройств. Важно также, чтобы архитектура подсистемы ввода-вывода позволяла достаточно просто включать в ее состав новые типы файловых систем, без необходимости переписывания кода. Обычно в ОС имеется специальный слой программного обеспечения, отвечающий за решение данной задачи.
Слой VFS (Virtual File System) в версиях UNIX на основе кода System V Release 4.
Поддержка синхронных и асинхронных операций ввода-вывода
Операция ввода-вывода может выполняться по отношению к программному модулю, запросившему операцию, в синхронном или асинхронном режимах.
Синхронный режим означает, что программный модуль приостанавливает свою работу до тех пор, пока операция ввода-вывода не будет завершена.
Асинхронный режим означает, что программный модуль продолжает выполняться в мультипрограммном режиме одновременно с операцией ввода-вывода.
Простейшим вариантом асинхронного вывода является так называемый буферированный вывод данных на внешнее устройство, при котором данные из приложения передаются не непосредственно на устройство ввода-вывода, а в специальный системный буфер. В этом случае логически операция вывода для приложения считается выполненной сразу же, и задача может не ожидать окончания действительного процесса передачи данных на устройство. Процессом реального вывода данных из системного буфера занимается супервизор ввода/вывода.
Система ввода-вывода
Общие положения
В состав любой операционной системы входят программные модули, обеспечивающие управление устройствами ввода-вывода ЭВМ. Эти программные модули называют драйверами устройств, а совокупность драйверов ввода-вывода образует систему ввода-вывода, входящую в состав операционной системы.
Драйвер устройства (Device driver) – программа, обеспечивающая взаимодействие операционной системы с физическим устройством.
Система ввода-вывода (Input-Output System) – часть операционной системы, обеспечивающая управление внешними устройствами, подключенными к ЭВМ.
Основной задачей системы ввода-вывода является обеспечение непрерывной организации (планирования, управления) и двусторонней передачи данных между основной памятью и внешними устройствами с целью достижения максимального перекрытия во времени работы этой аппаратуры и процессора.
Состав систем ввода-вывода и, следовательно, перечень драйверов устройств в различных операционных системах не совпадают, что объясняется имеющимися отличиями в аппаратуре ввода-вывода, а также множеством методов, используемых для управления этой аппаратурой. Вместе с тем в большинстве операционных систем существует некоторое ядро системы ввода-вывода, получившее название базовой системы ввода-вывода.
Базовая система ввода-вывода(BIOS – Basic Input Output System) – часть программного обеспечения ЭВМ, поддерживающая управление адаптерами внешних устройств и представляющая стандартный интерфейс для обеспечения переносимости операционных систем между ЭВМ с одинаковым процессором. Базовая система ввода-вывода, как правило, разрабатывается изготовителем ЭВМ, хранится в постоянном запоминающем устройстве и рассматривается как часть ЭВМ.
При построении систем ввода-вывода аппаратура ввода-вывода рассматривается как совокупность аппаратурных процессоров, которые способны работать параллельно и независимо друг от друга, а также относительно центрального процессора. На таких процессорах развиваются так называемые внешние процессы.
Внешние процессы, используя аппаратуру ввода-вывода, могут взаимодействовать как между собой, так и с внутренними процессами, которые развиваются на центральном процессоре. Важным фактом является то, что скорости развития внешних и внутренних процессов существенно различаются, причем эти различия могут достигать нескольких порядков.
Система управления вводом-выводом представляет собой один или несколько системных процессов (т.е. процессов, принадлежащих операционной системе), обеспечивающих информационное и управляющее взаимодействие внутренних и внешних процессов. Через эту систему происходит инициализация, управление развитием и уничтожение внешних процессов.
С точки зрения внутренних (программных) процессов-пользователей система управления вводом-выводом представляет собой программный интерфейс с необходимыми для этих процессов внешними устройствами. В составе этого интерфейса пользователь имеет возможность выражать запросы на выполнение действий в отношении внешних устройств. При этом различают три типа действий: операции чтения и записи данных, операции управления устройством, операции по проверке состояния устройств. При построении систем управления вводом-выводом руководствуются стремлением сделать большинство ее компонентов «невидимыми» для пользователей, что достигается созданием развитых драйверов внешних устройств с понятным интерфейсом и доступными из любой системы программирования.
Для сглаживания эффекта несоответствия скоростей между внутренними и внешними процессами в системах управления вводом-выводом применяют три основных метода: синхронизация по прерываниям ввода-вывода; буферизация ввода-вывода; блокирование данных.
Для синхронизации параллельной работы могут применяться различные методы, среди которых наиболее совершенными являются средства, основанные на использовании системы прерывания. Канал ввода-вывода через систему прерываний прерывает работу центрального процессора всякий раз при завершении операции ввода-вывода или при возникновении ошибки. Такие сигналы прерывания являются по своему смыслу синхронизирующими, т.к. они используются для оповещения определенного внутреннего процесса о событии, которое произошло при работе канала ввода-вывода или внешнего устройства.
Одной из главных функций ОС является управление всеми устройствами ввода-вывода компьютера. ОС должна передавать устройствам команды, перехватывать прерывания и обрабатывать ошибки; она также должна обеспечивать интерфейс между устройствами и остальной частью системы. В целях развития интерфейс должен быть одинаковым для всех типов устройств (независимость от устройств).
Дата добавления: 2017-01-26 ; просмотров: 4850 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ
— способы подключения к системной шине различного оборудования;
— процедуры взаимодействия процессора с этим оборудованием;
— команды процессора, предназначенные для обмена данными с внешними устройствами.
Если отвлечься от деталей важных с точки зрения производительности, то логическую схему современного компьютера можно представить традиционным образом, в виде системной шины (магистрали), к которой подключается сам микропроцессор и все устройства компьютера.
Процессор связан с системной шиной большим количеством линий. Из них (в системе ввода-вывода):
За каждым устройством закреплена определенная группа адресов, на которые он должен отзываться. Обнаружив свой адрес на магистрали, устройство, в зависимости от заданного направления передачи данных, либо считывает с магистрали поступившие данные, либо наоборот, устанавливает имеющиеся в нем данные на магистраль. На рисунке 9 представлено подключение устройств компьютера к системной шине
|
Все устройства компьютера можно разбить на две категории :
1) Адреса которых не перекрываются с адресами оперативной памяти.
2) Адреса которых перекрываются с адресами ОЗУ К устройствам первой группы: видеобуфер.
К устройствам второй: а) контроллер клавиатуры
Аппаратное разделение осуществляется с помощью сигнала M/IO, который генерируется процессором в любой операций ЗАПИСИ или ЧТЕНИЯ.(M- memory):
— при обращении к памяти или видеобуферу M/IO=1
— к остальным M/IO’=0 Программное разделение:
Команды процессора а) для памяти
Таким образом, при обращении к памяти и к видеобуферу программист может использовать все подходящие по смыслу команды процессора, при этом, работая, например, с видеобуфером, можно не только засылать в него (или получать из него) данные, но и выполнять прямо в видеобуфере любые арифметические, логические и прочие операции.
Исходное значение маски устанавливается программами начальной загрузки компьютера в зависимости от конфигурации вычислительной системы. Типичным является значение A8h, при этом значении маски размаскированными оказываются системный таймер, ктавиатура, мышь, подключенная к первому последовательному порту СОМ1, гибкий диск, а также выход от ведомого контроллера, подключаемый ко входу IRQ2 ведущего. Замаскированы оба паршшельного порта (принтер, подключаемый к порту LPT1, обычно не использует прерываний, а второй параллельный порт часто просто отсутствует) и второй последовательный порт, к которому ничего не подключено. Другими словами, размаскировано все нужное, и замаскировано все ненужное.
В ряде случаев возникает необходимость замаскировать прерывания от системного таймера, который является единственным постоянно активным источником прерываний. Такая ситуация типична, в частности, для автоматизированных измерительных систем, в которых недопустимо прерывать поток данных, поступающих от измерительной установки в компьютер. Любое прерывание процесса приема данных может привесит к потере части принимаемой информации и нарушению работы установки. Для запрета прерываний от таймера надо выполнить такую последовательность команд:
in AL,21h ;Чтение регистра маски
or AL,1 ‘ /Установка 1 в бите О
out 21h,AL ;Запись нового значения маски
Восстановление исходного состояния вычислительной системы с разре- шенными прерываниями от таймера осуществляется следующим образом:
in AL,21h ;Чтение регистра маски
and AL,0FEh ;Установка 0 в бите О
out 21h,AL ;Запись нового значения маски
Основная литература: 1139,739
Дополнительная литература: 1159
2. Назовите устройства, адреса которых перекрываются с адресами ОЗУ.