Paging und Segmentierung sind Verfahren, mit denen Daten auf dem Speicherdatenträger eines Computers abgelegt und anschließend abgerufen werden. Paging ist eine Funktion der Speicherverwaltung, die Speicherorte dem Prozessor (CPU) des Computers als zusätzlichen Speicher präsentiert, den sogenannten virtuellen Speicher. Segmentierung ist ein virtuelles Verfahren, das Speicherbereiche variabler Größe für zusammengehörige Daten im Computerspeicher erzeugt, sogenannte Segmente.
Paging stellt für jedes Datenelement eine Speicheradresse bereit, während die Segmentierung den Speicherabruf beschleunigt. Kein System kann sich allein effizient auf den begrenzten RAM verlassen. Daher verwendet die Speicherverwaltungseinheit (MMU) des Computers die Speicherlaufwerke, eine Festplatte (HDD) oder ein Solid-State-Laufwerk (SSD), als virtuellen Speicher zur Ergänzung des RAM. Die Verwaltung des Computerspeichers ist eine grundlegende, aber kritische Funktion des Betriebssystems. Dieser Leitfaden zu Paging und Segmentierung erläutert die Unterschiede zwischen den beiden Technologien, einschließlich ihrer Vor- und Nachteile.
Die wichtigsten Unterschiede zwischen Paging und Segmentierung
Obwohl Paging und Segmentierung beide wichtige Bestandteile des Computerspeichers sind, führen sie die Speicherzuweisung unterschiedlich durch und sind von unterschiedlichen Fragmentierungsproblemen betroffen.
| Paging | Segmentierung | |
|---|---|---|
| Größe | Das System verwendet für Seiten und Frames eine feste Blockgröße. Die Größe von Seiten und Frames wird von der Computerhardware bestimmt. | Segmente können unterschiedlich groß sein; die Größe wird vom Benutzer des Systems festgelegt. |
| Fragmentierung | Ältere Systeme waren von interner Fragmentierung betroffen, weil nicht ganze Seiten dem Speicher zugewiesen wurden. Moderne Betriebssysteme haben dieses Problem nicht mehr. | Segmentierung führt zu externer Fragmentierung. |
| Tabellen | Seitentabellen geben der MMU den Speicherort und Status einer Seite vor. Dieser Prozess ist langsamer als bei Segmentierungstabellen, wird aber durch den TLB-Speicher-Cache beschleunigt. | Segmentierungstabellen enthalten die Segment-ID und entsprechende Informationen und sind schneller als direkte Abfragen von Seitentabellen. |
| Verfügbarkeit | Auf CPUs und als MMU-Chips weit verbreitet. | Windows-Server unterstützen möglicherweise die Abwärtskompatibilität, während Linux nur sehr eingeschränkte Unterstützung bietet. |
Was ist Paging?
Beim Paging werden Speicherorte der CPU als virtueller Speicher präsentiert. Beim Paging speichert eine Seitentabelle die Definition jeder Seite. Wenn ein aktiver Prozess Daten anfordert, ruft die MMU die entsprechenden Seiten in Frames ab, die sich für eine schnellere Verarbeitung im physischen Speicher befinden. Das Paging umfasst verschiedene Elemente:
- Seite: Ein zusammenhängender Block virtuellen Speichers fester Länge, der auf dem Datenträger liegt.
- Frame: Ein zusammenhängender Block fester Länge im RAM, dessen Größe den Seiten entspricht.
- Physischer Speicher: Der Arbeitsspeicher (RAM) des Computers, der sich normalerweise auf DIMM-Modulen befindet, die an der Hauptplatine des Computers angeschlossen sind.
- Virtueller Speicher: Ein Teil einer HDD oder SSD wird reserviert, um RAM zu simulieren. Die MMU stellt der CPU virtuellen Speicher vom Datenträger bereit, um die Belastung des physischen Speichers zu verringern.
- Virtuelle Adresse: Die CPU erzeugt für jeden aktiven Prozess eine virtuelle Adresse. Die MMU ordnet die virtuelle Adresse einem physischen Speicherort im RAM zu und übergibt die Adresse an den Bus. Ein virtueller Adressraum ist der Bereich virtueller Adressen, der von der CPU kontrolliert wird.
- Physische Adresse: Die physische Adresse bezeichnet einen Speicherort im RAM. Der physische Adressraum ist die Menge aller physischen Adressen, die den virtuellen Adressen der CPU entsprechen. Ein physischer Adressraum ist der Bereich physischer Adressen, der von der MMU kontrolliert wird.

Indem die MMU eines Computers einem Datenelement mithilfe einer Seitentabelle zwischen CPU und physischem Computerspeicher eine Adresse zuweist, ermöglicht sie dem System, die Daten bei Bedarf abzurufen.
Wie funktioniert Paging?
Die MMU verwendet Seitentabellen, um virtuelle Adressen in physische Adressen zu übersetzen. Jeder Tabelleneintrag gibt an, wo sich eine Seite befindet: im RAM oder als virtueller Speicher auf dem Datenträger. Tabellen können eine ein- oder mehrstufige Seitentabelle umfassen, beispielsweise unterschiedliche Tabellen für Anwendungen und Segmente.
Häufige Tabellenabfragen können die MMU jedoch verlangsamen. Abhilfe schafft ein Speicher-Cache namens Translation Lookaside Buffer (TLB), der kürzlich erfolgte Übersetzungen von virtuellen in physische Adressen für einen schnellen Abruf speichert. Viele Systeme verfügen über mehrere TLBs, die sich an unterschiedlichen Stellen befinden können, etwa zwischen CPU und RAM oder zwischen mehreren Ebenen von Seitentabellen.
Für Datensätze mit größeren oder kleineren Seiten und entsprechend großen Frames stehen unterschiedliche Frame-Größen zur Verfügung; üblich sind Größen von 4 KB bis 2 MB, während Frames in GB-Größe in Hochleistungsservern verfügbar sind.
Mehr über die Speicherverwaltung in Betriebssystemen.
Vorteile des Pagings
Zu den Vorteilen des Pagings gehören:
- Für Programmierer ist Paging eine transparente Funktion, die keinen Eingriff erfordert.
- Paging verursacht keine externe Fragmentierung und führt auf ordnungsgemäß aktualisierten Betriebssystemen auch nicht zu Problemen mit interner Fragmentierung.
- Die Frames beim Paging müssen nicht zusammenhängend sein.
Nachteile des Pagings
Paging verursacht auf älteren Systemen interne Fragmentierung. Ein als versteckte Fragmentierung bezeichnetes Problem trat früher bei älteren Windows-Installationen auf. Dabei handelte es sich um interne oder versteckte Fragmentierung. Anders als bei der gravierenden externen Fragmentierung durch Segmentierung trat interne Fragmentierung auf, wenn nicht jeder Frame exakt die Größe einer Seite hatte. In modernen Windows-Betriebssystemen ist dies kein Problem mehr, betrifft aber Organisationen, die weiterhin ältere Systeme einsetzen.
Paging hat längere Speicherzugriffszeiten als Segmentierung, wobei TLB-Speicher-Caches Abhilfe schaffen können, insbesondere bei Systemen mit vielen TLBs.
Mehr über die Festplattenfragmentierung und die damit verbundenen Probleme für Speichersysteme.
Was ist Segmentierung?
Segmentierung ist ein virtuelles Verfahren, das in einem Computersystem Adressräume unterschiedlicher Größe erzeugt, sogenannte Segmente. Jedes Segment ist ein eigener virtueller Adressraum, der direkt Prozessobjekten entspricht. Der Segmentierungsprozess umfasst verschiedene Elemente, darunter die CPU, die Segmenttabelle mit Informationen über das Segment sowie den physischen Speicher beziehungsweise den RAM des Computers auf der Hauptplatine:

Segmentierung beschleunigt den Informationsabruf eines Computers, indem sie zusammengehörige Daten in einer Segmenttabelle zwischen CPU und physischem Speicher zusammenfasst.
Wie funktioniert Segmentierung?
Bei der Ausführung eines Prozesses weist die Segmentierung zusammengehörige Daten Segmenten zu, um die Verarbeitung zu beschleunigen. Die Segmentierungsfunktion verwaltet eine Segmenttabelle mit den physischen Adressen, der Größe und weiteren Daten des Segments.
Jedes Segment speichert die Hauptfunktion, Datenstrukturen und Dienstprogramme der Prozesse. Die CPU führt für jeden Prozess und die Speicherblöcke eine Segmentzuordnungstabelle mit Segmentkennungen und Speicherorten.
Die CPU erzeugt virtuelle Adressen für laufende Prozesse. Die Segmentierung übersetzt die von der CPU erzeugten virtuellen Adressen in physische Adressen, die auf einen eindeutigen physischen Speicherort verweisen. Die Übersetzung erfolgt nicht strikt eins zu eins: Verschiedene virtuelle Adressen können derselben physischen Adresse zugeordnet werden.
Mehr über physische und virtuelle Adressen.
Vorteile der Segmentierung
Zu den Vorteilen der Segmentierung gehören:
- Segmentierung verursacht keine interne Fragmentierung
- Segmenttabellen benötigen im Vergleich zu Seitentabellen weniger Speicherplatz
- Segmentierung erfordert weniger Verarbeitungsaufwand als Paging.
- Segmentierung vereinfacht das Verschieben von Segmenten im Vergleich zum Verschieben zusammenhängender Adressräume auf einem Datenträger
- Segmenttabellen benötigen weniger Speicher
Nachteile der Segmentierung
Obwohl Segmentierung eine schnelle und äußerst sichere Funktion der Speicherverwaltung ist, erwies sich die externe Fragmentierung als unüberwindbares Problem. Segmentierung verursacht so viel externe Fragmentierung, dass moderne x86-64-Server sie als veraltete Anwendung behandeln und nur aus Gründen der Abwärtskompatibilität unterstützen.
Externe Fragmentierung tritt auf, wenn sich ungenutzter Speicher außerhalb zugewiesener Speicherblöcke befindet. Das Problem besteht darin, dass das System möglicherweise über genügend Speicher verfügt, um Prozessanforderungen zu erfüllen, der verfügbare Speicher jedoch nicht zusammenhängend angeordnet ist. Mit der Zeit nimmt die Fragmentierung zu und verlangsamt den Segmentierungsprozess erheblich.
Linux unterstützt Segmentierung nur in 80×86-Mikroprozessoren und führt an, dass Paging die Speicherverwaltung vereinfacht, weil dabei derselbe Satz linearer Adressen verwendet wird. Die Portierung von Linux auf andere Architekturen ist aufgrund der eingeschränkten Segmentierungsunterstützung problematisch.
Fazit: Paging vs. Segmentierung
Paging und Segmentierung sind grundlegende Technologien, mit denen Betriebssysteme Computersystemen Speicherkapazität zur Verfügung stellen. Beide sind von Fragmentierung betroffen: Paging verursacht bei veralteten Computern interne Fragmentierung, während Segmentierung zu erheblicher externer Fragmentierung führt. Diese Speichertechnologien sind nur zwei Beispiele dafür, dass die heutigen Anforderungen an Speichergeschwindigkeit und -kapazität die Möglichkeiten vieler Computersysteme übersteigen.