Unterschied zwischen Paging und Segmentierung

Die Speicherverwaltung ist eine der Grundfunktionen des Betriebssystems. Moderne Betriebssysteme ermöglichen, dass jeder Prozess mehr virtuellen Speicher erhält als die Gesamtgröße des tatsächlichen (physischen) Speichers auf einem bestimmten Computersystem. Das Hauptziel der Speicherverwaltung besteht darin, durch die Kombination eines großen, aber langsamen Speichers mit einem kleinen, aber schnellen Speicher den Effekt eines größeren schnellen Speichers zu erzielen.

Was ist Paging??

Die Trennung zwischen fester und variabler Partitionierung ist in Bezug auf die Speicherauslastung ineffektiv, da eine feste Partitionierung zu einer internen und zu einer dynamischen externen Fragmentierung führt. Eine mögliche Lösung für das Problem der Fragmentierung besteht darin, den Prozess nicht in einen kontinuierlichen Speicherblock schreiben zu lassen. Das Programm kann beliebig im Speicher verteilt werden. In diesem Fall ist der Arbeitsspeicher in kleinere Blöcke fester Größe unterteilt, die als Frames bezeichnet werden. Der logische Adressraum des Programms ist ebenfalls in Blöcke gleicher Größe, so genannte Seiten, unterteilt. Wenn ein Programm in den Speicher eingegeben wird, werden die Seiten in freie Speicherframes geschrieben. Um das Übertragen von Programmen von einer Platte in einen Arbeitsspeicher zu erleichtern, ist die Platte auch in Frames mit der gleichen Größe wie die Speicherframes unterteilt. Somit wird ein Frame von der Platte in einen Frame des Arbeitsspeichers geschrieben. Das Funkrufsystem arbeitet auf folgende Weise: Wenn das Programm zur Ausführung angenommen wird, wird seine Größe berechnet, die mit der erforderlichen Seitenzahl ausgedrückt wird. Wenn eine ausreichende Anzahl von Bildern frei ist, wird der Vorgang pro Seite auf der Speicherseite aufgezeichnet. Gleichzeitig wird die Anzahl der Frames, in die jede Seite geschrieben wird, in die Frame-Tabelle eingetragen.

Was ist Segmentierung??

Das Benutzerprogramm und die zugehörigen Daten können in eine Reihe von Segmenten unterteilt werden. Segmente aller Programme müssen nicht gleich groß sein, obwohl es eine maximale Segmentlänge gibt. Wie beim Paging besteht die logische Adresse, die die Segmentierung verwendet, aus zwei Teilen, in diesem Fall der Anzahl der Segmente und Versetzungen innerhalb dieses Segments. Aufgrund der Verwendung von Segmenten unterschiedlicher Größe ähnelt die Segmentierung der dynamischen Partitionierung. Bei Fehlen eines Überlagerungsschemas oder der Verwendung eines virtuellen Speichers müssen alle Programmsegmente zur Ausführung in den Speicher geladen werden. Der Unterschied zur dynamischen Partitionierung besteht darin, dass die Segmentierung mehr als eine Partition erfordern kann und diese Partition nicht benachbart sein muss. Die Segmentierung löst das Problem der internen Fragmentierung, aber neben der dynamischen Partitionierung bleibt das Problem der externen Fragmentierung bestehen. Da der Prozess jedoch in mehrere kleinere Teile unterteilt ist, ist die externe Fragmentierung normalerweise geringer. Im Gegensatz zum Paging, das für den Programmierer nicht sichtbar ist, ist die Segmentierung normalerweise sichtbar und eignet sich zum Organisieren von Programmen und Daten. Zur modularen Programmierung können das Programm oder die Daten weiter in mehrere kleinere Segmente unterteilt werden. Der Nachteil dieser Technik ist, dass der Programmierer die Einschränkungen der maximalen Segmentgröße kennen muss. Die nächste Bequemlichkeit bei der Verwendung von Segmenten unterschiedlicher Größe besteht darin, dass keine potenzielle Verbindung zwischen logischen und physischen Adressen besteht. Ähnlich wie beim Paging verwendet die einfache Segmentierungstechnik für jeden Prozess eine Segmenttabelle und eine Liste der verfügbaren Blöcke im Hauptspeicher.

Unterschied zwischen Paging und Segmentierung

1. Konzept für Paging und Segmentierung

Paging liefert einen virtuellen und einen physischen Adressraum sowie einen sekundären Speicherplatz auf Blöcken (Seiten) gleicher Länge. Dies ermöglicht, dass der kontinuierliche virtuelle Adressraum dem Dispersionsprozess (nicht notwendigerweise kontinuierlich verteilt) im realen Adressraum und im sekundären Speicher zugewiesen wird. Sogar die Seite als Begriff bezieht sich auf Speicher und nicht auf logische Objekte, die auf Programmebene sichtbar sind. Die Segmentierung liefert einen virtuellen Adressraum auf Blöcken (Segmenten), die direkt Objekten auf Programmebene entsprechen. Aus diesem Grund hat das Segment keine feste Länge, so dass sogar die Segmentgröße während der Programmausführung geändert werden kann. Schutz und Unterteilung sind daher auf Objektebene möglich, und es gibt sichtbare Prozesse, bei denen die Segmentierung durchgeführt wird.

2. Merkmale des Paging und der Segmentierung

Der Anwendungsentwickler kennt das Paging nicht. Er schreibt Programme so, als ob der Speicher linear ist, und das Betriebssystem und der Prozessor machen sich Sorgen über die Aufteilung und Umwandlung in virtuelle Adressen. Programmierer auf Segmentierungssystemen führen jedoch zwei Teile der Adresse, Segment und Seite in ihren Programmen auf. Alle Seiten haben dieselbe Größe, während die Segmente unterschiedlich sind. Die Segmentierung hat mehrere lineare Adressräume und nur einen Seitenwechsel. Segmente ermöglichen die logische Partitionierung und den Schutz von Anwendungskomponenten, Seiten jedoch nicht.

3. Vorteile von Paging und Segmentierung

Paging, das für den Programmierer transparent ist, eliminiert die externe Fragmentierung und gewährleistet somit eine effiziente Nutzung des Hauptspeichers. Die Teile, die sich in den Hauptspeicher hinein und aus ihm heraus bewegen, sind fest und haben die gleiche Größe. Daher können ausgeklügelte Speicherverwaltungsalgorithmen entwickelt werden, die das Verhalten des Programms ausnutzen. Die Segmentierung ist für den Entwickler sichtbar und kann das Wachstum der Datenstruktur, die Modularität sowie die Unterstützung für Austausch und Schutz steuern.

Paging vs. Segmentierung: Vergleichstabelle

Paging

Segmentierung

feste Seitengröße Segmente sind nicht in der Größe festgelegt
unsichtbar für Programmierer sichtbar für Programmierer
ein linearer Adressraum mehrere lineare Adressräume
erlaubt keine logische Partitionierung und den Schutz von Anwendungskomponenten erlaubt

Zusammenfassung von Paging und Segmentierung

  • Das Paging basiert auf der Verteilung des gesamten Adressraums auf Blöcke fester Länge, die als Speicherquantitäten betrieben werden. Ferner ist es notwendig, ein Mittel zum Markieren des verfügbaren Speichers bereitzustellen, der durch das Vorhandensein des "Headers" jeder Seite ausgeführt werden kann, der den Status der Seite angibt (global verknüpfte Liste, auf die jeder Knoten auf die nächste freie Seite verweist) oder durch Platzieren der freien Seitenadresse im globalen Array, was normalerweise die schlechteste Lösung ist.
  • Segmentierung bedeutet, den Adressraum in Segmente aufzuteilen, die die Zugriffsrechte für den MMU-Prozessor eindeutig kennzeichnen. Innerhalb des Segments weisen die Prozesse genau so viel Speicher zu, wie sie benötigen, das Problem der Speicherverwaltung besteht jedoch darin, eine solche Zuordnung bereitzustellen, bei der ausreichend kontinuierlicher Blockspeicher vorhanden ist, der einige Zeit benötigt.