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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

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

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

 

 

 


а

Рис. 6.3 Синхронный режим выполнения операции ввода-выв

 

 

Синхронное выполнение операции ввода-вывода

 

б

 

Рис. 6.4 Асинхронный режим выполнения операции ввода-вывода

 

Рис. 7.11 Два режима выполнения операций ввода-вывода

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

 

 

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

Общая схема

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

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

Обобщенная структура подсистемы ввода-вывода представлена на рис. 7.2.

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

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

 

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

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

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



 


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

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

Функции менеджера.

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

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

Примерами подобного менеджера являются менеджер ввода-вывода ОС Windows NT, а также среда STREAMS, существующая во многих версиях операционной сис­темы UNIX. Менеджер ввода-вывода Windows NT организует взаимодействие между модулями с помощью пакетов запросов ввода-вывода — IRP (I/O Request Packet). Получив запрос от процедуры системного вызова, менеджер формирует IRP и передает его нужному драйверу. Драйвер после выполнения запрошенной операции возвращает ответ в виде другого IRP менеджеру, а тот, в свою очередь, может при необходимости передать этот IRP другому драйверу. Менеджер по­зволяет драйверам задавать взаимосвязи (bindings) между собой, и на основании информации о взаимосвязях и происходит передача пакетов IRP. Кроме того, менеджер Windows NT поддерживает динамическую загрузку-выгрузку драйве­ров без останова системы.

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

Многоуровневые драйверы

Первоначально термин «драйвер» применялся в достаточно узком смысле: под драйвером понимался программный модуль, который:

□ входит в состав ядра операционной системы, работая в привилегированном режиме;

□ непосредственно управляет внешним устройством, взаимодействуя с его кон­троллером с помощью команд ввода-вывода компьютера;

□ обрабатывает прерывания от контроллера устройства;

□ предоставляет прикладному программисту удобный логический интерфейс работы с устройством, экранируя от него низкоуровневые детали управления устройством и организации его данных;

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

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

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

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

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

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

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

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

В вертикальной подсистеме сетевых устройств, приведенной на рис. 7.2, аппа­ратными драйверами являются драйверы сетевых адаптеров, которые выполня­ют функции низкоуровневых канальных протоколов, таких как Ethernet, Frame Relay, ATM и других. Эти драйверы выполняют простые функции — они органи­зуют передачу кадров данных между компьютерами одной сети. Над ними рас­полагается слой модулей, которые реализуют функции более интеллектуальных протоколов сетевого уровня — IP и IPX, которые могут обеспечить взаимодейст­вие компьютеров разных сетей с произвольной топологией связей. Модули IP и IPX также могут быть оформлены как драйверы, хотя они находятся в промежу­точном программном слое и непосредственно с аппаратурой не взаимодействуют. Вообще, вертикальная подсистема управления сетевыми устройствами являет­ся примером эффективного многоуровнего подхода к организации драйверов -просто в силу того, что в ее основе лежит хорошо продуманная семиуровневая модель взаимодействия открытых систем OSI. И, хотя все семь уровней модели OSI обычно не выделяются в самостоятельные программные уровни, четыре уровня» драйверов чаще всего присутствуют в подсистеме управления сетевыми устройствами. Над слоем драйверов сетевых протоколов располагается слой драйверов транспортных протоколов, таких как TCP/UDP, SPX и NetBEUI, ко­торые отвечают за надежную связь между компьютерами сети. Еще выше распо­ложен слой драйверов протоколов прикладного уровня (на рисунке — http, ftp и SMB), которые предоставляют пользователям сети конечные услуги по доступу к гипертекстовой информации, архивам файлов и многие другие.

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

В подсистеме управления дисками аппаратные драйверы поддерживают для верх­них уровней представление диска как последовательного набора блоков одина­кового размера, преобразуя вместе с контроллером номер блока в более сложный адрес, состоящий из номеров цилиндра, головки и сектора. Однако такие поня­тия, как «файл» и «файловая система», аппаратные драйверы дисков не поддер­живают — эти удобные для пользователя и программиста логические абстракции создаются на более высоком уровне программным обеспечением файловых сис­тем, которое в современных ОС также оформляется как драйвер, только высоко­уровневый. Наличие универсальной среды, создаваемой менеджером ввода-выво­да, позволяет достаточно просто решить проблему поддержки в ОС нескольких файловых систем одновременно. Для этого в ОС устанавливается несколько вы­сокоуровневых драйверов (на рисунке это драйверы файловых систем ufs, NTFS и FAT), работающих с общими аппаратными драйверами, но по-своему организую­щими хранение данных в блоках диска и по-своему представляющими файловую систему пользователю и прикладным процессам. Для унификации представле­ния различных файловых систем в подсистеме ввода-вывода может использо­ваться общий драйвер верхнего уровня, играющий роль диспетчера нескольких драйверов файловых систем. На рисунке в качестве примера показан диспетчер VFS (Virtual File System), применяемый в операционных системах UNIX, реали­зованных на основе кода System V Release 4.

Необязательно все модули подсистемы ввода-вывода оформляются в виде драй­веров. Например, в подсистеме управлениями дисками обычно имеется такой модуль, как дисковый кэш, который служит для кэширования блоков дисковых файлов в оперативной памяти. Достаточно специфические функции кэша дела­ют нецелесообразным оформление его в виде драйвера, взаимодействующего с другими модулями ОС только с помощью услуг менеджера ввода-вывода. Дру­гим примером модуля, который чаще всего не оформляется в виде драйвера, является диспетчер окон графического интерфейса. Иногда этот модуль вообще вы­носится из ядра ОС и реализуется в виде пользовательского процесса. Таким об­разом был реализован диспетчер окон (а также высокоуровневые графические драйверы) в Windows NT 3.5 и 3.51, но этот микроядерный подход заметно за­медлял графические операции, поэтому в Windows NT 4.0 диспетчер окон и вы­сокоуровневые графические драйверы, а также графическая библиотека GDI были перенесены в пространство ядра.

Аппаратные драйверы после запуска операции ввода-вывода должны своевремен­но реагировать на завершение контроллером заданного действия, и для решения этой задачи они взаимодействуют с системой прерываний. Драйверы более вы­соких уровней вызываются уже не по прерываниям, а по инициативе аппарат­ных драйверов или драйверов вышележащего уровня. Не все процедуры аппа­ратного драйвера нужно вызывать по прерываниям, поэтому драйвер обычно име­ет определенную структуру, в которой выделяется секция обработки прерываний (Interrupt Service Routine, ISR), которая и вызывается при поступлении запроса от соответствующего устройства диспетчером прерываний. Диспетчер прерыва­ний можно считать частью подсистемы ввода-вывода, как это показано на рис. 7.2, а можно считать и независимым модулем ядра ОС, так как он служит не только для вызова секций обработки прерываний драйверов, но и для диспетчеризации прерываний других типов.

В унификацию драйверов большой вклад внесла операционная система UNIX. В ней все драйверы были разделены на два больших класса: блок-ориентирован­ные (block-oriented) драйверы и байт-ориентированные (character-oriented) драйверы. Это деление является более общим, чем показанное на рис. 7.2 деле­ние на вертикальные подсистемы. Например, драйверы графических устройств и драйверы сетевых устройств относятся к классу байт-ориентированных.

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

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

Значительность отличий блок-ориентированных и байт-ориентированных драй­веров иллюстрирует тот факт, что среда STREAMS разработана только для байт-ориентированных драйверов и включить в нее блок-ориентированный драйвер невозможно.

Блок- или байт-ориентированность является характеристикой как самого устрой­ства, так и драйвера. Очевидно, что если устройство не поддерживает обмен адресуемыми блоками данных, а позволяет записывать или считывать последовательность байт, то и устройство, и его драйвер можно назвать байт-ориентиро­ванными. Для байт-ориентированного устройства невозможно разработать блок-ориентированный драйвер. Устройство прямого доступа с блочной адресацией является блок-ориентированным, и для управления им естественно использовать блок-ориентированный драйвер. Однако блок-ориентированным устройством можно управлять и с помощью байт-ориентированного драйвера. Так, диск мож­но рассматривать не только как набор блоков, но и как набор байт/первый из ко­торых начинает первый блок диска, а последний завершает последний блок. Фи­зический обмен с контроллером устройства по-прежнему осуществляется блоками, но байт-ориентированный драйвер устройства будет преобразовывать блоки в последовательность байт. Для устройств прямого доступа часто разраба­тывают пару драйверов, чтобы к устройству можно было обращаться и по байт-ориентированному, и по блок-ориентированному интерфейсам в зависимости от потребностей.

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

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

 

Выводы

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

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

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

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

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

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

□ Драйверы делятся на низкоуровневые, непосредственно управляющие рабо­той контроллеров внешних устройств, и высокоуровневые, обеспечивающие логический интерфейс к устройствам, например драйверы файловых систем.

□ Для координации работы драйверов в подсистеме ввода-вывода может выде­ляться особый модуль, называемый менеджером ввода-вывода.

□ Аппаратные драйверы делятся на блок-ориентированные, обеспечивающие до­ступ к устройствам с поблочной непосредственной адресацией, и байт-ориен­тированные, управляющие устройствами, поддерживающими побайтный не адресуемый обмен.

 

Задачи и упражнения

1. За счет каких устройств удается распараллелить ввод-вывод даже в однопро­цессорных системах?

2. Какие функции выполняет менеджер ввода-вывода?

3. Какие из следующих утверждений правильны?

a. драйвер выполняет низкоуровневые функции по управлению устройст­вом ввода-вывода;

b. драйвер выполняет функций управления файловой системой;

c. все функции драйвера вызываются по прерываниям;

d. драйвер является частью подсистемы ввода-вывода;

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

f. драйвер работает в привилегированном режиме.

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

5. Каким из двух типов драйверов — блок-ориентированным или байт-ориенти­рованным — обслуживается диск?

 



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 330; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.41.187 (0.039 с.)