Co to jest darmowa lista?
Darmowa lista to struktura danych, która przechowuje adresy lokalizacji pamięci komputera, które są dostępne do użycia przez działający program podczas korzystania z dynamicznego przydziału pamięci. Lista staje się konieczna, gdy program musi przydzielić miejsce z obszaru wolnej pamięci zwanej stertą. Implementacja wolnej listy może być prostą listą połączoną lub może być bardziej złożoną strukturą danych, taką jak sortowanie drzewa Większość języków programowania komputerowego wysokiego poziomu automatycznie obsługuje bezpłatną listę, eliminując potrzebę ręcznego zarządzania.
Gdy program wymaga miejsca do przechowywania informacji podczas wykonywania programu, musi zażądać określonej ilości pamięci od podstawowego systemu operacyjnego. Lokalizacje bloków pamięci, które można wykorzystać, są przechowywane w wolnym miejscu lista. Aby alokacja zakończyła się powodzeniem, ilość żądanej pamięci musi być dostępna w jednym lub większej liczbie tych bloków. Gdy zostanie zwrócony wskaźnik do odpowiedniej lokalizacji pamięci, ten element listy zostanie usunięty.
Po zakończeniu programu przy użyciu pamięci można go przydzielić, co wiąże się z przekazaniem wskaźnika do bloku pamięci z powrotem do wolnej listy, gdzie będzie dostępny przy następnym przydzieleniu próba alokacji pamięci może się nie powieść, ponieważ lista jest pusta lub brak dostępnych bloków pamięci wystarczająco dużych, aby spełnić żądanie programu.
Najprostsza forma zarządzania pamięcią nazywa się systemem pierwszego dopasowania. System ten utrzymuje pojedynczą listę wolnych miejsc w pamięci. Gdy wysyłane jest żądanie pamięci, lista jest przesuwana, a pierwszy blok zwracana jest wystarczająco duża wartość. Jeśli blok jest ponad dwukrotnie większy niż żądany rozmiar, jest on dzielony na pół, a nieużywana połowa jest dodawana z powrotem do listy. Ta metoda umożliwia proste kodowanie ryzyko rozdrobnienia obszarów pamięci, które mogą nigdy nie zostać zwrócone na listę.
Inna forma zarządzania pamięcią nazywa się systemem alokacji znajomych. W przeciwieństwie do pierwszego systemu dopasowania, alokacja znajomych prowadzi kilka bezpłatnych list, z których każda zawiera otwarte bloki tylko jednego określonego rozmiaru. po otrzymaniu żądania alokacji sprawdzana jest lista zawierająca bloki o wielkości wystarczającej do wypełnienia żądania i zwracana jest otwarta lokalizacja. Jeśli nie ma wolnych bloków mniejszych niż dwa razy wymagane są dostępne, większy blok jest podzielony na dwa, aby spełnić wymagania.
Termin „darmowa lista” może odnosić się do pojedynczej połączonej listy adresów pamięci lub może odnosić się do znacznie bardziej złożonego typu struktury danych. Różne rodzaje drzew sortowania, jeśli są proste i zrównoważone, może pomóc zwiększyć szybkość znajdowania otwartych bloków pamięci kosztem komplikacji kodu źródłowego. Powiązana lista może być wolniejsza niż wyspecjalizowane drzewo sortowania, ale tworzy kod programowania, który jest znacznie łatwiejszy do odczytania, debuguj i modyfikuj.
Niektóre języki programowania i systemy operacyjne korzystają ze specjalnego mechanizmu zwanego wyrzucaniem elementów bezużytecznych. Jest to proces, który może pomóc w pobraniu różnych wpisów z wolnej listy i skonsolidowaniu wolnych miejsc, tak aby były ciągłe. efekt zapobiegania fragmentacji i umożliwienia przydzielania większych bloków pamięci.