Pamięć sterty i alokacja płyty

Jestem zdezorientowany co doheap ifree list. Mam kilka pytań i rozumiem, jak działa malloc w C. Proszę poprawić mnie, jeśli się mylę.

Czy pamięć sterty jest zorganizowana jako połączona lista (darmowa lista) bloków danych?Czy istnieje różnica między pamięcią sterty a listą wolną?

Moje rozumienie alokacji pamięci masowej (otwarte na ulepszenia): - Kiedy wywołujemy malloc, alokuje pamięć w stercie, a robi to poprzez wybranie bloku danych o odpowiednim rozmiarze zfree list, dobrze ?

Gdy malloc zwróci określony blok pamięci, zostanie usunięty z listy wolnej, a adres fizyczny tego bloku pamięci zostanie zaktualizowany w tabeli stron.

Kiedy pamięć będzie wolnafree(), blok danych jest wstawiany z powrotem do wolnej listy, i być może, aby zmniejszyć fragmentację, połączony z sąsiednim blokiem ipresent bit we wpisie tablicy strony jest wyczyszczony.

Zatem cała sterta jest listą wolną (połączona lista wolnych bloków) + przydzielone bloki danych.

Czy to kompleksowy obraz alokacji pamięci?

EDIT: Od rozwoju jądra Linuksa (Robert Love) Rozdział dotyczący zarządzania pamięcią,Przydział płyty

„Bezpłatna lista zawiera blok dostępnych, już przydzielonych struktur danych. Gdy kod wymaga nowej instancji struktury danych, może pobrać jedną ze struktur z wolnej listy, a nie przydzielić wystarczającej ilości pamięci i skonfigurować ją w przypadku struktury danych.Później, gdy struktura danych nie jest już potrzebna, jest zwracana do wolnej listy zamiast do zwolnienia. W tym sensie wolna lista działa jako pamięć podręczna obiektów, buforując często używany typ obiektu. "

Wolna lista jest wymieniana jako „blok dostępnej, przydzielonej struktury danych”.

Jak to jestasygnowany, kiedy jest na darmowej liście?A jak wraca blok pamięci do wolnej listy _nie_ tak samo jak zwolnienie tego bloku?W jaki sposób alokacja płyty różni się od alokacji pamięci

questionAnswers(3)

yourAnswerToTheQuestion