Блочные устройства
Блочные устройства
Драйверы блочных устройств предназначены для обслуживания периферийного оборудования, обеспечивающего обмен данными с помощью фрагментов фиксированной длины, называемыми блоками, размер которых значительно превышает один байт. В основном эти драйверы используются файловой подсистемой и подсистемой управления памятью. Например, свопинг характеризуется обменом данными с устройством вторичной памяти, размер которых обычно равен размеру страницы, что составляет 4 или 8 Кбайт. Файловая подсистема производит чтение и запись данных фрагментами, размер которых равен одному или нескольким блокам устройства. Типичными представителями блочных устройств являются жесткий и гибкий диски.
Блочные устройства можно разделить на два типа в зависимости от того, используются ли они для хранения файловой системы или нет. Соответственно различается и схема доступа к этим устройствам. В последнем случае доступ к устройству осуществляется только через специальный файл устройства, представляющий интерфейс низкого уровня. Хотя обращение к устройствам, содержащим файловые системы, может также осуществляться через интерфейс низкого уровня, доступ к таким устройствам, как правило, осуществляется процессом косвенно, через запросы к файловой системе. Например, чтение или запись обычного файла вызывает операции с драйвером блочного устройства (жесткого диска), на котором расположена файловая система, хранящая данный файл. В этом случае обмен данными происходит при активном участии буферного кэша, позволяющего минимизировать число обращений непосредственно к физическому устройству.
Вообще говоря, операции ввода/вывода для блочного устройства могут быть вызваны рядом событий:
? Чтением или записью в обычный файл.
? Чтением или записью непосредственно в специальный файл устройства.
? Операциями подсистемы управления памятью: страничным замещением или свопингом.
Доступ к блочным устройствам осуществляется с помощью трех основных точек входа: xxopen(), xxclose() и xxstrategy(). При этом за фактическое выполнение ввода/вывода отвечает xxstrategy(). Единственным аргументом, передаваемым этой функции, является указатель на структуру buf, представляющую собой заголовок буфера обмена, с которой мы уже встречались в предыдущей главе при разговоре о буферном кэше. Структура buf содержит всю необходимую для операций ввода/вывода информацию. Основные поля структуры buf:
b_flags Флаги. Определяют состояние буфера (например, B_BUSY или B_DONE) и направление передачи данных (B_READ, B_WRITE, B_PHYS) av_back, av_forw Указатели двухсвязного рабочего списка буферов, ожидающих обработки драйвером b_bufsize Размер буфера b_un.b_addr Виртуальный адрес буфера b_blkno Номер блока начала данных на устройстве b_bcount Число байтов, которые требуется передать b_dev Старший и младший номера устройстваИспользование заголовка buf при передачи блока данных показано на рис. 5.7.
Рис. 5.7. Обмен данными с блочным устройством (диском)
Ядро адресует дисковый блок, указывая vnode и смещение. Если доступ осуществляется к специальному файлу устройства, то смещение является физическим, отсчитываемым от начала устройства. Например, если специальный файл устройства /dev/dsk/c0t0d0s1 обеспечивает доступ ко второму разделу жесткого диска, то смещение будет отсчитываться от начала этого раздела. Если vnode представляет обычный файл, то смещение является логическим, отсчитываемым от начала файла.
Таким образом, блок устройства, содержащего файловую систему, может быть адресован двумя способами — либо через обычный файл и логическое смещение, либо через специальный файл устройства и физическое смещение на этом устройстве. Это, в свою очередь, может привести к различной идентификации одного и того же блока и, как следствие, двум различным копиям блока в памяти. Результатом такого несоответствия может стать потеря или нарушение целостности данных. Поэтому непосредственный доступ к специальному файлу такого устройства возможен только при размонтированной файловой системе.
Поскольку каждый дисковый блок связан с каким-либо файлом и соответственно с его vnode, а его образ в памяти — с физическими страницами, которые также связаны с vnode (через структуры описания физической памяти — page в SVR4, pfdat в SVR3), все операции ввода/вывода связаны с подкачкой и сохранением страниц и идентифицируются vnode.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Блочные контейнеры
Блочные контейнеры Как ясно из названия, блочный контейнер может хранить только блочные элементы: абзацы, заголовки, большие цитаты, теги адреса, текст фиксированного форматирования, таблицы, аудио- и видеоролики. Блочный контейнер может содержать как один блочный
Монолитные и блочные Web-страницы
Монолитные и блочные Web-страницы Об этом уже упоминалось в главе 10, посвященной блочным контейнерам и контейнерному Web-дизайну. Настала пора рассмотреть вопрос подробнее.Давайте откроем любую нашу Web-страницу, скажем, index.htm, в Web-обозревателе. Что мы увидим? Набор блочных
Устройства
Устройства • Раздатчик. Раздатчик выбрасывает предметы подобно тому, как игрок их роняет. Если предмет – это снаряд, то раздатчик выстреливает им. Некоторые предметы, выпущенные из раздатчика, являются активированными (как в случае, когда игрок щелкает по ним правой
Устройства
Устройства Как уже отмечалось, UNIX "изолирует" приложения (а значит и пользователя) от аппаратной части вычислительной системы. Например, в имени файла отсутствует указатель диска, на котором этот файл расположен, а большая часть взаимодействия с периферийными
(3.36) Диспетчер устройств показывает не все устройства :(. Как увидеть все установленные устройства (включая даже не подключенные в данный момент)?
(3.36) Диспетчер устройств показывает не все устройства :(. Как увидеть все установленные устройства (включая даже не подключенные в данный момент)? Установите в Диспетчере устройств опцию View/Show hidden devices, затем откройте окно консоли и выполните в нем следующие команды:set
Устройства с широкой полосой пропускания и устройства, обеспечивающие связь на большой дальности
Устройства с широкой полосой пропускания и устройства, обеспечивающие связь на большой дальности Термин "устройства с широкой полосой пропускания" имеет несколько значений. Во-первых, этот термин обозначает устройства, позволяющие одновременно передавать различные
Блочные контейнеры
Блочные контейнеры Как ясно из названия, блочный контейнер может хранить только блочные элементы: абзацы, заголовки, большие цитаты, теги адреса, текст фиксированного форматирования, таблицы, аудио- и видеоролики. Блочный контейнер может содержать как один блочный
Монолитные и блочные Web-страницы
Монолитные и блочные Web-страницы Об этом уже упоминалось в главе 10, посвященной блочным контейнерам и контейнерному Web-дизайну. Настала пора рассмотреть вопрос подробнее.Давайте откроем любую нашу Web-страницу, скажем, index.htm, в Web-обозревателе. Что мы увидим? Набор блочных
Устройства
Устройства Рассмотрим другие опции диалогового окна, вызываемого с помощью меню Settings | Options. На первой вкладке Sound Devices (Звуковые устройства) можно выбрать тип звукового устройства и его драйвер, а также настроить качество записываемого звука (рис. 4.19). ? Область Sound Driver
Выключение устройства
Выключение устройства На карманных компьютерах также есть кнопка выключения устройства. На самом деле при нажатии на эту кнопку устройство не выключается, а переходит в особый спящий режим. В мобильных устройствах программы и данные хранятся в памяти, и если устройство
Узнать имя устройства
Узнать имя устройства Чтобы узнать имя устройства, на котором запущено приложение достаточно вызвать метод GetHostName, как показано в листинге 14.5.Листинг 14.5txtInfo.Text =
5.3. Файлы и устройства
5.3. Файлы и устройства А сейчас Windows-пользователи будут вообще удивлены — в Linux есть файлы устройств, позволяющие обращаться с устройством, как с обычным файлом. Файлы устройств находятся в каталоге /dev (сокращение от devices).Вот самые распространенные примеры файлов
6.3. Контекст устройства
6.3. Контекст устройства Контекст устройства – структура, определяющая набор графических объектов и связанных с ними атрибутов и графических режимов, которые воздействуют на вывод. Графические объекты включают карандаши для рисования линий, кисти для закрашивания и
Устройства позиционирования
Устройства позиционирования Вместо мышки может быть установлено одно из четырех устройств позиционирования.> Тачпад (сенсорная панель, Mousepad, Touch Pad, Track Pad) – сенсорная панель диагональю 5–6 см, чувствительная к нажатию. Основные производители – Alps и Synaptics (драйвера
Вскрытие устройства: атаки на корпус устройства и его механическую часть
Вскрытие устройства: атаки на корпус устройства и его механическую часть Наиболее общей целью анализа корпуса устройства и его механической части является получение исчерпывающей информации об устройстве и возможности исследования его внутренней части. Агрессивный