VP1 VP2 VP3 PP1.1 PP2.1 PP2.2 PP1.2 PP2.3 PP1.3 MMU VP1 VP2 VP3 PP1 PP4 PP6 MMU-Konfiguration für Prozess P1 Virtual Memory von P1 Physical Memory.

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
Objekt – Relationales – Modell Tomasz Makowski IN
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Referenzen und Zeichenketten
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Dynamisches Array als "verkettete Liste". Ein Vergleich.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
V AdresseWert public static void main(...){ int[] v; v=new int[2]; } Was veranlasst diese Anweisung im Arbeitsspeicher ? Es wird im Arbeitsspeicher.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Processing: Arrays & Laden von Dateien Aufbauend auf dem Beispiel: File I/O LoadFile1.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation.
Programmieren mit JAVA Teil V. Grafikausgabe mit JAVA, das AWT Java wurde von Anfang an mit dem Anspruch entwickelt, ein vielseitiges, aber einfach zu.
Vorlesung 4: Memory Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin Wintersemester.
Arrays,Strings&Pointer in C/C++
Informatik Grundlagen, WS04, Seminar 11
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
Programmieren in C Grundlagen C 2
5. Zeiger und komplexe Datenstrukturen
Arbeitsspeicher Eine Präsentation von - Namen wurden entfernt -
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Bs Segmentierung Adressraum besteht aus mehreren Segmenten (segments), die unabhängig voneinander manipulierbar sind. Segmentierungsstruktur ist.
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
C Tutorium – Memory Management – Knut Stolze. 2 Agenda Einführung in die Speicherverwaltung Stack vs. Heap Malloc Free Sizeof Tipps/Hinweise.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Der Foliensatz ist unter einer Creative Commons-Lizenz lizenziert:
ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1.
? Stichwortverzeichnis … zum Suchen
Stichwortverzeichnis
Heute Mathe, morgen DLR! Dr. Margrit Klitz
Einführung in Web- und Data-Science Grundlagen der Stochastik
gemeinsam.innovativ.nachhaltig.
Wissenschaftliche Methodik
3. Schafft das Internet neue Transaktionsdesign?
Michael Artin: Geometric Algebra
3 Elektrochemische Wandler
Elektro-Skateboards Teil I Grundlagen
8 Zündung/Motormanagement
2 Elektrische Maschinen in Kraftfahrzeugen
Herstellung von kristallinen Metalloxiden über die Schmelze mit einem Spiegelofen Gruppe 8: Yuki Meier, Vivien Willems, Andrea Scheidegger, Natascha Gray.
Kapitel 4 Traveling Salesman Problem (TSP)
Inhaltsverzeichnis In der vorliegenden Präsentation finden Sie unter anderem Antworten auf folgende Fragen… warum ist eine Gesetzesinitiative zum Betriebliches.
Einführung in Web- und Data-Science
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
Entwicklung epistemologischer Überzeugungen
Das Verdauungssystem Präsentiert von Theresa
MasterBAV© Die neue Generation BAV
Medientechnische Infrastrukturen für virtuelle und lokale Lernräume
Wissensmanagement im Zeitalter von Digitaler Transformation
Das Arbeitgebermodell in Zeiten des
Microsoft® Office PowerPoint® 2007-Schulung
Einführung in Web- und Data-Science
Pensionsrück-stellungen Prof. Dr. Matthias Hendler
Vorlesung Wasserwirtschaft & Hydrologie I
Dynamischer Speicher malloc wird in c++ eher nicht mehr verwendet.
 Präsentation transkript:

VP1 VP2 VP3 PP1.1 PP2.1 PP2.2 PP1.2 PP2.3 PP1.3 MMU VP1 VP2 VP3 PP1 PP4 PP6 MMU-Konfiguration für Prozess P1 Virtual Memory von P1 Physical Memory

VP1 VP2 VP3 PP1.1 PP2.1 PP2.2 PP1.2 PP2.3 PP1.3 MMU VP1 VP2 VP3 PP2 PP3 PP5 MMU-Konfiguration für Prozess P2 Virtual Memory von P2 Physical Memory

Pipe registrieren Kernel P2 VP1 VP2 VP3 Virtual Memory von P1 myPip … … … … p* (VP1) … … … … registerPipe(myPipe) MMU-Konfiguration für Prozess P2 PP1.1 PP2.1 PP2.2 PP1.2 PP2.3 PP1.3 MMU VP1 VP2 VP3 PP2 PP3 PP5

P2 Pipe(P1) P1 P2

P1 Kernel myPip … … … … p* (VP1) … … … … writeToPipe(myPipe, *data) VP1 VP2 VP3 data PP1.1 PP2.1 PP2.2 PP1.2 PP2.3 PP1.3 MMU VP1 VP2 VP3 PP1 PP4 PP6 Physical Memory data MMU-Konfiguration für Prozess P1

P1 Void writeToPipe(String name, byte* data) { Pipe* curPipe = getPipe(name); curPipe->write(data); } VP1 VP2 VP3 data P2 VP1 VP2 VP3 PP1.1 PP2.1 PP2.2 PP1.2 PP2.3 PP1.3 MMU VP1 VP2 VP3 PP1 PP4 PP6 data Aktuelle MMU-Konfiguration (P1)

PP1.1 PP2.1 PP2.2 PP1.2 PP2.3 PP1.3 MMU VP1 VP2 VP3 PP1 PP4 PP6 data Aktuelle MMU-Konfiguration (P1) adaptMMU(…): sucht eine leere Page, fügt einen Eintrag in die MMU ein, welcher auf den physischen Speicher der Pipe zeigt. Sie returniert einen Pointer innerhalb der neuen Page mit dem selben page- offset wie der curPipe - pointer hatte. VP4 PP2 P1 VP1 VP2 VP3 VP4 Void writeToPipe(String name, byte* data) { Pipe* curPipe = getPipe(name); int ownerPID = getOwner(name); curPipe = adaptMMU(curPipe, owner); curPipe->write(data); }

SonderFall: Pipe erstreckt sich über mehrere Pages die Pipe besteht aus einem zusammenhängenden Array Array kann sich nur über benachbarte Pages erstrecken??? Wo liegen die Read bzw. Write-Pointer (Member-Variablen)??? direkt davor? direkt danach? P2 VP1 VP2 VP3 VP4 VP5 adaptMMU muß nun alle beteiligten Pages eintragen -> wieder relativ zum neuen Basis-Pointer curPipe wie stellt adaptMMU fest auf wie vielen Pages die Pipe liegt? [pPage + length*sizeof(char) + 2*sizeof(int)] / PAGE_SIZE aufrunden ??? liegen die Member wirklich unmittelbar vor/nach dem Array?

Neuen Speicher reservieren Kernel PP4 PP5 … … [free] P1 … … PP1 PP2 PP3 P1 [free] P2 Physical Memory Table Der Kernel verwaltet eine Pyhsical Memory Table in der festgehalten wird, welche physikalischen Pages von welchen Prozessen belegt werden, bzw. welche nicht verwendet werden.

Neuen Speicher reservieren Allokiert ein Prozess neuen Speicher (new / malloc), dann wird ihm eine virtuelle Adresse geliefert, welche genug Platz innerhalb des virtuellen Speichers bietet. newlibc verwaltet den virtuellen Speicher newlibc verwendet beim allokieren virtuelle adressen in pages, die möglicherweise noch gar kein mapping zu physikalischen pages haben. PP1.1 PP2.1 PP2.2 PP1.2 PP2.3 PP1.3 MMU VP1 VP2 VP3 PP1 PP4 PP6 Aktuelle MMU-Konfiguration (P1) P1 VP1 VP2 VP3 VP4 char* pData = new char[255]; Wird in einer neuen virtuellen Page abgelegt ???

Beim ersten Zugriff auf pData, welcher in einer neuen virtuellen Page liegt, wird das auflösen durch die MMU fehlschlagen (Page-miss). Prozess benötigt neue physikalische Page void reserveNewPage(int PID, int vPage) { int physPage = getFreePage();//returniert Index einer nicht // benutzten page markPageReserved(physPage, PID);// markiert PID als besitzer von //physPage (Physical Memory Table) addMMUEntry(PID, vPage, physPage);// fügt einen Eintrag die MMU- //Tabelle von PID ein. }