16 - Управление устройствами и вводом-выводом.ppt
- Количество слайдов: 43
Безопасность операционных систем Управление устройствами и вводом/выводом Апрель 2014 1
Введение l l Управление внешними устройствами - это одна из важнейших функций любой операционной системы. Система должна обеспечивать эффективный и удобный доступ к периферийным устройствам, а также обеспечивать возможность унифицированной разработки программного обеспечения для вновь подключаемых внешних устройств. Апрель 2014 2
Основные вопросы Физическое подключение устройств к процессору l Механизмы передачи данных l Обработка прерываний l Драйвер внешнего устройства l Апрель 2014 3
Шины в компьютерных системах l l l Шина (bus) представляет из себя совокупность данных, адресов и линий (проводников на печатной плате или в кабеле или шлейфе) сигналов контроля, которые позволяют устройствам организовать сообщение между собой. Некоторые шины являются "широкими", обеспечивая одновременную (параллельную) передачу многих битов данных и битов контроля. Другие представляют собой всего лишь пару проводов, позволяющую устройствам передавать данные и управляющие сигналы последовательно. Некоторые шины позволяют связываться с любым другим устройством на шине. Другие требуют наличия "хозяина шины", master controller (центральный процессор или контроллер ввода/вывода), выступающего в роли получателя или отправителя данных. От того, какими свойствами обладает главная шина компьютера зависит производительность всей системы (можно ее определить, как шину, к которой подключается большинство системных устройств). Апрель 2014 4
Структура системной платы ПЭВМ Апрель 2014 5
Магистрально-модульные стандарты и стандарты системной шины l l ISA, EISA, MCA, VLB, PCI-Express, PCI-X, QPI Системная шина представляет собой способ непосредственного подключения устройств к центральному процессору. Поэтому такие интерфейсы отличаются: l l l Апрель 2014 высокой скоростью передачи; простым доступом со стороны центрального процессора; низкой помехоустойчивостью и низкими порогами по напряжению и току; cложностью; ориентацией на архитектуру конкретного компьютера или семейства компьютеров. 6
Собственный контроллер устройства l На определенном этапе развития ВС использовались собственные контроллеры устройств, подключаемые непосредственно к системной шине. l l Подключение устройства непосредственно к системной шине имеет серьезные недостатки. l l l Например, в компьютерах третьего поколения и ниже таким образом часто подключались магнитные диски. Порт RS 232 Параллельный порт Такое устройство может подключаться только к компьютерам с определенным типом шины. Для подключения устройства необходимо вскрывать компьютер. Возможны проблемы с «электрической» совместимостью Нельзя подключить много устройств Не всем устройствам удобно работать с системной шиной Еще в 60 гг. появились различные стандарты де-факто Апрель 2014 7
Прослойка между системной шиной и оборудованием l l IDE, SCSI, Fire. Wire, USB, SATA, SAS Предназначение: l l l Апрель 2014 Стандартизация и упрощение подключения внешнего оборудования Возможность использовать относительно длинные линии связи Мультиплексирование устройств 8
Открытые и фирменные стандарты l l l Например, стандарт Nu. Bus является фирменным стандартом Apple, и получить его описание или лицензию на приобретение соответствующих микросхем не так то просто. Стандарт же SCSI или CAMAC полностью открытые, т. е. любой может получить полную документацию и создать собственное устройство. Если его интерфейс соответствует документации, то оно будет работать совместно с любым «правильным» контроллером. Как правило, открытые стандарты создаются в исследовательских центрах или разрабатываются правительственными или межправительственными организациями. Однако иногда и фирмы делают свои внутренние стандарты открытыми, как это произошло со стандартом SCSI. Открытые стандарты особенно выгодны небольшим фирмам и командам разработчиков, у которых нет денег на проталкивание на рынок «фирменной» , ни на что непохожей системы со своим шлейфом периферийных устройств. Апрель 2014 9
Механизмы передачи данных l l Независимо от используемого стандарта интерфейса периферийных устройств операционная система взаимодействует с контроллером устройств, а не с самим устройством. При всем многообразии компьютерной техники, существует три основных механизма, используя которые устройство может обмениваться с центральным процессором или, в широком смысле, с компьютером: l l Программируемый ввод/вывод. Прямой доступ к памяти (Direct Memory Access, DMA). Совместно используемые области памяти. При выборе разработчиком аппаратуры механизма передачи данных, используемого для связи с устройством, следует исходить из скорости, с которой требуется передавать данные, и средним размером передаваемого непрерывного блока данных. Апрель 2014 10
Программируемый ввод/вывод Устройства, использующие программируемый ввод/вывод (Programmed I/O, PIO), осуществляют передачу данных непосредственно через регистры устройства. l Драйвер должен использовать инструкцию ввода/вывода (I/O instruction) для чтения из регистра или записи в регистр устройства каждого байта данных. l При больших объемах драйвер должен поддерживать адресацию буферной области и счетчик переданных. l Поскольку реальная скорость передачи данных таких устройств много меньше, чем возможности процессора по чтению или записи в регистры данных, то устройства с таким подходом обычно генерирует прерывание для каждого байта (слова) передаваемых данных. l Последовательный СОМ порт является одним из примеров PIO устройств. l Более совершенные устройства используют накопительные FIFO, что позволяет им в одно прерывание передавать 4 или 16 байт данных. l Количество прерываний относительно переданного объема данных весьма велико, отчего этот метод пригоден лишь для медленных Апрель 2014 11 устройств. l
Прямой доступ к памяти l l l Прямой доступ к памяти (Direct Memory Access, DMA) использует выгоды от вовлечения в работу вторичного процессора, называемого контроллером DMA (DMA controller, DMAC, контроллер ПДП). При инициации операции ввода/вывода с привлечением DMA метода драйвер должен выполнить установку нужного состояния DMA контроллера (запрограммировать его), определив адрес начала буферной области и количество передаваемых данных. По поступлению от драйвера указания начать работу DMA контроллер приступает к выполнению передачи данных между устройством и системной оперативной памятью. Когда DMA контроллер завершает передачу данных полностью, генерируется прерывание. Таким образом, драйверный код выполняется только в начале операции передачи данных и затем — лишь по ее завершении, освобождая центральный процессор для выполнения других задач. Апрель 2014 12
Достоинства и недостатки ПДП l l l Высокоскоростные устройства, которые вынуждены регулярно заниматься передачей крупных блоков данных, являются первыми кандидатами на использования метода DMA. По сравнению с операциями программируемого ввода/вывода, интенсивность использования сигналов прерываний и активность драйвера существенно уменьшаются. Жесткие диски, устройства мультимедиа, сетевые карты являются примерами устройств, использующих DMA. Необходимо отметить, что реальная DMA передача данных не является очевидно и безусловно выгодной. Вторичный процессор, каковым является DMAC, конкурирует с центральным процессором в использовании пропускной способности системной оперативной памяти и шин. В случае если центральный процессор обращается к системной памяти часто, то кто-то из них — либо центральный процессор, либо DMAC — вынуждены ждать, пока предыдущий цикл обращения к памяти не закончится. Апрель 2014 13
Совместно используемые области памяти Апрель 2014 14
Векторы прерываний l l Некоторые устройства и некоторые процессорные архитектуры допускают механизм автоматической диспетчеризации — переходов "по вектору", то есть адресу программных процедур, при поступлении сигналов о прерываниях. При другом методе векторизация не применяется, и для всех типов прерываний обслуживание предоставляется обобщенной процедурой. Такая процедура просматривает в порядке приоритетности весь список устройств, которые могли бы вызвать прерывание, и определяет, какое устройство требует обслуживания на самом деле. Очевидно, что в современных компьютерных системах, где генерируется от нескольких десятков до нескольких тысяч прерываний в секунду, существенно более эффективным оказывается векторный подход. Апрель 2014 15
Передача сигналов прерываний (1) l l l При генерации прерываний используются две основные стратегии. Более старый и менее предпочтительный механизм носит название edge-triggered (управляемые перепадом, управляемые фронтом) или latched прерывания. Устройства, которые генерируют такие прерывания, сигнализируют о потребности в обслуживании осуществлением перехода на физически существующем проводе (например, на одном из проводников шины или соединительного кабеля) из одного логического состояния в другое, скажем, из 1 в 0. Как только этот переходной процесс прошел, устройство может отпустить линию (отпустить прерывание), восстановив параметры электрического сигнала, в данном случае, обозначающие логическую 1. Другими словами, линия прерывания такого устройства "пульсирует" под его руководством, а процессор должен обратить внимание на проходящие импульсы. Апрель 2014 16
Передача сигналов прерываний (2) l l l Этот тип прерываний является потенциальным источником ошибочных срабатываний, поскольку шум на линии может выглядеть как сигнал прерывания. Кроме того, более сложная проблема возникает, когда два устройства с таким типом прерываний используют одну линию. В случае если два устройства "просигнализируют" одновременно, процессор различит лишь одно прерывание, и тот факт, что прерывания сгенерировали два устройства, будет потерян безвозвратно. Классическим примером оборудования, где случаются потери такого типа прерываний, являются последовательные СОМ порты. По традиции, COM 1 и COM 3 используют одно определяемое по фронту прерывание, а именно IRQ 4. В результате, невозможно одновременно подключить к этим двум портам оборудование, которое использует управляемое прерываниями программное обеспечение. Апрель 2014 17
Передача сигналов прерываний (3) l l Второй механизм, известный как level-sensitive, чувствительный к уровню, или level-triggered, управляемый уровнем. Устройства удерживают общую аппаратную линию (совместно используемый проводник) в соответствующем состоянии до тех пор, пока потребность каждого не будет удовлетворена. Теперь для процессора нет проблем в том, чтобы зарегистрировать оба прерывания, так как линия удерживается в этом состоянии до момента завершения обслуживания и первого, и второго устройства — это позволяют делать специальные типы цифровых схем. В случае если два прерывания происходят одновременно, обслуживается устройство с более высоким приоритетом, а после и другое устройство, поскольку оно продолжает сигнализировать, удерживая линию в соответствующем состоянии и после окончания обработки запроса первого, высокоприоритетного, устройства. Апрель 2014 18
Понятие драйвера l l Драйвер – посредник между устройством и прикладным программным обеспечением. Строго говоря, драйвером считается фрагмент кода операционной системы, который позволяет ей обращаться к аппаратуре. Термин "аппаратура" обозначает как неотъемлемые части компьютера (например, видеоадаптер), так и автономные устройства (например, принтер). Концепция драйвера как отдельного сменного модуля оформилась не сразу. Некоторые версии UNIX и по сию пору практикуют полную перекомпиляцию ядра при замене какоголибо драйвера, что совершенно не похоже на обращение с драйверами в Linux и Windows. Апрель 2014 19
Драйверы пользовательского режима и драйверы режима ядра l Драйверы пользовательского режима являются системным программным кодом, функционирующим в пользовательском режиме. l l В качестве примера можно назвать драйверы-симуляторы (виртуализаторы) для воображаемой аппаратуры или новых исполнительных подсистем (WOW, POSIX, OS/2). Так как Windows не допускает непосредственной работы с аппаратурой для кода пользовательского режима, то такие драйверы должны полагаться в этой части на драйверы, работающие в режиме ядра. Драйверы режима ядра (kernel-mode drivers) целиком состоят из кода системного уровня, выполняющегося в режиме ядра. l l Апрель 2014 Имеют прямой доступ к управлению устройствами, содержащимися в компьютере или подключенными к компьютеру. Ничто не может помешать такому драйверу представлять вымышленную аппаратуру — воля разработчика, где этим заниматься — в пользовательском режиме или режиме ядра. 20
Характерные черты В операционных системах MS DOS, Windows, Unix и всех клонах Linux принят способ работы с драйверами как с файлами. То есть при доступе к драйверу используются функции либо совпадающие (лексически), либо весьма похожие на функции для работы с файлами (open, close, read, write. . . ). l Драйверы стали легко заменяемой компонентой операционной системы. При сохранении некоторых особенностей инсталляции, драйверы теперь повсеместно могут быть удалены/добавлены в систему редактированием одной записи в специальных системных файлах. Более того, загрузка "по требованию" (по запросу пользовательской программы) становится практически общей чертой Windows/Unix/Linux. l Концепция существования режима ядра (с большими функциональными возможностями и относительной бесконтрольности) и пользовательского режима (с жестким контролем со стороны системы) присутствует в Windows/Unix/Linux с незапамятных времен. l Если посмотреть на драйвер (режима ядра) в операционной системе Windows, то становится понятно: это не просто драйвер, это возможность войти в режим ядра со своим программным кодом. Апрель 2014 21 l
Обращение к драйверу Апрель 2014 22
Идеология драйвера l l l Операционная система управляет некоторым «виртуальным устройством» , которое понимает стандартный набор команд. Драйвер переводит эти команды в команды, которые понимает непосредственно устройство. Эта идеология называется «абстрагирование от аппаратного обеспечения» . Апрель 2014 23
Реализация драйвера l l Драйвер — это «DLL режима ядра» . Драйвер состоит из набора функций, каждая из которых предназначена для реализации отдельного типа обращений к драйверу со стороны Диспетчера ввода/вывода. Экспорт этих функций выполняется путем их регистрации в процедуре, стандартной для всех драйверов, — Driver. Entry. Драйвер может быть загружен и выгружен, а для выполнения действий по инициализации или освобождению ресурсов драйвер должен зарегистрировать соответствующие рабочие функции. Апрель 2014 24
Основные компоненты драйвера Загрузка драйвера. Тут драйвер регистрируется в системе, производит первичную инициализацию и т. п. l Выгрузка. Драйвер освобождает захваченные ресурсы — память, файлы, устройства и т. п. l Открытие драйвера. Начало основной работы. Обычно драйвер открывается программой как файл, функциями Create. File() в Win 32 или fopen() в UNIX-подобных системах. l Чтение, запись: программа читает или записывает данные из/в устройство, обслуживаемое драйвером. l Закрытие: операция, обратная открытию, освобождает занятые при открытии ресурсы и уничтожает дескриптор файла. l Управление вводом-выводом (англ. IO Control, IOCTL). Зачастую драйвер поддерживает интерфейс ввода-вывода, специфичный для данного устройства. С помощью этого интерфейса программа может послать специальную команду, которую поддерживает данное устройство. Например, для SCSI-устройств можно послать команду GET_INQUIRY, чтобы получить описание устройства. В Win 32 -системах управление осуществляется через API-функцию Device. Io. Control(). В UNIX-подобных — ioctl(). Апрель 2014 25 l
Автоматическое распознавание и конфигурирование l За каждым аппаратным устройством, подключенным к компьютеру, закрепляются системные ресурсы, которые могут включать: l l диапазон адресов ввода/вывода (портов вода/вывода); диапазон отведенных адресов памяти; номер прерывания IRQ; DMA канал. Шина ISA – ручное управление ресурсами. Устройство – переключатели, система – панель управления. l Шина PCI – автоматическое распознавание и конфигурирование устройств в момент загрузки/перезагрузки системы или непосредственно в момент подключения устройства к компьютеру ("горячее" подключение). l Автоматическое конфигурирование позволяет программному обеспечению устанавливать приемлемые значения ресурсов для устройств, допускающих программную настройку. l Эти усовершенствования позволяют отойти от использования перемычек на подключаемых устройствах, а конечному пользователю более нет нужды знать обо всех особенностях конфигурирования системы и нового устройства в ней. Апрель 2014 26 l
Логические регистры устройств l l Драйверы взаимодействуют с подключаемыми устройствами путем чтения из регистров или записи в их внутренние регистры. Каждый внутренний регистр устройства обычно реализует одну из функций, перечисленных ниже: l l l Апрель 2014 Регистр состояния. Обычно считывается драйвером, когда тому необходимо получить информацию о текущем состоянии устройства. Регистр команд. Биты этого регистра управляют устройством некоторым образом, например, начиная или прекращая передачу данных. Драйвер обычно производит запись в такие регистры. Регистры данных. Обычно такие регистры используются для передачи данных между устройством и драйвером. В выходные (output) peгucmpы, регистры вывода, драйвер производит запись, в то время как информация входных (input) регистров, регистров ввода, считывается драйвером. 27
Доступ к регистрам устройств l l Как правило, регистры следуют друг за другом в своем адресном пространстве. Следовательно, для начала, необходим адрес первого из них. К сожалению, значение термина 'адрес' сильно варьируется при использовании его относительно виртуальных адресных пространств на различных платформах. Вариант первый. Используем специфическую для данного процессора инструкцию ввода/вывода в порт, а значит, нужен адрес порта ввода/вывода. Вариант второй. Особые области в памяти совмещены с адресами доступа к устройству. Запись по адресу в памяти означает перенос данных в устройство. Самый распространенный прием для доступа к видеопамяти — доступ по специальным адресам с использованием стандартных обращений к памяти. Апрель 2014 28
Сведения об устройстве l l Правильно спроектированное устройство должно идентифицировать (проявить) себя и предоставить системе перечень ресурсов, которые оно потребляет. Это перечень, формулируемый в некоторых позициях собственно устройством, а в некоторых — его драйвером, должен включать: l l l l Идентификатор производителя (Manufacturer ID). Идентификатор типа устройства (Device type ID). Требования к пространству ввода вывода (I/O space requirements). Требования по использованию прерываний. Требования по использованию каналов DMA. Требования относительно памяти, отведенной устройству. В случае Pn. P устройств, идентификаторы производителя и типа устройства являются критерием выбора драйвера при загрузке системы или же при подключении устройства (если оно было подключено после загрузки). Апрель 2014 29
Поддержка драйверов Со стороны производителей аппаратного обеспечения l Со стороны производителей ОС l Апрель 2014 30
Управление вводом/выводом l l l Одна из главных задач ОС. Сначала управление реализовывалось непосредственно в программах, потом выносилось в библиотеки, сейчас – часть ОС. Источники сложности: l l l многообразие подключаемых устройств, необходимость эффективной работы с любым устройством, прозрачность со стороны API, необходимость разделения устройств между приложениями, необходимость обеспечения реентерабельности для драйверов. Апрель 2014 31
Привилегированный режим l l l Любые операции по управлению вводом-выводом объявляются привилегированными и могут выполняться только кодом самой операционной системы. В процессорах вводятся режимы пользователя и супервизора (привилегированный режимом, режимом ядра) В режиме супервизора выполнение команд вводавывода разрешено, а в пользовательском режиме — запрещено. Апрель 2014 32
Разделяемые и неразделяемые устройства l Разделяемые устройства ввода-вывода допускают разделение посредством механизма доступа. l l Как правило это устройства с произвольным доступом. Например, диски. Неразделяемые устройства допускают работу только с одним приложением. l l Как правило это устройства с последовательным доступом. Например, принтер. Для работы с такими устройствами используют виртуализацию. Операционные системы должны управлять и теми, и другими, предоставляя возможность параллельно выполняющимся задачам их использовать. Апрель 2014 33 l
Необходимость запрета прямого доступа к устройству l l Необходимость разрешать возможные конфликты в доступе к устройствам ввода-вывода. Желание увеличить эффективность использования ресурсов ввода-вывода. Необходимость избавить программы ввода-вывода от ошибок (высокие привилегии кода, опасность ошибок, необходимость тщательной отладки). Управление вводом-выводом осуществляется компонентом операционной системы, который часто называют супервизором ввода-вывода. Апрель 2014 34
Задачи супервизора l l l Получает запросы от диспетчера системных сервисов. Планирует ввод-вывод (определяет очередность предоставления устройств ввода-вывода задачам, затребовавшим эти устройства). Инициирует операции ввода-вывода (передает управление соответствующим драйверам). Обрабатывает прерывания от устройств. Передает сообщения об ошибках. Сигнализирует о завершении ввода-вывода задаче, его ожидавшей, и снимает задачу с режима ожидания. Апрель 2014 35
Режимы управления l Режим обмена с опросом готовности l l может приводить к неоправданным простоям Режим обмена по прерываниям l l l по сути – асинхронное управление; требуется механизм тайм-аутов для предотвращения потери связи с устройствами существенно сложнее в реализации Апрель 2014 36
Основные структуры данных ОС содержат: (1) l l состав устройств ввода-вывода и способы их подключения; аппаратные ресурсы, закрепленные за имеющимися в системе устройствами ввода-вывода; логические (символьные) имена устройств вводавывода, используя которые вычислительные процессы могут запрашивать те или иные операции ввода-вывода; адреса размещения драйверов устройств вводавывода и области памяти для хранения текущих значений переменных, определяющих работу с этими устройствами; Апрель 2014 37
Основные структуры данных ОС содержат: (2) l l l области памяти для хранения информации о текущем состоянии устройства ввода-вывода и параметрах, определяющих режимы работы устройства; данные о текущем процессе, который работает с данным устройством; адреса тех областей памяти, которые содержат данные, собственно и участвующие в операциях ввода-вывода (получаемые при операциях ввода данных и выводимые на устройство при операциях вывода данных). Апрель 2014 38
Синхронный и асинхронный ввод/вывод (1) l Синхронный ввод-вывод l l l Задача, выдавшая запрос на операцию ввода-вывода, переводится супервизором в состояние ожидания завершения заказанной операции. Когда супервизор получает от секции завершения сообщение о том, что операция завершилась, он переводит задачу в состояние готовности к выполнению, и она продолжает выполняться. Для некоторых задач такой подход неудобен. Во время операций ввода-вывода они могут заниматься другими делами. Можно решить проблему организацией нескольких потоков, но это требует дополнительных усилий со стороны программиста Апрель 2014 39
Синхронный и асинхронный ввод/вывод (2) l Асинхронный вывод l l Простейшим вариантом асинхронного вывода является так называемый буферизованный вывод данных на внешнее устройство, при котором данные из приложения передаются не непосредственно на устройство ввода-вывода, а в специальный системный буфер — область памяти, отведенную для временного размещения передаваемых данных. В этом случае логически операция вывода для приложения считается выполненной сразу же, и задача может не ожидать окончания действительного процесса передачи данных на устройство. Реальным выводом данных из системного буфера занимается супервизор ввода-вывода. Апрель 2014 40
Синхронный и асинхронный ввод/вывод (3) l Асинхронный ввод Необходимо не только выделять область памяти для временного хранения считываемых с устройства данных и связывать выделенный буфер с задачей, заказавшей операцию, но и сам запрос на операцию ввода-вывода разбивать на две части (на два запроса). l В первом запросе указывается операция на считывание данных. l После его выдачи задача продолжает работать. l Через некоторое задача выдает второй запрос на завершение операции ввода-вывода. В случае успешного завершения операции считывания данных тут же получает их из системного буфера. Если же данные еще не успели до конца переписаться с внешнего устройства в системный буфер, супервизор ввода-вывода переводит задачу в Апрель 2014 состояние ожидания завершения операции ввода-вывода, и 41 далее все напоминает обычный синхронный ввод данных. l
Буферизация (1) l l l Буферы являются критическим ресурсом в отношении внутренних (программных) и внешних процессов, которые при параллельном своем развитии информационно взаимодействуют. Через буферы данные либо посылаются от некоторого процесса к адресуемому внешнему (операция вывода данных на внешнее устройство), либо от внешнего процесса передаются некоторому программному процессу (операция считывания данных). Введение буферизации как средства информационного взаимодействия выдвигает проблему управления этими системными буферами, которая решается средствами супервизорной части операционной системы. Апрель 2014 42
Буферизация (2) l l l При этом на супервизор возлагаются задачи не только по выделению и освобождению буферов в системной области памяти, но и по синхронизации процессов в соответствии с состоянием операций заполнения или освобождения буферов, а также по их ожиданию, если свободных буферов в наличии нет, а запрос на вводвывод требует буферизации. Обычно супервизор ввода-вывода для решения перечисленных задач использует стандартные средства синхронизации, принятые в данной операционной системе. Поэтому если операционная система имеет развитые средства для решения проблем параллельного выполнения взаимодействующих приложений и задач, то, как правило, она реализует и асинхронный ввод-вывод. Апрель 2014 43
16 - Управление устройствами и вводом-выводом.ppt