Являются ли операции файловой системы функцией ядра?

Являются ли операции файловой системы функцией ядра?

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

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

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

решение1

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

Для Windows или OSX идей нет.

решение2

В Windows обаТОЛСТЫЙиNTFSФайловые системы реализованы внутри ядра как драйверы устройств, загружаемые из fastfat.sysи ntfs.sys, оба расположены в \Windows\System32\drivers.

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

решение3

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

Связанный контент