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. Дата обращения: 25 мая 2017. Архивировано 20 февраля 2012 года.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.