Compaction ist eine Technik, die Betriebssysteme zur Verringerung der externen Fragmentierung anwenden. Dabei wird der Speicher “durchsortiert”, bis alle freien Stücke einen Block bilden. Da der Speicher Daten und Code enthält, funktioniert Compaction nur dort, wo Relocatable Code für Dynamic Binding & Positionsunabhängiger Code verwendet wird.
E/A-Problem
Speicher lässt sich während E/A-Jobs nicht verschieben. Lösungen:
- E/A-Jobs werden während der Aktivität “abgeriegelt”, d.h. das Betriebssystem kann sie erste verschieben, wenn sie fertig sind
- Das Betriebssystem stellt spezielle E/A-Puffer bereit, die dann für alle E/A-Aktivitäten benutzt werden