Kaj je brezplačen seznam?

Prosti seznam je podatkovna struktura, ki vsebuje naslove lokacij računalniškega pomnilnika, ki so na voljo za uporabo delujočemu programu pri uporabi dinamične dodelitve pomnilnika. Seznam postane potreben, ko mora program dodeliti prostor iz območja prostega pomnilnika, imenovanega kopica. Izvedba prostega seznama je lahko preprost povezan seznam ali pa je lahko kompleksnejša podatkovna struktura, kot je npr. drevo razvrščanja Večina računalniških programskih jezikov na visoki ravni samodejno upravlja s prostim seznamom, kar odpravlja potrebo po ročnem upravljanju.

Ko program med izvajanjem programa potrebuje prostor za shranjevanje informacij, mora zahtevati določeno količino pomnilnika od osnovnega operacijskega sistema. Lokacije pomnilniških blokov, ki jih je mogoče uporabiti, so shranjene v prostem seznam. Da je dodelitev uspešna, mora biti količina zahtevanega pomnilnika na voljo v enem ali več teh blokih. Ko se vrne kazalec na ustrezno pomnilniško lokacijo, ta element seznama je odstranjen.

Ko program konča z uporabo pomnilnika, ga lahko razveljavi. To vključuje posredovanje kazalca na pomnilniški blok nazaj na seznam prostih, kjer bo na voljo naslednjič, ko bo dodeljena Možno je, da dodeljevanje pomnilnika ne uspe, ker je seznam prazen ali ker ni na voljo dovolj velikih pomnilniških blokov, da bi izpolnili zahtevo programa.

Najenostavnejša oblika upravljanja pomnilnika se imenuje sistem prvega prileganja. Ta sistem vzdržuje en sam seznam prostih pomnilniških lokacij. Ko je poslana zahteva za pomnilnik, se seznam prečka in prvi blok vrne se dovolj velik blok. Če je blok več kot dvakrat večji od zahtevane velikosti, se prepolovi, neuporabljena polovica pa se doda nazaj na seznam. Ta metoda zamenja preprosto kodiranje za tveganje, da imate razdrobljena spominska področja, ki morda nikoli ne bodo vrnjena na seznam.

Drugačna oblika upravljanja pomnilnika se imenuje sistem dodeljevanja prijateljev. Za razliko od prvega primernega sistema, dodeljevanje prijateljev hrani več prostih seznamov, od katerih ima vsak odprte bloke samo ene določene velikosti. To pomeni, da ko je prejet zahtevek za dodelitev, se pregleda seznam, ki vsebuje bloke, ki so ravno dovolj veliki, da izpolnijo zahtevo, in vrne se odprta lokacija. Če ni prostih blokov, ki so manjši od dvakratne velikosti so na voljo, večji blok je razdeljen na dva dela, da izpolni zahteve.

Izraz “prosti seznam” se lahko nanaša na en sam povezan seznam pomnilniških naslovov ali pa na veliko bolj zapleteno vrsto podatkovne strukture. Različne vrste dreves razvrščanja, če so preprosta in uravnotežena, lahko pomaga povečati hitrost iskanja odprtih pomnilniških blokov na račun kompliciranja izvorne kode.Povezan seznam je lahko počasnejši od specializiranega drevesa razvrščanja, vendar ustvarja programsko kodo, ki je veliko lažje berljiva, razhroščevati in spreminjati.
Nekateri programski jeziki in operacijski sistemi uporabljajo poseben mehanizem, imenovano zbiranje smeti. To je postopek, ki lahko pomaga prevzeti različne vnose na seznam prostih in združiti proste prostore, tako da so sosednji. učinek preprečevanja fragmentacije in omogočanja dodelitve večjih blokov pomnilnika.