Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): Глава 16. Блочные драйвера

Оглавление
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Глава 16. Драйверы блочных устройств

hardorsoft 25.10.10 в 13:04

0

До сих пор наше обсуждение ограничивалось драйверами символьных устройств. В Linux есть и другие типы драйверов, и пришло время поговорить о них. В этой главе обсуждаются драйверы блочных
устройств.

hardorsoft 25.10.10 в 13:04

0

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

hardorsoft 25.10.10 в 13:04

0

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

hardorsoft 25.10.10 в 13:05

0

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

hardorsoft 25.10.10 в 13:05

0

В этой главе рассматривается пример реализации блочного
драйвера, производящего все операции в памяти. По сути, это RAM-диск.
Ядро уже содержит прекрасную реализацию RAM-диска, но наш драйвер
(названный sbull) демонстрирует процесс создания драйвера блочного
устройства без лишних усложнений.

hardorsoft 25.10.10 в 13:05

0

Перед подробным обсуждением, дадим определение двум
терминам. Блок – кусок данных фиксированной величины, размер
которого определяется ядром. Часто размер составляет 4096 байт, но
может меняться в зависимости от архитектуры и используемой файловой
системы. Сектор – это маленький блок, размер которого определяется
аппаратным обеспечением. Ядро полагает, что устройства реализуют 512-
байтный сектор. Если ваше устройство использует другой размер сектора,
то ядро может адаптироваться, и не генерировать запросы, которые не
могут быть обработаны. За это приходится платить. При взаимодействии с
ядром всегда используется 512-байтный сектор. Если вы используете
другой размер сектора, то необходимо производить масштабирование к
секторам ядра. Мы продемонстрируем, как это сделать в драйвере sbull.

hardorsoft 25.10.10 в 13:06

0
Минутку...