Введение
API файловой системы
Устанавливаемая файловая система (Installable File System, IFS) — это API файловой системы в MS DOS/PC DOS 4.x, IBM OS/2 и Microsoft Windows, позволяющий операционной системе распознавать и загружать драйверы для файловых систем.
The Installable File System (IFS) is a filesystem API in MS DOS/PC DOS 4. x, IBM OS/2 and Microsoft Windows that enables the operating system to recognize and load drivers for file systems.
История
Когда IBM и Microsoft совместно разрабатывали OS/2, они осознали, что файловая система FAT не предоставляла некоторых функций, необходимых современным операционным системам, и Microsoft начала разработку высокопроизводительной файловой системы (HPFS) под кодовым названием Pinball. Вместо реализации непосредственно в ядре, как это было с FAT, Microsoft разработала API файловой системы, основанный на драйверах, который позволял им и другим разработчикам добавлять новые файловые системы в ядро без его модификации. Когда Microsoft прекратила работу над OS/2, IBM продолжила использовать интерфейс IFS, а Microsoft реализовала аналогичный в Windows NT.
IFS в OS/2
IFS обеспечивал базовый и мощный интерфейс для программирования файловых систем. Он был представлен в 1989 году в OS/2 1.20 вместе с файловой системой HPFS. Драйверы файловой системы выполняются в пространстве ядра (кольцо 0) и делятся на четыре основные части: microIFS, miniIFS, IFS и вспомогательные программы. Требуются только IFS и сам код файловой системы, которые загружаются с помощью оператора "IFS=" в файле CONFIG.SYS. Это 16-битная библиотека с динамической загрузкой. Независимо от того, является ли это 32-битной OS/2 (2.0 и новее), IFS всегда 16-битный (хотя неофициально можно создать 32-битный IFS). MicroIFS – это фрагмент кода, который загружает в память ядро и miniIFS, а затем переходит к выполнению ядра. Обычно он находится в загрузочной области файловой системы. MiniIFS – это фрагмент кода, который вызывается ядром для загрузки первого оператора IFS, встречающегося в файле CONFIG.SYS, поэтому первый оператор IFS должен соответствовать загрузочной файловой системе, чтобы система могла загрузиться. Вспомогательные программы имеют 16-битный (для OS/2 1.x) или 32-битный (для OS/2 2.x и выше) формат, выполняются в пользовательском пространстве (кольцо 3) и содержат код, используемый для типичного обслуживания файловой системы, вызываемый утилитами CHKDSK и FORMAT. Эта четырехкомпонентная схема позволила разработчикам динамически добавлять новую загрузочную файловую систему, как продемонстрировал драйвер ext2 для OS/2. Драйвер файловой системы CD-ROM (ISO 9660) был добавлен в OS/2 2.0, UDF – в OS/2 4.0, а JFS – в OS/2 4.5. ArcaOS, последняя сборка OS/2, имеет ряд доступных драйверов файловых систем, включая FAT32. Существовала также официальная 32-битная версия HPFS IFS, называемая HPFS386, которая повысила производительность и добавила некоторые функции, такие как кэш переменного размера и списки управления доступом, и была доступна только в определенных серверных редакциях OS/2. Файловая система FAT никогда не удалялась из ядра и официально не являлась IFS, хотя существуют FAT IFS, которые добавляли такие функции, как длинные имена файлов (LFN), поддержку FAT32 и т. д. Сетевые протоколы обмена файлами, такие как NFS и SMB, также реализуются с использованием IFS, и интерфейс IFS никогда не изменялся.
IFS в Windows 3.11 и 9x
IFSHLP. SYS (Installable File System Helper) – это драйвер устройств MS DOS, впервые выпущенный в составе Microsoft Windows for Workgroups 3.11. Он обеспечивает нативный 32-битный доступ к файлам в Windows 386 Enhanced Mode, обходя 16-битный DOS API и гарантируя, что никакие другие драйверы реального режима не перехватывают вызовы INT 21h. Соответствующим компонентом IFSHLP. SYS в защищенном режиме является IFSMGR.386 в Windows 3.11 и IFSMGR. VXD в Windows 95 и Windows 98.
IFS в Windows NT
API IFS является частью Windows Driver Kit. Когда Microsoft прекратила разработку OS/2 и сосредоточилась на том, что тогда называлось OS/2 NT, они перенесли идеи IFS вместе с файловой системой HPFS. Вместо схемы из четырех компонентов, NT IFS была переработана в схему из двух компонентов. microIFS и miniIFS были исключены из схемы. IFS и вспомогательные программы остались без изменений, но позднее, в Windows NT 4.0, был добавлен вспомогательный инструмент дефрагментации (DEFRAG). Изначальный загрузчик NTLDR от Microsoft был разработан для загрузки ядра NT из FAT, HPFS или NTFS, но последующие версии отказались от поддержки HPFS. Все драйверы и вспомогательные программы стали 32-битными исполняемыми файлами PE. Файловая система FAT была перемещена из ядра в IFS и значительно оптимизирована для повышения производительности, используя преимущества 32-битной обработки (получив название FASTFAT). Оригинальная Windows NT 3.1 включала драйверы FAT, HPFS (Pinball) и недавно созданные драйверы NTFS, а также новый и улучшенный драйвер файловой системы CD-ROM, поддерживающий длинные имена файлов с использованием файловой системы Microsoft Joliet. Windows NT 3.51 добавила сжатие файлов в NTFS и в интерфейс IFS. В Windows NT 4.0 HPFS была удалена. В Windows 2000 FASTFAT была обновлена для поддержки FAT32 и добавлена поддержка UDF. Windows 2000 изменила интерфейс IFS, добавив шифрование отдельных файлов. Сетевые протоколы обмена файлами и антивирусное программное обеспечение также реализуются с использованием драйверов IFS "фильтров файловой системы", которые перехватывают операции ввода-вывода файлов. Apple начала включать драйверы HFS+ только для чтения в версию Boot Camp, поставляемую с Mac OS X 10.6, для использования в Windows XP, Windows Vista и Windows 7.