Alles rund um Windows

Windows-Speicherverwaltung

Windows-Speicherverwaltung

Bei der Speicherverwaltung geht es darum, wie Speicher für Programme zugewiesen und nicht mehr benötigter Speicher freigegeben wird. Wie dies geschieht, wirkt sich auf die Leistung des Computers aus, weshalb die Speicherverwaltung eine wichtige Aufgabe in einem Computersystem ist.

Inhaltsverzeichnis

Im Folgenden finden Sie einen Überblick über die Problematik der Speicherverwaltung:

  1. Im Speicher muss Platz für mehrere Programme gleichzeitig vorhanden sein.
  2. Möglicherweise ist nicht genügend Platz für alle Programme gleichzeitig im Speicher vorhanden.
  3. Programme haben bei verschiedenen Ausführungen unterschiedliche Adressen im Speicher.

Modelle für die Speicherverwaltung müssen diese Probleme berücksichtigen. Wir werden uns nun einige Möglichkeiten zur Organisation der Speicherverwaltung ansehen.

Swapping

Wenn nicht genügend Platz für mehrere Prozesse gleichzeitig im Speicher vorhanden ist, kann Swapping verwendet werden. Swapping bedeutet, dass die Prozesse abwechselnd Speicherplatz belegen.

Ein Prozess wird in den Speicher geladen und läuft eine Weile. Dann wird der Prozess aus dem Speicher entfernt und ein anderer Prozess wird in den Speicher geladen und läuft eine Weile. Auf diese Weise nutzen alle Prozesse abwechselnd den Speicher.

Swapping ist eine veraltete Methode, die früher verwendet wurde. Moderne Betriebssysteme verwenden virtuellen Speicher, wodurch Anwendungen ausgeführt werden können, ohne dass ganze Programme in den Speicher geladen werden müssen.

Einige Speichermodelle

Die meisten modernen Speichermodelle lassen sich in drei Kategorien einteilen:

  1. Ein flaches Speichermodell
  2. Ein seitenbasiertes Speichermodell
  3. Ein segmentiertes Speichermodell

Ein flaches Speichermodell verwendet lineare Indizierung für die Speicheradressierung, da die Indizes bei 0 beginnen und bis zu einem Maximum reichen. Der Prozessor verwendet Indizes, um direkt auf die im Speicher gespeicherten Daten zuzugreifen, wobei ein flaches Modell eine einfache Organisation des Speichers ermöglicht. Es benötigt nur wenige Ressourcen für die Speicherverwaltung, und das System erhält schnellen Zugriff auf die Daten.

Ein seitenbasiertes Speichermodell ist komplizierter als das flache Modell und ermöglicht einen etwas langsameren Zugriff auf Daten. Durch das Seitenbasierte Speichermodell werden die Inhalte auf eine Festplatte verschoben, sodass der Speicher für andere Prozesse oder das Betriebssystem selbst freigegeben wird. Die Daten werden in gleich große Blöcke, sogenannte Seiten, unterteilt. Der Vorteil des Seitenbasierten Speichermodells besteht darin, dass nicht alle Programme gleichzeitig im Speicher gehalten werden müssen und dass das System immer mit Einheiten gleicher Größe arbeitet.

Das Paged Memory Model eignet sich für Multitasking, bei dem Threads ständig im Prozessor ausgetauscht werden. Paging ist ein wichtiger Bestandteil der für den virtuellen Speicher verwendeten Technik.

Das segmentierte Speichermodell ähnelt dem Paging-Speichermodell, jedoch unterscheiden sich die Seiten in ihrer Größe. Dadurch ist das segmentierte Speichermodell flexibler und effizienter als Paging. Durch die Segmentierung werden Programme in unabhängige Segmentadressen unterteilt. Jedes Segment hat seinen eigenen Adressraum, der von Null bis zu einem Maximum reicht. Die Segmentlänge kann zwischen Null und dem Maximum liegen. Wenn ein Programm in den Speicher geladen wird, erstellt das Betriebssystem eine Segmenttabelle, die die Startadresse jedes Segments enthält.

Der Nachteil des segmentierten Speichermodells ist, dass es sich um ein komplexes System handelt, das schwer zu programmieren ist und leicht zu Fehlern führen kann.

Virtueller Speicher

Obwohl ein Computer über viel Speicher verfügt, kann es vorkommen, dass nicht genügend Platz vorhanden ist, um alle Prozesse gleichzeitig im Speicher auszuführen. Das Betriebssystem legt dann einige Prozesse oder Teile von Prozessen auf einer Festplatte ab, sodass es notwendig ist, die auf verschiedene Speichermedien verteilten Prozesse zu verwalten. Dies geschieht in der Regel durch eine Technik, die als virtueller Speicher bezeichnet wird.

Der virtuelle Speicher ist eine Technik, die Anwendungen den Eindruck vermittelt, dass Ihr Computer über einen einheitlichen und zusammenhängenden Speicher verfügt, auch wenn sich der Speicher physisch auf verschiedenen Medien befinden kann. Der Vorteil der virtuellen Speicherarchitektur besteht darin, dass ein Teil eines Prozesses auf Ihrer Festplatte gespeichert werden kann, wenn nicht genügend Speicherplatz vorhanden ist.

Screenshot: virtueller Speicher

Fast alle Implementierungen des virtuellen Speichers teilen den virtuellen Adressraum in Seiten auf. Wenn ein Prozess im Prozessor ausgeführt wird, liest der Prozessor den Code Seite für Seite, so wie Menschen ein Buch lesen.

Betriebssysteme verwenden die Technik des virtuellen Speichers, um die Nutzung des physischen Speichers zu vereinfachen, wodurch große Anwendungen leichter auf Computern ausgeführt werden können. Alle modernen Betriebssysteme verwenden die Techniken des virtuellen Speichers.

Speicherverwaltung in Windows

Die Speicherverwaltung in Windows verwendet die Architektur des virtuellen Speichers. In Windows hat jeder Prozess einen virtuellen Adressraum, der in Seiten unterteilt ist.

Windows verfügt über einen virtuellen Speichermanager, der Paging verwendet, sodass nur die aktiven Teile von Programmen in den Speicher geladen werden, wenn sie ausgeführt werden. Die Prozessoren, auf denen Windows läuft, unterstützen zwei Seitengrößen: klein und groß.

Windows unterstützt Demand-Paged Virtual Memory. Das bedeutet, dass das Betriebssystem nur Seiten in den Speicher lädt, die von einem laufenden Prozess angefordert werden.

Ein Cache-Manager verfolgt die virtuellen Adressen, die zur Zuordnung von Dateien in den Speicher verwendet werden. Dies verbessert die Ein-/Ausgabeleistung für viele Anwendungen, da Lesevorgänge ohne Verwendung der Festplatte durchgeführt werden können.

In heutigen Windows-Versionen existieren Win32 und Win64 nebeneinander. Win32 hat eine 32-Bit-Speicherstruktur, die Zeiger mit 32-Bit-Speicheradressen verwendet, während Win64 die Möglichkeit eines viel größeren virtuellen Adressraums bietet, da Win64 64-Bit-Zeiger verwendet.

Der Speichermanager

Der Speichermanager in Windows kümmert sich um die Speicherverwaltung. Er weist Programmen bei Bedarf Speicherplatz im Arbeitsspeicher zu und entfernt Programme wieder aus dem Speicher, wenn sie beendet sind.

Der Speichermanager ist Teil von Windows Executive und die größte Komponente in Executive. Der Speichermanager weist virtuellen Speicher zu, gibt ihn wieder frei und verwaltet ihn. Der größte Teil davon wird über die Windows-API oder Gerätetreiber-Schnittstellen im Kernel-Modus bereitgestellt.

Der Speichermanager implementiert virtuellen Speicher, führt Aufgaben im Speicher aus und unterstützt große Speicher. Der Speichermanager erstellt auch Dienste wie die Verfolgung von Dateien, die Teil des Speichers sind, und unterstützt den Cache-Manager.

Der Speichermanager verfügt über Systemdienste, die virtuellen Speicher zuweisen und freigeben, Speicher zwischen Prozessen teilen und Seiten verwalten. Der Speichermanager verfügt auch über viele Dienste, die physischen Speicher zuweisen und freigeben. Programmierer können die meisten Dienste im Speichermanager über die Windows-API nutzen.

Der Heap-Manager

Die dynamische Speicherzuweisung ist eine Methode, mit der Prozessen, die auf einem Computer ausgeführt werden, Speicher zugewiesen wird. Der Heap ist ein Teil des Speichers, der für die dynamische Speicherzuweisung verwendet wird. Programmierer können den Heap zum Speichern von Variablen und Objekten verwenden. Im Heap erstellte Variablen und Objekte bleiben dort, bis sie vom Prozess oder vom Garbage Collector gelöscht werden.

Windows unterteilt den Speicher in Heaps. Wenn jeder Thread über einen freien Heap verfügt, gibt es keinen Wettbewerb um den Speicher zwischen den Threads, was die Systemleistung erhöht.

Jeder Prozess verfügt über mindestens einen freien Heap. Sobald der Prozess gestartet wird, erstellt er einen Heap namens "Default Process Heap", der bis zum Abschluss des Prozesses bestehen bleibt. Prozesse können auch zusätzliche private freie Heaps mithilfe einer Windows-API-Funktion namens "HeapCreate" erstellen.

Der Heap-Manager optimiert die Leistung der Speichernutzung für Zuweisungen im Heap. Heaps sind Windows-Objekte und -Prozesse, die somit über ein Handle Zugriff auf den freien Heap haben.

Stacks

Wenn ein Thread ausgeführt wird, muss er Zugriff auf einen temporären Speicher haben, in dem er lokale Variablen speichern, Funktionsparameter und Rücksprungadressen für Funktionsaufrufe ablegen kann. Ein Stack ist ein Teil des Speichers, der für diesen Zweck verwendet wird.

Ein Stack ist eine Last-In-First-Out-Datenstruktur. Ein neues Element wird immer oben in einen Stack eingefügt, und wenn ein Element aus einem Stack entfernt wird, wird immer das oberste Element entfernt. Elemente am unteren Ende eines Stacks bleiben daher so lange dort, bis alle darüber liegenden Elemente entfernt wurden.

Der Speichermanager in Windows verwendet zwei Stacks für jeden Thread, einen Benutzer-Stack und einen Kernel-Stack. Wenn ein Thread erstellt wird, erhält er automatisch einen Benutzer-Stack und einen Kernel-Stack. Benutzer-Stacks haben in der Regel eine Größe von 1 MB, während Kernel-Stacks oft viel kleiner sind, wobei eine übliche Größe 12 KB beträgt.

Diese Artikel könnte Sie ebenfalls interessieren: