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
Niektóre z zamieszczonych tu informacji wymagają weryfikacji.Uwagi: Definicja, na której bazuje poniższy opis, jest błędna. Patrz: dyskusja.Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się w dyskusji tej sekcji. Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tej sekcji.
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. Linux – ext4; 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
- SYSV (system plików z Unix-V, firmy AT&T)
- Berkeley Fast File System (FFS) Poprzednik UFS
- UFS (uniksowy system plików pod Solarisa i BSD)
- minix (system prof. Andrew S. Tanenbauma)
- ext (pochodna miniksa)
- ext2 (second extended file system, ulepszony ext)
- ext3 (bazujący na ext2, z księgowaniem oraz szybszymi operacjami na katalogach)
- ext4 (bazujący na ext3, z lepszą alokacją miejsca na dysku, zwiększonymi limitami, czy możliwością defragmentacji online)
- btrfs (nowoczesny system plików z księgowaniem, migawkami, klonowaniem, zarządzaniem wolumenami wzorowany na ZFS)
- ReiserFS (Linuksowy system plików z księgowaniem z firmy Namesys)
- Reiser4 (system plików trzymający wszystkie dane w zmodyfikowanych B-drzewach)
- JFS (system plików IBM-a)
- XFS (system plików SGI)
- ADFS (Acorn StrongARM)
- Xia (pochodna miniksa)
- cramfs
- filecore FS (pod BSD)
- GNOME Storage (linuksowy system oparty na bazie danych)
- LogFS, UBIFS, NILFS – systemy plików dla pamięci flash
Sieciowe systemy plików (protokoły)
Sun Solaris
- UFS – Unix 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