Virtuella filsystem

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 17 december 2019; kontroller kräver 3 redigeringar .

Ett virtuellt filsystem ( engelsk  virtuellt filsystem  - VFS) eller en virtuell filsystemswitch ( engelsk  virtuell filsystemswitch ) är ett abstraktionslager över en specifik filsystemimplementering . Syftet med VFS är att ge enhetlig åtkomst för klientapplikationer till olika typer av filsystem. VFS kan användas för att komma åt lokala enheter och filer ( fat32 , ext4 , ntfs ), nätverksenheter och filer på dem ( nfs ) och icke-datalagringsenheter ( procfs [1] ). VFS deklarerar ett programmeringsgränssnitt mellan kärnan och ett visst filsystem, så att lägga till stöd för ett nytt filsystem kräver inga ändringar av operativsystemets kärna .

Utvecklingshistorik

Ett av de första virtuella filsystemen i Unix-liknande operativsystem implementerades av Sun Microsystems i SunOS 2.0 1985 . Detta gjorde det möjligt för Unix-systemanrop att transparent åtkomst till lokal UFS och fjärr -NFS . Av denna anledning kopierade Unix-leverantörer som licensierade NFS-kod ofta Suns VFS-design. Andra filsystem kan monteras på samma sätt: det fanns en implementering av MS-DOS FAT -filsystemet utvecklat av Sun som använde SunOS VFS, även om det inte skickades som en produkt förrän SunOS 4.1. SunOS-implementeringen är kärnan i VFS-mekanismen i System V Release 4 .

John Heidemann utvecklade en staplad VFS under SunOS 4.0 för det experimentella filsystemet Ficus . Detta projekt involverade kodåteranvändning över filsystem med olika men liknande semantik (till exempel kan ett krypterat filsystem använda ett namnsystem och kod för att lagra data från ett okrypterat filsystem). I sin avhandling anpassade Heidemann detta arbete för användning i 4.4BSD. Ättlingar till denna kod ligger till grund för implementeringarna av moderna filsystem i BSD -härledda operativsystem , inklusive Mac OS X.

VFS-enhet

Som nämnts tidigare är huvudsyftet med modern VFS att organisera ett enda användargränssnitt för åtkomst till olika filsystem, vars drivrutiner är inlästa i datorns minne. För att uppnå detta mål kräver operativsystemets kärna skapandet av ett enda programmeringsgränssnitt för interna kärnanrop. Detta gränssnitt bör vara tillräckligt brett vad gäller funktionalitet, eftersom det kommer att användas för att komma åt ett mycket stort antal olika (när det gäller egenskaper och funktionalitet) filsystem. Utöver de vanliga öppna/stängnings- och läs/skrivanrop för filer krävs att VFS har ett gränssnitt för revalidering (från engelska revalidation ) data, arbete med cachar , sändning av specialförfrågningar (IOCTL - Input/Output Control ) samt som för att organisera den aktuella sessionen med en öppen fil.

För att arbeta med VFS måste filsystemdrivrutinen implementera de angivna programanropen, med hänsyn till detaljerna i arbetet med detta filsystem. Drivrutinen kan endast stödja en del av VFS API-anrop, i vilket fall OS-kärnan bör korrekt "muta" motsvarande obehandlade förfrågningar från användaren.

Faktum är att VFS-gränssnittet som tillhandahålls för filsystemdrivrutiner kan vara en definition för själva konceptet med ett filsystem. Alla drivrutiner som implementerar VFS API-funktionalitet och är korrekt inlästa i kärnan blir en filsystemdrivrutin, oavsett om den används för filåtkomst eller inte. Dessutom kanske själva filsystemets funktionalitet inte ens finns i drivrutinen, utan i användarutrymmet . Ett slående exempel på detta tillvägagångssätt är filsystemet i användarutrymmet ( Filesystem in Userspace  - FUSE ).

Applikation i moderna operativsystem

På OS/2 och Microsoft Windows kallas den virtuella filsystemmekanismen för ett Installerbart filsystem .

På Linux är VFS-mekanismen, som all kärnkod, öppen källkod. Detta gör att filsystemutvecklare kan skriva sina drivrutiner så effektivt som möjligt. Som ett resultat har Linux stöd för montering av de allra flesta moderna filsystem.

På Unix inkluderar filsystem filsystemväxeln i System V Release 3 och i Ultrix .

Se även

Anteckningar

  1. FreeBSD: Virtuella filsystem . Hämtad 18 juni 2010. Arkiverad från originalet 12 juni 2017.

Länkar

Litteratur

E. Tanenbaum, H. Bos Moderna operativsystem. - 4:e uppl. - St. Petersburg: Peter, 2018.