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

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.


To niesamowicie dobra odpowiedź.
— Kazark

Tak, proszę nie przestawaj się, gdy udzielasz tak dobrej, kompleksowej odpowiedzi.
— Lizardx,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.