Какие операции определяют взаимодействие драйвера с контроллером
Опять вернёмся в традиционную область разработки операционных систем (и приложений для микроконтроллеров) — написание драйверов.
Я попробую выделить некоторые общие правила и каноны в этой области. Как всегда — на примере Фантома.
Драйвер — функциональная компонента ОС, ответственная за отношения с определённым подмножеством аппаратуры компьютера.
С лёгкой руки того же Юникса драйвера делятся на блочные и байт-ориентированные. В былые времена классическими примерами были драйвер диска (операции — записать и прочитать сектор диска) и драйвер дисплея (прочитать и записать символ).
В современной реальности, конечно, всё сложнее. Драйвер — типичный инстанс-объект класса, и классов этих до фига и больше. В принципе, интерфейс драйверов пытаются как-то ужать в прокрустово ложе модели read/write, но это самообман. У драйвера сетевой карты есть метод «прочитать MAC-адрес карты» (который, конечно, можно реализовать через properties), а у драйвера USB — целая пачка USB-специфичных операций. Ещё веселее у графических драйверов — какой-нибудь bitblt( startx, starty, destx, desty, xsize, ysize, operation ) — обычное дело.
Цикл жизни драйвера, в целом, может быть описан так:
- Инициализация: драйвер получает ресурсы (но не доступ к своей аппаратуре)
- Поиск аппаратуры: драйвер получает от ядра или находит сам свои аппаратные ресурсы
- Активация — драйвер начинает работу
- Появление/пропадание устройств, если это уместно. См. тот же USB.
- Засыпание/просыпание аппаратуры, если это уместно. В контроллерах часто неиспользуемая аппаратура выключается для экономии.
- Деактивация драйвера — обслуживание запросов прекращается
- Выгрузка драйвера — освобождаются все ресурсы ядра, драйвер не существует.
(Вообще я написал в прошлом году черновик открытой спецификации интерфейса драйвера — см. репозиторий и документ.)
Мне известны три модели построения драйвера:
Драйвер на основе поллинга (циклического опроса) устройства
Такие драйвера применяются только с большого горя или по большой необходимости. Или если это простая встроенная микроконтроллерная система, в которой и есть-то всего два драйвера. Например, конвертор интерфейсов serial port TCP, в котором сеть работает по прерываниям, работу с последовательным портом может, в принципе, выполнять и поллингом. Если не жалко избытка тепла и затрат энергии.
Есть и ещё одна причина: такие драйвера практически неубиваемы. Поэтому, например, в ОС Фантом отладочная выдача ядра в последовательный порт сделана именно так.
В цикле проверяем готовность порта принять байт, передаём байт, закончили упражнение.
Такой драйвер, как нетрудно видеть, пожирает процессор в ожидании готовности устройства. Это можно починить, если скорость работы самого драйвера некритична:
Но, конечно, в целом это никуда не годная (кроме вышеприведённого случая:) модель.
Драйвер на основе прерываний
Общая структура такого драйвера выглядит вот как:
Фактически, такой драйвер порождает для себя псевдо-нить: поток управления, который живёт только на поступлении прерываний от устройства.
Как только драйвер получает очередной запрос на запись, он включает прерывания и «вручную» инициирует отправку в устройство первого байта данных. После чего входящая нить засыпает, ожидая конца передачи. А может и вернуться, если нужна асинхронная работа. Теперь драйвер будет ждать прерывания от устройства. Когда устройство «прожуёт» полученный байт, оно сгенерирует прерывание, при обслуживании которого драйвер или отправит очередной байт (и будет ждать очередного прерывания), или закончит работу, выключит прерывания и «отпустит» ждущую внутри dev_write() нить.
Что забыто
Прежде чем мы перейдём к последней модели драйвера, перечислим вещи, которые я (намеренно) пропустил в предыдущем повествовании.
Обработка ошибок
В нашем псевдокоде никак не проверяется успешность ввода-вывода. Реальное устройство может отказать или сообщить о неисправности носителя. Вынули кабель из порта локалки, на диске случился плохой блок. Драйвер должен обнаружить и обработать.
Таймауты
Устройство может сломаться и просто не ответить на запрос прерыванием, или никогда не выставить бит готовности. Драйвер должен запросить таймерное событие, которое бы вывело его из «ступора» на такой случай.
Смерть запроса
Если окружающая нас ОС это позволяет, то надо быть готовым к тому, что вошедшая в драйвер нить, в рамках которой «пришёл» запрос ввода-вывода, может быть просто убита. Это не должно приводить к фатальным последствиям для драйвера.
Синхронизация
Для простоты я указываю в качестве примитива синхронизации cond. В реальном драйвере это невозможно — cond требует объемлющего mutex в точке синхронизации, а в прерывании какой уж mutex — нельзя! Вот в последней модели, драйвере с собственной нитью, можно применять cond как средство синхронизации нити пользователя и нити драйвера. А вот синхронизация с прерыванием — только spinlock и семафор, причём реализация семафора должна быть готова к возможности активировать (открыть) семафор из прерывания. (В Фантоме это так и есть)
Драйвер на основе нити
От предыдущего он отличается тем, что имеет собственную нить, которая выполняет ввод-вывод.
Преимущество такого драйвера в том, что из нити можно позволить себе куда больше, чем из хендлера прерывания — можно выделять память, управлять таблицами страниц и вообще звать любую функцию ядра. Из прерывания нельзя позволить себе длинные и, тем более, блокирующие операции.
Отметим, что есть третья, промежуточная модель, в которой драйвер не имеет своей нити, а выполняет всё то же самое из нити запроса ввода-вывода. Но, во-первых, см. пункт о том, что её могут убить, во-вторых это жлобство :), а в третьих — не всегда она (нить) такого хочет. Иным бы хотелось асинхронного обслуживания.
Блочный ввод-вывод, сортировка и заборы
Дисковые драйвера обычно имеют на входе очередь запросов — ОС генерирует запросы на ввод-вывод пачками, и все запросы на уровне драйвера асинхронны. При этом хороший драйвер имеет собственную стратегию обслуживания запросов, причём — обслуживания не в порядке поступления.
Действительно, если на обычном дисковом устройстве выполнять запросы в том порядке, в котором они прилетели, головке накопителя придётся совершать хаотичные движения по диску, замедляя ввод-вывод.
Обычно драйвер просто сортирует очередь запросов по номеру блока и обслуживает их так, чтобы головка диска последовательно двигалась от внешней дорожки к внутренней, или наоборот. Это сильно помогает.
Но не всякую пару запросов можно поменять местами. Если файловая система (или её аналог) решила, что ей надо гарантировать целостность данных на диске, она бы очень хотела убедиться в том, что определённая группа запросов завершена. Для этого в очередь запросов вставляется специальный запрос ввода-вывода, который запрещает перемешивать запросы до себя с запросами после себя.
Кроме того, плохая идея переставлять местами запрос на запись блока N и запрос на чтение того же блока. Впрочем, это вопрос договорённостей.
Какие особенности характерны для современных универсальных операционных систем?
+ 1. поддержка многозадачности
+ 2. поддержка сетевых функций
+ 3. обеспечение безопасности и защиты данных
4. предоставление большого набора системных функций разработчикам приложений
Какие утверждения относительно понятия «API-функция» являются правильными?
+ 1. API-функции определяют прикладной программный интерфейс
+ 2. API-функции используются при разработке приложений для доступа к ресурсам компьютера
3. API-функции реализуют самый нижний уровень ядра системы
4. API-функции — это набор аппаратно реализованных функций системы
Какие особенности характерны для ОС Unix
+ 1. открытость и доступность исходного кода
2. ориентация на использование оконного графического интерфейса
+ 3. использование языка высокого уровня С
+ 4. возможность достаточно легкого перехода на другие аппаратные платформы
Какие типы операционных систем используются наиболее часто в настоящее время?
+ 1. системы семейства Windows
+ 2. системы семейства Unix/Linux
3. системы семейства MS DOS
4. системы семейства IBM OS 360/370
Какие задачи необходимо решать при создании мультипрограммны х ОС
+ 1. защита кода и данных разных приложений, размещенных вместе в основной памяти
+ 2. централизованное управление ресурсами со стороны ОС
+ 3. переключение процессора с одного приложения на другое
4. необходимость размещения в основной памяти кода и данных сразу многих приложений
Какое соотношение между используемыми на СЕРВЕРАХ операционными системами сложилось в настоящее время?
+ 1. примерно поровну используются системы семейств Windows и Unix/Linux
2. около 10 % — системы семейства Windows, около 90 % — системы смейства Unix/Linux
3. около 90 % — системы семейства Windows, около 10 % — системы семейства Unix/Linux
4. около 30 % — системы семейства Windows, около 30 % — системы семейства Unix/Linux, около 40 % — другие системы
Какие утверждения относительно понятия «Ядро операционной системы» являются правильными?
+ 1. ядро реализует наиболее важные функции ОС
+ 2. подпрограммы ядра выполняются в привилегированно м режиме работы процессора
3. ядро в сложных ОС может строиться по многоуровневому принципу
4. ядро всегда реализуется на аппаратном уровне
Какие шаги в алгоритме взаимодействия приложения с системой выполняются операционной системой
1. небольшую структуру данных, содержащую информацию о некотором событии
2. специальную API-функцию, вызываемую системой при возникновении события
3. однобайтовое поле с кодом происшедшего события
+ 4. небольшое окно, выводящее пользователю информацию о возникшем событии
Какие утверждения относительно иерархии окон являются справедливыми
+ 1. главное окно может содержать любое число подчиненных окон
+ 2. любое подчиненное окно может содержать свои подчиненные окна
3. подчиненные окна могут быть двух типов – дочерние и всплывающие
+ 4. приложение может иметь несколько главных окон
Как можно узнать координаты текущего положения мыши при нажатии левой кнопки
+ 1. с помощью события WM_LbuttonDown и его поля LPARAM
2. с помощью события WM_LbuttonDown и его поля WPARAM
3. с помощью события WM_LbuttonDown и его полей WPARAM и LPARAM
4. с помощью события WM_LbuttonCoordi nates
Какие функции можно использовать для получения контекста устройства?
Какая инструкция (оператор) является основной при написании оконной функции?
+ 1. инструкция множественного выбора типа Case — Of
2. условная инструкция if – then
3. инструкция цикла с известным числом повторений
4. инструкция цикла с неизвестным числом повторений
Какой вызов позволяет добавить строку в элемент-список?
+ 1. SendMessage (MyEdit, lb_AddString, 0, строка)
2. SendMessage (“Edit”, lb_AddString, 0, строка)
3. SendMessage (MyEdit, AddString, 0, строка)
4. SendMessage (MyEdit, строка, lb_AddString, 0)
Какие утверждения относительно оконной функции являются правильными
+ 1. оконная функция принимает 4 входных параметра
+ 2. тело оконной функции – это инструкция выбора с обработчиками событий
+ 4. оконная функция явно вызывается из основной функции приложения
Что может быть причиной появления внутреннего прерывания
+ 1. попытка деления на ноль
2. попытка выполнения запрещенной команды
+ 3. попытка обращения по несуществующему адресу
4. щелчок кнопкой мыши
Какие операции определяют взаимодействие драйвера с контроллером
+ 1. проверка состояния устройства
+ 2. запись данных в регистры контроллера
+ 3. чтение данных из регистров контроллера
4. обработка прерываний от устройства
Какие операции включает в себя вызов обработчика нового прерывания
+ 1. обращение к таблице векторов прерываний для определения адреса первой команды вызываемого обработчика
2. сохранение контекста для прерываемого программного кода
+ 3. занесение в счетчик команд начального адреса вызываемого обработчика
+ 4. внесение необходимых изменений в таблицу векторов прерываний
Что входит в программный уровень подсистемы ввода/вывода
2. диспетчер ввода/вывода
+ 3. системные вызовы
Что определяет понятие “порт ввода/вывода”
+ 1. порядковый номер или адрес регистра контроллера
2. машинную команду ввода/вывода
3. устройство ввода/вывода
4. контроллер устройства ввода/вывода
Какие существуют типы прерываний
+ 1. внешние или аппаратные прерывания
+ 2. внутренние прерывания или исключения
+ 3. программные псевдопрерывания
4. системные прерывания
Какие утверждения относительно понятия прерывания являются правильными
+ 1. прерывания — это механизм реагирования вычислительной системы на происходящие в ней события
2. прерывания используются для синхронизации работы основных устройств вычислительной системы
+ 3. прерывания возникают в непредсказуемые моменты времени
4. прерывания — это основной механизм планирования потоков
Какую информацию могут содержать регистры контроллеров устройства
+ 1. текущее состояние устройства
+ 2. текущую выполняемую устройством команду
3. данные, передаваемые от устройства системе
4. данные, передаваемые системой устройству
Как выстраиваются аппаратные прерывания в зависимости от их приоритета
1. сбой аппаратуры > таймер > дисковые устройства > сетевые устройства > клавиатура и мышь
2. сбой аппаратуры > таймер > дисковые устройства > клавиатура и мышь > сетевые устройства
+ 3. таймер > сбой аппаратуры > дисковые устройства > сетевые устройства > клавиатура и мышь
4. сбой аппаратуры > дисковые устройства > таймер > сетевые устройства > клавиатура и мышь
Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.
Рабочие листы и материалы для учителей и воспитателей
Более 2 500 дидактических материалов для школьного и домашнего обучения
Столичный центр образовательных технологий г. Москва
Получите квалификацию учитель математики за 2 месяца
от 3 170 руб. 1900 руб.
Количество часов 300 ч. / 600 ч.
Успеть записаться со скидкой
Форма обучения дистанционная
- Онлайн
формат - Диплом
гособразца - Помощь в трудоустройстве
Видеолекции для
профессионалов
- Свидетельства для портфолио
- Вечный доступ за 120 рублей
- 311 видеолекции для каждого
Лекция 13. Организация взаимодействия ОС с устройствами ввода-вывода
Понятие прерывания
Система прерываний переводит процессор на выполнение потока команд, отличного от того, который выполнялся до сих пор, с последующим возвратом к исходному коду. Прерывание происходит в произвольной точке потока команд программы, которую программист не может прогнозировать. Прерывание возникает либо в зависимости от внешних по отношению к процессу выполнения программы событий, либо при появлении непредвиденных аварийных ситуаций в процессе выполнения данной программы. При возникновении прерывания выполняется некоторая подпрограмма, обрабатывающая специальную ситуацию, а затем продолжается выполнение основной ветви программы.
В зависимости от источника, вызывающего прерывание, последние делятся на три больших класса:
1. Внешние прерывания могут возникать в результате действий пользователя или оператора за терминалом, или же в результате поступления сигналов от аппаратных устройств — сигналов завершения операций ввода-вывода , вырабатываемых контроллерами внешних устройств компьютера. Внешние прерывания называют также аппаратными, отражая тот факт, что прерывание возникает вследствие подачи некоторой аппаратурой электрического сигнала, который передается на специальный вход прерывания процессора. Данный класс прерываний является асинхронным по отношению к потоку инструкций прерываемой программы.
2. Внутренние прерывания , называемые также исключениями (exeption), происходят синхронно выполнению программы при появлении аварийной ситуации в ходе исполнения некоторой инструкции программы. Примерами исключений являются деление на нуль, ошибки защиты памяти, обращения по несуществующему адресу, попытка выполнить привилегированную инструкцию в пользовательском режиме и т. п.
3. Программные прерывания отличаются от предыдущих двух классов тем, что они по своей сути не являются «истинными» прерываниями и возникают при выполнении особой команды процессора, выполнение которой имитирует прерывание, то есть переход на новую последовательность инструкций.
Прерываниям приписывается приоритет, с помощью которого они ранжируются по степени важности и срочности.
Прерывания обычно обрабатываются модулями операционной системы, так как действия, выполняемые по прерыванию, относятся к управлению разделяемыми ресурсами вычислительной системы — принтером, диском, таймером, процессором и т. п. Процедуры, вызываемые по прерываниям, обычно называют обработчиками прерываний, или процедурами обслуживания прерываний:
− Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств,
− исключения — специальными модулями ядра,
− программные прерывания — процедурами ОС, обслуживающими системные вызовы.
Кроме этих модулей в операционной системе может находиться так называемый диспетчер прерываний, который координирует работу отдельных обработчиков прерываний.
Механизм прерываний
Механизм прерываний поддерживается аппаратными средствами компьютера и программными средствами операционной системы.
Существуют два основных способа, выполнения прерывания , причем в обоих способах процессору предоставляется информация об уровне приоритета прерывания на шине подключения внешних устройств:
1. Векторный (vectored). В случае векторных прерываний в процессор передается также информация о начальном адресе программы обработки возникшего прерывания — обработчика прерываний. Устройствам, которые используют векторные прерывания, назначается вектор прерываний, представляющий собой электрический сигнал, выставляемый на соответствующие шины процессора и несущий в себе информацию об определенном, закрепленном за данным устройством номере, который идентифицирует соответствующий обработчик прерываний.
2. Опрашиваемый (polled). При использовании опрашиваемых прерываний процессор получает от запросившего прерывание устройства только информацию об уровне приоритета прерывания. С каждым уровнем прерываний связано несколько устройств и соответственно несколько программ — обработчиков прерываний. При возникновении прерывания процессор определяет, какое устройство запросило прерывание путем опроса обработчиков прерываний для данного уровня приоритета, пока один из обработчиков не подтвердит, что прерывание пришло от обслуживаемого им устройства. Если же с каждым уровнем прерываний связано только одно устройство, то определение нужной программы обработки прерывания происходит немедленно, как и при векторном прерывании.
Механизм прерываний аппаратной платформы может сочетать векторный и опрашиваемый типы прерываний. Контроллеры периферийных устройств выставляют на шину не вектор, а сигнал запроса прерывания определенного уровня IRQ. Вектор прерываний в процессор Pentium поставляет контроллер прерываний, который отображает поступающий от шины сигнал IRQ на определенный номер вектора. Вектор прерываний, передаваемый в процессор, представляет собой целое число в диапазоне от 0 до 255, указывающее на одну из 256 программ обработки прерываний, адреса которых хранятся в таблице обработчиков прерываний. В том случае, когда к каждой линии IRQ подключается только одно устройство, процедура обработки прерываний работает так, как если бы система прерываний была чисто векторной, то есть процедура не выполняет никаких дополнительных опросов для выяснения того, какое именно устройство запросило прерывание. Однако при совместном использовании одного уровня IRQ несколькими устройствами программа обработки прерываний должна работать в соответствии со схемой опрашиваемых прерываний, то есть дополнительно выполнить опрос всех устройств, подключенных к данному уровню IRQ.
Механизм прерываний чаще всего поддерживает приоритезацию и маскирование прерываний.
Приоритезация означает, что все источники прерываний делятся на классы и каждому классу назначается свой уровень приоритета запроса на прерывание. Приоритеты могут обслуживаться как относительные и абсолютные.
Маскирование — при обслуживании некоторого запроса все запросы с равным или более низким приоритетом маскируются, то есть не обслуживаются. Схема маскирования предполагает возможность временного маскирования (приостановки) прерываний любого класса независимо от уровня приоритета.
Обобщенно последовательность действий аппаратных и программных средств по обработке прерывания можно описать следующими этапами.
1. При возникновении сигнала (для аппаратных прерываний) или условия (для внутренних прерываний) прерывания происходит первичное аппаратное распознавание типа прерывания. В зависимости от поступившей в процессор информации (уровень прерывания, вектор прерывания или тип условия внутреннего прерывания) происходит автоматический вызов процедуры обработки прерывания, адрес которой находится в специальной таблице операционной системы, размещаемой либо в регистрах процессора, либо в определенном месте оперативной памяти.
2. Автоматически сохраняется некоторая часть контекста прерванного потока, которая позволит ядру возобновить исполнение потока процесса после обработки прерывания. В это подмножество обычно включаются значения счетчика команд, слова состояния машины, хранящего признаки основных режимов работы процессора, а также нескольких регистров общего назначения, которые требуются программе обработки прерывания. Может быть сохранен и полный контекст процесса, если ОС обслуживает данное прерывание со сменой процесса.
3. Одновременно с загрузкой адреса процедуры обработки прерываний в счетчик команд может автоматически выполняться загрузка нового значения слова состояния машины, которое определяет режимы работы процессора при обработке прерывания, в том числе работу в привилегированном режиме. Прерывания практически во всех мультипрограммных ОС обрабатываются в привилегированном режиме модулями ядра, так как при этом обычно нужно выполнить ряд критических операций, от которых зависит жизнеспособность системы, — управлять внешними устройствами, перепланировать потоки и т. п.
4. Временно запрещаются прерывания данного типа, чтобы не образовалась очередь вложенных друг в друга потоков одной и той же процедуры. Многие процессоры автоматически устанавливают признак запрета прерываний в начале цикла обработки прерывания, в противном случае это делает программа обработки прерываний.
5. После того как прерывание обработано ядром операционной системы, прерванный контекст восстанавливается, и работа потока возобновляется с прерванного места.
Организация взаимодействия ОС с устройствами ввода-вывода
Каждое устройство ввода-вывода вычислительной системы (диск, принтер, терминал и т. п.) снабжено специализированным блоком управления, называемым контроллером. Контроллер взаимодействует с драйвером — системным программным модулем, предназначенным для управления данным устройством. Контроллер периодически принимает от драйвера выводимую на устройство информацию, а также команды управления, которые говорят о том, что с этой информацией нужно сделать (например, вывести в виде текста в определенную область терминала или записать в определенный сектор диска).
Основными компонентами подсистемы ввода-вывода являются драйверы, управляющие внешними устройствами, и файловая система.
Достоинством подсистемы ввода-вывода любой универсальной ОС является наличие разнообразного набора драйверов для наиболее популярных периферийных устройств.
Драйвер взаимодействует, с одной стороны, с модулями ядра ОС (модулями подсистемы ввода-вывода, модулями системных вызовов, модулями подсистем управления процессами и памятью и т. д.), а с другой стороны — с контроллерами внешних устройств. Поэтому существуют два типа интерфейсов:
− интерфейс «драйвер-ядро» (Driver Kernel Interface, DKI),
Подсистема ввода-вывода (Input-Output Subsystem) мультипрограммной ОС при обмене данными с внешними устройствами компьютера должна решать следующие задачи:
- организация параллельной работы устройств ввода-вывода и процессора;
- согласование скоростей обмена и кэширование данных;
- разделение устройств и данных между процессами;
- обеспечение удобного логического интерфейса между устройствами и остальной частью системы;
- поддержка широкого спектра драйверов с возможностью простого включения в систему нового драйвера;
- динамическая загрузка и выгрузка драйверов;
- поддержка нескольких файловых систем;
- поддержка синхронных и асинхронных операций ввода-вывода.
Операция ввода-вывода может выполняться по отношению к программному модулю, запросившему операцию:
- в синхронном режиме - программный модуль приостанавливает свою работу до тех пор, пока операция ввода-вывода не будет завершена (рис.13.1, а);
- В асинхронном режиме - программный модуль продолжает выполняться в мультипрограммном режиме одновременно с операцией ввода-вывода (рис.13.1, б).
Рис.13.1 - Два режима выполнения операций ввода-вывода
Многослойная модель подсистемы ввода-вывода
Многослойное построение программного обеспечения, характерно при построении подсистемы ввода-вывода. При этом нижние слои подсистемы ввода-вывода должны включать индивидуальные драйверы, написанные для конкретных физических устройств, а верхние слои должны обобщать процедуры управления этими устройствами, предоставляя общий интерфейс для групп устройств, обладающих некоторыми общими характеристиками.
В самом общем виде программное обеспечение ввода-вывода можно разделить на четыре слоя (рисунок 13.2):
1. Обработка прерываний,
2. Драйверы устройств,
3. Независимый от устройств слой операционной системы,
4. Пользовательский слой программного обеспечения.
Рис.13.2 - Многоуровневая организация подсистемы ввода-вывода
В более частном виде структура подсистемы ввода-вывода, характерная для современных ОС представлена на рис.13.3.
Большая часть программного обеспечения ввода-вывода является независимой от устройств. Точная граница между драйверами и независимыми от устройств программами определяется системой, так как некоторые функции, которые могли бы быть реализованы независимым способом, в действительности выполнены в виде драйверов для повышения эффективности функционирования.
Рис.13.3 - Структура подсистемы ввода-вывода современной ОС
Типичными функциями для независимого от устройств слоя являются:
- обеспечение общего интерфейса к драйверам устройств,
- обеспечение независимого размера блока,
- распределение памяти на блок-ориентированных устройствах,
- распределение и освобождение выделенных устройств,
- уведомление об ошибках.
Менеджеры ввода-вывода
В подсистеме ввода-вывода наряду с модулями, отражающими специфику внешних устройств и образующими вертикальные подсистемы, существуют модули универсального назначения.
Менеджер ввода-вывода . – модуль ОС, организующий согласованную работу всех остальных компонентов подсистемы ввода-вывода, взаимодействие с пользовательскими процессами и другими подсистемами ОС. Причем функции управления устройствами, распределены по всем уровням, образуя оболочку.
Верхний слой менеджера составляют системные вызовы ввода-вывода, которые принимают от пользовательских процессов запросы на ввод-вывод и переадресуют их отвечающим за определенный класс устройств модулям и драйверам, а также возвращают процессам результаты операций ввода-вывода. Таким образом этот слой поддерживает пользовательский интерфейс ввода-вывода, создавая для прикладных программистов максимум удобств по манипулированию внешними устройствами и расположенными на них данными.
Нижний слой менеджера реализует непосредственное взаимодействие с контроллерами внешних устройств, экранируя драйверы от особенностей аппаратной платформы компьютера — шины ввода-вывода, системы прерываний и т. п. Этот слой принимает от драйверов запросы на обмен данными с регистрами контроллеров в некоторой обобщенной форме с использованием независимых от шины ввода-вывода адресации и формата, а затем преобразует эти запросы в зависящий от аппаратной платформы формат.
Драйверы устройств
Под драйвером понимается программный модуль, который обладает следующими свойствами и функциями:
- входит в состав ядра операционной системы, работая в привилегированном режиме;
- непосредственно управляет внешним устройством, взаимодействуя с его контроллером с помощью команд вводавывода компьютера;
- обрабатывает прерывания от контроллера устройства;
- предоставляет прикладному программисту удобный логический интерфейс работы с устройством, экранируя от него низкоуровневые детали управления устройством и организации его данных;
- взаимодействует с другими модулями ядра ОС с помощью строго оговоренного интерфейса, описывающего формат передаваемых данных, структуру буферов, способы включения драйвера в состав ОС, способы вызова драйвера, набор общих процедур подсистемы ввода-вывода, которыми драйвер может пользоваться, и т. п.
В операционной системе только драйвер устройства знает о конкретных особенностях какого-либо устройства.
Порядок функционирования драйвера устройства:
- Драйвер устройства принимает запрос от программного слоя и решает, как его выполнить. Если драйвер был свободен во время поступления запроса, то он начинает выполнять запрос немедленно. Если же он был занят обслуживанием другого запроса, то вновь поступивший запрос присоединяется к очереди уже имеющихся запросов, и он будет выполнен, когда наступит его очередь.
- Преобразование запроса ввода-вывода из абстрактной формы в конкретную. Для дискового драйвера это означает преобразование номеров блоков в номера цилиндров, головок, секторов, проверку, работает ли мотор, находится ли головка над нужным цилиндром.
- Передача команд контроллеру и принятие решения должен ли драйвер блокировать ли себя до окончания заданной операции или нет. Если операция занимает значительное время, как при печати некоторого блока данных, то драйвер блокируется до тех пор, пока операция не завершится, и обработчик прерывания не разблокирует его. Если команда ввода-вывода выполняется быстро (например, прокрутка экрана), то драйвер ожидает ее завершения без блокирования.
Возвращение управления программе (вызвавшей драйвер) с результатом операции ввода-вывода.
Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.
Рабочие листы и материалы для учителей и воспитателей
Более 2 500 дидактических материалов для школьного и домашнего обучения
Столичный центр образовательных технологий г. Москва
Получите квалификацию учитель математики за 2 месяца
от 3 170 руб. 1900 руб.
Количество часов 300 ч. / 600 ч.
Успеть записаться со скидкой
Форма обучения дистанционная
- Онлайн
формат - Диплом
гособразца - Помощь в трудоустройстве
Видеолекции для
профессионалов
- Свидетельства для портфолио
- Вечный доступ за 120 рублей
- 311 видеолекции для каждого
1. Какие базовые функции ОС не выполняют модули ядра?
а) управление процессами;
б) управление полетами;
в) управление памятью;
г) управление устройствами ввода-вывода.
2. Какие программы предназначены для обслуживания конкретных периферийных устройств?
3. Что дистрибутив Ubuntu имеет в качестве графической рабочей среды?
4. Какой из корневых разделов системного реестра хранит информацию об установленных в данный момент аппаратурных средствах?
5. Какие программы предназначены для обнаружения подозрительных действий при работе компьютера?
а) программы-детекторы;
б) программы-доктора;
в) программы-ревизоры;
г) программы-фильтры.
6. Какая программа позволяет программным способом увеличить доступное пространство на жестком диске?
а) файловый архиватор;
б) дисковый архиватор;
в) программный архиватор;
г) симметричный архиватор.
7. Какой тип параметров реестра не существует?
8. Как называются программы, позволяющие создавать копии файлов меньшего размера и объединять копии нескольких файлов в один архивный файл?
г) файловыми менеджерами.
9. Какой раздел опций позволяет изменять настройки устройств ручного ввода?
а) Advanced BIOS Features;
б) Hard Disk Boot Priority;
в) Standard CMOS Features;
г) Advanced Chipset Features
10. Как называются неподвижные или анимированные изображения, которые появляются на экране компьютера после какого-то времени бездействия?
в) тема рабочего стола;
г) панель управления.
11. Какие функции обеспечивает оператор R EN ?
а) чтение и обработка строк из текстового файла;
б) приостановка дальнейшей обработки пакетного файла;
в) внесение комментария в текст командного файла;
г) вывод списка доступных команд с кратким пояснением.
12. Какое расширение имеют пакетные командные файлы MS DOS ?
13. Что такое системный реестр?
а) область на диске для выгрузки задач;
б) структура с набором системных переменных;
в) база данных для хранения сведений о конфигурации компьютера и настроек ОС;
г) данные о многоуровневой очереди с обратной связью.
14. Какой операционной системы не существует?
15. Где находится BIOS?
а) в оперативном запоминающем устройстве;
б) на винчестере;
г) в постоянном запоминающем устройстве.
16. Какой тип ОС не относится к многозадачным?
а) система пакетной обработки;
б) система реального времени;
в) система индивидуальной обработки.
17. Какая команда используется для переименования файла?
18. Какие команды ОС DOS называются внутренними?
а) команды, предназначенные для создания файлов и каталогов;
б) команды, встроенные в DOS;
г) команды, которые имеют расширения txt, doc.
19. Какая команда используется для создания папки из bat файла?
20. Для чего служит загрузчик операционной системы?
а) загрузки программ в оперативную память ЭВМ;
б) обработки команд, введенных пользователем;
в) считывания в память модулей операционной системы io.sys и msdos.sys;
г) подключения устройств ввода-вывода.
21. Какой подсистемы управления нет в ОС?
б) заданиями;
в) устройствами ввода-вывода;
г) файловой системой.
22. Как называется информационная структура, которая содержит информацию, необходимую для возобновления выполнения процесса после прерывания и поэтому сохраняемую перед прерыванием?
23. Какое состояние не определено для потока в системе?
г) готовность.
24. Каких классов прерываний не существует?
г) программных.
25. Частью чего является файловая система?
а) дисковых систем;
б) драйверов дисков;
г) пользовательских программ.
26. Какую структуру образуют файлы?
27. Какие типы разделов поддерживает ОС Windows?
28. Какую информацию не содержит дескриптор процесса?
а) идентификатор процесса;
б) информацию о состоянии процесса;
в) данные о родственных процессах;
г) режим работы процессора.
29. Какой максимальный размер диска поддерживает FAT16?
а) практически неограничен;
30. Что из ниже перечисленного является недостатком файловой системы FAT?
а) сложность реализации;
б) не поддерживают разграничения доступа к файлам и каталогам;
в) не поддерживают длинных имен файлов;
г) не содержат средств поддержки отказоустойчивости.
1 Где содержится главная загрузочная запись (MBR)?
а) в операционной системе;
б) в самом первом секторе на винчестере;
в) в самом первом цилиндре на винчестере;
г) в самой первой дорожке на винчестере.
2 Какой из корневых разделов системного реестра содержит информацию о технологии OLE, отвечает за настройки интерфейса?
3 Как называется программный продукт, предназначенный для решения вспомогательных задач?
г) пакетный файл.
4 Какой вирус относится к вирусам, различающимся по среде обитания?
а) резидентный вирус;
б) очень опасный вирус;
г) загрузочный вирус.
5 Как называется резервное копирование информации ?
6 Что произойдет, если при загрузке не будет выбрана ни одна из предложенных операционных систем?
а) появится надпись, с предложением обратиться к администратору;
б) загрузится операционная система, которая была инсталлирована последней;
в) компьютер выключится;
г) компьютер будет ждать вашего решения.
7 Какая команда позволяет управлять потоком вывода на дисплей?
8 Кто является создателем операционной системы Linux?
а) Линус Торвальдс;
в) Эндрю Таненбаум;
9 Какое название носят современные операционные системы компании Microsoft?
10 Как называется папка, которая выступает в качестве вершины файловой структуры?
г) папка верхнего уровня.
11 Названиями чего являются KDE, GNOME, Xfce?
а) оболочек операционной системы Linux;
б) операционных систем;
в) графических редакторов;
12 Какой процесс позволяет записывать файлы в кластеры, последовательно идущие друг за другом?
г) установка драйвера.
13 Какая системная программа служит для управления всеми разделяемыми ресурсами компьютера?
а) диспетчер ввода-вывода;
б) диспетчер объектов;
в) диспетчер процессов;
г) диспетчер виртуальной памяти.
14 Какая команда используется для просмотра оглавления каталога?
15 Для чего используется утилита CMOS Setup?
а) для начальной загрузки компьютера;
б) для изменения текущих настроек базовой системы ввода-вывода;
в) для работы с графическими редакторами;
г) для создания резервной копии операционной системы.
16 Какая команда используется для приостановки выполнения командных файлов?
17 Какие функции выполняет операционная система?
а) обеспечение организации и хранения файлов;
б) подключения устройств ввода/вывода;
в) организация обмена данными между компьютером и различными периферийными устройствами;
г) организация диалога с пользователем, управление ресурсами компьютера.
18 Как называется исполняемый код, содержащий обращения к функциям операционной системы и через их посредство получающий доступ к ресурсам?
19 Какие операционные системы управляют разделением совместно используемых ресурсов?
20 Какой тип записи реестра не существует?
21. Каких смен состояний не существует в системе?
а) выполнение → готовность;
б) ожидание →выполнение;
в) ожидание → готовность;
г) готовность → ожидание.
22. Как называется информационная структура, которая содержит информацию о процессе, необходимую ядру ОС в течение всего жизненного цикла процесса независимо от его состояния?
23. Какую информацию не содержит контекст процесса?
а) режим работы процессора;
б) данные о родственных процессах;
г) указатели на открытые файлы.
24. Где хранятся атрибуты файлов в файловой системе FAT?
а) вместе с файлом;
в) в индексных дескрипторах;
г) в таблицах FAT.
25. Как называется раздел, с которого загружается ОС при запуске компьютера?
26. Что отражает числовое значение 12, 16, 32 в файловой системе FAT?
а) размер кластера на диске;
б) разрядность элемента в таблице FAT;
в) допустимое количество символов в имени файла.
27. Какая запись имени текстового файла является правильной?
28. Что такое файл?
а) текст, распечатанный на принтере;
б) поименованная область данных на внешнем носителе памяти;
в) программа в оперативной памяти;
г) единица измерения информации.
29. Что такое BIOS?
а) игровая программа;
б) диалоговая оболочка;
в) базовая система ввода-вывода;
г) командный язык операционной системы.
30. Какой вид многозадачности не существует?
а) вытесняющая многозадачность;
б) кооперативная (не вытесняющая) многозадачность;
в) симметричная многозадачность;
г) параллельная многозадачность.
1. Какие ОС называются мультипрограммными
а) обеспечивающие одновременную работу нескольких пользователей
б) поддерживающие сетевую работу компьютеров
в) обеспечивающие запуск одновременно нескольких программ
г) состоящие более чем из одной программы
2 Какие существуют способы реализации ядра системы?
а) многоуровневая (многослойная) организация
б) микроядерная организация
в) реализация распределеннная
г) монолитная организация
3. Что обычно входит в состав ядра ОС
а) высокоуровневые диспетчеры ресурсов
б) аппаратная поддержка функций ОС процессором
в) базовые исполнительные модули
г) набор системных API-функций
4 Какие особенности характерны для современных универсальных операционных систем?
а) поддержка многозадачности
б) поддержка сетевых функций
в) обеспечение безопасности и защиты данных
г) 4. предоставление большого набора системных функций разработчикам приложений
5.Какие утверждения относительно понятия «API-функция» являются правильными?
а) API-функции определяют прикладной программный интерфейс
б) API-функции используются при разработке приложений для доступа к ресурсам компьютера
в) API-функции реализуют самый нижний уровень ядра системы
г) API-функции — это набор аппаратно реализованных функций системы
6 Какие особенности характерны для ОС Unix
а) открытость и доступность исходного кода
б) ориентация на использование оконного графического интерфейса
в) использование языка высокого уровня С
г) возможность достаточно легкого перехода на другие аппаратные платформы
7 Какие типы операционных систем используются наиболее часто в настоящее время?
а) системы семейства Windows
б) системы семейства Unix/Linux
в) системы семейства MS DOS
г) системы семейства IBM OS 360/370
8 Какие задачи необходимо решать при создании мультипрограммных ОС
а) защита кода и данных разных приложений, размещенных вместе в основной памяти
б) централизованное управление ресурсами со стороны ОС
в) переключение процессора с одного приложения на другое
г) необходимость размещения в основной памяти кода и данных сразу многих приложений
9. Какое соотношение между используемыми на СЕРВЕРАХ операционными системами сложилось в настоящее время?
а) примерно поровну используются системы семейств Windows и Unix/Linux
б) около 10 % — системы семейства Windows, около 90 % — системы смейства Unix/Linux
в) около 90 % — системы семейства Windows, около 10 % — системы семейства Unix/Linux
г) около 30 % — системы семейства Windows, около 30 % — системы семейства Unix/Linux, около 40 % — другие системы
10 Какие утверждения относительно понятия «Ядро операционной системы» являются правильными?
а) ядро реализует наиболее важные функции ОС
б) подпрограммы ядра выполняются в привилегированном режиме работы процессора
в) ядро в сложных ОС может строиться по многоуровневому принципу
г) ядро всегда реализуется на аппаратном уровне
12 Какие шаги в алгоритме взаимодействия приложения с системой выполняются операционной системой
а) небольшую структуру данных, содержащую информацию о некотором событии
б) специальную API-функцию, вызываемую системой при возникновении события
в) однобайтовое поле с кодом происшедшего события
г) небольшое окно, выводящее пользователю информацию о возникшем событии
14 Какие утверждения относительно иерархии окон являются справедливыми
а) главное окно может содержать любое число подчиненных окон
б) любое подчиненное окно может содержать свои подчиненные окна
в) подчиненные окна могут быть двух типов – дочерние и всплывающие
г) приложение может иметь несколько главных окон
15 Как можно узнать координаты текущего положения мыши при нажатии левой кнопки
а) с помощью события WM_LbuttonDown и его поля LPARAM
б) с помощью события WM_LbuttonDown и его поля WPARAM
в) с помощью события WM_LbuttonDown и его полей WPARAM и LPARAM
г) с помощью события WM_LbuttonCoordinates
16 Какие функции можно использовать для получения контекста устройства?
17 Какая инструкция (оператор) является основной при написании оконной функции?
а) инструкция множественного выбора типа Case — Of
б) условная инструкция if – then
в) инструкция цикла с известным числом повторений
г) инструкция цикла с неизвестным числом повторений
18 Какой вызов позволяет добавить строку в элемент-список?
а) SendMessage (MyEdit, lb_AddString, 0, строка )
б) SendMessage (“Edit”, lb_AddString, 0, строка )
в) SendMessage (MyEdit, AddString, 0, строка )
г) SendMessage (MyEdit, строка , lb_AddString, 0)
19 Какие утверждения относительно оконной функции являются правильными
а) оконная функция принимает 4 входных параметра
б) тело оконной функции – это инструкция выбора с обработчиками событий
г) оконная функция явно вызывается из основной функции приложения
21 Что может быть причиной появления внутреннего прерывания
а) попытка деления на ноль
б) попытка выполнения запрещенной команды
в) попытка обращения по несуществующему адресу
г) щелчок кнопкой мыши
22 Какие операции определяют взаимодействие драйвера с контроллером
а) проверка состояния устройства
б) запись данных в регистры контроллера
в) чтение данных из регистров контроллера
г) обработка прерываний от устройства
23 Какие операции включает в себя вызов обработчика нового прерывания
а) обращение к таблице векторов прерываний для определения адреса первой команды вызываемого обработчика
б) сохранение контекста для прерываемого программного кода
в) занесение в счетчик команд начального адреса вызываемого обработчика
г) внесение необходимых изменений в таблицу векторов прерываний
24 Что входит в программный уровень подсистемы ввода/вывода
б) диспетчер ввода/вывода
в) системные вызовы
25 Что определяет понятие “порт ввода/вывода”
а) порядковый номер или адрес регистра контроллера
б) машинную команду ввода/вывода
в) устройство ввода/вывода
г) контроллер устройства ввода/вывода
26 Какие существуют типы прерываний
а) внешние или аппаратные прерывания
б) внутренние прерывания или исключения
в) программные псевдопрерывания
г) системные прерывания
27 Какие утверждения относительно понятия прерывания являются правильными
а) прерывания — это механизм реагирования вычислительной системы на происходящие в ней события
б) прерывания используются для синхронизации работы основных устройств вычислительной системы
в) прерывания возникают в непредсказуемые моменты времени
г) прерывания — это основной механизм планирования потоков
28 Какую информацию могут содержать регистры контроллеров устройства
а) текущее состояние устройства
б) текущую выполняемую устройством команду
в) данные, передаваемые от устройства системе
г) данные, передаваемые системой устройству
29 Как выстраиваются аппаратные прерывания в зависимости от их приоритета
а) сбой аппаратуры > таймер > дисковые устройства > сетевые устройства > клавиатура и мышь
б) сбой аппаратуры > таймер > дисковые устройства > клавиатура и мышь > сетевые устройства
в) таймер > сбой аппаратуры > дисковые устройства > сетевые устройства > клавиатура и мышь
г) сбой аппаратуры > дисковые устройства > таймер > сетевые устройства > клавиатура и мышь
Как уважаемый хабрапользователь наверняка знает, «драйвер устройства» — это компьютерная программа управляющая строго определенным типом устройства, подключенным к или входящим в состав любого настольного или переносного компьютера.
Основная задача любого драйвера – это предоставление софтового интерфейса для управления устройством, с помощью которого операционная система и другие компьютерные программы получают доступ к функциям данного устройства, «не зная» как конкретно оно используется и работает.
Обычно драйвер общается с устройством через шину или коммуникационную подсистему, к которой подключено непосредственное устройство. Когда программа вызывает процедуру (очередность операций) драйвера – он направляет команды на само устройство. Как только устройство выполнило процедуру («рутину»), данные посылаются обратно в драйвер и уже оттуда в ОС.
Любой драйвер является зависимым от самого устройства и специфичен для каждой операционной системы. Обычно драйверы предоставляют схему прерывания для обработки асинхронных процедур в интерфейсе, зависимом от времени ее исполнения.
Любая операционная система обладает «картой устройств» (которую мы видим в диспетчере устройств), для каждого из которых необходим специфический драйвер. Исключения составляют лишь центральный процессор и оперативная память, которой управляет непосредственно ОС. Для всего остального нужен драйвер, который переводит команды операционной системы в последовательность прерываний – пресловутый «двоичный код».
Как работает драйвер и для чего он нужен?
Основное назначение драйвера – это упрощение процесса программирования работы с устройством.
Он служит «переводчиком» между хардовым (железным) интерфейсом и приложениями или операционными системами, которые их используют. Разработчики могут писать, с помощью драйверов, высокоуровневые приложения и программы не вдаваясь в подробности низкоуровневого функционала каждого из необходимых устройств в отдельности.
Как уже упоминалось, драйвер специфичен для каждого устройства. Он «понимает» все операции, которые устройство может выполнять, а также протокол, с помощью которого происходит взаимодействие между софтовой и железной частью. И, естественно, управляется операционной системой, в которой выполняет конкретной приложение либо отдельная функция самой ОС («печать с помощью принтера»).
Если вы хотите отформатировать жесткий диск, то, упрощенно, этот процесс выглядит следующим образом и имеет определенную последовательность: (1) сначала ОС отправляет команду в драйвер устройства используя команду, которую понимает и драйвер, и операционная система. (2) После этого драйвер конкретного устройства переводит команду в формат, который понимает уже только устройство. (3) Жесткий диск форматирует себя, возвращает результат драйверу, который уже впоследствии переводит эту команду на «язык» операционной системы и выдает результат её пользователю (4).
Как создается драйвер устройства
Для каждого устройства существует свой строгий порядок выполнения команд, называемой «инструкцией». Не зная инструкцию к устройству, невозможно написать для него драйвер, так как низкоуровневые машинные команды являются двоичным кодом (прерываниями) которые на выходе отправляют в драйвер результат, полученный в ходе выполнения этой самой инструкции.
При создании драйвера для Линукса, вам необходимо знать не только тип шины и ее адрес, но и схематику самого устройства, а также весь набор электрических прерываний, в ходе исполнения которых устройство отдает результат драйверу.
Написание любого драйвера начинается с его «скелета» — то есть самых основных команд вроде «включения/выключения» и заканчивая специфическими для данного устройства параметрами.
И чем драйвер не является
Часто драйвер устройства сравнивается с другими программами, выполняющими роль «посредника» между софтом и/или железом. Для того, чтобы расставить точки над «i», уточняем:
- Драйвер не является интерпретатором, так как не исполняется напрямую в софтовом слое приложения или операционной системы.
- Драйвер не является компилятором, так как не переводит команды из одного софтового слоя в другой, такой же.
Ну и на правах рекламы – вы всегда знаете, где скачать новейшие драйвера для любых устройств под ОС Windows.
Читайте также: