Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Обслуживание ввода-вывода




 

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

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

Основными компонентами подсистемы ввода-вывода являются драйверы, управляющие внешними устройствами, и файловая система. К подсистеме ввода-вывода можно также с некоторой долей условности отнести и диспетчер прерываний.

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

 

Основными задачами подсистемы ввода-вывода являются:

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

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

· разделение устройств ввода-вывода между процессами;

· обеспечение удобного логического интерфейса к устройствам ввода-вывода.

 

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

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

Все устройства ввода-вывода различаются по нескольким направлениям:

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

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

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

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

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

 

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

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

 

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

Поэтому самым главным является следующий принцип: любые операции по управлению вводом-выводом объявляются привилегированными и могут вы­полняться только кодом самой ОС.

Для обеспечения этого принципа в большин­стве процессоров даже вводятся режимы пользователя и супервизора.

Как пра­вило, в режиме супервизора выполнение команд ввода-вывода разрешено, а в пользовательском режиме — запрещено. Использование команд ввода-вывода в пользовательском режиме вызывает исключение и управление через механизм прерываний передается коду ОС. Хотя возможны и более сложные системы, в которых в ряде случаев пользовательским программам разрешено непосредст­венное выполнение команд ввода-вывода.

 

Помимо разделяемых устройств ввода-вывода существуют неразделяемые устройства.

Разделяемые устройства – это устройства с прямым доступом (диск, флешка).

Неразделяемые устройства — принтер.

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

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

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

Главная задача спулинга (SPOOLing — simultaneous peripheral operation on-line, то есть имитация работы с устройством в режиме онлайн) — создать видимость параллельного разделения устрой­ства ввода-вывода с последовательным доступом, которое фактически должно использоваться только монопольно и быть закрепленным.

Например, несколько приложений должны выводить на печать результаты своей работы. Если разрешить каждому такому приложению печатать строку по первому же требованию, то это приведет к потоку строк, не представ­ляющих никакой ценности. Однако можно каждому вычислительному процессу предоставлять не реальный, а виртуальный принтер и поток выводимых симво­лов (или управляющих кодов для их печати) сначала направлять в специальный файл. Затем, по окончании виртуальной печати, в соответствии с принятой дисциплиной обслуживания и приоритетами приложений вы­водить содержимое спул-файла на принтер. Системный процесс, который управ­ляет спул-файлом, называется спулером (spool-reader или spool-writer).

 

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

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

 


 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...