Systemprogrammierung

Please download to get full document.

View again

of 26
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Published
Systemprogrammierung Adressraum 6. Juli 2010 c wosch SS 2010 Systemprogrammierung Überblick 13 Adressraum Adressraum Ausgangspunkt Physikalischer Adressraum Logischer Adressraum Virtueller Adressraum Zusammenfassung
Systemprogrammierung Adressraum 6. Juli 2010 c wosch SS 2010 Systemprogrammierung Überblick 13 Adressraum Adressraum Ausgangspunkt Physikalischer Adressraum Logischer Adressraum Virtueller Adressraum Zusammenfassung Bibliographie c wosch SS 2010 Systemprogrammierung C 13-1 13 Adressraum 13.1 Ausgangspunkt Grundlagen der Rechnerarchitektur, 2. Semester Ergänzung, Verfeinerung bzw. Vertiefung von GRA Multi-Tasking, MMU[1], speziell... Segmentierung Memory Management Unit Adressumsetzung...beleuchtet im Kontext der Maschinenprogrammebene, genauer: Artefakte der Hardware Abstraktion durch ein Betriebssystem c wosch SS 2010 Systemprogrammierung C 13-2 Adressraumkonzepte Betriebssystemsicht 13 Adressraum 13.1 Ausgangspunkt physikalischer Adressraum = nicht-linear adressierbarer E/A- und Speicherbereich, dessen Größe der Adressbreite der CPU entspricht 2 N Bytes, bei einer Adressbreite von N Bits von Lücken durchzogen ungültige Adressen logischer Adressraum = linear adressierbarer Speicherbereich von 2 M Bytes bei einer Adressbreite von N Bits M = N z.b. im Fall einer Harvard-Architektur getrennter Programm-, Daten- und E/A-Adressraum M N sonst virtueller Adressraum = logischer Adressraum, der 2 K Bytes umfasst K N bei Speicherbankumschaltung, Überlagerungstechnik K N sonst c wosch SS 2010 Systemprogrammierung C 13-3 13 Adressraum 13.2 Physikalischer Adressraum Adressraumorganisation Adressenbelegung (engl. address assignment) Adressbereich Größe (KB) Verwendung ffff 640 RAM (System) 000a bffff 128 Video RAM 000c c7fff 32 BIOS Video RAM 000c dffff 96 keine 000e effff 64 BIOS Video RAM (shadow) 000f fffff 64 BIOS RAM (shadow) fffff RAM (Erweiterung) fffdffff keine fffe0000 fffeffff 64 SM-RAM (system management) ffff0000 ffffffff 64 BIOS ROM Toshiba Tecra 730CDT, 1996 c wosch SS 2010 Systemprogrammierung C 13-4 Ungültige Adressen Zugriff Busfehler (engl. bus error) 13 Adressraum 13.2 Physikalischer Adressraum Adressbereich Größe (KB) Verwendung ffff 640 RAM (System) 000a bffff 128 Video RAM 000c c7fff 32 BIOS Video RAM 000c dffff 96 keine 000e effff 64 BIOS Video RAM (shadow) 000f fffff 64 BIOS RAM (shadow) fffff RAM (Erweiterung) fffdffff keine fffe0000 fffeffff 64 SM-RAM (system management) ffff0000 ffffffff 64 BIOS ROM Toshiba Tecra 730CDT, 1996 c wosch SS 2010 Systemprogrammierung C 13-5 Reservierte Adressen Zugriff Schutzfehler (engl. protection fault) 13 Adressraum 13.2 Physikalischer Adressraum Adressbereich Größe (KB) Verwendung ffff 640 RAM (System) 000a bffff 128 Video RAM 000c c7fff 32 BIOS Video RAM 000c dffff 96 keine 000e effff 64 BIOS Video RAM (shadow) 000f fffff 64 BIOS RAM (shadow) fffff RAM (Erweiterung) fffdffff keine fffe0000 fffeffff 64 SM-RAM (system management) ffff0000 ffffffff 64 BIOS ROM Toshiba Tecra 730CDT, 1996 c wosch SS 2010 Systemprogrammierung C 13-6 Freie Adressen Hauptspeicher (engl. main memory) 13 Adressraum 13.2 Physikalischer Adressraum Adressbereich Größe (KB) Verwendung ffff 640 RAM (System) 000a bffff 128 Video RAM 000c c7fff 32 BIOS Video RAM 000c dffff 96 keine 000e effff 64 BIOS Video RAM (shadow) 000f fffff 64 BIOS RAM (shadow) fffff RAM (Erweiterung) fffdffff keine fffe0000 fffeffff 64 SM-RAM (system management) ffff0000 ffffffff 64 BIOS ROM Toshiba Tecra 730CDT, 1996 c wosch SS 2010 Systemprogrammierung C 13-7 13 Adressraum 13.3 Logischer Adressraum Segmentierung Logische Unterteilung von Programmadressräumen Ebene 4 -Programme sind in (mind.) zwei Segmente logisch aufgeteilt: Text Maschinenanweisungen, Programmkonstanten Daten initialisierte Daten, globale Variablen, Halde Ebene 3 -Programme kennen (mind.) ein weiteres Segment: Stapel lokale Variablen, Hilfsvariablen, aktuelle Parameter Betriebssysteme verwalten diese Segmente im physikalischen Adressraum ggf. mit Hilfe einer MMU (engl. memory management unit) Hardware, die nur logische in physikalische Adressen umsetzt für die Verwaltung des Speichers ist das Betriebssystem verantwortlich die MMU legt eine Organisationsstruktur auf den phys. Adressraum sie unterteilt ihn in Seiten fester oder Segmente variabler Länge c wosch SS 2010 Systemprogrammierung C 13-8 13 Adressraum 13.3 Logischer Adressraum Ausprägungen von Programmadressräumen Seitennummerierter oder segmentierter Adressraum eindimensional in Seiten aufgeteilt (engl. paged) eine Programmadresse A P bildet ein Tupel (p,o): p = A P div 2 N Seitennummer (engl. page number) o = A P mod 2 N Versatz (engl. byte offset) mit 2 N gleich der Seitengröße (engl. page size) in Bytes Seite Seitenrahmen (auch: Kachel) des phys. Adressraums zweidimensional in Segmente aufgeteilt (engl. segmented) eine Programmadresse A S bildet ein Paar (S,A) mit der Adresse A relativ zu Segment(name/nummer) S bei seitennummerierten Segmenten wird A als AP interpretiert Segment Folge von Bytes/Seitenrahmen des phys. Adressraums c wosch SS 2010 Systemprogrammierung C 13-9 13 Adressraum 13.3 Logischer Adressraum Adressumsetzung Seitennummerierter Adressraum (engl. paged address space) char *p = 4711; /* 0x1267 */ logische Adresse base limit MMU Seitennummer Seitenrahmenbasis Seiten tabelle Versatz 7 physikalische Adresse Seitennummer ist Index in Seitentabelle pro Prozess dimensioniert durch die MMU ungültiger Index führt zum Trap die indizierte Adressierung (der MMU) liefert einen Seitendeskriptor enthält die Seitenrahmennummer, die die Seitennummer ersetzt entspricht der Basisadresse des Seitenrahmens im phys. Adressraum setzen der Basis-/Längenregister der MMU Adressraumwechsel c wosch SS 2010 Systemprogrammierung C 13-10 13 Adressraum 13.3 Logischer Adressraum Adressumsetzung (Forts.) Segmentierter Adressraum (engl. segmented address space) char *p = /* */ logische Adresse a Adresse (segmentierte Adresse) Segmentname base limit MMU base Segment tabelle limit Segmentlimit Segmentierungsfehler Segmentbasis physikalische Adresse b c = Segmentname ist Index in die Segmenttabelle eines Prozesses dimensioniert durch die MMU, ungültiger Index führt zum Trap indizierte Adressierung (der MMU) ergibt den Segmentdeskriptor enthält Basisadresse und Länge des Segments (engl. base/limit) addressphys = address limit? Trap : base + address c wosch SS 2010 Systemprogrammierung C 13-11 13 Adressraum 13.3 Logischer Adressraum Adressumsetzung (Forts.) Segmentierter seitennummerierter Adressraum (engl. page-segmented address space) char *p = /* */ logische Adresse a Adresse Segmentname Seitennummer Versatz base limit MMU Segment tabelle limit base Segmentlimit Segmentbasis Seitenrahmenbasis physikalische Adresse Seiten tabelle Reihenschaltung von zwei Adressumsetzungseinheiten der MMU: Segmenteinheit löst eine segmentierte Adresse auf adressiert und begrenzt die Seitentabelle Seiteneinheit generiert die physikalische Adresse jeder Prozess hat (mind.) eine Segment- und eine Seitentabelle c wosch SS 2010 Systemprogrammierung C 13-12 13 Adressraum 13.3 Logischer Adressraum Adressumsetzung (Forts.) Segmentregister bzw. Segmentselektor (engl. segment selector) char *p = 4711; code data stack base limit MMU base /* */ a Segment tabelle Segmentname limit Adresse je nach Art des Speicherzugriffs selektiert die MMU implizit das passende Segment Befehlsabruf (engl. instruction fetch) code Operandenabruf (engl. operand fetch) Text, Daten oder Stapel? Direktwerte code globale/lokale Daten data/stack char *foo (char bar) { return &bar; } Programme können weiterhin 1-dimensionale log. Adressen verwenden c wosch SS 2010 Systemprogrammierung C 13-13 13 Adressraum 13.3 Logischer Adressraum Seiten- bzw. Segmentdeskriptor Abbildung steuernder Verbund Adressumsetzung basiert auf Deskriptoren der MMU, die für jede Seite/Segment eines Prozesses Relokations- und Zugriffsdaten verwalten die Basisadresse des Seitenrahmens/Segments im phys. Adressraum die Zugriffsrechte des Prozesses lesen (read), schreiben (write), ggf. ausführen (execute) Segmente sind (im Geg. zu Seiten) von variabler, dynamischer Größe und benötigen daher zusätzliche Verwaltungsdaten Segmentdeskriptor die Segmentlänge, um Segmentverletzungen abfangen zu können Basis-/Längenregister (S. 6-32) Segmentdeskritor die Expansionsrichtung: Halde bottom-up, Stapel top-down Deskriptorprogrammierung erfolgt zur Programmlade- und -laufzeit bei Erzeugung/Zerstörung schwer- und leichtgewichtiger Prozesse bei Anforderung/Freigabe von Arbeitsspeicher c wosch SS 2010 Systemprogrammierung C 13-14 13 Adressraum 13.3 Logischer Adressraum Seiten- bzw. Segmenttabelle Adressraum beschreibende Datenstruktur Deskriptoren des Adressraums eines Prozesses sind in einer Tabelle im Arbeitsspeicher zusammengefasst die Arbeitsmenge (engl. working set) von Deskriptoren eines Prozesses wird im Zwischenspeicher (engl. cache) gehalten TLB (engl. translation lookaside buffer) der MMU Adressraumwechsel als Folge eines Prozesswechsels bedeutet: 1. zerstören der Arbeitsmenge (TLB flush ; teuer, schwergewichtig) 2. Tabellenwechsel (Zeiger umsetzen; billig, federgewichtig) Basis-/Längenregister (engl. base/limit register) beschreibt eine Tabelle und damit exakt einen Prozessadressraum bei der Adressumsetzung wird eine Indexprüfung durchgeführt: descriptor = index limit? &base[index] : Trap wobei index die Seitennummer/den Segmentnamen repräsentiert c wosch SS 2010 Systemprogrammierung C 13-15 13 Adressraum 13.4 Virtueller Adressraum Adressraumabbildung einhergehend mit Ein-/Ausgabe Integration von Vorder- und Hintergrundspeicher Abstraktion von Größe und Örtlichkeit des verfügbaren Hauptspeichers vom Prozess nicht benötigte Programmteile können ausgelagert sein sie liegen im Hintergrundspeicher, z.b. auf der Festplatte der Prozessadressraum könnte über ein Rechnernetz verteilt sein Programmteile sind über die Hauptspeicher anderer Rechner verstreut Zugriffe auf ausgelagerte Programmteile fängt der Prozessor ab: Trap sie werden stattdessen partiell interpretiert vom Betriebssystem der unterbrochene Prozess wird in einen E/A-Stoß gezwungen er erwartet die erfolgreiche Einlagerung eines Programmteils ggf. sind andere Programmteile aus dem Hauptspeicher zu verdrängen Wiederaufnahme des CPU-Stoßes Wiederholung des Zugriffs c wosch SS 2010 Systemprogrammierung C 13-16 13 Adressraum 13.4 Virtueller Adressraum Seiten- bzw. Segmentdeskriptor (Forts.) Zusätzliche Attribute Adressumsetzung unterliegt einer Steuerung, die transparent für den zugreifenden Prozess die Einlagerung auslöst die Gegenwart eines Segments/einer Seite wird erfasst: present bit 0 ausgelagert; Trap, partielle Interpretation, Einlagerung die Basisadresse ist eine Adresse im Hintergrundspeicher wird nach der Einlagerung vom Betriebssystem auf 1 gesetzt 1 eingelagert; Befehl abrufen, Operanden lesen/schreiben die Basisadresse ist eine Adresse im Vordergrundspeicher wird nach der Auslagerung vom Betriebssystem auf 0 gesetzt das Gegenwartsbit dient verschiedentlich noch anderen Zwecken: um z.b. Zugriffe zu zählen oder ihnen einen Zeitstempel zu geben Betriebssystemmaßnahmen zur Optimierung der Ein-/Auslagerung c wosch SS 2010 Systemprogrammierung C 13-17 13 Adressraum 13.4 Virtueller Adressraum Zugriffsfehler Seitenfehler (engl. page fault) bzw. Segmentfehler (engl. segment fault) present bit = 0 je nach Befehlssatz und Adressierungsarten der CPU kann der Behandlungsaufwand im Betriebssystem und somit der Leistungsverlust für beträchtlich sein void hello () { printf( hi!\n ); } void (*moin)() = &hello; main () { (*moin)(); } main: pushl %ebp movl %esp,%ebp pushl %eax pushl %eax andl $-16,%esp call *moin leave ret.. FF E8. c wosch SS 2010 Systemprogrammierung C 13-18 13 Adressraum 13.4 Virtueller Adressraum Zugriffsfehler (Forts.) Beispiel des schlimmsten Falls eines Seitenfehlers... call *moin (x86) Aufruf einer indirekt adressierten Prozedur der Operationskode (FF15) wurde bereits gelesen FF E8 83 EC 18 hello pc Seitengrenze(n) sp 4. moin A E Operandenadresse holen (080494E8) 2. Funktionszeiger lesen (08) 3. Funktionszeiger weiterlesen (0483A0) 4. Rücksprungadresse stapeln (0804) 5. Rücksprungadresse weiterstapeln (839E) 6. Operationskode holen (83) 7. Operanden holen (EC18) Seitenfehler 6. und 7. sind eigentlich bereits der Ausführung des ersten Maschinenbefehls der aufgerufenen Prozedur zuzurechnen c wosch SS 2010 Systemprogrammierung C 13-19 13 Adressraum 13.4 Virtueller Adressraum Aufwandsabschätzung eines Seitenfehlers Seitenfehler sind nicht-funktionale Programmeigenschaften effektive Zugriffszeit (effective access time, eat) auf den Hauptspeicher hängt stark ab von der Seitenfehlerwahrscheinlichkeit (p) und verhält sich direkt proportional zur Seitenfehlerrate: eat = (1 p) pat + p pft,0 p 1 angenommen, folgende Systemparameter sind gegeben: 50ns Zugriffszeit auf den RAM (physical access time, pat) 10ms mittlere Zugriffszeit auf eine Festplatte (page fault time, pft) 1% Wahrscheinlichkeit eines Seitenfehlers (p = 0, 01) dann ergibt sich: eat = 0,99 50ns + 0,01 10ms = 49,5ns ns 0,1ms Einzelzugriffe sind im Ausnahmefall um den Faktor 2000 langsamer c wosch SS 2010 Systemprogrammierung C 13-20 13 Adressraum 13.4 Virtueller Adressraum Aufwandsabschätzung eines Seitenfehlers (Forts.) Seitenfehler sind nicht wirklich transparent mittlere Zugriffszeit (mean access time, mat) auf den Hauptspeicher hängt stark ab von der effektiven Seitenzugriffszeit und der Seitengröße (in Bytes pro Seite bzw. Seitenrahmen): mat = (eat + (sizeof (page) 1) pat)/pat angenommen, folgende Systemparameter sind gegeben: Seitengröße von Bytes (4 KB) 50ns Zugriffszeit (pat) auf ein Byte im RAM effektive Zugriffszeit (eat) wie eben berechnet bzw. abgeschätzt dann ergibt sich: mat = (eat ns)/50ns = 6095,99ns 6µs Folgezugriffe sind im Ausnahmefall um den Faktor 122 langsamer c wosch SS 2010 Systemprogrammierung C 13-21 13 Adressraum 13.4 Virtueller Adressraum Seitenüberlagerung Considered Harmful Pro und Contra Virtuelle Adressräume sind... vorteilhaft wenn übergroße bzw. gleichzeitig mehrere Programme in Anbetracht zu knappen Hauptspeichers auszuführen sind ernüchternd wenn der eben durch die Virtualisierung bedingte Mehraufwand zu berücksichtigen ist und sich für ein gegebenes Anwendungsszenario als problematisch bis unakzeptabel erweisen sollte Seitenfehler sind... nicht wirklich transparent, wenn zeitliche Aspekte relevant sind z.b. im Fall von Echtzeitverarbeitung oder Hochleistungsrechnen erst zur Laufzeit ggf. entstehende nicht-funktionale Eigenschaften c wosch SS 2010 Systemprogrammierung C 13-22 Adressräume Ebenen der Abstraktion 13 Adressraum 13.5 Zusammenfassung physikalischer Adressraum enthält gültige und ungültige Adressen ungültige Adressen Zugriff führt zum Busfehler gültige Adressen Zugriff gelingt, ist jedoch zu bedenken... reservierte Adressbereiche Schutz logischer Adressraum enthält gültige Adressen Zugriffsrechte der Prozesse stecken Gültigkeitsbereiche ab Zugriff auf reservierte Adressen führt ggf. zum Schutzfehler Prozesse sindinihrem Programmadressraum abgeschottet, isoliert Zugriff auf fremde freie Adressen führt zum Schutzfehler virtueller Adressraum enthält flüchtige Adressen die Bindung der Adressen zu den Speicherzellen ist nicht fest sie variiert phasenweise zwischen Vorder- und Hintergrundspeicher c wosch SS 2010 Systemprogrammierung C 13-23 13 Adressraum 13.5 Zusammenfassung Adressraumdeskriptoren Seitennumerierte und segmentierte Adressräume Abbildung steuernde Verbunde zur Erfassung einzelner Adressraumteile speichern Attribute von Seiten oder Segmente d.h., Relokations- und Zugriffsdaten, Zugriffsrechte bilden Seiten fester Größe auf gleichgroße Seitenrahmen ab seitennummerierter Adressraum bilden Segmente variabler Größe auf Byte- oder Seitenfolgen ab segmentierter und ggf. seitennummerierter Adressraum Abbildungstabellen fassen Deskriptoren (eines Adressraums) zusammen die Tabellen liegen im Arbeitsspeicher des Betriebssystems der dafür erforderliche Speicherbedarf kann beträchtlich sein im TLB sind Arbeitsmengen von Deskriptoren zwischengespeichert ein Cache der MMU, ohne dem Adressumsetzung ineffizient ist Zugriffsfehler sind intransparente, nicht-funktionale Eigenschaften c wosch SS 2010 Systemprogrammierung C 13-24 Literaturverzeichnis 13 Adressraum 13.6 Bibliographie [1] Volkmar Sieh. Grundlagen der Rechnerarchitektur Lecture Notes. c wosch SS 2010 Systemprogrammierung C 13-25
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks