Installable File System
Installable File System (IFS) — API файловых систем в IBM OS/2 и Microsoft Windows, который позволяет операционной системе распознать и загрузить драйвер файловой системы.
История
Когда разработчики IBM и Microsoft проектировали OS/2, они поняли, что FAT не отвечает требованиям современных ОС, и Microsoft приступила к разработке High Performance File System (HPFS) под кодовым названием Pinball. Вместо размещения кода внутри ядра, как для FAT, Microsoft разработала драйвер файловой системы, основанный на API, который позволил бы и другим разработчикам добавлять новые файловые системы в ядро без необходимости изменять его.
Когда Microsoft перестала работать над OS/2, IBM продолжила использовать интерфейс IFS и Microsoft реализовала подобный ему уже в системах Windows.
IFS в DOS 4.x
В MS-DOS 4.0 поддерживается директива IFS для загрузки сторонних драйверов файловой системы.[1]
Формат команды: IFS=<drive><path><driver>, так же, как для директивы DEVICE.
IFS в OS/2
IFS предоставил основной и довольно мощный интерфейс для программирования файловых систем. Он был включён в 1989 году в OS/ 2 1.20 вместе с файловой системой HPFS.
Драйверы файловых систем выполняются в пространстве ядра (кольцо 0) и разделены на четыре основных частей: microIFS, miniIFS, IFS, хелперы.
Для драйвера IFS сам код файловой системы не требуется, он будет загружен через директиву «IFS=» файла CONFIG.SYS. Это 16-битная динамически загружаемая библиотека нового EXE-формата. Независимо от того, используется ли 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.х и выше), выполняются в пользовательском пространстве (кольцо 3) и содержат код, используемый для технического обслуживания файловой системы и вызываемый утилитами CHKDSK и FORMAT.
Эта схема из четырех частей позволила разработчикам динамически добавлять новую загрузочную файловую систему, такую как драйвер ext2, продемонстрированный в OS/2 .
Драйвер файловой системы CD-ROM (Международная организация по стандартизации 9660) был добавлен в OS/2 2.0, UDF была добавлена в OS/2 4.0 и JFS была добавлена в OS/2 4.5. eComStation, последний релиз OS/2 также включает в себя множество драйверов файловых систем для OS/2 в семействе компакт-дисков. Был также официальный 32-разрядный HPFS IFS, называемый HPFS386 , повысивший производительность и добавивший некоторые функции, такие как кэш переменного размера и списки управления доступом, был доступен только в версии OS/2 Server 3,0. Файловая система FAT не была удалена из ядра и никогда официально не имела своего IFS, хотя есть FAT ISF, к которым добавлены функции, такие как длинные имена файлов (LFNs), поддержка FAT32 и т. д.
Сетевые протоколы обмена файлов, такие как NFS и SMB, также реализованы с использованием IFS, но сам интерфейс IFS никогда не изменялся.
IFS в Windows NT
IFS API является частью набора Windows Driver Kit. Когда Microsoft (после продажи системы IBM) прекратила развивать OS/2 и сконцентрировалась на том, что сначала назвали OS/2 NT, они взяли идею с IFS вместе с файловой системой HPFS.
Вместо системы из 4 частей 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 + в Mac OS X 10.6 версии для использования в Windows XP, Windows Vista и Windows 7.
Библиография
- O’Reilly — Windows NT File System Internals, A Developer’s Guide — By Rajeev Nagar — ISBN 1-56592-249-2
- Microsoft Press — Inside Windows NT File System — By Helen Custer — ISBN 1-55615-660-X
- Microsoft Press — Inside Windows NT — By Helen Custer — ISBN 1-55615-481-X
См. также
Ссылки
ext2/ext3
- Ext2 file system driver for windows 2000/XP/Vista (x86/amd64) (supports writing/multiple codepages, ext3 htree, journal support new in 0.50)
- ext2 IFS for Windows NT (Read only)
- Ext2IFS / Another ext2-3 IFS for Windows NT/2000/XP/2003 (Read/Write; support for UTF-8 file names and ext3 htree; ext3 journal not supported)
ReiserFS
- ReiserFS IFS for Windows NT (Read only)
Другие
- Solid File System Архивная копия от 14 июля 2008 на Wayback Machine — (SolFS) cross-platform single-file virtual filesystem with encryption and compression
- Callback File System — SDK that lets developers create installable virtual file systems for Windows in user mode
- RomFS — Windows driver examples
- WinFUSE — a .NET based Filesystem in USErspace framework that uses SMB instead of IFS
- Dokan — a user mode filesystem toolkit by means of an IFS proxy driver
Примечания
- Kevtronics. Undocumented Commands . 76362.2023@compuserve.com.