Wewnętrzna struktura katalogów zależy od używanego systemu plików. Jeśli chcesz dokładnie wiedzieć, co się dzieje, spójrz na implementacje systemu plików.
Zasadniczo w większości systemów plików katalog jest tablicą asocjacyjną między nazwami plików (klucze) a numerami i-węzłów (wartości). Coś takiego :¹:
1167010 .
1158721 ..
1167626 subdir
132651 barfile
132650 bazfile
Ta lista jest zakodowana w mniej lub bardziej wydajny sposób w łańcuchu (zwykle) bloków 4KB. Zauważ, że zawartość zwykłych plików jest przechowywana podobnie. W przypadku katalogów nie ma sensu wiedzieć, jaki rozmiar jest rzeczywiście używany w tych blokach. Dlatego rozmiary katalogów zgłaszane przez du
są wielokrotnościami 4KB.
I-węzły służą do wiązania bloków ze sobą, tworząc jeden byt, mianowicie „plik” w sensie ogólnym. Są one identyfikowane przez numer, który jest jakimś adresem, a każdy z nich jest zwykle przechowywany jako pojedynczy, specjalny blok.
Zarządzanie tym wszystkim odbywa się w trybie jądra. Oprogramowanie prosi tylko o utworzenie katalogu z funkcją o nazwie int mkdir(const char *pathname, mode_t mode);
prowadzącej do wywołania systemowego, a cała reszta odbywa się za kulisami.
Informacje o strukturze linków:
Twardy link nie jest plikiem, to po prostu nowy wpis do katalogu (tj. Skojarzenie nazwa - numer i-węzła ) odnoszący się do istniejącej jednostki i-węzła². Oznacza to, że do tego samego i-węzła można uzyskać dostęp z różnych nazw ścieżek. W szczególności, ponieważ metadaty (uprawnienia, własność, znaczniki czasu…) są przechowywane w obrębie i-węzła, są one unikalne i niezależne od nazwy ścieżki wybranej do uzyskania dostępu do pliku.
Dowiązanie symboliczne to plik, który różni się od celu. Oznacza to, że ma swój własny i-węzeł. Kiedyś był traktowany jak zwykły plik: ścieżka docelowa była przechowywana w bloku danych. Ale teraz, ze względu na wydajność w najnowszych systemach plików ext , ścieżki krótsze niż 60 bajtów są przechowywane w samym i-węzle (za pomocą pól, które normalnie byłyby używane do przechowywania wskaźników do bloków danych).
-
1. uzyskano to przy użyciu ls -ai1 testdir
.
2. którego typ musi być obecnie inny niż „katalog”.