Bs-6.51 6.5 Dateien als Segmente Idee:Datei = persistentes Segment Konsequenzen:  Datei kann in virtuellen Adressraum eingeblendet werden (memory-mapped.

Slides:



Advertisements
Ähnliche Präsentationen
4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
Advertisements

Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Programmorganisation
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
6.6 Persistenter virtueller Speicher
Betriebssysteme.
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
SAP R/3 - Speichermanagement
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
HTML - Einführung Richard Göbel.
Java: Grundlagen der Sprache
Windows Explorer.
1A: POSIX POSIX (Portable Operating System) ist ein Standard für UNIX-Systeme. Er dient dazu, Programme portabel unter UNIX und Derivaten zu tauschen und.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
OpenMP Präsentation im Rahmen des Seminars
Allgemein Batchdatei/en erstellen Was ist das?? Wie geht das??
Delphi-Datenbankkomponenten
DVG Einführung in Java1 Einführung in JAVA.
Capabilities - Sicherheit realisiert auf Hardware-Ebene am Beispiel von MONADS Teil 2 Vorgelegt von: Wiebke Schröder Vortragsdatum: 07. Juli /21.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Referat zum Thema „DLL“
FH-Hof HTML - Einführung Richard Göbel. FH-Hof Komponenten des World Wide Webs WWW Browser HyperText Transfer Protocol (HTTP) via Internet WWW Server.
Fakultät WirtschaftJürgen Guter Dipl. Physiker (Univ.) Microsoft Office Excel 2007 Specialist Zertifizierung Wirtschaftsinformatik Specialist Zertifizierung.
Outlook_03 - Freigabe von Postfächern für Kollegen
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Arbeiten mit Ordner und Dateien
Delphi II - OOP IFB Fortbildung
Präsentieren mit Powerpoint
Dateisysteme Marcel Waldvogel. Marcel Waldvogel, IBM Zurich Research Laboratory, Universität Konstanz, , 2 Dateisysteme Was ist eine Datei?
Typo 3. INSTALLATION TYPO3 INSTALLTOOL EXTENSIONS UND TEMPLATES INSTALLATION TEMPLAVOILA USERMANAGEMENT Inhalt:
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Wird ganz am Anfang der HTML-Datei geschrieben Doctype html public bedeutet, dass man sich auf die Öffentlichkeit der html-dtd bezieht Html ist die meist.
Überblick über die Datenbankproblematik
CGI (Common Gateway Interface)
OMDS-Einspielung in den KundenManager. Der Import beginnt im chegg.net-Kundenmanager. (Links oben über das Pulldown-Menu erreichbar).
Aus der Sicht eines Redakteurs Pflege von Textinhalten Pflege von Bilder – Bildverarbeitung Formulare Seiten anlegen / löschen -> Vorführung.
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
Bs Gemeinsame Datensegmente am Beispiel Solaris [Beachte: Unix/Linux setzen keine Hardware-Segmentierung voraus und sprechen daher statt von.
Domain Name Service Grundlagen, Implementierung im Active Directory und Integration von Win2k-Domains in bestehende Umgebungen Kay Sander.
Systemsoftware und Betriebssysteme
TYPO3 free Open Source content management system Einführung Verlinkungen.
Programmieren ... in C++ Prof. Dr.-Ing. Franz-Josef Behr, HfT Stuttgart Programmeiren I.
Vortrag: Frames & Javascript.
Gruppe 2 MEMORY MANAGEMENT Jakob Dietschy Arnold Huber
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
OQL-Anbindung an Java (1) Java als Beispiel für die Einbettung von OQL in eine Programmiersprache Die OQL-Einbettung in Java ist teilweise mit dynamischem.
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
7.2.4 Klassifikation mobilen Codes Nicht vergessen:  Sowohl das Fernkopieren als auch die Migration von Objekten setzt voraus, daß der Code entweder am.
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
2.3 Implementierung von Prozessen
Jakob Dietschy Arnold Huber Karl Philip Schneider Lukas Unterberger Daniel Dötzl Gruppe 2 MEMORY MANAGEMENT.
Bs-61 6 Dateiverwaltung. bs-62 Datei (file) = abstraktes Datenobjekt mit folgenden Eigenschaften:  persistent ( = langzeitgespeichert auf Platte oder.
Bs Implementierung der Dateiverwaltung Für hohe Effizienz: Caching – vielfach werden Kopien von Plattendaten für längere Zeit im Arbeitsspeicher.
2.2 Adressraumverwaltung Code und Daten Einfachster Fall: 0 length-1.
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
Bs Der Speicherverwalter Speicherverwalter (memory manager) = im einfachsten Fall ein Systemprozess, der für die Umlagerung der Seiten (page.
6.4.4 Berechtigungen (Capabilities)
Bs Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.
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 –
2.6 Erinnerung: Programmverwaltung Quellencode (getrennt übersetzbare Programmteile) (source code) Übersetzer (compiler, assembler) Objektcode
Betriebssysteme: Theorie
Geomapping. Themen Heute GeoJSON Paths Projections Features Daten beschaffen Projekte weiter bringen.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Executable and Linkage Format (ELF). Was ist ELF ● ELF ist das Standardformat für Binaries, Objektdateien und Shared Libraries unter den meisten *nixioden.
Das IT - Informationssystem
Google App Engine - Technische Stärken und Schwächen
 Präsentation transkript:

bs Dateien als Segmente Idee:Datei = persistentes Segment Konsequenzen:  Datei kann in virtuellen Adressraum eingeblendet werden (memory-mapped file)  keine spezielle Ein/Ausgabe für Dateien, kein Blockpuffer Geschichte:reicht zurück bis MULTICS (M.I.T )

bs Programmladen über Seitenfehler (demand-paged program loading) Code-Teil der Programmdatei wird wie Code-Segment im Sekundärspeicher behandelt: exec richtet Segmentstruktur des Prozesses ein (wie üblich), überträgt aber keinen Code in den Primär- oder Sekundärspeicher. In Unix erstmalig mit Version System V, heute bei den meisten Betriebssystemen üblich.

bs-6.53 Ablauf: 1. exec : Segmente des Prozesses einrichten (gemäß Beschreibung in Programmdatei) : Datei aktivieren: reqDesc liefert dno dno im Deskriptor des Code-Segments notieren (für Nicht-Code-Segmente ist dieses Feld 0) Seitendeskriptoren einrichten: - spezielle Markierung „von Datei einlagern“ - Blocknummer innerhalb der Datei 2.Ausgezeichnete Startseite einlagern und starten 3. Bei Bedarf – gesteuert durch Seitenfehler – Rahmen für einzelne Seite finden und Codeseite einlagern 4. Verdrängen erfolgt ohne physisches Kopieren

bs Dynamisches Binden (dynamic link libraries, DLLs, shared libraries) Varianten für das Einbinden von vorübersetzten Prozeduren, Modulen, Klassen etc. aus Bibliotheken:  statisch: nach der Übersetzung, vor dem Laden;  zur Ladezeit gemäß Angaben in Programmdatei: entsprechende Segmente einrichten bzw. mitbenutzen;  zur Laufzeit bei Bedarf – „dynamisch“.

bs-6.55  Binder (linker, linkage editor) entnimmt Code aus Bibliothek und fügt ihn mit dem anderen Code zusammen (mit Adressverschiebung und Auflösung externer Bezugnahmen); kein Sharing!  Bindender Lader (linking loader) bindet beim Laden und berücksichtigt dabei Codesegmente, die bereits von anderen Prozessen benutzt werden (  Sharing); Achtung:Adressierungsproblem, wenn nicht jeder Code einem bestimmten (virtuellen) Segment zugeordnet ist! Das tatsächliche Laden der Codesegmente erfolgt seitenweise bedarfsgesteuert, wie in skizziert, also nicht durch den Lader.

bs-6.56  Vertreterroutinen (stubs) für externe Prozeduren werden statisch eingebunden; sie veranlassen beim jeweils ersten Aufruf Segmenterzeugung bzw. -anbindung sowie entsprechende Aufrufumlenkung; die Bereitstellung des Codesegments erfolgt durch einen speziellen Systemaufruf (  6.5.3).

bs Einblenden beliebiger Dateien (memory-mapped files)  mittels geeigneter Systemaufrufe  erübrigt Blockpuffer (und damit Kopiervorgang!)  erübrigt Systemaufrufe read, write, seek  erübrigt eigenen Mechanismus für dynamisches Binden  erübrigt eigenen Mechanismus für Sharing (5.4.3  )5.4.3

bs ohne Capabilities addr = open(name,mode) (Segment/Datei einblenden) etabliert die Datei als Segment (falls nicht schon geschehen), d.h. richtet Segmentdeskriptor und Seitentabelle ein; blendet das Segment an geeigneter Stelle in den Adressraum ein und liefert die Adresse der ersten Zelle. Danach z.B. x = addr[0]; Zugriff auf erste Zelle... x = addr[37];... close(addr); Segment wird ausgeblendet, ggfls. in Datei zurückkopiert

bs-6.59 Beispiel Kopieren einer Datei: cp src dst... from = open(src, READING); stat(src,attr); length1 = attr.st_size; to = open(dst,WRITING); stat(dst,attr); length2 = attr.st_size; if(length2 == 0) for(int i=0; i<length1; i++) to[i] = from[i]; close(from); close(to);

bs Bemerkungen:  read, write, seek als einfache Bibliotheksroutinen  Semantik eines weiteren open ? (Datei über 2 virtuelle Segmente erreichbar??)  Ausnutzung in höheren Programmiersprachen: benutzerdefinierte Dateitypen möglich – und damit persistente Objekte.

bs mit Capabilities cap = lookup(name,mode) * etabliert die Datei als Segment (falls nicht schon geschehen), d.h. richtet Segmentdeskriptor und Seitentabelle ein, und liefert eine Berechtigung für dieses Segment (vgl  )

bs addr = map(cap) blendet das mit cap identifizierte Segment an geeigneter Stelle in den Adressraum ein und liefert die Adresse der ersten Zelle (vgl  ) unmap(addr) blendet das Segment wieder aus

bs Ähnlich in POSIX, Solaris, Linux,...: fildes = open(...); normales Öffnen einer Datei, fildes  Berechtigung a = mmap(addr,length,prot,flags,fildes,offset) blendet Datei in den Adressraum ein und liefert Adresse der ersten Zelle *. prot ist NONE oder Kombination von R,W,X. flags erlaubt u.a. SHARED, PRIVATE (private Kopie) munmap(a,length) blendet wieder aus (bis length )

bs und in Windows  Dateien sind – wie bei POSIX – sowohl normal als auch als memory-mapped files benutzbar  Berechtigungen für „File-Mapping-Objekte“ (  Segmente) kommen zum Einsatz  DLLs werden über diesen Mechanismus realisiert  Gemeinsame Segmente sind nur über diesen Mechanismus möglich

bs  fHandle = OpenFile(name,access,...) liefert open file handle  fmHandle = CreateFileMapping( fHandle, wenn –1, Segment ohne Datei... name) Segmentname liefert Berechtigung für Segment Für Sharing: statt Weitergabe des fmHandle auch fmHandle = OpenFileMapping(...,name)

bs  addr = MapViewOfFile(fmHandle,...) blendet das Segment an geeigneter Stelle ein und liefert Adresse der ersten Zelle. ODER mit explizitem Adressenwunsch: addr = MapViewOfFileEx(fmHandle,..., address)  x = addr[0]; usw.

bs  UnmapViewOfFile(addr) Ausblenden des Segments  CloseHandle(fmHandle) Berechtigung für Segment aufgeben  CloseHandle(fHandle) Berechtigung für Dateiobjekt aufgeben