System plików
Z Wikipedii
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 w plikach 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 danych 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 Microsoft Windows NT lub ext/ext2/ext3 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 na CD-ROM i UDF na 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.
Spis treści |
[edytuj] 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, bloki te nazywane są sektorami). W przypadku dysków i dyskietek mają taką samą wielkość (przeważnie 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).
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 | ... |
[edytuj] 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ą przychwytywane 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)
[edytuj] 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 hierarchi 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 postawie unikalnej nazwy ale również ścieżki dostępu:
Windows 2000/XP: Unix / Linux:
[C:] [/] +- boot.ini +- [boot] | +- [etc] +- [Documents and Settings] +- [home] | +- [ciapek] | +- [ciapek] | +- [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/ciapek/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\ciapek\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.
[edytuj] 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 - ext2, Windows NT - NTFS itd.).
- 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 Andrew'sa), SMB oraz NCP (Novell'a).
- Specjalne systemy plików (Wirtualne systemy plików) - nie umożliwiają zarządzania danymi, np. system /proc (w Linuksie) dostarcza interfejsu, 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.
- 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 lub ext3).
[edytuj] Popularne systemy plików
[edytuj] Unix/Linux
- minix (system prof. Andrew S. Tanenbauma)
- ext (pochodna miniksa)
- ext2 (second extended file system, ulepszony ext)
- ext3 (bazujący na ext2, z księgowaniem)
- ext4 (dodany będzie support dla partycji do 1024PB)
- FFS Poprzednik UFS
- ReiserFS (Linuksowy system plików z księgowaniem autorstwa Hansa Reisera)
- Reiser4
- JFS (system plików IBM'a)
- UFS (uniksowy system plików pod Solarisa i BSD)
- XFS
- xFS (sieciowy system plików)
- NFS (sieciowy system plików firmy Sun)
- SYSV (system plików z Unix-V, firmy AT&T)
- ADFS (Acorn StrongARM)
- GNOME Storage (linuksowy system oparty na bazie danych)
- Xia (pochodna miniksa)
- AndrewFS (AFS) (sieciowy system plików pod Uniksa)
- smbfs (LAN Manager)
- ncpfs (sieciowy system plików Novella)
- cramfs
- filecore FS (pod BSD)
[edytuj] DOS
[edytuj] Windows
- VFAT (Virtual FAT)
- NTFS (system plików z księgowaniem pod Windows NT i nowsze)
- WinFS (system plików oparty na bazie danych)
[edytuj] Amiga
- OFS (Amiga Old File System)
- Amiga Fast File System (FFS)
[edytuj] Apple/Macintosh
- Apple DOS
- Apple SOS
- Apple ProDOS
- MFS (Macintosh File System)
- HFS (Hierarchical File System)
- HFS+
- HFSX
[edytuj] OS/2
[edytuj] BeOS
- BeFS (Be file system)
- OpenBFS
[edytuj] CD-ROM/DVD
[edytuj] Inne
[edytuj] Zobacz też
- Sieciowy system plików
- VFS
- Księgowanie
- proc
- FHS - standard rozmieszczenia plików i katalogów w GNU/Linuksie
- Adres bezwględny
[edytuj] W sieci
- Porównanie unixowych systemów plików – praca w ramach Systemów Operacyjnych na Uniwersytecie Warszawskim
- Filesystems HOWTO – dokument z roku 2000 w jęz. angielskim opisujący różne systemy plików (raczej z uniksowego punktu widzenia)