Главная » Ядро Linux » Уровень блочного ввода-вывода

0

стройства  блочного  ввода-вывода  (блочные  устройства,  устройства ввода-вывода  блоками, block  devices)  — это  аппаратные устройства, которые позволяют случайным  образом  (т.е.  не  обязательно  последовательно)  осуществлять доступ  к фрагментам данных фиксированного  размера, называемых блоками. Наиболее часто встречающееся устройство блочного впода-вывода — это  жесткий диск,  но  существуют  и другие  блочные устройства,  например  устройства работы   с  гибкими дисками, оптическими компакт-дисками (CD-ROM)  и флеш-памятью. Следует  обратить внимание, что файловые системы монтируются с таких  устройств. Именно таким  образом

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

Другой  фундаментальный тип  устройства — это  устройство посимвольного  ввода-вывода  (символьное устройство, character device, char  device).   Это—  устройство, к которому можно обращаться,  только  как  к последовательному потоку  данных, т.е. байт  за  байтом. Пример символьных устройств — это  последовательный порт  и клавиатура. Если  же устройстпо позволяет обращаться к данным случайным образом (не последовательно), то  это  блочное устройство.

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

Управление блочными  устройствами  в ядре  требует  большего внимания,  подготовки  и работы, чем  управление устройствами посимвольного  ввода-вывода.  Все  это потому, что  символьные  устройства имеют  всего  одну  позицию — текущую, в то  время  как  блочные устройства должны иметь  возможность перемещаться туда  и  обратно  между  любыми позициями на  физическом носителе информации. Оказывается, что  нет  необходимости  создавать в  ядре  целую  подсистему для  обслуживания символьных устройств, а для  блочных устройств это  необходимо. Такая  подсистема необходима отчасти  из-за сложности блочных устройств. Однако основная причина такой  мощной поддержки в том, что  блочные устройства достаточно чувствительны к производительности.  Выжать  максимум производительности из жесткого диска  значительно важнее, чем  получить некоторый прирост скорости при  работе  с клавиатурой.  Более  того, как  будет видно  дальше, сложность блочных устройств обеспечивает большой простор для  таких  оптимизаций.  Предмет данной главы  — как  ядро  управляет  работой блочных устройств и  запросами к  этим  устройствам.  Рассматриваемая часть  ядра  называется уровнем,  блочного ввода-вывода (block I/O  layer).  Интересно, что усовершенствование  подсистемы  блочного  ввода-вывода  было  одной   из  целей  разрабатываемой серии  ядра  2.5.  В этой  главе  рассматриваются все  новые  особенности уровня  блочного ввода-вывода,  которые появились в ядрах  серии  2.6.

Источник: Лав,  Роберт. Разработка ядра  Linux, 2-е  издание. : Пер.  с англ.  — М.  : ООО  «И.Д.  Вильяме» 2006. — 448 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии