Vad är en gratis lista?
A free list is a data structure that holds the addresses of computer memory locations that are available for use by a running program when using dynamic memory allocation. The list becomes necessary when a program must allocate space from an area of free memory called the heap. The implementation of a free list can be a simple linked list or could be a more complex data structure such as a sort tree. Most high-level computer programming languages automatically handle the free list, removing the need for manual management.
När ett program kräver utrymme för att lagra information under programmet måste det begära att en viss mängd minne från det underliggande operativsystemet. Platserna för minnesblock som kan användas lagras i den fria listan. För att tilldelningen ska bli framgångsrik måste mängden begärda minne vara tillgängligt i ett eller flera av dessa block. När en pekare till ett lämpligt minne är lämpligt minne.Platsen returneras, det elementet i listan tas bort.
När ett program har gjorts med hjälp av minnet kan det avvisa det. Detta innebär att du passerar pekaren till minnesblocket tillbaka till den fria listan, där det kommer att bli tillgängligt nästa gång en tilldelning försöks.
Den enklaste formen av minneshantering kallas First Fit -systemet. Detta system upprätthåller en enda lista med gratis minnesplatser. När en begäran om minne skickas, korsas listan och det första blocket som är tillräckligt stort returneras. Om blocket är mer än två gånger den begärda storleken, är den halverad och den oanvända halvan läggs tillbaka till listan.Ving fragmenterade minnesområden som aldrig kan återlämnas till listan.
A different form of memory management is called the buddy allocation system. Unlike the first fit system, buddy allocation keeps several free lists, each one holding open blocks of only one particular size. This means that when an allocation request is received, the list that holds blocks that are just large enough to fill the request is consulted, and an open location is returned. If no free blocks that are less than twice the size requested are available, a larger block is split in two to fulfill the krav.
Termen "fri lista" kan hänvisa till antingen en enda länkad lista över minnesadresser, eller den kan hänvisa till en mycket mer komplex typ av datastruktur. Olika typer av sorteringsträd, om de hålls enkla och balanserade, kan bidra till att öka hastigheten för att hitta öppna minnesblock på bekostnad av att komplicera källkoden. En länkad lista kan vara långsammare än en specifikAliserat sortträd men skapar programmeringskod som är mycket lättare att läsa, felsöka och modifiera.
Vissa programmeringsspråk och operativsystem använder sig av en speciell mekanism som kallas skräpsamling. Detta är en process som kan hjälpa till att ta de olika posterna på en fri lista och konsolidera de fria utrymmena så att de är sammanhängande. Detta har effekten av att förhindra fragmentering och möjliggöra större minnesblock att tilldelas.