Index listscript.cgi id=20 rok 2027 20 23 (2) rozdzial 02 (20) rozdzial 06 (20) rozdzial 20 (51) 20 (315) 20 (414) PLIKI (20) CH13 (20) www nie com pl 3 |
[ Pobierz całość w formacie PDF ] . Oczywiście wszystkie struktury danychpozwalają na występowanie tylko jednej kopii i-węzła w pamięci.Dlatego,chociaż mamy kilka struktur przechowujących i-węzły, wszystkie one operująjedynie na wskaźnikach.powód trzeci: efektywność Spójrzmy na numer omawianej wersji Linuxa - 2.32 -czyż nie budzi respektu? Ale spróbujmy wgłębić się w istotę tej liczby - przypuszczalnie była wersja 31 (beta), jakaś dwudziestka, kilkanastek.to o czymś świadczy - o tym mianowicie, że każdy kawałek zostałpoddany wnikliwej analizie, między innymi pod względem efektywności.Takzapewne stało się i w tej sytuacji.Kiedy szanowny czytelnik przejdziedo opisu np funkcji iget , dowie się, żekiedy załadujemy już jakiś i-węzeł do i-ramki w pamięci - nie usuniemygo prędko - dopiero, kiedy nie będzie już żadnych innych wolnych i-ramekdo wykorzystania. Ta swego rodzaju inercja pozwala w większości sytuacjina zaoszczędzenie czasu ładowania i-węzła z dysku do i-ramkiw pamięci.Główna idea i założeniastruktury danych: Istnieją dwie podstawowe struktury danych, przeznaczonedo wspomagania operowania na i-ramkach w pamięci operacyjnej:dwukierunkowa Lista (będę ją tak od tej pory nazywał) przechowująca wszystkiei-ramki,tablica haszująca list dwukierunkowych zawierających i-ramki. Ad.1.Na Liście umiejscowione są wszystkie dostępne, czyli utworzonewcześniej i-ramki. Ad.2.Każdy i-węzeł identyfikowany jest poprzez swój numer oraz numer urządzeniana którym się znajduje.Tablica haszująca umożliwia szybki dostęp do i-ramkizawierającej i-węzeł poprzez obliczenie funkcji haszującej dla i-węzłai wyszukanie odpowiadającej mu i-ramki na liście w tablicy.Jest więc onajedynie nakładką na Listę, przyspieszającą dostęp do i-ramek.W oryginalnym komentarzu na początku pliku fs/inode.c zamieszczonoostrzeżenie, żeby uważać przy wykorzystywaniu tablicy haszującej w związku z równoczesnym jej używaniem przez różne procesy. Jak wynika z wcześniejszego opisu, i-ramka dla danegoi-węzła występuje w pamięci operacyjnej dokładnie raz.Dlatego zarównotablica haszująca, jak i Lista przechowują jedynie wskaźniki na rozpatrywaneobiekty. Wszystkie dołączenia do list (tych w tablicy haszującej,a także tej, zawierającej wszsystkie i-ramki) przechowywane są w i-ramkach. Dla ściślejszego zorientowania się jak powyższe strukturysą wykorzystywane polecam zapoznanie się z opisami dotyczącymi algorytmówobsługi pobierania i-ramki (iget ) oraz jej zwalniania(iput ). stałe:NR_INODE : maksymalna ilość i-ramek możliwa do utworzenia w systemie; ustawionaw include/linux/fs.h na 3072NR_IHASH : rozmiar tablicy haszującej; ustawiona w fs/inode.c na 512 UwagiIstnieje pewien problem dotyczący nazewnictwa.Mianowicieużywane jest jedno słowo na określenie dwóch różnych rzeczy: i-węzeł(i-node)może być zarówno na dysku, jak i w pamięci.Ta rzecz określana jest w kodziesystemowym Linuxa poprzez: inode (dla i-węzła pamięciowego) oraz ext2_inode(dla i-węzła na dysku) - gdzie ext2 jest tylko przykladem systemu.Dlatego wzorem ramki dla strony w stronicowaniupamięci chciałbym wprowadzić i-ramkę dla i-węzła.Dlaczego tak ? Tak jak ramka zawiera stronę, tak i-ramka zawierai-węzeł, oczywiście i-ramka zawiera jeszcze więcej informacji oprócz samegoi-węzła, ale to nie przeszkadza w intuicyjnym rozumieniu tego słowa.Bibliografia 1. Pliki źródłowe: - linux/include/fs.h - linux/fs/inode.c - linux/fs/ext2/inode.c 2. ProjektLinux 3. LinuxKernel Hackers GuideAutor: Grzegorz Gawron [ Pobierz całość w formacie PDF ] |
||||
Wszelkie Prawa Zastrzeżone! Kawa była słaba i bez smaku. Nie miała treści, a jedynie formę. Design by SZABLONY.maniak.pl. | |||||