Выполнение ввода вывода информации с носителей данных кратко

Обновлено: 07.07.2024

Организация параллельной работы устройств и процессора

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

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

Кэширование данных

В общем случае скорость генерации данных и их чтения не совпадают. Для согласования данные вводится буферизация , доступ к которому синхронизируется. Буфер обычно располагается в ОЗУ

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

Другим решением является оснащение контроллера буферной памятью, соизмеримой с ОЗУ

Буферизация решает и другую задачу — сократить количество реальных обращений к устройствам за счет кэширования (дисковый кэш)

Разделение устройств и данных между процессами

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

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

Другие устройства, например терминал, используется только в монопольном режиме

Принтер не выделяется в монопольное использование, но разграничивает порции выдач разных процессов

Удобный логический интерфейс

Практически все современные ОС поддерживают в качестве основного логического интерфейса файловую модель устройств ввода-вывода, когда любое устройство – последовательность байтов, с которыми можно работать с помощью системных вызовов типа Read, Write

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

Простое включение новых драйверов

Достоинством любой современной ОС является разнообразие набора драйверов для наиболее популярных устройств и поддержка нескольких файловых систем

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

Существуют два типа интерфейсов:

  • “драйвер-ядро” (Driver Kernel Interface, DKI) для взаимодействия с ядром ОС и
  • интерфейс “драйвер-устройство” (Driver Device Interface, DDI) для взаимодействия с контроллером

Для поддержки разработки драйверов обычно выпускается пакет DDK (Driver Development Kit)

Поддержка нескольких файловых систем

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

Популярные системы мигрируют из одной ОС в другую (например FAT мигрировала из MS DOS в OS/2, MS Windows, Unix)

Обычно в ОС имеется слой программного обеспечения, отвечающий за простоту подключения новой файловой системы. Например, слой VFS (Virtual File System) в версиях Unix.

Поддержка синхронных и асинхронных операций ввода-вывода.

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

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

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

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

Многослойная модель подсистемы В-В

Многослойная модель подсистемы ввода-вывода

Менеджер ввода-вывода.

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

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

Любая ЭВМ представляет собой сложную систему, включающую в себя большое количество различных устройств. Связь устройств ЭВМ между собой осуществляется с помощью сопряжений, которые в вычислительной технике называются интерфейсами.

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

Интерфейсы характеризуются следующими параметрами [ 7 ] :

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

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

Разработка систем ввода-вывода требует решения целого ряда проблем, среди которых выделим следующие:

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

Главным направлением решения указанных проблем является магистрально-модульный способ построения ЭВМ рис. 18.1: все устройства, составляющие компьютер, включая и микропроцессор, организуются в виде модулей, которые соединяются между собой общей магистралью. Обмен информацией по магистрали удовлетворяет требованиям некоторого общего интерфейса , установленного для магистрали данного типа. Каждый модуль подключается к магистрали посредством специальных интерфейсных схем ( Иi ).

На интерфейсные схемы модулей возлагаются следующие задачи:

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

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

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

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

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

Система ввода вывода

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

Основные компоненты подсистемы ввода/вывода:

  1. Драйверы.
  2. Файловая система.
  3. Диспетчер прерываний.

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

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

Организация параллельной работы устройств ввода/вывода и процессора

Каждое устройство ввода/вывода вычислительной системы снабжено устройством управления – контроллером. Контроллер взаимодействует с драйвером – системным программным модулем, предназначенным для управления данным устройством.

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

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

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

Согласование скоростей обмена и кэширование данных

Накопители на магнитных дисках обладают крайне низкой скоростью по сравнению с быстродействием центральной части компьютера: средняя скорость работы процессора с ОП на 2-3 порядка выше, чем средняя скорость передачи данных из внешней памяти в ОП.

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

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

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

Пример. Организация вывода данных на принтер.

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

Пример. Буферная память в контроллерах графических дисплеев.

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

Разделение устройств и данных между процессами

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

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

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

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

Пример.

PRN, LPT1 – для порта принтера, CON – для клавиатуры (символьные имена, а для ОС – это файлы).

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

Достоинством подсистемы ввода/вывода любой универсальной ОС является наличие разнообразного набора драйверов для наиболее популярных периферийных устройств.

Прекрасно спланированная и реализованная ОС может потерпеть неудачу на рынке только из-за того, что в ее состав не включен достаточный набор драйверов и администраторы и пользователи вынуждены искать нужный им драйвер или заниматься его разработкой (первые версии OS/2).

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

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

Для поддержки процесса разработки драйверов ОС обычно выпускается так называемый пакет DDK (Driver Development Kit), представляющий собой набор соответствующих инструментальных средств – библиотек, компиляторов и отладчиков.

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

Поддержка нескольких файловых систем

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

Файловая система – подсистема ОС, определяющая способ организации данных на диске.

Файловая система отвечает за выполнение следующих действий:

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

Файловая система FAT появилась первоначально в MS-DOS, затем была реализована в OS/2, в семействе MS Windows и многих реализациях UNIX.

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

Слой VFS (Virtual File System) в версиях UNIX на основе кода System V Release 4.

Поддержка синхронных и асинхронных операций ввода-вывода

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

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

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

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

Устройства делят на две категории (некоторые не попадают ни в одну):

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

символьные устройства - информация считывается и записывается посимвольно (принтер, сетевые карты, мыши)

9.1.2 Контроллеры устройств

Устройства ввода-вывода обычно состоят из двух частей:

механическая (не надо понимать дословно) - диск, принтер, монитор

электронная - контроллер или адаптер

Если интерфейс между контроллером и устройством стандартизован (ANSI, IEEE или ISO), то независимые производители могут выпускать совместимые как контроллеры, так и устройства. Например: диски IDE или SCSI.

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

9.1.3 Отображаемый на адресное пространство памяти ввод-вывод

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

У многих устройств есть буфер данных (например: видеопамять).

Реализации доступа к управляющим регистрам и буферам:

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

смешанная реализация - используется в х86 и Pentium,
от 0 до 64К отводится портам,
от 640 до 1М зарезервировано под буферы данных.


Способы реализации доступа к управляющим регистрам и буферам

9.1.4 Прямой доступ к памяти (DMA - Direct Memory Access)

Прямой доступ к памяти реализуется с помощью DMA - контроллера.

Контроллер содержит несколько регистров:

регистр адреса памяти

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

Без контроллера происходит следующее:

Процессор дает команду дисковому контроллеру прочитать данные в буфер,

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

Контроллер диска инициирует прерывание

Операционная система начинает работать и может считывать из буфера данные в память

Работа DMA - контроллера

С контроллером происходит следующее:

Процессор программирует контроллер (какие данные и куда переместить)

Процессор дает команду дисковому контроллеру прочитать данные в буфер

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

Контроллер DMA посылает запрос на чтение дисковому контроллеру

Контроллер диска поставляет данные на шину, адрес памяти уже находится на шине, происходит запись данных в память

Когда запись закончена, контроллер диска посылает подтверждение DMA контроллеру

DMA контроллер увеличивает используемый адрес и уменьшает значение счетчика байтов

Все повторяется с пункта 4, пока значение счетчика не станет равной нулю.

Контроллер DMA инициирует прерывание

Операционной системе не нужно копировать данные в память, они уже там.

9.1.5 Прерывания

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

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

Контроллер прерываний - обслуживает поступающие прерывания от устройств.

Если необработанных прерываний нет, прерывание выполняется немедленно.

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

Устройство выставляет сигнал прерывания

Контроллер прерываний инициирует прерывание, указывая номер устройства

Процессор начинает выполнять обработку прерывания, вызывая процедуру

Эта процедура подтверждает получение прерывания контроллеру прерываний

9.2 Принципы программного обеспечения ввода-вывода

9.2.1 Задачи программного обеспечения ввода-вывода

Основные задачи, которые должно решать программное обеспечение ввода-вывода:

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

Единообразное именование - имя файла или устройства не должны отличаться. (В системах UNIX выполняется дословно).

Обработка ошибок - ошибки могут быть отловлены на уровне контроллера, драйвера и т.д.

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

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

Три основных способа осуществления операций ввода-вывода:

Управляемый прерываниями ввод-вывод

Ввод-вывод с использованием DMA

Рассмотрим их подробнее.

9.2.2 Программный ввод-вывод

В этом случае всю работу выполняет центральный процессор.

Рассмотрим процесс печати строки ABCDEFGH этим способом.

Этапы печати строки ABCDEFGH

Строка для печати собирается в пространстве пользователя.

Обращаясь к системному вызову, процесс получает принтер.

Обращаясь к системному вызову, процесс просит распечатать строку на принтере.

Операционная система копирует строку в массив, расположенный в режиме ядра.

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

Символ печатается на бумаге.

Указатель устанавливается на следующий символ.

Процессор ждет, когда бит готовности принтера выставится в готовность.

При использовании буфера принтера, сначала вся строка копируется в буфер, после этого начинается печать.

9.2.3 Управляемый прерываниями ввод-вывод

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

Рассмотрим тот же пример, но с небольшим усовершенствованием.

До пункта 8 тоже самое.

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

Когда принтер будет готов, он посылает прерывание процессору.

Процессор переключается на печатающий процесс.

9.2.4 Ввод-вывод с использованием DMA

Недостаток предыдущего метода в том, что прерывание происходит при печати каждого символа.

Алгоритм не отличается, но всю работу на себя берет контроллер DMA.

9.3 Программные уровни и функции ввода-вывода

Четыре уровня ввода-вывода:

9.3.1 Обработчики прерываний

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

Драйвер начинает операцию ввод-вывод.

Обработчик прерываний начинает работу

Обработчик прерываний может разблокировать драйвер (например, выполнив на семафоре процедуру up)

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

Драйвер устройства - необходим для каждого устройства. Для разных ОС нужны разные драйверы.

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

Это одна из основных причин приводящих к краху операционных систем. Потому что драйверы, как правило, пишутся производителями устройств, и вставляются в ОС.

Логическое расположение драйверов устройств. На самом деле обмен данными между контроллерами и драйверами идет по шине.

Драйвера должны взаимодействовать с ОС через стандартные интерфейсы.

Стандартные интерфейсы, которые должны поддерживать драйвера:

Для блочных устройств

Для символьных устройств

Раньше для установки ядра приходилось перекомпилировать ядра системы.

Сейчас в основном ОС загружают драйверы. Некоторые драйверы могут быть загружены в горячем режиме.

Функции, которые выполняют драйвера:

обработка запросов чтения или записи

управление энергопотреблением устройства

прогрев устройства (сканера)

включение устройства или запуска двигателя

9.3.3 Независимое от устройств программное обеспечение ввода-вывода

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

Единообразный интерфейс для драйверов устройств,

Захват и освобождение выделенных устройств (блокирование)

Размер блока, не зависящий от устройств

Единообразный интерфейс для драйверов устройств

Кроме интерфейса, в него также входят проблемы,

Буферизация

Рассмотрим несколько примеров буферизации.

a) Не буферизованный ввод - после ввода каждого символа происходит прерывание

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

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

d) Двойная буферизация в ядре - если один буфер заполнен, и пока он выгружается, символы пишутся во второй буфер.

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

Захват и освобождение выделенных устройств

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

Независимый от устройств размер блока

Размер блока должен быть одинаковый для верхних уровней, и не зависеть от устройств (размеров секторов на диске).

9.3.4 Программное обеспечение ввода-вывода пространства пользователя

Функции этого обеспечения:

Обращение к системным вызовам ввода-вывода (через библиотечные процедуры).

Форматный ввод-вывод (меняют формат, например, в ASCII)

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

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