Domanda

Ho appena imbattuto in un VFS e un filesystem in userspace come FUSE .

Ora, per quanto ho capito, che simula un file di sistema, in modo che un'applicazione può avere una gerarchia di file system standard. Ma io non capisco, perché abbiamo bisogno di un file system separato per questo? Non possiamo semplicemente creare un normale file di struttura di cartelle e luogo che saranno utilizzati per l'applicazione?

Quindi, le mie domande sono:

  1. Che cos'è un VFS?

  2. Può fare qualche esempio del mondo reale, i casi d'uso in cui si usa VFS.

  3. Qual è il vantaggio di utilizzare un VFS?

Qualsiasi VFS basato su Java?

È stato utile?

Soluzione

VFS non fa riferimento a un file system 'falso', ma per l'interfaccia del filesystem abstract presentati dai sistemi operativi POSIX per i processi applicativi. Ad esempio:

  • open()
  • close()
  • read()
  • write()
  • ecc.

tutte le implementazioni di filesystem (ext3, XFS, ReiserFS, etc.) espongono la stessa interfaccia di sopra di qualsiasi strutture specifiche e gli algoritmi che usano.

FUSE è un mezzo per fornire che si interfacciano con il codice che non viene eseguito nel kernel. Questo può migliorare notevolmente la stabilità e la sicurezza, dal momento che il codice del kernel è privilegiata, mentre il codice userspace non lo è. Quella separazione rende molto più sensato scrivere file system con un sacco di dipendenze esterne. La pagina di FUSE web descrive molti filesystem costruito utilizzando FUSE.

Altri suggerimenti

VFS e FUSE sono correlati, ma non è proprio la stessa cosa. Lo scopo principale di FUSE è quello di trasformare le cose-che-sono-quasi-come-file-ma-non-proprio (ad esempio i file su un server remoto, o all'interno di un file ZIP) nelle directory "reali" e file. Vedere la roster di file system FUSE per avere un'idea di ciò che questo è un bene per; questo si spera renderà più chiaro il motivo per cui FUSE batte "vecchi file normali" in un sacco di circostanze.

Un VFS è un Program Interface (API) per i file. Nel caso in cui non si ha familiarità con il concetto di un'API, vi suggerisco di dare un'occhiata alla pagina di Wikipedia per "Virtual File System"; descrive cosa un VFS è dal punto di vista di un kernel del sistema operativo. Sì, il kernel del sistema operativo (sia esso Windows, Linux o MacOS) ha un VFS! Alcuni programmi user-space, come GNOME, hanno una volta di troppo (si chiama GnomeVFS).

Lo scopo di un VFS è a file e directory presenti alle applicazioni in modo uniforme; siano essi file da un CD-ROM, da un filesystem Linux o Windows su un hard disk o una chiavetta USB o disco RAM, o da un server di rete. Che un sistema operativo kernel hanno un uso per un VFS è probabilmente ovvio. E allora perché hanno anche quelli dello spazio utente, come ad esempio GnomeVFS? La risposta è che non si vuole ogni file system e il suo cane a risiedere nel kernel, perché tali percorsi di codice con privilegi di supervisore e qualsiasi bug in esso può causare l'intera macchina in crash. Naturalmente, lo svantaggio è che VFSes userspace sono utili solo per le applicazioni che li utilizzano, ad esempio solo le applicazioni GNOME possono "vedere" attraverso GnomeVFS; non si può fare "ls" all'interno di un albero GnomeVFS. La soluzione è FUSE: il suo scopo preciso e la descrizione è quello di trasformare uno spazio utente VFS in un kernel uno. In altre parole, si colma un'API VFS nel kernel, in modo che "falsi" i file possono apparire come "reale".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top