Я почти уверен, что сектор - это в основном блок, но меня больше смущали размеры чанков и особенно записи. Некоторые системные вызовы требуют, чтобы ваша область в памяти, которая буферизует данные с диска, была кратна размеру записи диска. Что это значит?
2 ответа
Я занимался разработкой файловой системы несколько лет назад. Далее следует терминология, которую мы использовали в наших проектах.
Сектор диска - это наименьший адресуемый набор байтов на носителе. Обычно это было 512 байт для большинства устройств, хотя размеры секторов 4096 байт становятся все более распространенными.
Файловая система обращалась к устройству с точки зрения физических блоков. Физическим блоком может быть один или несколько смежных секторов (как правило, степень двух).
Файлы в файловой системе обращались к данным в виде логических блоков. Логическим блоком был один или несколько смежных физических блоков.
Сектор - это физическая область на диске, а размер сектора задается аппаратным обеспечением. Чтение и запись на диск выполняется на секторах. Данные с жесткого диска и с него передаются в секторах.
(Первый дисковый контроллер (для 14-дюймовых дисководов), который я когда-либо программировал, не использовал сектора, а скорее (дисковые) записи. Каждый трек должен был быть отформатирован с макетом записи. Если вы хотите сойти с ума, каждая запись на треке может иметь уникальную длину. Но обычно все записи на каждой дорожке всего тома диска форматировались с одинаковой длиной записи. Современные дисководы больше не имеют таких возможностей форматирования, а вместо этого используют сектора. С тех пор я не помню, чтобы когда-либо слышал фразу "запись на диск". Примечание: 8 «дискеты имели похожую, но упрощенную схему форматирования, которая стала известна как" мягкое разбиение на секторы ", поскольку записи всегда имели согласованную, но не фиксированную длину.)
(На уровне устройства термин « запись» использовался также для физического блока, например, магнитная запись или запись на диске). Технический документ по ленточному транспорту или дисководу может ссылаться на запись как наименьший физический блок ввода-вывода. Но если вы на самом деле не используете ленту или не работаете на уровне контроллера диска, запись может рассматриваться как объект userland/file/filesystem.)
Запись (чаще всего используется в качестве) концепции файловой системы (или логической) и (тогда) не имеет значения на нижнем (дисковом) уровне ввода / вывода (т.е. чтение или запись записи происходит только в интерфейсе пользователя к системе) , Содержимое и размер записи могут быть определены пользователем или продиктованы файлом. Запись может иметь фиксированную длину и соответствовать структуре данных, либо запись может иметь переменную длину (например, строку текста с разделителем новой строки ).
Независимо от длины записи, файловая система будет использовать промежуточные буферы, чтобы позволить пользователю / приложению выполнять чтение / запись записей и выполнять фактический ввод / вывод устройства в секторах. Считывание секторов или физических блоков из устройства в "системный буфер" и последующее извлечение "логических" записей часто называют "деблокированием".
Размер записи может быть произвольным. В идеале размер записи выбирается таким образом, чтобы кратный ему размер равнялся размеру сектора (или физического блока), и тогда вместо буферизованного ввода-вывода может быть выполнен блок ввода-вывода (непосредственно в / из пользовательского буфера). Блокировка ввода-вывода происходит быстрее, поскольку она включает в себя на одну копию меньше и использует на один буфер меньше, хотя пользовательской программе, возможно, придется самостоятельно блокировать и деблокировать записи.