Главная » Просмотр файлов » А. Робачевский - Операционная система UNIX

А. Робачевский - Операционная система UNIX (1114671), страница 65

Файл №1114671 А. Робачевский - Операционная система UNIX (А. Робачевский - Операционная система UNIX) 65 страницаА. Робачевский - Операционная система UNIX (1114671) страница 652019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 65)

Существует два основных метода встраивания кода иданных драйвера в ядро операционной системы: перекомпиляция ядра,позволяющая статически поместить драйвер, и динамическая загрузкадрайвера в ядро в процессе работы системы.www.books-shop.comустройств339Традиционно для встраивания драйвера в ядро UNIX требуется переком!пиляция ядра и перезапуск системы. Принципиально эта процедура неотличается от компиляции обычной программы, все компоненты ядра яв!ляются объектными модулями и редактор связей объединяет их с объект!ным модулем драйвера для получения исполняемого файла.

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

Это, в частности, относится к файловойсистеме, драйверам устройств и сетевым протоколам (точнее, драйверамподсистемы STREAMS). Возможность работы с новыми периферийнымиустройствами без необходимости перекомпиляции ядра обеспечиваетсязагружаемыми драйверами. Вместо того чтобы встраивать модуль драйвера,основываясь на статических таблицах и интерфейсах, ядро содержит наборфункций, позволяющих загрузить необходимые драйверы и, соответствен!но, выгрузить их, когда необходимость работы с данным устройством от!падает. При этом структуры данных для доступа к драйверам устройствтакже являются динамическими.Динамическая установка драйвера в ядро операционной системы требуетвыполнения следующих операций:Размещение и динамическое связывание символов драйвера.

Этаоперация аналогична загрузке динамических библиотек, и выполня!ется специальным загрузчиком.Инициализация драйвера и устройства.Добавление точек входа драйвера в соответствующий коммутаторустройств.П Установка обработчика прерываний драйвера.Естественно, код динамически загружаемых драйверов сложнее, и содер!жит, помимо стандартных точек входа, ряд функций, отвечающих за за!грузку и выгрузку драйвера, а также ряд дополнительных структур.

При!мер дополнительных функций и структур данных, которые должны бытьопределены в динамически загружаемом драйвере операционной системыSolaris 2.5, приведен в табл. 5.2.Таблица 5.2. Дополнительные функции и структуры данных для загружаемых драйверовФункция инициализации и установки, вызываемая при за%грузке драйвераФункция, вызываемая перед выгрузкой драйвера, удаляю%щая его из системыȾɚɧɧɚɹɜɟɪɫɢɹɤɧɢɝɢɜɵɩɭɳɟɧɚɷɥɟɤɬɪɨɧɧɵɦɢɡɞɚɬɟɥɶɫɬɜɨɦ%RRNVVKRSɊɚɫɩɪɨɫɬɪɚɧɟɧɢɟɩɪɨɞɚɠɚɩɟɪɟɡɚɩɢɫɶɞɚɧɧɨɣɤɧɢɝɢɢɥɢɟɟɱɚɫɬɟɣɁȺɉɊȿɓȿɇɕɈɜɫɟɯɧɚɪɭɲɟɧɢɹɯɩɪɨɫɶɛɚɫɨɨɛɳɚɬɶɩɨɚɞɪɟɫɭpiracy@books-shop.com340Глава 5.Таблица 5.2 (продолжение)_inf оФункция, возвращающая информацию о драйвере по за%просу ядраstructСтруктура, используемая функциямии_inf опри загрузке, выгрузке и получении информации одрайвереstructСтруктура, экспортируемая ядру при загрузке драйвера, вчастности, содержит адреса точек входа в драйверПомимо этого Solaris 2.5 предоставляет ряд функций ядра для работы с дина!мически загружаемыми драйверами:mod_remove ( 9 F ) иmod.Блочные устройстваДрайверы блочных устройств предназначены для обслуживания перифе!рийного оборудования, обеспечивающего обмен данными с помощьюфрагментов фиксированной длины, называемыми блоками, размер которыхзначительно превышает один байт.

В основном эти драйверы используют!ся файловой подсистемой и подсистемой управления памятью. Например,свопинг характеризуется обменом данными с устройством вторичной па!мяти, размер которых обычно равен размеру страницы, что составляет4 или 8 Кбайт. Файловая подсистема производит чтение и запись данныхфрагментами, размер которых равен одному или нескольким блокам уст!ройства. Типичными представителями блочных устройств являются жест!кий и гибкий диски.Блочные устройства можно разделить на два типа в зависимости от того,используются ли они для хранения файловой системы или нет.

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

В этом случае обменданными происходит при активном участии буферного кэша, позволяю!щего минимизировать число обращений непосредственно к физическомуустройству.www.books-shop.comБлочные341Вообще говоря, операции ввода/вывода для блочного устройства могутбыть вызваны рядом событий:Чтением или записью в обычный файл.ОЧтением или записью непосредственно в специальный файл устройства.Операциями подсистемы управления памятью: страничным замеще!нием или свопингом.Доступ к блочным устройствам осуществляется с помощью трех основныхточек входа:иПри этом за факти!ческое выполнение ввода/вывода отвечает xxstrategy ( ) .

Единственнымаргументом, передаваемым этой функции, является указатель на структуруb u f , представляющую собой заголовок буфера обмена, с которой мы ужевстречались в предыдущей главе при разговоре о буферном кэше. Структу!ра buf содержит всю необходимую для операций ввода/вывода информа!цию. Основные поля структуры buf:Флаги. Определяют состояние буфера (например,или B_DONE) и направление передачи данныхB_PHYS).Указатели двухсвязного рабочего списка буферов, ожидаю%щих обработки драйверомРазмер буфераВиртуальный адрес буфераНомер блока начала данных на устройствеЧисло байтов, которые требуется передатьСтарший и младший номера устройстваИспользование заголовка buf при передачи блока данных показано нарис.

5.7.Ядро адресует дисковый блок, указывая vnode и смещение. Если доступосуществляется к специальному файлу устройства, то смещение являетсяфизическим, отсчитываемым от начала устройства. Например, если специ!альный файл устройстваобеспечивает доступ ко второмуразделу жесткого диска, то смещение будет отсчитываться от начала этогораздела.

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

Результатом такого несоответствияможет стать потеря или нарушение целостности данных. Поэтому непо!средственный доступ к специальному файлу такого устройства возможентолько при размонтированной файловой системе.www.books-shop.com342Глава 5.Рис. 5.7. Обмен данными с блочным устройством (диском)Поскольку каждый дисковый блок связан с каким!либо файлом и соответ!ственно с его vnode, а его образ в памяти — с физическими страницами,которые также связаны с vnode (через структуры описания физическойпамяти — page в SVR4, pfdat в SVR3), все операции ввода/вывода связа!ны с подкачкой и сохранением страниц и идентифицируются vnode.Символьные устройстваСимвольные устройства представляют собой значительную часть перифе!рийного оборудования системы, включая терминалы, манипуляторы(например, мышь), клавиатуру и локальные принтеры.

Основное отличиеэтих устройств от блочных заключается в том, что они, как правило, пере!дают небольшие объемы данных.Обмен данными с символьными устройствами происходит непосредствен!но через драйвер, минуя буферный кэш. При этом данные обычно копи!www.books-shop.comСимвольные343в драйвер из адресного пространства процесса, запросившего опе!рацию ввода/вывода.Если процесс сделал системный вызов ввода/вывода, например,илисо специальным файлом символьного устройства, запрос на!правляется в файловую подсистему. Поскольку доступ к устройству обслу!живается файловой системой specfs, рассмотренной ранее, в ответ на вы!полнение системного вызова процесса ядро выполняет вызов функцииилисоответственно дляилиДействия функцийипохожи.

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

Часть символь!ных драйверов служит в качестве интерфейса доступа низкого уровня кблочным устройствам, таким как диски или накопители на магнитныхлентах.Большинство таких драйверов отличаются от соответствующих им драйве!ров блочных устройств характером выполнения операций ввода/вывода. Вто время как драйверы блочных устройств производят обмен д а н н ы м и сбуферным кэшем, драйверы доступа низкого уровня обеспечивают обменданных непосредственно с адресным пространством процесса. Отсутствиепосредника в виде буферного кэша устраняет необходимость в соверше!нии дополнительных операций копирования (драйвер — буферный кэш —буфер процесса), но в то же время лишает процесс услуг кэшированияданных, предоставляемых операционной системой.Интерфейс доступа низкого уровня используется многими системнымиутилитами обслуживания файловой системы, например,а такжерядом приложений, работающих с накопителями на магнитной ленте, на!примерилиЭтот интерфейс используется некоторымиНесколько иная схема применяется для драйверов подсистемы STREAMS, которые такжеимеютинтерфейс доступа.

Эти драйверы будутв даннойглаве в"Подсистема STREAMS".www.books-shop.com344Глава 5.ложениями, например СУБД, которые самостоятельно обеспечивают оп!тимизированные механизмы кэширования данных на уровне задачи.Поскольку драйверы низкого уровня не используют буферный кэш, онисамостоятельно обеспечивают необходимые буферы для совершения опе!рации ввода/вывода. На рис.

5.8 показаны отличия в характере выполненияоперации ввода/вывода с блочными устройствами в случаях, когда запросформируется при участии буферного кэша (драйверы блочных устройств),и когда манипуляция буфером производится драйвером самостоятельно(драйверы низкого уровня).ИнтерфейссистемныхвызововРис. 5.8. Различ%ные типы доступак блочным устрой%ствамБуферизацияОчевидно, что побайтная передача данных между драйвером символьногоустройства и прикладным процессом весьма неэффективна. При такомрежиме работы байт должен быть сначала скопирован в адресное про!www.books-shop.com345Символьныестранство драйвера, затем некоторое время должно пройти, прежде чемдрайвер сможет передать этот символ физическому устройству. Если приэтом устройство оказывается занятым, процесс должен ожидать заверше!ния предыдущей операции, что, скорее всего, вынудит его перейти в со!стояние сна и приведет к переключению контекста.Существует несколько способов преодолеть данную ситуацию, но все онипредполагают обеспечение некоторой буферизации данных драйвером уст!ройства.

Первый способ заключается в использовании прерываний, когдапри поступлении на устройство следующего символа, генерируется аппарат!ное прерывание, которое обрабатывается функцией xxintrдрайвера не!зависимо от функции xxwriteФункция обработки прерывания записы!вает данные в буфер, которые затем считываются функцией xxwriteЕсли устройство не поддерживает прерываний, их поступление можносэмулировать с помощью функции xxpollдрайвера устройства, котораявызывается ядром через определенные промежутки времени (обычно каж!дый сигнал таймера).

Характеристики

Тип файла
PDF-файл
Размер
8,11 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6461
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее