Next: Ciągłe obszary pamięci wirtualnej
Up: Przydział pamięci dla jądra
Previous: Alokator bootowania
  Spis rzeczy
Większość żądań o przydział pamięci jądra dotyczy małych, często używanych (czyli też tworzonych i usuwanych) struktur danych. Standardowy alokator operuje tylko stronami pamięci i nie wykorzystuje do końca możliwości sprzętu. Jeżeli allokacja wymaga przeglądania wielu elementów list, czy drzew to zawartość sprzętowej pamięci podręcznej jest zamazywana i nie spełnia swojej roli.
Podstawowa idea alokatora płytowego polega na unikaniu allokowania i usuwania często używanych obiektów pewnych typów (czyli zmniejszenie wykorzystania systemu bliźniaków). Osiąga się to przez przechowywanie zbioru często używanych obiektów w formie ,,upakowanej'' w strony (co dodatkowo oszczędza pamięć przez zmniejszenie fragmentacji wewnętrznej).
Alokator płytowy przechowuje dane uporządkowane w strukturę trzypoziomową:
- pamięć podręczna (ang. cache)
- płyta (ang. slab)
- obiekt
. Może być wiele pamięci podręcznych (dla konkretnych obiektów i ogólnego przeznaczenia). Każda pamięć podręczna składa się z płyt, które są blokami pamięci złożonymi z jednej lub więcej stron pamięci. Każda płyta zawiera pewną liczbę obiektów przedzielonych ,,dziurami'' w ten sposób żeby trafiały do różnych linii fizycznej pamięci podręcznej. Struktura opisująca płytę może znajdować się na płycie lub poza nią. Płyty dzielą się na: zapełnione, częściowo zapełnione i puste. Jeżeli są częściowo wypełnione płyty to używa się ich w celu zminimalizowania fragmentacji.
Obiekty mające to samo przesunięcie względem różnych płyt z dużym prawdopodobieństwem będą odwzorowane do jednego wiersza fizycznej pamięci podręcznej co jest niekorzystne. Alokator płytowy stara się zredukować to przez tzw. kolorowanie płyt. Każdej płycie nadawany jest kolor, który określa przesunięcie obiektów w ramach płyty. Zmniejsza to prawdopodobieństwo wzajemnego zamazywania się w sprzętowej pamięci podręcznej obiektów położonych na różnych płytach.
Next: Ciągłe obszary pamięci wirtualnej
Up: Przydział pamięci dla jądra
Previous: Alokator bootowania
  Spis rzeczy
Jarek Babel
2002-12-10