Installerbart filsystem - Installable File System
Den Installer File System ( IFS ) er en filsystem API i MS-DOS / PC DOS 4.x, IBM OS / 2 og Microsoft Windows som gjør at operativsystemet til å gjenkjenne og laste drivere for filsystemer .
Historie
Da IBM og Microsoft var med på å utvikle OS / 2, innså de at FAT-filsystemet ikke hadde noen av funksjonene som moderne operativsystemer ville kreve, og Microsoft begynte å utvikle High Performance File System (HPFS), kodenavnet Pinball .
I stedet for å kode den inne i kjernen, slik FAT var, utviklet Microsoft en "driverbasert" filsystem-API som kunne tillate dem og andre utviklere å legge til nye filsystemer i kjernen uten å måtte endre den.
Da Microsoft sluttet å jobbe med OS / 2, fortsatte IBM å bruke IFS-grensesnittet, og Microsoft implementerte en lignende i Windows NT.
Implementeringer
IFS i DOS 4.x
IFS i OS / 2
IFS ga et grunnleggende og kraftig grensesnitt for programmering av filsystemer. Den ble introdusert i 1989 i OS / 2 1.20, sammen med HPFS-filsystemet.
Filsystemdrivere utført i kernel-space ( ring 0 ) og er delt inn i fire hovedstykker: microIFS, miniIFS, IFS, helpers.
Bare IFS og selve filsystemkoden kreves, og den lastes inn via en " IFS =" -uttalelse i CONFIG.SYS- filen. Det er et NE 16-biters dynamisk lastet bibliotek . Uansett om det er et 32-bit OS / 2 (2.0 og nyere), er IFS alltid 16-bit (selv om du utenoffisielt kan lage en 32-bit IFS).
MicroIFS er et stykke kode som laster i kjernen og miniIFS i minnet og hopper til kjernekjøring. Det er vanligvis i oppstartsdelen av filsystemet.
MiniIFS er et stykke kode som kalles av kjernen for å laste den første IFS-setningen som vises i CONFIG.SYS-filen, så den første IFS-setningen må være boot-filsystemet for at systemet skal kunne starte.
Hjelperne er 16-biters (for OS / 2 1.x) eller 32-biters (for OS / 2 2.x og oppover), blir utført i brukerområdet ( ring 3 ) og inneholder koden som brukes til typisk vedlikehold av filsystemet , og kalles av CHKDSK og FORMAT verktøy.
Denne firedelte ordningen tillot utviklere å dynamisk legge til et nytt oppstartbart filsystem, som ext2- driveren for OS / 2 demonstrerte.
CD-ROM- filsystemdriver ( ISO 9660 ) ble lagt til i OS / 2 2.0, UDF ble lagt til i OS / 2 4.0 og JFS ble lagt til i OS / 2 4.5. ArcaOS , den siste emballasjen til OS / 2, har en rekke filsystemdrivere tilgjengelig, inkludert FAT32. Det var også en offisiell 32-biters HPFS IFS, kalt HPFS386 som forbedret ytelsen og la til noen funksjoner, som hurtigbuffer med variabel størrelse og tilgangskontrollister , og var bare tilgjengelig i visse OS / 2-serverversjoner. FAT-filsystemet ble aldri fjernet fra kjernen og offisielt aldri en IFS, selv om det er FAT IFS som la til funksjoner som lange filnavn (LFNs), FAT32- støtte, etc.
Nettverksfildelingsprotokoller som NFS og SMB implementeres også ved bruk av IFS, og IFS-grensesnittet ble aldri endret.
IFS i Windows 3.11 og 9x
IFSHLP.SYS ( Installable File System Helper) er en MS-DOS- enhetsdriver som først ble utgitt som en del av Microsoft Windows 3.11 . Det gjør mors 32-biters filtilgang i Windows 386 Enhanced Mode ved å omgå 16-bit DOS API og sikre at ingen andre realmodus driver fanger INT 21H samtaler.
Den beskyttede modusmotparten til IFSHLP.SYS er IFSMGR.386 i Windows 3.11 og IFSMGR.VXD i Windows 95 og Windows 98.
IFS i Windows NT
IFS API er en del av Windows Driver Kit .
Da Microsoft sluttet å utvikle OS / 2 og konsentrerte seg om det som da ble kalt OS / 2 NT, tok de IFS-ideene med seg, sammen med HPFS-filsystemet.
I stedet for å være en firedelingsplan, ble NT IFS redesignet til en todelt ordning. microIFS og miniIFS ble fjernet fra ordningen. IFS og hjelpere forblir de samme, men senere, i Windows NT 4.0, ble en defragmenteringshjelper (DEFRAG) lagt til. Microsofts originale NTLDR ble kodet for å laste NT-kjernen fra FAT, HPFS eller NTFS , men påfølgende versjoner droppet HPFS-støtte. Alle driverne og hjelperne ble 32-biters PE-kjørbare filer . FAT-filsystemet ble flyttet ut av kjernen til en IFS og var sterkt optimalisert for ytelse, og utnyttet 32-biters behandlingsfunksjoner (kalt FASTFAT ).
Opprinnelige Windows NT 3.1 inkorporerte FAT, HPFS (Pinball) og de nyopprettede NTFS-driverne, sammen med en ny og forbedret CD-ROM-filsystemdriver som innlemmet lange filnavn ved hjelp av Microsoft Joliet- filsystemet.
Windows NT 3.51 la til komprimering per fil til NTFS og IFS-grensesnittet. I Windows NT 4.0 ble HPFS fjernet. I Windows 2000 ble FASTFAT oppdatert for å støtte FAT32 og UDF ble lagt til.
Windows 2000 modifiserte IFS-grensesnittet for å legge til kryptering per fil.
Nettverksfildelingsprotokoller og antivirus implementeres også ved bruk av IFS.
Apple begynte å inkludere skrivebeskyttede HFS + -drivere i Mac OS X 10.6 -versjonen av Boot Camp for bruk i Windows XP , Windows Vista og Windows 7 .
Videre lesning
- Rajeev Nagar. Windows NT File System Internals, En utviklerveiledning . O'Reilly. ISBN 1-56592-249-2 .
- Helen Custer. Inne i Windows NT File System . Microsoft Press. ISBN 1-55615-660-X .
- Helen Custer. Inne i Windows NT . Microsoft Press. ISBN 1-55615-481-X .
Se også
- Virtuelt filsystem
- Liste over filsystemer
- Sammenligning av filsystemer
- Nettverks omdirigering
- Dokan bibliotek
Referanser
Eksterne linker
ext2 / ext3 / ext4
- Ext2Fsd er en GPL- filsystemdriver for Windows 2000 til Windows 8 (32Bit og 64Bit); den støtter skriving / flere kodesider, ext3 htree, journal siden versjon 0.50 tilgjengelig
- ext2 IFS for Windows NT (skrivebeskyttet)
- Ext2IFS / en annen ext2-3 IFS for Windows NT / 2000 / XP / 2003 (lese / skrive; støtte for UTF-8 filnavn og ext3 htree; ext3 journal støttes ikke)
ReiserFS
- ReiserFS IFS for Windows NT (skrivebeskyttet)
HFS
OS / 2
Annen
- CBFS Storage - kryssplattform virtuelt filsystem med én fil med kryptering og komprimering
- CBFS Connect - SDK som lar utviklere lage installerbare virtuelle filsystemer for Windows i brukermodus
- RomFS - Windows- drivereksempler
- WinFUSE - et .NET-basert filsystem i USErspace-rammeverk som bruker SMB i stedet for IFS
- Dokany - et MIT-lisensiert rammeverk for filsystemer i Windows-brukerområdet som bruker en egen kjernedriver, med tilgjengelige .NET-bindinger