24529

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

Доклад

Информатика, кибернетика и программирование

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

Русский

2013-08-09

70.42 KB

10 чел.

Вопрос 34. Принципы организации программного обеспечения ввода-вывода.

§6.2 Организация программного обеспечения ввода-вывода.

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

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

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

Независимость от устройств. Вид программы не должен зависеть от того, читает ли она данные с гибкого диска или с жесткого диска. Каждому устройству присваивается свое логическое имя (в MSDOS – LPT, PRN, COM1, COM2 и т. д.). Для именования устройств должны быть приняты единые правила.

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

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

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

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

Рис. 6.1. Многоуровневая организация подсистемы ввода-вывода

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

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

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

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

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

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

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

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

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

Типичными функциями для независимого от устройств слоя являются:

- обеспечение общего интерфейса к драйверам устройств;

- именование устройств;

- защита устройств;

- буферизация;

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

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

- уведомление об ошибках;

- обеспечение независимого размера блока.

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

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

Пользовательский слой программного обеспечения.

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

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

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

Если программа, написанная на языке С, содержит вызов

count = write (fd, buffer, nbytes),

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

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

Другой категорией программного обеспечения ввода-вывода является подсистема спулинга (spooling). Спулинг – это способ работы с выделенными устройствами в мультипрограммной системе. Рассмотрим типичное устройство, требующее спулинга – строчный принтер. Хотя технически легко позволить каждому пользовательскому процессу открыть специальный файл, связанный с принтером, такой способ опасен из-за того, что пользовательский процесс может монополизировать принтер на произвольное время. Вместо этого создается специальный процесс – монитор, который получает исключительные права на использование этого устройства. Также создается специальный каталог, называемый каталогом спулинга. Чтобы напечатать файл, пользовательский процесс помещает выводимую информацию в этот файл и помещает его в каталог спулинга. Процесс-монитор по очереди распечатывает все файлы, содержащиеся в каталоге спулинга.


 

А также другие работы, которые могут Вас заинтересовать

43059. Проект электродинамического громкоговорителя 601 KB
  Для этого по графику зависимости (xm) (рис.2) находим минимальное допустимое, при заданной амплитуде смещения xm, значение ширины свободного воздушного зазора bз, от размера которого зависит скорость теплообмена и допустимая удельная мощность, которая рассеивается единицей поверхности. Величину Руд находим по графику зависимости Руд() (рис.3).
43060. МЕНЕДЖМЕНТ ПРОФЕСІЙНОЇ ДІЯЛЬНОСТІ 197.5 KB
  5 Методичні вказівки з виконання курсової роботи в межах курсу Менеджмент професійної діяльності для студентів спеціальностей напрямку підготовки 8. В процесі виконання курсової роботи керівником проектування здійснюються індивідуальні і групові консультації. Методичні вказівки З виконаннЯ курсової роботи 4.
43061. Основи менеджменту. Методичні вказівки 263 KB
  У роботі передбачається що студент уважно розгляне зовнішні і внутрішні чинники що впливають на діяльність організації і з урахуванням особливостей моменту буде використовувати розглянуті теоретичні положення. Загальний аналіз діяльності конкретної організації. Опис організації і її продукту. Бачення майбутнього організації.
43062. Модернизация привода главного движения универсального токарно-винторезного станка модели 1М63 2.8 MB
  Станок универсальный токарно-винторезный модели 1М63 предназначен для выполнения самых разнообразных токарных работ, в том числе точения конусов и нарезания резьб метрической, дюймовой, модульной и питчевой.
43063. Расчет аппарата гашения извести в производстве известкового молока на ОАО «АВИСМА» 319 KB
  Гашение извести протекает по реакции: CO H2O = COH2 1593 ккал. Вместе с тем следует избегать и переохлаждения гасящейся извести так как оно может значительно замедлить процесс гашения извести. С ростом температуры выделившийся гидрат окиси кальция выпадает в осадок и обволакивает поверхность кусков негашеной извести.
43064. Детали машин, расчет основных показателей 1.52 MB
  Выбор электродвигателя и кинематический расчет привода. Расчет клиноременной передачи. Расчет двухступенчатого цилиндрического редуктора. Предварительный расчет валов. Конструктивные размеры корпуса редуктора Определение реакций в подшипниках...
43065. Социальные изменения. Понятие социального прогресса и модернизации 17 KB
  Понятием «социальные изменения» обозначаются различные перемены, происходящие в течение некоторого времени внутри социальных систем и во взаимоотношениях между ними, в обществе в целом как социальной системе.
43066. Рассчет и конструкция станочного приспособления для фрезерования двух канавок 301.5 KB
  Изучение закономерности влияния приспособления на точность и производительность выполняемых операций позволяет проектировать приспособления интенсифицирующее производство и повышающее его точность. Проводимая работа по унификации и стандартизации элементов приспособления создала основу для автоматизированного проектирования приспособлений с использованием ЭВМ и автоматов для графического изображения что приводит к ускорению технологической подготовке производства.1 Назначение устройство и принцип работы проектируемого приспособления.2...
43067. Проектирование АТП по перевозке строительных грузов (кирпичи, песок, и т.д.) по Сибири 487 KB
  Реализация потенциальных свойств автомобиля, заложенных при его создании, снижение затрат на содержание, ТО и ремонт, уменьшение соответствующих простоев, обеспечивающие повышение производительности, при одновременном снижении их себестоимости – основные задачи технической эксплуатации подвижного состава автомобильного транспорта.