Главная » Ядро Linux » Анатомия блочного устройства

0

Наименьший   адресуемый  элемент  блочного устройства называется  сектором. Размеры секторов — это  числа, которые являются целыми степенями двойки, однако  наиболее часто  встречающийся размер  — 512 байт.  Размер сектора—  это  физическая характеристика устройства, а  сектор  — фундаментальный элемент блочного устройства.  Устройства не  могут  адресовать или  другим  образом  работать  с  элементами  данных, размер  которых меньше,  чем  один  сектор, тем  не  менее  многие блочные  устройства могут  передавать несколько секторов за один  раз.  Хотя  большинство блочных устройств  и  имеет  размер   сектора,  равный  512  байт,  все  же  существуют и  другие  стандартные размеры сектора (например,  большинство компакт-дисков CD-ROM имеют  размер  сектора, равный 2 Кбайт).

У программного обеспечения несколько другие  цели, и  поэтому там  существует другая  минимально  адресуемая единица,  которая  называется блок.   Блок—  это  абстракция файловой системы, т.е.  все  обращения к  файловым системам могут  выполняться только  с данными, кратными размеру  блока.  Хотя  физические устройства сами  по  себе  адресуются на уровне   секторов, ядро  выполняет все  дисковые операции  в терминах блоков. Так  как  наименьший возможный адресуемый элемент —это сектор, то  размер   блока  не  может  быть  меньше размера одного   сектора и  должен быть  кратен размеру  сектора.  Более  того, для  ядра  (так  же  как  и  для  аппаратного обеспечения в случае  секторов)  необходимо,  чтобы  размер  блока  был  целой   степенью  двойки. Ядро  также  требует, чтобы  блок  имел  размер, не  больший, чем  размер страницы памяти (см.  главу 11, "Управление памятью" и главу 12, "Виртуальная файловая  система")1 .

1   Это  ограничени е являетс я искусственным и  в будущем  оно  может  быт ь отменено . Тем  не  менее требование, чтобы  разме р блока  был меньше  или  равен  размеру  страниц ы памяти, позволяе т значительно  упростить  ядро .

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

512  байт, один  килобайт и  четыре  килобайта.

Часто   сбивает   с  толку  то,  что  некоторые люди  называют  секторы  и  блоки   поразному.  Секторы,  наименьшие  адресуемые элементы устройства, иногда  называют "аппаратными  секторами"  (hardware sector)   или  "блоками аппаратного устройства" (device  block).   В то  время  как  блоки,  наименьшие  адресуемые единицы  файловых систем,  иногда  называются  "блоками файловой  системы"   (filesyst.em  block)   или  "блоками  ввода-вывода"  (I/ O  block).  В  этой  главе  будут  использованы термины "сектор" (sector)   и  "блок"  (block),  однако   следует  помнить и  о  других  возможных названиях. На  рис.  13.1  показана диаграмма соответствия между  секторами и  блоками.

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

Жесткий диск                                                    Блок

Сектор

Сектор

Отображение секторов на блоки

i

Рис.  13.1.   Связь  между   секторами и  бликами

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

По теме:

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