Управление вводом-выводом в операционных системах. Структура функций ввода-вывода. Буферизация

Автор: Пользователь скрыл имя, 23 Декабря 2012 в 12:28, реферат

Описание работы

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

Работа содержит 1 файл

реферат.doc

— 161.50 Кб (Скачать)

Саратовский государственный  технический университет

 

  Кафедра  ПВС

 

 

 

 

   Реферат

 

по дисциплине «Операционные системы»

 

 

по теме «Управление вводом-выводом в операционных системах. Структура функций ввода-вывода. Буферизация»

 

 

 

 

 

 

 

 

 

 

 

 

Выполнил: студент зПВС-31  Ларин В.В.

Шифр:    0804810

Проверил:

 

 

 

 

 

 

 

 

 

 

 

 

Саратов 2011

Физические  принципы организации ввода-вывода

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

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

-внешняя память (гибкие и жесткие магнитные диски, оптические и магнитооптические диски, магнитные ленты, флеш-память и т.д.),

-устройства ввода (клавиатура, мышь, сканер и т.д.),

-устройства вывода (принтер, монитор, графопостроитель и т.д.),

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

Устройства  ввода - это устройства ввода данных в систему оперативной памяти из системы устройств внешней памяти или устройств связи с внешними объектами.

К устройствам ввода относятся:

- клавиатура (ввод символьной информации),

- мышь (выбор координаты на экране монитора для ввода символьной или графической информации),

- сканер (ввод цифровой и графической информации с бумажного носителя и т.д.),

- устройства связи с внешними объектами.

Устройства вывода - это устройства вывода данных из системы оперативной памяти в систему внешней памяти или устройств связи с внешними объектами.

Процессор может осуществлять программное  управление операциями ввода/вывода, но не являться объектом ввода или вывода.

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

 

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

 

Структура системы  ввода-вывода

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

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

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

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

Часть устройств умеет передавать данные только по одному байту последовательно (символьные устройства), а часть  устройств умеет передавать блок байт как единое целое (блочные устройства).

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

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

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

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

 

Систематизация  внешних устройств и интерфейс  между базовой подсистемой ввода-вывода и драйверами.

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

- символьные (клавиатура, модем, терминал и т.п.);

- блочные (магнитные и оптические диски и ленты, и т.д.);

- сетевые (сетевые карты);

- все остальные (таймеры, графические дисплеи, телевизионные устройства, видеокамеры и т.п.);

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

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

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

Для блочных устройств, таких как магнитные и оптические диски, ленты и т.п., естественными являются операции чтения и записи блока информации – read и write, а также, для устройств прямого доступа, операция поиска требуемого блока информации – seek.

Драйвера символьных и блочных  устройств должны предоставлять  базовой подсистеме ввода-вывода функции для осуществления описанных общих операций. Помимо общих операций некоторые устройства могут выполнять операции специфические, свойственные только им – например, звуковые карты умеют увеличивать или уменьшать среднюю громкость звучания, дисплеи умеют изменять свою разрешающую способность. Для выполнения таких специфических действий в интерфейс между драйвером и базовой подсистемой ввода-вывода обычно входит еще одна функция, позволяющая непосредственно передать драйверу устройства произвольную команду с произвольными параметрами, что позволяет задействовать любую возможность драйвера без изменения интерфейса. В операционной системе UNIX такая функция получила название ioctl (от input-output control).

Помимо функций read, write, seek (для блочных устройств), get, put (для символьных устройств) и ioctl в состав интерфейса обычно включают еще следующие функции:

- Функцию инициализации или повторной инициализации работы драйвера и устройства – open.

- Функцию временного завершения работы с устройством (может, например, вызывать отключение устройства) – close.

- Функцию опроса состояния устройства (если по каким-либо причинам работа с устройством производится методом опроса его состояния – например, в операционных системах Windows NT и Windows 9x так построена работа с принтерами через параллельный порт) – poll.

- Функцию останова драйвера, которая вызывается при останове операционной системы или выгрузке драйвера из памяти - halt.

 

Функции базовой  подсистемы ввода-вывода

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

 

Блокирующиеся, не блокирующиеся и асинхронные  системные вызовы

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

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

Информация о работе Управление вводом-выводом в операционных системах. Структура функций ввода-вывода. Буферизация