System plików

System plików – metoda przechowywania plików, zarządzania plikami, informacjami o tych plikach, tak by dostęp do plików i danych w nich zgromadzonych był łatwy dla użytkownika systemu; także: wolumin.

Systemy plików stosuje się dla różnych nośników danych, takich jak dyski, dyskietki, a także w strumieniach danych, sieciach komputerowych, pamięciach. We współczesnych systemach operacyjnych bezpośrednie operowanie na danych nośnika pamięci zarezerwowane jest tylko dla systemu operacyjnego, aplikacje mają dostęp tylko do operacji na plikach i mają zabroniony bezpośredni dostęp do nośnika danych.

Z formalnego punktu widzenia system plików to reguły umieszczania na nośniku abstrakcyjnych danych oraz informacji umożliwiających przechowywanie tych danych, łatwy i szybki dostęp do informacji o danych oraz do tych danych, manipulowania nimi, a także sposobach usuwania ich.

Większość systemów operacyjnych posiada własny (macierzysty) system plików, rozwijany równolegle z nim (np. FAT w DOS-ie, NTFS w Windows NT, APFS w macOS lub ext/ext2/ext3/ext4 i ReiserFS/Reiser4 w Linuksie), ze względu na pewne specyficzne właściwości nadawane plikom (np. atrybut wykonywalności pliku), podobnie jak niektóre nośniki danych (np. ISO 9660 i UDF na CD-ROM/DVD), jednak sam system plików jest niezależny od nich. Same systemy operacyjne (w szczególności Unix i jego pochodne) potrafią obsługiwać wiele systemów plików.

Organizacja danych

Nośniki danych, takie jak dyski twarde, dyskietki posiadają blokową strukturę danych, znaczy to, że dane są w nich przechowywane w postaci bloków, a blok musi być w całości zapisywany i odczytywany. W przypadku dysków wielkość pojedynczego bloku danych jest wielokrotnością rozmiaru pojedynczego sektora (najczęściej 512 bajtów).

Bloki tworzą strukturę liniową:

Blok 0 Blok 1 Blok 2 Blok 3 Blok n

Systemy operacyjne łączą bloki w klastry. Klaster składa się z kilku bloków (w nowszych systemach może to być 8 lub więcej bloków)[potrzebny przypis].

Dyskowy system plików część pamięci wykorzystuje na tzw. sektor rozruchowy (boot sector), który nie stanowi zasadniczej części systemu plików i jest używany do rozruchu systemu. Ponadto systemy plików przechowują listy wszystkich klastrów (oraz informacje do których plików one należą) w tzw. tablicach alokacji.

Przykład alokacji w linuksowym systemie plików ext2:

Blok rozr. grupa bloków 0 grupa bloków 1 grupa bloków 2 grupa bloków 3 grupa bloków n

Struktura grupy bloków (n – liczba bloków):

... grupa bloków 1 Superblok (1) Deskryptory grupy (n) Mapa bitowa bloków z danymi (1) Mapa bitowa i-węzłów (1) Tablica i-węzłów (n) Bloki z danymi (n) grupa bloków 3 ...

Podstawowe operacje

Jeżeli program chce wykonać jakąś operację na pliku robi to poprzez system plików. W systemie Unix oraz jego pochodnych takie operacje realizowane są za pomocą wywołań systemowych. Wywołania te są przechwytywane przez wirtualny system plików (VFS), odpowiednio przetwarzane i kierowane do zasadniczego systemu plików. Zastosowanie wirtualnego systemu plików powoduje, że program stosuje te same wywołania systemowe niezależnie od systemu plików.

Do najbardziej podstawowych wywołań systemowych należą:

  • otwieranie pliku (open)
  • zamykanie pliku (close)
  • tworzenie pliku (create)
  • usuwanie pliku (unlink)
  • tworzenie katalogu (mkdir)
  • usuwanie katalogu (rmdir)
  • czytanie z pliku (read)
  • pisanie do pliku (write)

Hierarchia systemu plików

Prymitywne systemy plikowe posiadały jedną listę plików wchodzących w skład systemu plików. W miarę postępu systemy plików zostały unowocześnione i współczesne systemy plików oprócz głównej listy (katalogu głównego) zawierają także podlisty (podkatalogi) które również mogą zawierać dalsze podlisty (podkatalogi). W ten sposób rozwinęło się pojęcie katalogów nadrzędnych oraz katalogów podrzędnych.

Katalog, w którym znajduje się plik jest nadrzędny (bezpośrednio) względem tego pliku. Katalog jest podrzędny (bezpośrednio) względem innego katalogu w którym się znajduje.

W ten sposób powstało pojęcie drzewiastej hierarchii systemu plików, w której każdy katalog może zawierać podkatalogi, które mogą zawierać dalsze podkatalogi. Powstaje w ten sposób struktura, która wygląda jak „odwrócone drzewo”.

Systemy, które mają taką strukturę nazywają się hierarchicznymi systemami plików. W takich systemach plik identyfikowany jest nie tylko na podstawie unikalnej nazwy, ale również ścieżki dostępu:

Windows 2000/XP: Unix / Linux:
[C:] [/]
 +- boot.ini +- [boot]
 |                                           +- [etc]
 +- [Documents and Settings] +- [home]
 |   +- [pimpek]                             |   +- [pimpek]
 |       +- [moje dokumenty]                 |       +- [filmy]
 |           +- [filmy]                      |       |   +- twierdza.avi
 |           |   +- twierdza.avi             |       |
 |           |                               |       +- [dokumenty]
 |           +- [teksty]                     |           +- Dokument1.txt
 |               +- Dokument1.txt            |           +- Dokument2.txt
 |               +- Dokument2.txt            |
 |                                           +- [usr]
 |                                           +- [var]
 +- [Program Files]

Format podanej ścieżki zależy od systemu operacyjnego. W większości systemów (Unix, Linux, Mac OS) katalog jest reprezentowany przez ukośnik (ang. slash „/”), pełna ścieżka do pliku twierdza.avi (przykład powyżej) wygląda następująco:

    /home/pimpek/filmy/twierdza.avi

W przypadku systemów Windows oraz DOS katalog jest reprezentowany przez lewy ukośnik (ang. backslash „\”), a pełna ścieżka do pliku twierdza.avi w tym systemie wygląda następująco:

    C:\Documents and Settings\pimpek\moje dokumenty\filmy\twierdza.avi

Patrz też: ścieżka dostępu, katalog główny.

Dla systemu GNU/Linux powstały dwa formalne standardy określające układ katalogów w głównym systemie plików: FSSTND i FHS.

Rodzaje systemów plików

  • Dyskowy system plików – „normalny” system plików pozwalający na zarządzanie danymi na stacjonarnych nośnikach danych, takich jak twarde dyski. Każdy system posiada swój własny system plików (np. Linuxext4; Windows NT, XP, Vista, Seven – NTFS; Windows 95,98,ME – FAT, FAT32 itd.).
    • Systemy dziennikujące (lub księgujące, ang. journaling) – systemy z mechanizmem księgującym, zwiększającym bezpieczeństwo danych i umożliwiającym szybkie przywrócenie sprawności systemu po awarii. Mechanizm taki posiadają nowsze systemy plików (np. NTFS, HFS+ lub ext3).
  • Sieciowy system plików – w zasadzie jest to protokół umożliwiający przesyłanie poleceń do serwera przez sieć oraz wykonywanie operacji na odległość. Informacje są z powrotem przekazywane z serwera do klienta. Dzięki takiemu rozwiązaniu użytkownik nie widzi żadnej różnicy między pracą na sieciowym systemie plików a pracą na lokalnym systemie plików. Najbardziej znane to NFS, Coda, AFS (System plików Andrewsa), SMB oraz NCP (Novella).
  • Specjalne systemy plików (Wirtualne systemy plików) – nie umożliwiają zarządzania danymi, np. system /proc (w Linuksie) dostarcza interfejs, który umożliwia dostęp do niektórych struktur jądra.
  • Systemy oparte na bazie danych – systemy plików, w których pliki są identyfikowane na podstawie swojej charakterystyki (np. autora, typu czy tematu, którego dotyczą) – jak w bazach danych.

Popularne systemy plików

Poniższa lista jest podzielona ze względu na oryginalny system, dla którego były zaprojektowane. W chwili obecnej wiele systemów plików można obsługiwać w więcej niż jednym systemie operacyjnym (np. FAT, ISO 9660, NTFS, ext2, ZFS, SMB, NFS, JFS, XFS, UFS,...)

Unix/Linux

Sieciowe systemy plików (protokoły)

Sun Solaris

  • UFSUnix File System – podstawowy system plików Solarisa
  • ZFS system plików opracowany przez firmę Sun dla systemu Solaris (dostępny również w systemie FreeBSD)
  • VxFS komercyjny system plików opracowany przez firmę Veritas Software, dostępny również pod Linux

DOS

Windows

Amiga

Apple/Macintosh

OS/2

  • HPFS (High Performance File System) (dostępny również w systemach Windows NT do wersji 3.51)
  • JFS (Journaled File System)

BeOS

CD-ROM/DVD

Inne

Zobacz też

Linki zewnętrzne