2010-05-26 15 views
8

Właśnie natknąłem się na VFS i system plików w przestrzeni użytkownika, jak FUSE.Co to jest wirtualny system plików lub system plików w przestrzeni użytkownika?

Teraz, o ile rozumiem, symuluje system plików, dzięki czemu aplikacja może mieć standardową hierarchię systemu plików. Ale nie rozumiem, dlaczego potrzebujemy do tego oddzielnego systemu plików? Czy nie możemy po prostu utworzyć zwykłej struktury folderów i umieścić pliki, które będą używane przez aplikację?

Więc moje pytania to:

  1. Co jest VFS?

  2. Czy możesz podać przykłady z prawdziwego świata, przypadki użycia VFS.

  3. Jaka jest korzyść z używania VFS?

Dowolny system plików VFS oparty na języku Java?

Odpowiedz

4

VFS nie odnosi się do "fałszywego" systemu plików, lecz do abstrakcyjnego interfejsu systemu plików przedstawianego przez systemy operacyjne POSIX do procesów aplikacji. Np:

  • open()
  • close()
  • read()
  • write()
  • itp

wszystkich implementacjach systemów plików (ext3, XFS, ReiserFS, etc.) wystawiać na ten sam interfejs do góry wszelkich specyficznych struktur i algorytmów, z których korzystają.

BEZPIECZNIK oznacza dostarczenie tego interfejsu z kodem, który nie działa w jądrze. Może to znacznie poprawić stabilność i bezpieczeństwo, ponieważ kod jądra jest uprzywilejowany, a kod obszaru użytkownika nie. Ta separacja czyni znacznie bardziej sensownym pisanie systemów plików z dużą ilością zewnętrznych zależności. Strona WWW FUSE opisuje, jak zbudowano przy użyciu FUSE.

13

VFS i FUSE są powiązane, ale nie do końca podobne. Głównym celem FUSE jest przekształcanie rzeczy-to-są-prawie-jak-plików-ale-niezupełnie (takich jak pliki na zdalnym serwerze lub wewnątrz pliku ZIP) w "prawdziwe" katalogi i pliki. Zobacz roster of FUSE filesystems, aby dowiedzieć się, na co to jest dobre; to miejmy nadzieję, sprawi, że będzie jasne, dlaczego FUSE bije "zwykłe stare pliki" w wielu okolicznościach.

VFS to interfejs programu użytkowego (API) do plików. Jeśli nie znasz pojęcia API, proponuję przyjrzeć się stronie Wikipedii "Virtual File System"; opisuje, czym jest VFS z punktu widzenia jądra systemu operacyjnego. Tak, twoje jądro systemu operacyjnego (np. Windows, Linux lub MacOS) ma VFS! Niektóre programy użytkownika, takie jak GNOME, również je mają (nazywa się GnomeVFS).

Celem VFS jest przedstawienie plików i katalogów aplikacjom w jednolity sposób; są to pliki z dysku CD-ROM, z systemu plików Linux lub Windows na dysku twardym lub pamięci USB lub dysku RAM lub z serwera sieciowego. To, że jądro systemu operacyjnego jest użyteczne dla VFS, jest prawdopodobnie oczywiste. Dlaczego więc mają również te obszary użytkownika, takie jak GnomeVFS?Odpowiedź brzmi: nie chcesz, aby każdy system plików i jego pies rezydowali w jądrze, ponieważ taki kod działa z uprawnieniami administratora, a każdy jego błąd może spowodować awarię całej maszyny. Oczywiście, wadą jest to, że VFSes przestrzeni użytkownika są użyteczne tylko dla aplikacji, które z nich korzystają, np. Tylko aplikacje GNOME mogą "widzieć" przez GnomeVFS; nie można zrobić "ls" w drzewie GnomeVFS. Rozwiązaniem jest FUSE: jego dokładnym celem i opisem jest przekształcenie VFS przestrzeni użytkownika w jądro. Innymi słowy, łączy API VFS z jądrem, dzięki czemu "fałszywe" pliki mogą wyglądać jak "prawdziwe".

Powiązane problemy