Bs-61 6 Dateiverwaltung. bs-62 Datei (file) = abstraktes Datenobjekt mit folgenden Eigenschaften:  persistent ( = langzeitgespeichert auf Platte oder.

Slides:



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

Imperative Programmierung
der Universität Oldenburg
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:
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
C Tutorium – Semaphoren –
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Software Von Webmaster Mario.
Kapselung , toString , equals , Java API
Objektorientierte Programmierung
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
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.
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.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
DbjFileManager Paul Fruntzek Michael Stanek. Überblick Unterste Ebene im Schichtenmodell Schnittstelle zum BS (Low-Level) Aufgabenbereich: Persistente.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Programmierung 1 - Repetitorium
DVG Dateien. DVG Die Klasse File Die Klasse File stellt die Verbindung zwischen dem File-System des Rechners und dem JAVA-Programm her.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Datenströme DVG Datenströme.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Dateisysteme Marcel Waldvogel. Marcel Waldvogel, IBM Zurich Research Laboratory, Universität Konstanz, , 2 Dateisysteme Was ist eine Datei?
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
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.
Bs Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet.
EPROG Tutorium #6 Philipp Effenberger
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.
RelationentheorieObjektorientierte Datenbanken  AIFB SS C++-ODL (1/6) Erweiterung des deklarativen Teils einer C++-Klasse Datentypen d_String,
2.3 Implementierung von Prozessen
2 Datenabstraktion Geheimnisprinzip:
Bs Implementierung der Dateiverwaltung Für hohe Effizienz: Caching – vielfach werden Kopien von Plattendaten für längere Zeit im Arbeitsspeicher.
Bs Dateien als Segmente Idee:Datei = persistentes Segment Konsequenzen:  Datei kann in virtuellen Adressraum eingeblendet werden (memory-mapped.
6.2 Repräsentation auf Platten
Java-Kurs Übung Besprechung der Hausaufgabe
2.2 Adressraumverwaltung Code und Daten Einfachster Fall: 0 length-1.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
6.4.4 Berechtigungen (Capabilities)
Übung Betriebssystem, Uni Innsbruck 1 Projekt1: Prozesse unter Unix Teil I Grundlagen von Unix.
Dateisystem Eine Präsentation von Kay Rubner, Maximilian Magendanz und Toni Materne.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Einflußreiche Systeme Dr. Wolfgang Wörndl.
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Implementieren von Klassen
 Präsentation transkript:

bs-61 6 Dateiverwaltung

bs-62 Datei (file) = abstraktes Datenobjekt mit folgenden Eigenschaften:  persistent ( = langzeitgespeichert auf Platte oder anderem externen Datenträger)  identifizierbar über einen Dateinamen (Zeichenkette)  sprachunabhängig spezifiziert (mit Bytes, Bytefolgen, Ganzzahlen)

bs-63 Spezielle Dateitypen z.B.  sequentiell  indexsequentiell  Programm  Bibliothek  Verzeichnis ..... haben gemeinsamen Obertyp Datei mit Dateiattributen (file attributes) wie Dateigröße, Schutzstatus etc.

bs-64 Modell: DateiverzeichnisDateien fileCatalog: Map Attribute eigentliche Daten

bs Schnittstelle des Dateisystems ist Teil der Systemschnittstelle für Benutzerprozesse, vgl. 2.5 2.5

bs Allgemeine Dateioperationen („generische“ Operationen, zum Obertyp Datei gehörig, daher für alle Dateitypen verfügbar) operieren auf dem Dateiverzeichnis und den Dateiattributen: Operationen auf dem Dateiverzeichnis: Einträge hinzufügen, suchen, ändern, löschen Operationen auf den Dateiattributen: Attribute initialisieren, abfragen, ändern

bs Operationen auf dem Dateiverzeichnis (ohne Bezug auf bestimmtes Betriebssystem) Merke: Benutzer identifizieren Dateien grundsätzlich nur über die Namen – die Dateiverweise bleiben unsichtbar! create(name,type,mode)[creat u.a. ] erzeugt und initialisiert Datei name vom Typ type * mit Schutzstatus mode (  ) (d.h. erzeugt Dateiobjekt und Eintrag im Dateiverzeichnis). (Wenn Datei bereits vorhanden, Löschen des Dateiinhalts.) delete(name) gibt es nicht – sondern: Unix

bs-68 unlink(name)[unlink] löscht den Eintrag name im Dateiverzeichnis (und löscht die Datei, falls im Verzeichnis kein weiterer Verweis auf die Datei übrig bleibt und die Datei nicht in Benutzung ist). Fehler, wenn name im Verzeichnis nicht vorkommt link(name,alias)[link] generiert einen neuen Eintrag mit dem Namen alias für die bereits unter dem Namen name erreichbare Datei. Fehler, wenn name im Verzeichnis nicht vorkommt oder alias bereits im Verzeichnis vorkommt

bs-69 file = lookup(name) liefert Verweis auf die Datei name. Fehler, wenn name im Verzeichnis nicht vorkommt Achtung: diese Operation steht dem Benutzer nicht zur Verfügung; sie wird nur innerhalb des Betriebssystems benutzt. update(name,file) ist nicht vorgesehen.

bs Operationen auf Dateien Attribute initialisieren, abfragen, ändern class File { // Attribute: private String type; private String owner; private String group; private String protection; private int refcount; private int size; private int timeOfLastAccess; private int timeOfLastWriteAccess;.....

bs-611 status(name,&buffer)[stat] legt die Attribute der Datei name in buffer ab. Fehler, wenn name im Verzeichnis nicht vorkommt create(name,type,mode)[creat u.a. ] setzt bei Neuerzeugung der Datei (siehe  ) den Typ der Datei name auf type, owner auf den owner des ausführenden Prozesses, group auf die group des ausführenden Prozesses, protection auf mode, refcount auf 0, und in jedem Fall size auf 0, Zeiten auf aktuelle Zeit.

bs-612 chmod(name,mode)[chmod] setzt den Schutzstatus der Datei name auf mode chown(name,owner,group)[chown] setzt den Schutzstatus der Datei name auf mode utime(name,times)[utimes] setzt die Zugriffszeiten der Datei name auf times ! Ferner implizite Änderungen als Folge von Zugriffen auf die Dateiinhalte !

bs Sequentielle Dateien Modell: endliche Folge von Bytes Operationen:keine (an der Systemschnittstelle) – ausschließlich indirekter Zugriff über Kanal (2.3  ) (Unix: „open file description“),2.3 der als externer Iterator („Lese/Schreibfenster“) auf der Datei realisiert ist. In Pseudocode:

bs-614 interface Channel { void write(Bytes buf, int n);...} class Iterator implements Channel { private File file; private int position = 0; public Iterator(File f) { file = f; } public void write(Bytes buf, int n) {..... position += n; }...} class FileSystem { private Catalog catalog =...; public Iterator open(name,mode) { File f = catalog.lookup(name); return new Iterator(f); }...}

pos (Benutzerprozess) (Betriebssystem) Kanalnummern Kanallisten Iteratoren Dateien Verzeichnis Prozess p Prozess q file descriptor open file list* file table Unix-Terminologie

bs-616 Benutzung sequentieller Dateien in Unix: fd = open(name,flags) (vgl. 2.5  )2.5 erzeugt und/oder öffnet die sequentielle Datei name (bei Erzeugung: Initialisierung der Attribute wie bei creat ), d.h. erzeugt einen Iterator für die Datei und erteilt für dessen Benutzung die Lese/Schreibberechtigung gemäß flags und mode. Der Kanalverweis wird in die erste freie Stelle in der Kanalliste eingetragen; deren Index wird als Ergebnis geliefert.

bs-617 close(channel) macht die Kanalnummer channel ungültig. Falls dies die letzte gültige Nummer (auch von anderen Prozessen) für den dahinterstehenden Iterator war, wird dieser gelöscht. Falls in diesem Fall auch im Verzeichnis kein Eintrag für die Datei mehr vorliegt, wird die Datei gelöscht. fstat(channel,&buffer) wie stat(name,&buffer)

bs-618 Operationen des Iterators: read(channel,buffer,n) (vgl. 2.3  )2.3 liest maximal n Bytes, beginnend bei der aktuellen Position, versetzt die aktuelle Position um n und liefert die Anzahl der tatsächlich gelesenen Bytes. Fehler, falls channel nicht zum Lesen geöffnet wurde. Beachte:- Ein Iterator kann nebenläufig von mehreren Threads oder sogar Prozessen benutzt werden*! - Eine Datei kann nebenläufig über mehrere Iteratoren benutzt werden!

bs-619 write(channel,buffer,n) (vgl. 2.3  )2.3 schreibt n Bytes, beginnend bei der aktuellen Position, und versetzt die aktuelle Position um n Fehler, falls channel nicht zum Schreiben geöffnet wurde. Beachte:- Ein Iterator kennt nur eine Lese/Schreibposition! - Vorsicht beim Dateizugriff über mehrere Iteratoren, wenn Schreiben beteiligt! - Extreme Vorsicht, wenn Schreiben beteiligt bei nebenläufiger Benutzung von Iteratoren und/oder nebenläufigem Dateizugriff über mehrere Iteratoren !!

bs-620 Zum Beispiel:  2 Schreiber über gleichen Iterator: zufällige Verschränkung der Ausgaben droht.  2 Schreiber über verschiedene Iteratoren: Überschreiben von Daten droht !  Notwendigkeit der Sperrsynchronisation: advisory locking(Programm sperrt explizit) oder mandatory locking (automatisches Sperren) für ganze Dateien oder für Teilbereiche, mit Leser/Schreiber-Ausschluß

bs-621 Posix Standard:advisory locking mittels fcntl() Unix System V:mandatory locking über den Schutzstatus ( chmod() ) Solaris:ebenso Linux:sowohl als auch; mandatory locking kann für ein ganzes Dateisystem an- und ab- geschaltet werden.

bs-622 lseek(channel,offset,whence) (vgl. 2.5  )2.5 setzt die Lese/Schreibposition in dem über channel erreichbaren Iterator. Damit ist zusätzlich zum Standardzugriff – sequentiell – auch ein Direktzugriff möglich. Manche Systeme unterscheiden zwischen sequentiellen Dateien und Direktzugriffsdateien.

bs Indexsequentielle Dateien (indexed-sequential files) Modell: Abbildung Schlüssel  Daten bzw. endliche Tabelle mit Einträgen (Bytes,Bytes) Operationen: wie für tabellierte Abbildungen üblich: Einträge einfügen, suchen, fortschreiben, löschen, ferner iterieren (genauer: sequentielles Lesen) Historisch: „primitive Datenbank“. Die Bezeichnung „indexsequentiell“ reflektiert die Implementierung.

bs Programmdateien  Einerseits: Übersetzer/Binder erzeugt ein ausführbares Programm, indem er dessen Code + Daten + Verwaltungsinformation in eine sequentielle Datei schreibt.  Andererseits: exec(name) soll nur für „Programmdateien“ erlaubt sein  Gibt es einen Dateityp „Programmdatei“ und wie verhält sich dieser zum Typ „sequentielle Datei“ ?

bs-625  Vererbungshierarchie: Datei link... sequentiellindexsequentiell read... Programmdatei exec... Typischerweise weniger systematisch: „Typ Programmdatei“ wird durch speziellen Inhalt kenntlich gemacht, z.B. durch Beginn mit magic number

bs-626 Programmdatei enthält also  magic number  Beschreibung der Segmentstruktur  Code (Unix: „text“) + Konstanten  „statisch initialisierte“ Variable (Unix: „data“)  Startadresse