1

Я полагаю, что вопрос будет зависеть от ОС, поэтому я возьму следующие сценарии:

  • Winodows (NTFS)
  • OSX (HFS)
  • Linux (ext2, ext3, ext4)

Каждая операционная система имеет свою файловую систему по умолчанию, на которой она работает (OSX, я полагаю, есть только один вариант). Я заметил некоторые утилиты для ОС, предназначенные для чтения различных файловых систем (которые, очевидно, НЕ являются частью ядра), что заставило меня задуматься: являются ли операции с файловой системой функцией драйвера (т. Е. Потенциально модульными) или это действительно так? кроме ядра?

3 ответа3

2

В Linux, когда вы сами компилируете ядро, у вас есть возможность скомпилировать поддержку для каждой доступной файловой системы (например, ext2, ext3, ext4, reiserfs или JFS), разделенной как модули или внутри ядра. Я не пробовал, работает ли он при компиляции в виде модулей, но я полагаю, что он точно не будет работать для файловой системы загрузочного раздела, но может работать для других.

Не знаю, для Windows или OSX.

2

В Windows обе файловые системы FAT и NTFS реализованы внутри ядра в виде драйверов устройств, загружаемых из fastfat.sys и ntfs.sys , которые находятся в \Windows\System32\drivers .

Реализация файловой системы FAT ядра WindowsРеализация файловой системы NTFS ядра Windows

1

Для Linux и OSX (я не уверен насчет Windows), вы можете взглянуть на File System в Userspace и MacFuse. Это позволяет писать реализации FS не в ядре, а в качестве драйверов пространства пользователя - что, естественно, намного менее опасно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .