2013-03-18 11 views
5

Mam następujące pytania dotyczące pamięci Linux:Pytania o Linux typów pamięci

  1. wiem, że pamięć jest aktywna część pamięci, która jest najczęściej dostępne. Ale czy ktoś może mi wyjaśnić, w jaki sposób linux bierze pod uwagę lokalizację pamięci do aktywnej pamięci lub nieaktywnej pamięci.

  2. Z czego wszystkie komponenty składa się z pamięci aktywnej? Czy pamięć podręczna dysku/pliku jest traktowana jako część aktywnej pamięci.

  3. Jaka jest różnica między pamięcią Buffers i Cached?

Odpowiedz

3

staram się odpowiedzieć na pytania:

(1) Zasadniczo rzecz biorąc, twoje myśli są prawidłowe. Ale implementacja pamięci podręcznej stron jest skomplikowana w jądrze Linux. Jądro Linux wykorzystuje algorytm LRU (najmniej ostatnio używane) do zarządzania listami pamięci podręcznej stron. W jednym systemie Linux mogą występować różne strefy pamięci, każda strefa utrzymuje kilka list LRU, takich jak LRU_INACTIVE_ANON, LRU_ACTIVE_ANON (te dwie listy są dla anonimowych pamięci podręcznych stron), LRU_INACTIVE_FILE, LRU_ACTIVE_FILE (te dwie listy są dla buforów stron pliku), LRU_UNEVICTABLE. Listy te są utrzymywane przy użyciu algorytmu LRU (dodawane do ogona, usuwane z głowy). Strony są przesyłane między listą aktywną i nieaktywną zgodnie z częstotliwością dostępu. Strony są dodawane do aktywnego wiersza listy tylko wtedy, gdy strona jest dostępna i znajduje się na liście nieaktywnej. A jeśli lista aktywna stanie się zbyt duża, strony, które na początku listy aktywnej zostaną przeniesione do nieaktywnej listy. Odzyskiwanie strony następuje na nieaktywnej liście, zacznij od szefa nieaktywnej listy.

(2) Zwykłe pliki do odczytu/zapisu, dostęp do plików blokowanych i pliki odwzorowane w pamięci mogą wyzwolić jądro Linuxa w celu wygenerowania pamięci podręcznej stron, aktywnej lub nieaktywnej. Również malloc używany w procesie user-space i stosie user-space może wyzwalać jądro Linuxa do generowania buforów stron.

(3) Być może źle rozumiem twoje pytanie, domyślam się, że masz na myśli różnicę między pamięcią podręczną bufora a pamięcią podręczną strony: Starsza wersja jądra używa zarówno pamięci podręcznej bufora, jak i pamięci podręcznej strony. Pamięć podręczna strony umożliwia dostęp do pliku (na przykład dostęp do zwykłego pliku, plik mapy pamięci, dostęp do pliku urządzenia blokowego), a pamięć podręczna bufora do dostępu do bloków fizycznych dysków (zazwyczaj rozmiar bloku dysku fizycznego jest mniejszy niż jedna strona, więc kilka fizyczne bloki dyskowe można wypełnić na jednej stronie). Chociaż nowa wersja jądra wciąż wykorzystuje koncepcję buforowania bufora, nowe jądro implementuje pamięć podręczną bufora na podstawie pamięci podręcznej strony.

Lub masz na myśli różnicę między pamięcią buforową a cpu, jeśli tak, bufor pamięci przyspiesza dostęp do dysku/urządzeń peryferyjnych, a pamięć cpu przyspiesza dostęp do pamięci.

+0

Co masz na myśli? "Również malloc używany w procesie user-space i stosie przestrzeni użytkownika może wyzwalać jądro Linuxa do generowania buforów stron." –