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

ReiserFS

HFS

OS/2

Другие

  • 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

Примечания

  1. Kevtronics. Undocumented Commands. 76362.2023@compuserve.com.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.