Uniksowy system plików
W systemie Unix i inspirowanych nim systemach operacyjnych system plików jest uważany za centralny składnik systemu operacyjnego. Była to również jedna z pierwszych części systemu zaprojektowana i wdrożona przez Kena Thompsona w pierwszej eksperymentalnej wersji Uniksa z 1969 roku .
Podobnie jak w innych systemach operacyjnych, system plików zapewnia przechowywanie i wyszukiwanie informacji oraz jedną z kilku form komunikacji międzyprocesowej , ponieważ wiele małych programów, które tradycyjnie tworzą system Unix, może przechowywać informacje w plikach, dzięki czemu inne programy mogą je czytać, chociaż potoki uzupełnił ją w tej roli począwszy od wydania trzeciego . Ponadto system plików zapewnia dostęp do innych zasobów za pośrednictwem tak zwanych plików urządzeń , które są punktami wejścia do terminali , drukarek i myszy .
W pozostałej części tego artykułu Unix jest nazwą rodzajową odnoszącą się zarówno do oryginalnego systemu operacyjnego Unix, jak i do wielu jego odpowiedników .
Zasady
System plików pojawia się jako jedno zakorzenione drzewo katalogów. Zamiast adresować osobne woluminy, takie jak partycje dysku , nośniki wymienne i udziały sieciowe , jako osobne drzewa (jak to ma miejsce w systemach DOS i Windows : każdy dysk ma literę oznaczającą katalog główny jego drzewa systemu plików), takie woluminy można montować na katalog, powodując, że drzewo systemu plików woluminu pojawia się jako ten katalog w większym drzewie. Korzeń całego drzewa jest oznaczony /
.
W oryginalnym Bell Labs Unix zwyczajowo stosowano konfigurację z dwoma dyskami, gdzie pierwszy dysk zawierał programy startowe, a drugi zawierał pliki i programy użytkowników. Ten drugi dysk został zamontowany w pustym katalogu o nazwie usr
na pierwszym dysku, co spowodowało, że dwa dyski pojawiły się jako jeden system plików, z zawartością drugiego dysku widoczną w /usr
.
Katalogi uniksowe nie zawierają plików. Zamiast tego zawierają nazwy plików sparowane z odniesieniami do tak zwanych i- węzłów , które z kolei zawierają zarówno plik, jak i jego metadane (właściciel, uprawnienia, czas ostatniego dostępu itp., ale bez nazwy). Wiele nazw w systemie plików może odnosić się do tego samego pliku, funkcja nazywana twardym łączem . Matematyczne cechy dowiązań twardych sprawiają, że system plików jest ograniczonym typem skierowanego grafu acyklicznego , chociaż katalogi nadal tworzą drzewo, ponieważ zazwyczaj mogą nie być połączone na stałe. (Jak pierwotnie przewidywano w 1969 r., system plików Unix byłby w rzeczywistości używany jako ogólny graf z twardymi linkami do katalogów zapewniającymi nawigację zamiast nazw ścieżek).
Typy plików
Oryginalny system plików Unix obsługiwał trzy typy plików: zwykłe pliki, katalogi i „pliki specjalne”, zwane również plikami urządzeń. Berkeley Software Distribution (BSD) i System V dodały typ pliku, który ma być używany do komunikacji międzyprocesowej : BSD dodał gniazda , podczas gdy System V dodał pliki FIFO .
BSD dodało również dowiązania symboliczne (często nazywane „dowiązaniami symbolicznymi”) do zakresu typów plików, które są plikami odnoszącymi się do innych plików i uzupełniają twarde łącza. Dowiązania symboliczne zostały wzorowane na podobnej funkcji w Multics i różnią się od dowiązań twardych tym, że mogą obejmować systemy plików i że ich istnienie jest niezależne od obiektu docelowego. Inne systemy Unix mogą obsługiwać dodatkowe typy plików.
Konwencjonalny układ katalogów
Istnieją pewne konwencje lokalizowania niektórych rodzajów plików, takich jak programy, pliki konfiguracyjne systemu i katalogi domowe użytkowników . Zostały one po raz pierwszy udokumentowane na stronie man hier(7)
od wersji 7 Unix ; kolejne wersje, pochodne i klony mają zazwyczaj podobną stronę podręcznika.
Szczegóły układu katalogów zmieniały się w czasie. Chociaż układ systemu plików nie jest częścią pojedynczej specyfikacji systemu UNIX , istnieje kilka prób jego standaryzacji (jego części), na przykład Binarny interfejs aplikacji Systemu V , Intel Binary Compatibility Standard , Common Operating System Environment i Linux Foundation . s Standard Hierarchii Systemu Plików (FHS).
Oto ogólny przegląd typowych lokalizacji plików w systemie operacyjnym Unix:
Katalog lub plik | Opis |
---|---|
/
|
ukośnik / znak oznacza korzeń drzewa systemu plików. |
|
Oznacza pliki binarne i zawiera pewne podstawowe narzędzia, takie jak ls lub cp , które są potrzebne do zamontowania /usr , gdy jest to oddzielny system plików, lub do uruchomienia w trybie jednego użytkownika (administracyjnego), gdy nie można zamontować /usr . W Systemie V.4 jest to dowiązanie symboliczne do /usr/bin . W przeciwnym razie musi znajdować się w głównym systemie plików. |
Zawiera wszystkie pliki potrzebne do pomyślnego procesu uruchamiania. W Research Unix był to raczej jeden plik niż katalog. Obecnie zwykle na samym głównym systemie plików, chyba że system, bootloader itp. wymagają inaczej. | |
Stojaki na urządzenia . Zawiera reprezentacje plików urządzeń peryferyjnych i pseudourządzeń . Zobacz też: Uprawnienia do nadawania nazw i numerów w systemie Linux . Musi znajdować się w głównym systemie plików. | |
|
Zawiera ogólnosystemowe pliki konfiguracyjne i systemowe bazy danych; nazwa oznacza et cetera , ale teraz lepszym rozszerzeniem jest editable - t ext- c onfigurations. Pierwotnie zawierał również „niebezpieczne narzędzia konserwacyjne”, takie jak init , ale zazwyczaj zostały one przeniesione do /sbin lub gdzie indziej. Musi znajdować się w głównym systemie plików. |
|
Zawiera katalogi domowe użytkowników w systemie Linux i niektórych innych systemach. W oryginalnej wersji Uniksa katalogi domowe znajdowały się zamiast tego w /usr . Niektóre systemy nadal używają lub używały różnych lokalizacji: macOS ma katalogi domowe w /Users , starsze wersje BSD umieszczają je w /u , FreeBSD ma /usr/home . |
|
Pierwotnie niezbędne biblioteki : biblioteki C , ale nie Fortran . W nowoczesnych systemach zawiera współdzielone biblioteki potrzebne programom w /bin i ewentualnie ładowalny moduł jądra lub sterowniki urządzeń . Dystrybucje Linuksa mogą mieć warianty /lib32 i /lib64 do obsługi wielu architektur. |
|
Domyślny punkt montowania dla urządzeń wymiennych, takich jak pendrive'y, odtwarzacze multimedialne itp. Zgodnie ze zdrowym rozsądkiem sam katalog, którego podkatalogi są punktami montowania, znajduje się na partycji głównej. |
|
Stojaki do montażu . Pusty katalog często używany przez administratorów systemu jako tymczasowy punkt montowania. Zgodnie ze zdrowym rozsądkiem sam katalog, którego podkatalogi są punktami montowania, znajduje się na partycji głównej. |
|
Zawiera lokalnie zainstalowane oprogramowanie. Pochodzi z Systemu V , który ma menedżera pakietów , który instaluje oprogramowanie w tym katalogu (jeden podkatalog na pakiet). |
|
procfs wirtualny system plików pokazujący informacje o procesach jako pliki. |
|
Katalog domowy superużytkownika root - czyli administratora systemu. Katalog domowy tego konta zwykle znajduje się w początkowym systemie plików, a zatem nie w katalogu /home (który może być punktem montowania dla innego systemu plików) na wypadek konieczności wykonania określonej konserwacji, podczas której inne systemy plików są niedostępne. Taka sytuacja może mieć miejsce na przykład w przypadku awarii dysku twardego i braku możliwości jego prawidłowego zamontowania. Zgodnie z konwencją ten katalog znajduje się na samej partycji głównej; w każdym razie nie jest to link do /home/root ani nic podobnego. |
|
Oznacza „ pliki binarne systemu (lub superużytkownika) ” i zawiera podstawowe narzędzia, takie jak init , zwykle potrzebne do uruchamiania, utrzymywania i przywracania systemu. Musi znajdować się na samej partycji głównej. |
|
Dane serwera (dane dotyczące usług świadczonych przez system). |
|
W niektórych dystrybucjach Linuksa zawiera wirtualny system plików sysfs , zawierający informacje dotyczące sprzętu i systemu operacyjnego. W systemach BSD zwykle dowiązanie symboliczne do źródeł jądra w /usr/src/sys . |
|
Miejsce na pliki tymczasowe, które prawdopodobnie nie przetrwają ponownego uruchomienia. Wiele systemów czyści ten katalog podczas uruchamiania lub używa tmpfs do jego implementacji. |
|
Jądro systemu Unix w Research Unix i System V. Wraz z dodaniem obsługi pamięci wirtualnej do 3BSD , nazwa ta została zmieniona na /vmunix . |
|
„System plików użytkownika”: pierwotnie katalog zawierający katalogi domowe użytkowników, ale już w trzeciej edycji Research Unix , ok. 1973, ponownie użyty do podzielenia programów systemu operacyjnego na dwa dyski (jeden z nich to dysk o stałej głowicy 256 KB), tak aby podstawowe polecenia pojawiały się w /bin lub /usr/bin . Obecnie przechowuje pliki wykonywalne, biblioteki i współdzielone zasoby, które nie są krytyczne dla systemu, takie jak system X Window , menedżery okien , języki skryptowe itd. W starszych systemach uniksowych katalogi domowe użytkowników mogły nadal pojawiać się w /usr obok katalogów zawierających programy, chociaż do 1984 roku zależało to od lokalnych zwyczajów . |
|
Przechowuje nagłówki programistyczne używane w całym systemie. Pliki nagłówkowe są najczęściej używane przez dyrektywę #include w języku C , która historycznie określała nazwę tego katalogu. |
|
Przechowuje potrzebne biblioteki i pliki danych dla programów przechowywanych w /usr lub gdzie indziej. |
|
Przechowuje programy przeznaczone do wykonywania przez inne programy, a nie bezpośrednio przez użytkowników. Np. w tym katalogu można znaleźć plik wykonywalny Sendmaila . Nieobecny w FHS do 2011 roku; Dystrybucje Linuksa tradycyjnie przenosiły zawartość tego katalogu do /usr/lib , gdzie znajdowała się również w 4.3BSD. |
|
Przypomina /usr w strukturze, ale jego podkatalogi są używane do dodatków niebędących częścią dystrybucji systemu operacyjnego, takich jak niestandardowe programy lub pliki z kolekcji portów BSD . Zwykle ma podkatalogi, takie jak /usr/local/lib lub /usr/local/bin . |
|
Dane programu niezależne od architektury. W Linuksie i nowoczesnych pochodnych BSD katalog ten zawiera podkatalogi, takie jak man for manpages , które w starszych wersjach pojawiały się bezpośrednio w katalogu /usr .
|
|
Oznacza zmienną . Miejsce na pliki, które mogą się często zmieniać — zwłaszcza pod względem rozmiaru, na przykład wiadomości e-mail wysyłane do użytkowników w systemie lub pliki blokady identyfikatorów procesów . |
|
Zawiera pliki dziennika systemowego. |
|
Miejsce, w którym przechowywana jest cała poczta przychodząca. Użytkownicy (inni niż root ) mogą uzyskiwać dostęp tylko do własnej poczty. Często ten katalog jest dowiązaniem symbolicznym do /var/spool/mail . |
|
bufora . Zawiera zadania drukowania, bufory poczty i inne zadania w kolejce. |
|
Miejsce, w którym znajduje się nieskompilowany kod źródłowy niektórych programów. |
|
Katalog /var/tmp to miejsce na pliki tymczasowe, które należy zachować między restartami systemu. |
Zobacz też
- Btrfs
- wew2
- wew3
- wew4
- Standard hierarchii systemów plików
- MŁOTEK
- JFS (system plików)
- Uniksowy system plików
- System plików Veritas
- ZFS
- Ten artykuł zawiera materiał z artykułu Citizendium „ System plików Unix ”, który jest objęty licencją Creative Commons Attribution-ShareAlike 3.0 Unported License, ale nie GFDL .