Rechnerarchitekturen 2/MMU-Vortrag

Aus II-Wiki
Zur Navigation springen Zur Suche springen

Grobgliederung für MMU-Votrag (Patric, Oli, Sandra, Christoph, Jan)

Würde ich vorläufig hier reinschreiben

Einleitung

  • kurz nochmal flaches Speichermodell, Hinweis auf die Speichergeschwindigkeit und Speichergröße mit von-Neumann Architektur (Cache: klein und schnell, ...... Platte: groß und langsam)
  • Was sind Adressräume, unterschied physikalischer, linearer, logischer Adressraum

Segmentierung und Paging

  • Sinn: warum virtuelle Adressräume, welche Vorteile hat das
    • verhindert Fragmentierung im physikalischen Speicher - ohne paging wird jedem Prozess bestimmter Speicherbereich im Hauptspeicher zugeteilt und dieser nach dem beenden freigegeben - neue Prozesse haben aber nicht zwangsläufig die gleiche Größe -> Es entstehen (mitunter sehr kleine) Lücken in der Vergabe des physikalischen Speichers
    • Dazu könnte man ja mal'n Beispielbildchen an die Tafel malen (oder in der Präsentation)
    • Erhöht die Sicherheit
      • Prozesse bekommen virtuelle Adressräume, die von andern Prozessen klar abgegrenzt sind
      • werden durch paging verwaltet um nur genutzten Adressraum in physikalischen Speicher zu packen
  • warum virtuelle Adressräume mit Paging realisieren, was macht Paging, wie funktioniert das (grob), Vor- und Nachteile
    • Warum siehe oben: weniger Fragmentierung und nur wirklich genutzte virtuelle Speicherbereiche landen im physikalischen Speicher (weniger Platzverschwendung)
    • sowohl logischer und realer Speicher wird in gleich große Häppchen unterteilt (den sog. pages bzw real Seitenrahmen)
    • In Seitentabelle steht dann die Zuordnung des physikalischen Seitenrahmen zur logischen page (bzw. andersrum)
    • logisch zusammenhängende Speicherbereiche werden somit beliebig auf dem realen Speicher verteilt
    • MMU dient der Umsetzung von logischer zu phyikalischer Adresse - später mehr
    • Nachteil: zusätlicher Aufwand durch Übersetzung - wird aber offensichtlich durch die Vorteile mehr als wett gemacht, sonst würdes ja keiner nutzen
  • virtuelle/logische Adresse, physikalische Adressen, (Unterscheidung – warum zb kann man einer logischen Adresse nicht unbedingt eine *physikalische Adresse zuordnen? -. Stichwort Seitenfehler, (hat eigenen Wiki-Artikel)
    • virtuelle logische Adressen umfassen den kompletten adressierbaren Speicherbereich (naja abzüglich einem bissl sonderkram)
    • physikalische Adressen dagegen nur den auch wirklich verbauten Speicher
      • kann passieren, dass man mehr Speicher braucht als verbaut ist, dann wird ausgelagert
      • bei Zugriffsversuch auf eine nicht im physikalischen Speicher vorhandene Seite kommt es zum "page fault" und diese Seite wieder in Speicher geladen
  • Aufteilung der 32 Bit Adresse (bei x86: 20 Bit Seitennummer, also 2^21 Seiten und 12 Bit für Offset (war das so?)
    • Fast richtig: sind 20 Bit Seitennummer also auch nur 2^20 Seiten
    • gibts im Wikipediaartikel zu "Speicherseite" ein ganz nettes Bild zu, welchem man evtl. irgendwo einbauen kann. Auf diesem sieht man auch, die zusätzlichen Bits in der Seitentabelle, auf die man evtl. auch eingehen sollte (Zugriffsrechte, Präsenzbit, Referenzbit, Modifikationsbit... siehe Betriebssysteme Kapitel 5.2. Folie 97ff)

MMU-Aufgaben

  • was hat das Ding also zu tun?
    • Test ob Adresse im gültigen Bereich liegt (nicht außerhalb des Adressraumes)
    • Übersetzung der virtuellen in reale Speicheradressen
    • Speicherschutzkram: sperren von Speicherbereichen für ausführbaren Code, Zugriffsrechte und sowas
  • wie wird die Adressabbildung gemacht
    • Wie Wie?
    • Es wird halt in der Seitentabelle nachgeguckt, zurückgegeben und gecached
  • wie sehen die Seitentabellen aus (mehrstufige Tabellen weil einstufige zu groß werden) – gibts direkt nen Wiki Artikel „Seitentabellen“
    • In Seitentabelle steht dann die Zuordnung des physikalischen Seitenrahmen zur logischen page (bzw. andersrum)
    • einstufige Seitentabelle:
      • virtuelle Adresse besteht aus Seitenanteil (Anfangsadresse) und Restadresse (Verschiebung)
      • der Seitenanteil entspricht dem Index der Seitentabelle, in der dann die physikalische Adresse hinterlegt ist
    • mehrstufige Seitentabelle:
      • erste Seitentabelle enthält wenige aber große Seiten
      • in der Tabelle steht entweder ein Seitendeskriptor, der die Seite auf den Speicher abbildet, oder einen Seitentabellendeskriptor, der die Seite auf eine untergeordnete Seitentabelle abbildet
  • wie kann ich das Ding schneller machen? Cache, also der translation lookaside buffer (auf den genau eingehen)
    • mit dem TLB
    • macht das, was ein cache halt so macht: cachen
    • sehr fix, speichert vor kurzem nachgeguckte Seitenadressen zwischen, wird irgendwann voll und braucht eine von den unzäligen möglichen Ersetzungsstrategien (könnte man ja evtl auch 'n paar von nennen bzw. kurz erklären, wenn noch Zeit vertrödelt werden muss)
    • ist ein Assoziativspeicher
  • vielleicht Speicherschutzaufgaben (harvard auf neumann-rechner?)
    • ganz kurz nochmal sagen, wo Unterschied zwischen harvard und princeton ist
    • da bei princeton Daten und Code im gleichen Speicher landen braucht man schutzmechanismen um zu verhindern, dass Daten ausgeführt werden
    • darum kümmert sich mmu
    • verwaltet Zugriffsrechte und verhindert vor allem, dass als Daten markiertes nicht als ausführbarer Code behandelt wird
  • wie ist das Ding aufgebaut (kleines Schema vll)

Multithreading

  • Prozesse, Threads, kosten bei Thread-und Prozesswechsel in Bezug auf die MMU
    • TLB gilt immer nur für aktuell laufenden Prozess - wird also beim Prozesswechsel geleert
    • dadurch müssen alle nächsten Seiten wieder aus Seitentabellen gelesen werden
    • Von Threadwechseln bekommt die MMU nix mit und der TLB wird auch nicht geleert
    • durch neuen Thread kanns aber potentiell auch passieren, dass danach ganz andere Seiten angefordert werden und somit nicht mehr viel brauchbares im translation lookaside buffer steht und somit auch viel direkt aus Seitentabellen gelesen werden muss
    • gibt bestimmt noch irgendwas, was ich grad nicht bedacht habe

mögliche Quellen

  • Seminar Betriebssysteme, dort kommt das alles recht ausführlich, einiges am Besipiel der VAX, wir sollten lieber x86 machen
  • Wikipedia halt, da gibts zu allen Sachen sehr umfangreiche Artikel
  • RA1