Pytanie Różnica między Inode a Vnode


Miałem pewne wątpliwości dotyczące Inode vs Vnode. Jeśli chodzi o moje zrozumienie, i-węzeł jest reprezentacją pliku używanego przez Wirtualny system plików. Natomiast vnodes są specyficzne dla systemu plików. Czy to jest poprawne?

Również jestem zdezorientowany, czy i-węzeł jest strukturą danych jądra, tj. Czy jest to struktura danych w pamięci, czy struktura danych, która istnieje na blokach w rzeczywistym dysku?


18
2017-12-07 17:14


pochodzenie


Spróbuj znaleźć odpowiedź samodzielnie w kodach źródłowych systemu operacyjnego, używając tego terminu inode, np. github.com/torvalds/linux. W przeciwnym razie twoje pytanie będzie zawierało bardzo mały wysiłek badawczy i prawdopodobnie zostanie odrzucone, ponieważ nie jest to praktyczne pytanie o kodowanie. To brzmi bardziej jak pytanie o domowe blah blah - xmojmr
Osobiście nie zgadzam się. O ile tak, sensowne może być przeprowadzanie wszystkich badań i porów nad wikipedią i stronami man, które również musisz zrozumieć, że stackoverflow jest podobnym zasobem wykorzystywanym, aby te same informacje mogły być skondensowane w bardziej zrozumiałym formacie. Biorąc pod uwagę, że te pytania nie istnieją gdzie indziej, uważam, że jest to zdecydowanie ważne. - Greg


Odpowiedzi:


Zazwyczaj (podobnie jak w przypadku systemów plików głównego systemu Linux i BSD), i-węzeł jest najpierw strukturą na dysku, która opisuje przechowywanie pliku pod względem tego dysku (zwykle w blokach). Vnode jest strukturą w pamięci, która pobiera wiele z tego, czym jest i-węzeł (jednym z jego pól danych może być i-węzeł), ale przechwytuje także operacje na plikach, blokadach itd. Pozwala to na obsługę systemów plików nie-i-węzłowych, w szczególności sieciowe systemy plików.


9
2017-12-15 02:33





Aby dodać coś do tego: najlepsze wyjaśnienie, które można znaleźć dla vnode jest tutaj Dokumentacja FreeBSD. Dla bardziej akademicko myślących jest także oryginalny papier, który wprowadził tę koncepcję co zapewnia znacznie głębszy zasób.

Te vnodes zostały pierwotnie stworzone dla FreeBSD z powodu rozprzestrzeniania się różnych typów systemów plików, które musiały być używane, jak UFS, NFS, itp. Wektory mają zapewniać abstrakcję dla wszystkich możliwych systemów plików, dzięki czemu system operacyjny może się z nimi komunikować. funkcje jądra nie muszą specjalnie obsługiwać każdego systemu plików pod słońcem; muszą jedynie wiedzieć, jak korzystać z pliku vnode pliku.

Powrót do pierwotnego vnodes pytania, jak wspomina @Doug Luce, są w abstrakcji pamięci i nie są specyficzne dla systemu plików. Mogą być używane zamiennie w UFS, ext4 i cokolwiek innego. Natomiast i-węzły są przechowywane na dysku i są specyficzne dla używanego systemu plików. i-węzły zawierają między innymi metadane dotyczące pliku, takie jak rozmiar, właściciel, wskaźniki do adresów bloków. Węzły zawierają pewne dane o pliku, ale tylko te atrybuty, które nie zmieniają się przez cały okres istnienia pliku, więc i-węzeł byłby punktem odniesienia, gdybyś chciał uzyskać jak najwięcej informacji o pliku. Jeśli bardziej interesuje Cię i-węzłów, proponuję wypróbować wikipedia, która ma dobry artykuł na ich temat.


9
2018-04-23 08:06





To zależy od twojego systemu operacyjnego. Na przykład w systemie Linux nie ma węzła v, tylko ogólny i-węzeł struct inode która choć jest koncepcyjnie podobna do węzła v, jest implementowana inaczej.

W przypadku jądra wywodzącego się z BSD i UNIX, węzeł v wskazuje na strukturę węzła i specyficzną dla systemu plików, wraz z dodatkowymi informacjami, w tym wskaźnikami do funkcji działających na pliku i metadanymi nieuwzględnionymi w i-węźle. Główną różnicą jest to, że i-węzeł jest systemem plików, podczas gdy vnode nie jest. (W Linuksie, jak wspomniano powyżej, istnieje zarówno niezależny od systemu i-węzeł i zależny od systemu plików i-węzeł)

I-węzeł nie jest strukturą danych jądra, ale węzeł vnode / rodzajowy jest reprezentacją jądra i-węzła.


4
2017-08-23 16:25



Czy wszystkie i-węzły na dysku są kopiowane do ogólnego i-węzła, gdy odpowiedni plik został otwarty? Ile jest kopiowana, i w tym przypadku, jak duży jest narzut wydajności w celu wspierania ogólnej abstrakcji i-węzła? - mdenton8
Cały i-węzeł odpowiedniego pliku jest kopiowany do ogólnego i-węzła, tak. Przejdźmy przez kolejne etapy otwierania pliku na VFS. 1. Pobierz deskryptor pliku 2. Wykonaj wyszukiwanie ścieżki: pobierz root, uzyskaj dentry, którego odczytuje za pomocą funkcji specyficznej dla FS. Połączenia dostaję jeśli i-węzeł nie znajduje się w pamięci podręcznej 3. Otwórz procedurę specyficzną dla FS. Co do napowietrznych, nie jestem pewien. Ale może, jeśli kopiesz wystarczająco, możesz go znaleźć. - quantik


Zależy to od systemu operacyjnego i systemu plików, z którego korzystasz lub pracujesz. Na przykład węzły VXFS i ADVFS są niczym innym jak strukturą danych na dysku o nazwie vnode. Ogólnie odnoszą się one do metadanych pliku.


1
2017-12-08 03:15





Pojęcie vnode różni się w pewnym stopniu w zależności od systemu, w którym się znajdujesz, wszyscy po prostu wzięli nazwę i uciekli z nią.

Pod Linuksem i Unixem można rozważyć abstrakcję w następujący sposób. Załóżmy, że istnieje

f.tmp

Chcesz, aby podczas pracy program był zawieszony, ponieważ uzyskujesz do niego dostęp, ale jeśli Twój program się kończy lub się zawiesza, chcesz mieć pewność, że zniknie.

Możesz to zrobić, otwierając f, a następnie unlink() to. Nadal zachowujesz odniesienie do f, mimo że jego i-węzeł ma teraz 0 pozycji katalogu i tak zostało oznaczone jako wolne. System operacyjny nadal zachowuje miejsce rozpoczęcia pliku i jego stan alokacji, aż do zakończenia programu. Ta "wirtualizacja" i-węzła, który już nie istnieje, jest vnode.

Inną częstą sytuacją jest sytuacja, gdy czytasz zasób, który znika z ciebie. Załóżmy, że oglądasz film, podczas gdy jest on przesyłany strumieniowo do tymczasowej lokalizacji. Po całkowitym pobraniu filmu zostanie on przeniesiony do innego woluminu w celu jego przechowywania. W jakiś sposób możesz kontynuować oglądanie i szorowanie filmu tak długo, jak długo pozostaje otwarte. W tym przypadku, chociaż znowu nie ma linków, ponieważ istnieje vnode, tego i-węzła nie można jeszcze wyczyścić.


1
2017-07-13 23:32