Exkurs: Free List

  • 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

Last updated