Systemy Operacyjne : Pamięć : Zwalnianie pamięci przydzielonej dla jądra kfree

Łukasz Bolikowski


Wprowadzenie znajduje się w rozdziale Przydział pamięci na potrzeby jądra

Oto nagłówki interesujących nas funkcji:

void kfree (void *objp);
void kmem_cache_free (kmem_cache_t *cachep, void *objp);
Funkcja kfree działa następująco:
  1. jeśli objp == NULL zakończ działanie
  2. policz na którą stronę wskazuje objp
  3. znajdź schowek, do którego należy ta strona
  4. wywołaj kmem_cache_free ze tym schowkiem jako pierwszym argumentem
Funkcja kmem_cache_free działa tak:
  1. policz na którą stronę wskazuje objp
  2. znajdź taflę, do której należy ta strona
  3. usuń obiekt z tafli
  4. jeśli tafla była pełna, to przesuń ją na liście tuż przed first_not_full, ustaw first_not_null na nią i zakończ działanie
  5. jeśli tafla jest pusta, ustaw first_not_null na poprzednią taflę



© 2001 Łukasz Bolikowski, Jakub Górski, Jakub Kowalski, Janusz Kuligowski, Tomasz Szymko