Da Speicherbausteine, die eine sehr geringe Zugriffszeit ermöglichen, verhältnismäßig teuer sind, ist auch die Größe hierarchisch. So sind Cache-Bausteine und ihre Ansteuerung wesentlich teurer als RAM (engl. Random Access Memory). Da ein Prozess nicht weiß, an welchen Stellen im Speicher seine Daten zur Laufzeit abgelegt werden, arbeitet er mit virtuellen Adressen, die jeweils bei 0 beginnen. Das Betriebssystem muss mit seiner Speicherverwaltung nun dafür sorgen, dass eine Abbildung der virtuellen Adressen auf die eigentlichen physikalischen Adressen stattfindet. Außerdem muss jedem Prozess ein eigener physikalischer Speicherabschnitt zugeordnet werden, damit es nicht zu Störungen der Prozesse untereinander kommt. Speicherbereiche müssen auch vor unberechtigtem Zugriff geschützt werden. Die Speicherverwaltung wird hardwaremäßig durch die Memory Management Unit -- MMU unterstützt.
Nun ist es natürlich wünschenswert, dass laufende Programme immer in Speicherbereichen mit geringen Zugriffszeiten liegen. Da aber jede Hierarchiestufe nur begrenzte Kapazitäten hat, muss es Methoden der Zuteilung geben. Wir wollen hier nicht näher darauf eingehen, sondern nur LRU -- Last Recently Used als eine Strategie erwähnen. Es wird durch sinnvolles Ein- und Auslagern von Daten versucht, den Prozessor in möglichst hoher Geschwindigkeit mit den Daten zu versorgen. Zu einer signifikanten Verschlechterung der Systemleistung kommt es, wenn mehrere Prozesse mit jeweils hohem Speicherbedarf rechnen wollen und der Hauptspeicher nicht ausreicht. Dann werden Daten auf die Festplatte ausgelagert und müssen von dort regelmäßig neu in den Hauptspeicher geladen werden -- swapping.