TI2-Tutorium, 03.07.2013

Nachbesprechung

Vorlesung – virtueller Speicher

Motivation

  • Programme brauchen manchmal mehr Speicher als physikalisch vorhanden.
  • Programme müssen an unterschiedlichen Stellen im Speicher liegen können.
  • Zwei Instanzen des gleichen Programms dürfen sich nicht gegenseitig beeinflussen.

Daher:

  • Trennung in logische/virtuelle und physikalische Adressen.
  • Völlig transparent gegenüber Programmen.
  • Jeder Prozess denkt, er hätte die Adressen 0 bis ca. 250 für sich.

Idee

  • Ein Block logischer Adressen wird auf einen Block physikalischer Adressen abgebildet.
  • Beispielsweise Adressen 0-1023 von Prozess 1 auf die physikalischen Adressen 34816-35839 und 0-1023 von Prozess 2 auf 8192-9215.
  • Dadurch können auch Blöcke auf die Festplatte o.ä. ausgelagert und erst bei Bedarf wieder in den Arbeitsspeicher eingelagert werden (Swapping).

Voraussetzung

  • Betriebssystem und CPU müssen das unterstützen.

  • CPU hat die MMU+Tabelle, die die Unterstützung herstellt. Schnelle Hardware-Umrechnung von logisch nach physikalisch.
  • Betriebssystem ist für das Abbildung von logischen auf physikalische Adressen zuständig (z.B. wenn Programm neuen Speicher abfragt).

Paging

  • Paging ist ein Verfahren zur Speicherverwaltung.
  • Der Adressraum wird in kleine (4kByte) Blöcke unterteilt.
  • Jeder logische Block hat in der Page table einen passenden physikalischen Block zugeordnet.

Vorteil:

  • Kleine Seiten nur benötigte Blöcke müssen eingelagert werden.
  • Sehr einfache Verwaltung, da Blöcke immer gleich groß.

Nachteil:

  • Kleine Seiten viel Datentransfer

Segmentierung

  • Bei Segmentierung wir ein Prozess in Segmente unterteilt, beispielsweise Programmcode, Konstanten, Stack, Datenspeicher.

Vorteil:

  • Logische Unterteilung des Programms.
  • Segmente sind unabhängig voneinander.
  • Große Segmente seltener Datentransfer.
  • Segmentspezifischer Schutz möglich (Programmcode und Konstanten nur lesbar).

Nachteil:

  • Wenn Datentransfer, dann umfangreich.
  • Programmierer muss Bescheid wissen (Segmentregister etc.).

Fragmentierung

  • Paging:
    • interne Fragmentierung (es gibt freie Stellen im Block, die nicht genutzt werden (können))
  • Segmentierung:
    • externe Fragmentierung (es gibt freie Stellen zwischen Segmenten, die nicht genutzt werden können)