Exkurs: Free List
Last updated
Last updated
Bisher galt die Annahme, das alle Adressräume gleich sind
Somit muss man »eigentlich nur« die nächste freie Lücke finden und »auffüllen«
Segmentierung fĂĽhrt nun jedoch zur Fragmentierung (engl. external fragmentation)
Innerhalb eines Adressraus spricht man ebenfalls von Fragmentierung (engl. internal fragmentation)
Beispiel: Heap
Eine Datenstruktur zur Verwaltung freier Speicherbereiche ist die sog. Free List
Basiert auf einer verketteten Liste (engl. linked list)
Anfragen für größer 10 Bytes schlagen fehl (liefert NULL)
Exakt 10 Bytes kann durch einen der beiden Blöcke bedient werden
Aber was passiert, wenn nur 1 Byte angefordert wird?
Einer der freien Blöcke wird verkleinert…
Zurück zur Ausgangssituation mit drei Blöcken…
Was passiert wenn der mittlere Block freigegeben wird?
Es entstehen drei Blöcke… keine Gute Idee…
Daher fasst die zuständige Bibliothek den freien Speicher vor dem Allokieren so gut wie möglich zusammen