Bs-6.31 6.3 Implementierung der Dateiverwaltung Für hohe Effizienz: Caching – vielfach werden Kopien von Plattendaten für längere Zeit im Arbeitsspeicher.

Slides:



Advertisements
Ähnliche Präsentationen
Ext2. Geschichte Minixerhebliche Beschränkungen extfs ext2erstmals aufhebung aller drängenden Beschränkungen ext3erweiterung um Journaling.
Advertisements

Support.ebsco.com Lernprogramm zum Erstellen einer lokalen Sammlung.
Webinar für [Name der Gruppe] [Name des Institutes]
Imperative Programmierung
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Polynomial Root Isolation
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Das LCA – Problem in Suffixbäumen
C Tutorium – Semaphoren –
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
Synonyme: Stapel, Keller, LIFO-Liste usw.
der Universität Oldenburg
Sequentielle Liste - Array
FH-Hof Deadlocks Richard Göbel. FH-Hof Deadlock - Definition Menge von Prozessen ist an einem Deadlock beteiligt: wenn jeder Prozess in dieser Menge auf.
Java: Dynamische Datentypen
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Infrared Link Management Protocol IrLMP Das Link Management erfüllt folgende grundlegende Aufgaben 1.Aufgabe von Primary und Secondary können getauscht.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (15 Hashverfahren: Verkettung der Überläufer) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung: Betriebssysteme © 2002 Prof. Dr. G. Hellberg 1 Studiengang Informatik FHDW Vorlesung Betriebssysteme 1. Quartal 2002.
1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Externe Datenstruktur lineare Liste
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
UNIX-Dateisystem Vortrag: Ronny Kuhnert am
DVG Felder1 Felder. DVG Felder 2 Was sind Felder? Felder sind Reihungen aus endlich vielen Elementen gleichen Typs. Z.B.: Vektoren : (x.
DVG Klassen und Objekte
Briefkopfbogen anpassen
Kapitel 2: Datenstrukturen
Seite 1 1 \\ Tracking Information System - Aufragsmanagement -
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Einführung in die Programmierung
Dateisysteme Marcel Waldvogel. Marcel Waldvogel, IBM Zurich Research Laboratory, Universität Konstanz, , 2 Dateisysteme Was ist eine Datei?
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Vom Kontext zum Projekt V Carina Berning Sabrina Gursch Pierre Streicher Intelligente Dateisysteme.
PG5 Building Advanced / DDC Suite 2.0 BACnet
Bs Gemeinsame Datensegmente am Beispiel Solaris [Beachte: Unix/Linux setzen keine Hardware-Segmentierung voraus und sprechen daher statt von.
Hilfe Dokumente.
Bs Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet.
Dateiverwaltung Um Mit der Dateiverwaltung zu beginnen klicken Sie zunächst auf den Wiki verwalten Button. Dann klicken Sie auf Dateien.
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
„Erstellen“ anklicken. Für Geräte mit gelben Aufkleber auf „Reparatur eines Gerätes mit Ident-Nummer“ anklicken. Erfahrene Ticket-Ersteller können „Direkterstellung“
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
Recovery    AIFB SS (1/6) Durchführung der Recovery-Maßnahmen(1/6) Transaktions-Fehler (TF) T1 T2 T3 Zeitt Transaktion T2 wird vom.
Vs51 5 Verteilte Datenverwaltung. vs52 Situation:Zusammengehöriger Datenbestand ist über mehrere Stationen verteilt, z.B. Fragmentierung: in mehrere Fragmente.
Bs-61 6 Dateiverwaltung. bs-62 Datei (file) = abstraktes Datenobjekt mit folgenden Eigenschaften:  persistent ( = langzeitgespeichert auf Platte oder.
Bs Dateien als Segmente Idee:Datei = persistentes Segment Konsequenzen:  Datei kann in virtuellen Adressraum eingeblendet werden (memory-mapped.
6.2 Repräsentation auf Platten
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)
Übung Betriebssystem, Uni Innsbruck 1 Projekt1: Prozesse unter Unix Teil I Grundlagen von Unix.
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 –
AG PC 2 Benutzerkonto einrichten „mein“ Server Dateien suchen und speichern.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Paed M L ® 3.x Regionale Lehrerfortbildung © Zentrale Planungsgruppe Netze am Kultusministerium Baden-Württemberg Groupwise 7/8 in der paedML Novell 3.x.
Klausur „Diskrete Mathematik II“
Music by Enya · Titel: „A day without rain“ (Instrumental)
Instalieren des Programm Updates mit dem Namen "Liebe"
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
 Präsentation transkript:

bs Implementierung der Dateiverwaltung Für hohe Effizienz: Caching – vielfach werden Kopien von Plattendaten für längere Zeit im Arbeitsspeicher gehalten: Dateitabelle (Unix: i-node table) enthält aktive Deskriptoren, d.h. von Dateien, die gerade in Benutzung sind (  Dateitabelle auf dem Datenträger!) Blockpuffer (Unix: buffer cache) enthält Kopien von Datenblöcken, Deskriptorblöcken, Superblöcken

bs-6.32 Temporäre Verwaltungsdaten, die kein Äquivalent auf dem Datenträger haben: Kanaltabelle enthält die Iteratoren für „offene“ sequentielle Dateien(6.1.2  )6.1.2 Mount-Tabelle enthält Einträge für die in den Dateibaum eingehängten Dateisysteme

bs-6.33 Temporäre Verwaltungsdaten, die kein Äquivalent auf dem Datenträger haben: Kanaltabelle enthält die Iteratoren für „offene“ sequentielle Dateien(6.1.2  )6.1.2 Mount-Tabelle enthält Einträge für die in den Dateibaum eingehängten Dateisysteme Verweisstruktur: Kanal- tabelle Mount- Tabelle Blockpuffer Datei- tabelle

bs-6.34 öffentlich Blockpuffer devno blkno owner block dirty Operationen geeignet synchronisiert ! weil Prozesse nebenläufig auf den Puffer und seine Einträge zugreifen B (Alles folgende für Beispiel Unix)

bs-6.35 bufno = reqBlock(devno,blkno) stellt sicher, dass der gewünschte Block sich im Puffer bufno befindet, und sperrt ihn; abstrahiert dabei von Pufferverwaltung, Ein/Ausgabe, Synchronisation Vor. (mit Warten!) B  devno,blkno .owner == null, falls Eintrag vorhanden; sonst: es existiert Eintrag mit owner == null Eff.:falls B  devno,blkno  vorhanden, B[bufno] == B  devno,blkno  && B[bufno].owner == current ; sonst B[bufno] == (devno,blkno,current, DISK[devno,blkno],false)

bs-6.36 Implementierung: benutzt Hilfsroutine getBlock(devno,blkno), die für Eintrag (devno,blkno,current,_,_) sorgt. bufno = req2Blocks(devno1,blkno1,devno2,blkno2) Vor./Eff. wie bufno = reqBlock(devno,blkno) - und evtl. Einlagerung gestartet für 2. Block

bs-6.37 saveBlock(bufno,sync) erzwingt sofortige Auslagerung von B[bufno].block Vor.: B[bufno].owner == current Eff.:wenn nicht sync : Auslagerung ist gestartet; sonst mit d == B[bufno].devno b == B[bufno].blkno : DISK[d,b] == B[bufno].block && B[bufno].owner==null && !B[bufno].dirty

bs-6.38 relBlock(bufno) gibt Position bufno im Blockpuffer frei (Entsperren) Vor.: B[bufno].owner == current Eff.: B[bufno].owner == null && Wenn Gerätetreiber mitteilt, dass Auslagerung des Blocks in Position bufno abgeschlossen ist: B[bufno].dirty löschen B[bufno].owner löschen Höhere Schichten modifizieren gepufferte Blöcke und dirty

bs Dateitabelle (interne Dateitabelle  externe Dateitabelle auf Datenträger!) dient zur Aufnahme der aktiven Dateideskriptoren, d.h. für diejenigen Dateien, auf die sich ein Kanal bezieht („offene“ Dateien). Aktiver Deskriptor = Deskriptor + Gerätenummer, Dateinummer, Verweiszähler *(Verweise aus Kanaltabelle), Status: file modified, descriptor modified, is mount point, owner,.....

bs Verwaltung ähnlich wie beim Blockpuffer, allerdings ohne Verdrängung devno filno refcnt status type file map öffentlich D

bs dno = reqDesc(devno,filno) stellt sicher, dass der gewünschte Deskriptor sich in der Tabelle befindet, und sperrt ihn; abstrahiert dabei von Tabellenverwaltung, Ein/Ausgabe von Deskriptoren, Synchronisation; liefert die Position des Deskriptors in der Tabelle. Vor.: D  devno,filno .owner == null, falls Eintrag vorhanden (mit Warten!) ; sonst: es existieren freie Positionen ( refcnt==0 ) Eff.:

bs Eff.:falls D  devno,filno  vorhanden: D[dno] == D  devno,filno  && D[dno].owner == current && D[dno].refcnt == 'D[dno].refcnt+1 sonst* 'D[dno].refcnt == 0 && D[dno] == (devno,filno,1,current,..., DISK[devno,S+filno/N][filno%N]) mit S = Nummer des ersten Blocks der Dateitabelle auf dem Datenträger, N = Anzahl der Deskriptoren je Block Implementierung:Falls Eintrag nicht vorhanden, reqBlock(devno,S+filno/N) usw.

bs relDesc(dno) gibt Deskriptor frei, ggfls. – wenn nicht mehr aktiv – mit Zurückschreiben auf den Datenträger und ggfls. – wenn Verweiszähler für Datei gleich 0 – mit Löschen von Deskriptor und Datei auf Datenträger Vor.: D[dno].owner == current || D[dno].owner == null Eff.: D[dno].owner == null && D[dno].refcnt == 'D[dno].refcnt-1 und wenn D[dno].refcnt == 0, dann wenn link count = 0, Löschen von.devno,.filno und Löschen auf Datenträger, sonstDeskriptor auf Datenträger ändern (Deskriptor bleibt zunächst in Tabelle!)

bs Implementierung: evtl. reqBlock, saveBlock für den Block, der den Deskriptor enthält, evtl.Platzfreigabe auf Datenträger mit deallocateBlock(devno,blkno) deallocateDesc (devno,filno) (  6.3.3)

bs Tertiärspeicherverwaltung für Blöcke und Deskriptoren mit Hilfe von Mount-Tabelle mit Einträgen für die bekannten Dateisysteme: devno root mtpt super block Blockpuffer (6.3.1) Dateitabelle (6.3.2) Mount- Tabelle

bs Blockverwaltung: bufno = allocateBlock(devno) reserviert Block auf Gerät devno (Blocknummer sei blkno ), trägt im Blockpuffer ein: (devno,blkno,current,0,1), markiert Superblock von devno als dirty; liefert Nummer des Blockpuffer-Eintrags. Implementierung: bufno = getBlock(devno,blkno) sorgt für Eintrag (devno,blkno,current,_,_) ; evtl. req/relBlock für Block, der auf weitere freie Blöcke verweist *.

bs deallocateBlock(devno,blkno) gibt Block blkno auf Gerät devno frei (der Block vermodert im Blockpuffer) Implementierung: evtl. req/relBlock analog zu allocateBlock

bs-6.3 Deskriptorverwaltung: dno = allocateDesc(devno) reserviert freie Position filno in der Dateitabelle auf devno, erzeugt und initialisiert entsprechenden aktiven Deskriptor (devno,filno,1,current,...) und liefert dessen Position. Implementierung: evtl. req/relBlock für externe Dateitabelle auf Gerät, um freie Stelle filno zu finden; dno = reqDesc(devno,filno) schafft Eintrag in interner Dateitabelle; partielle Initialisierung des Deskriptors (extern und intern) (z.B. type  0 bedeutet „belegt“).

bs deallocateDesc(devno,filno) gibt die Position für filno in der externen Dateitabelle von devno frei Implementierung: Übung!

bs Auflösung eines Wegnamens hat die Aufgabe, zu einem vorgegebenen, syntaktisch korrekten Wegnamen den zugehörigen Dateideskriptor in der internen Dateitabelle bereitzustellen: dno = path2dno(path) Vor.: path syntaktisch korrekt Eff.: D[dno] ist der Deskriptor der gesuchten Datei, gesperrt mit.owner = current

bs Implementierung: Die Einträge in einem Verzeichnis sind Paare (name, fileIndex). Ein mount point, d.h. eine Datei, die mit der Wurzel eines fremden Dateisystems überlagert wurde, ist am Status ihres Deskriptors erkennbar. In der Mount-Tabelle kann dann der Eintrag gefunden werden, der auf diesen Deskriptor verweist, und aus diesem Eintrag kann der Verweis auf den Deskriptor der Wurzel entnommen werden.

bs Implementierung – erfolgreiche Suche vorausgestzt: d = reqDesc(root) oder d = reqDesc(curdir) ; i = 0; b = reqBlock(devno, getblkno(i++,d)); search block b for name ; relBlock(b); (name, next file) found ? relDesc(d); d = reqDesc( next file ); path exhausted ? dno = d; no yes