Czy tabela plików znajduje się w systemie plików lub w pamięci?

9

Czy w kontekście tabel sterujących systemu operacyjnego termin „tabele plików” odnosi się do struktury danych, która jest częścią systemu plików lub która znajduje się w głównej pamięci (iw takim przypadku zakładam, że miałaby tylko odniesienia do otwartych plików) ? Mój podręcznik 1 mówi:

Tabele zawierają informacje o istnieniu plików, ich lokalizacji w pamięci dodatkowej, ich bieżącym stanie i innych atrybutach. Wiele, jeśli nie wszystkie, tych informacji może być utrzymywanych i wykorzystywanych przez system zarządzania plikami, w którym to przypadku system operacyjny ma niewielką lub żadną wiedzę na temat plików.

Co to jest system zarządzania plikami? Czy to oznacza system plików?

1 Stallings, systemy operacyjne , 7 th ed., S. 127

Kazark
źródło

Odpowiedzi:

22

Bez dalszego kontekstu nie jest jasne, czy Stalling mówi o tabeli i-węzłów w pamięci czy o tablicach w systemie plików. Pożyczałem komuś znacznie wcześniejsze wydanie książki, ale nigdy jej nie odzyskałem; więc nie mogę sam sprawdzić kontekstu.

Istnieją trzy „tabele plików”, ale omawiana tutaj jest bardziej powszechnie nazywana „ tabelą i-węzłów in-memory ”; drugi jest powszechnie nazywany „ otwartą tabelą plików ” i istnieje na proces. Obie tabele znajdują się w pamięci jądra i nie są dostępne dla programu. Trzecia „tabela” to tak naprawdę dwa zestawy tabel w systemie plików (na dysku), pierwsza to tablica i -węzłów na dysku, a druga to same bloki danych (uwaga: ta dyskusja dotyczy tradycyjnego zarządzania systemem plików UNIX, nowsze systemy mogą mieć różne organizacje). Wpisy w tabeli i-węzłów mają sekwencje odniesień do bloków danych, które zawierają albo pośrednie bloki odniesienia, albo dane rzeczywiste. Klucz do plikuw systemie plików jest i-węzeł, a nie same bloki danych. Kiedy Stalling mówi o „tabeli plików na dysku”, zwykle jest to „mniejsza” tabela na dysku, która oznacza pliki, takie jak tablica i-węzłów lub tablica definicji bloków w systemach FAT.

Jeśli chodzi o tabelę i-węzłów w pamięci, i-węzeł jest ładowany z systemu plików, jego wartość st_nlink jest zwiększana, a następnie udostępniana reszcie systemu, gdy dane i-węzła są zapisywane na dysku, st_ctime jest aktualizowany. Jeśli i-węzeł nie jest już potrzebny w pamięci, wartość st_nlink jest zmniejszana, a wpis w tabeli jest oznaczany jako wolny. Każdy proces rozpocznie się od odniesień do około trzech lub pięciu wpisów do tabeli w pamięci węzła: iwęzłówm z stdin, stdout, stderr- są często plikiem urządzenia (tty) - a następnie odwołania do bieżącego katalogu i katalogu głównego. I-węzeł będzie znajdować się w tabeli tylko raz, więc może istnieć wiele odniesień do pojedynczego i-węzła w tabeli.

Otwarta tabela plików jest przechowywana dla każdego procesu i zawiera odwołania do tabeli i-węzłów w pamięci oraz wskaźniki do buforów i informacje o stanie (takie jak fseek(2)wartość i flagi z open(2). Deskryptor pliku jest dosłownie indeksem w otwartej tabeli plików; ale większość ludzie mówią o pozycji w otwartej tabeli plików, gdy mówią o „deskryptorze pliku”.

Gdy plik jest otwierany przy użyciu open(2), znajduje się dostępny wpis w otwartej tabeli plików, i-węzeł odwołania do pliku przez nazwę ścieżki jest określany, że i-węzeł jest ładowany do tabeli i-węzłów w pamięci, jeśli jeszcze nie został załadowany, licznik st_nlink jest zwiększany, a pozycja i-węzła jest przywoływana w deskryptorze pliku, ustawiane są flagi i przydzielane są bufory. Po zamknięciu następuje odwrotność.

Procedury w jądrze są nazywane „ systemem zarządzania plikami ”, a „systemem plików ” jest organizacja na dysku. Obecnie istnieje wiele modułów „podłączalnych”, które można załadować ( modprobe(8)) do systemu zarządzania plikami dla różnych organizacji na dysku. Na przykład istnieją typy systemów plików ext2 / ext3 / ext4, a każdy z nich ma inny moduł w systemie zarządzania plikami jądra; to samo z ntfs, sbfs, nfs, vfat, jfs itp.

To jest trochę bardziej skomplikowane niż pierwotnie zamierzałem, więc zatrzymam się tutaj.

Arcege
źródło
To niesamowicie dobra odpowiedź.
Kazark
Tak, proszę nie przestawaj się, gdy udzielasz tak dobrej, kompleksowej odpowiedzi.
Lizardx,