6 1 5 verzeichnisdateien
This presentation is the property of its rightful owner.
Sponsored Links
1 / 24

6.1.5 Verzeichnisdateien PowerPoint PPT Presentation


  • 49 Views
  • Uploaded on
  • Presentation posted in: General

6.1.5 Verzeichnisdateien. Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnis dateien (directory files), die selbst in Verzeichnissen verzeichnet sind, alle ab einem Wurzelverzeichnis (root directory) direkt oder indirekt erreichbar.

Download Presentation

6.1.5 Verzeichnisdateien

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


6 1 5 verzeichnisdateien

6.1.5 Verzeichnisdateien

Anstelle eines zentralen Verzeichnisses:

Menge von Verzeichnisdateien(directory files),

die selbst in Verzeichnissen verzeichnet sind,

alle ab einem Wurzelverzeichnis(root directory)

direkt oder indirekt erreichbar.

M.a.W.: Dateien bilden einen gerichteten Graphen,

meist zyklenfrei, häufig „Dateibaum“


6 1 5 verzeichnisdateien

  • Vorteile:

    • strukturierter statt flacher Namensraum,

    • mit effizienter Implementierung:

    • Dateien werden über Wegnamen im Graphen

    • (Pfadnamen, path names) identifiziert, d.h.

    • Folgen von verzeichneten Namen, z.B. /b/23/x


6 1 5 verzeichnisdateien

  • Vorteile:

    • strukturierter statt flacher Namensraum,

    • mit effizienter Implementierung:

    • Dateien werden über Wegnamen im Graphen

    • (Pfadnamen, path names) identifiziert, d.h.

    • Folgen von verzeichneten Namen, z.B. /b/23/x

b

aal

fritz

Wurzel:

x

x

b

y

23

bla

1

in Unix verboten (um Zyklen zu

vermeiden, die die Dateispeicher-

verwaltung erschweren)


6 1 5 verzeichnisdateien

  •  Verzeichnisdateien sind Dateien –

  • und haben daher die normalen Attribute von Dateien:

  •  differenzierter Zugriffsschutz

  • auf Teilbereiche des Namensraums

  •  Verwaltung von Zugriffszeiten

  • für Teilbereiche des Namensraums


6 1 5 verzeichnisdateien

Modell: Abbildung Zeichenkette  Dateiverweis (6.1.3 )

Operationen: Einträge einfügen, suchen, ändern, löschen

(6.1.1 )

und auflisten ( = interner Iterator),

aber ohne dass dabei Dateiverweise

in die Hände des Benutzerprogramms

geraten (6.1.1.1).


6 1 5 1 aktuelle verzeichnisse

6.1.5.1 Aktuelle Verzeichnisse

  •  (Unix:) Jedes Verzeichnis hat grundsätzlich

    • einen selbstbezüglichen Eintrag mit Namen"."

    • einen Eintrag für das Elternverzeichnis mit Namen".."

  •  (Unix:) Jeder Prozess hat Attribute

    • aktuelles Arbeitsverzeichnis(current working directory),

    • aktuelles Wurzelverzeichnis(current root directory),


6 1 5 verzeichnisdateien

  • absoluter Wegname:beginnt mit'/' und wird relativ zum

  • aktuellen Wurzelverzeichnis interpretiert

    • relativer Wegname: beginnt ohne'/' und wird relativ zum

  • aktuellen Verzeichnis interpretiert,

  • z.B. aktuelles Verzeichnis:

    /usr/lohr

    Wegnametmp/bla.txt

    bedeutet/usr/lohr/tmp/bla.txt


    6 1 5 verzeichnisdateien

    • chdir(path)

      • macht das Verzeichnispath

      • zum aktuellen Verzeichnis

    • chroot(path)

      • macht das Verzeichnispath

      • zum aktuellen Wurzelverzeichnis

      • (diese Systemfunktion ist dem

      • super-userrootvorbehalten)


    6 1 5 2 erzeugen eines verzeichnisses

    6.1.5.2 Erzeugen eines Verzeichnisses

    • mkdir(path,mode)

      • erzeugt ein Verzeichnispathmit Schutzstatusmode;

      • das Verzeichnis ist leer – bis auf Einträge für

      • "." und ".."


    6 1 5 3 eintr ge einf gen l schen

    6.1.5.3 Einträge einfügen/löschen

    • link (path,..)

    • creat(path,..)

    • mkdir(path,..)

    • ...

      • bewirken das Einfügen eines Eintrags(name,.)

      • in das Verzeichnisdir, wenn der angegebene

      • Wegnamepathso aussieht:"dir/name„


    6 1 5 verzeichnisdateien

    • unlink("dir/name")

      • löscht den Eintrag (name,.) im Verzeichnisdir

      • sofernnamekein Verzeichnis ist

    • rmdir("dir/name")

      • löscht den Eintrag (name,.) im Verzeichnisdir

      • sofernnameein leeresVerzeichnis ist

      • (bis auf "." und ".." )

    • Zur Erinnerung:Ein Verzeichnis ist grundsätzlich nur über

    • einen Eintrag erreichbar.


    6 1 5 4 eintr ge suchen auflisten

    6.1.5.4 Einträge suchen/auflisten

    • file = lookup(path)

      • liefert Verweis auf die Datei path.

    • Achtung: diese Operation steht dem Benutzer nicht

      • zur Verfügung; sie wird nur innerhalb des

      • Betriebssystems benutzt,

      • insbesondere zum Auflösen von Wegnamen !


    6 1 5 verzeichnisdateien

    • list(path)

      • zur Auflistung der Einträge müsste als interner Iterator

      • konzipiert werden – ist aber nicht vorgesehen.

    • Stattdessen:

      • Verzeichnisdatei wird wie sequentielle Datei geöffnet

      • und gelesen durch Dienstprogrammls;

      • lskennt die interne Repräsentation der Datei (!) und

      • weiß daher, wo die Namen zu finden sind;

      • ls –l erfragt die Attribute der Dateien


    6 1 5 5 eintr ge ndern

    6.1.5.5 Einträge ändern

    • Unix: Jeder externe Datenträger enthält ein eigenes

    • Dateisystem mit eigener, „lokaler“ Wurzel

    • mount(device, path, readonly)

      • ersetzt den durchpathidentifizierten Dateiverweis

      • durch einen Verweis auf das Wurzelverzeichnis

      • des Dateisystems auf dem Gerätdevice

    (aktuelles

    Arbeitsverzeichnis:)

    x y z

    *


    6 1 5 verzeichnisdateien

    6.1.5.5 Einträge ändern

    • Unix: Jeder externe Datenträger enthält ein eigenes

    • Dateisystem mit eigener, „lokaler“ Wurzel

    • mount(device, path, readonly)

      • ersetzt den durchpathidentifizierten Dateiverweis

      • durch einen Verweis auf das Wurzelverzeichnis

      • des Dateisystems auf dem Gerätdevice

    (aktuelles

    Arbeitsverzeichnis:)

    x y z mount("/dev/fd0","z",0)

    a b c

    *


    6 1 5 verzeichnisdateien

    • ! Der alte Dateiverweis geht nicht verloren:

    • umount(device)

      • machtmount(device,...) wieder rückgängig

    • ! mount , umountstehen nur dem Super-User zur Verfügung !

    In diesem Zusammenhang:

    Beilink(path,alias)

    müssen sich beide Argumente

    auf das gleiche Dateisystem beziehen


    6 1 6 indirekte dateien

    6.1.6 Indirekte Dateien

    • Indirekte Datei(soft link, symbolic link)

      • enthält statt regulärer Daten einen Wegnamen.

      • Bezugnahme auf eine solche Datei wird als

      • Bezugnahme auf die durch den Wegnamen

      • benannte Datei interpretiert:

    x

    soft link

    hard link

    "x/a"

    a

    MyA


    6 1 5 verzeichnisdateien

    • symlink(path,alias)

      • erzeugt eine indirekte Datei mit Namenalias

      • und Inhaltpath, z.B. symlink("x/a","MyA")

      • – auch wennpathbereits eine indirekte Datei ist!

    • link(path,alias)

      • mit indirekter Dateipath :

      • erzeugt eine indirekte Datei mit Namenalias

      • und Inhalt vonpath

    • Bemerkungen:

      •  Es gibt keine mehrfachen hard links auf soft links.

      •  Es kann Ketten von indirekten Dateien geben.

      •  Eine indirekte Datei kann auf eine nicht existierende

      • Datei verweisen!


    6 1 5 verzeichnisdateien

    Operationen auf einer indirekten Dateipathselbst:

    unlink(path)

    wieunlinkfür normale Dateien; damit wird die

    indirekte Datei gelöscht – denn es gibt keine

    mehrfachen hard links auf soft links

    lstat(path,&buffer)

    analog zu stat

    readlink(path,&buffer,bufsize)

    liefert den Wegnamen in der indirekten Datei


    6 1 7 auflisten von verzeichnissen

    6.1.7 Auflisten von Verzeichnissen

    • entweder mit Hilfe eines externen oder internen Iterators

    • oderdurch ein Dienstprogramm (Unix:ls),

      •  das das Verzeichnis als sequentielle Datei liest,

      •  dessen interne Repräsentation kennt,

      •  somit die Namen der Einträge auflisten kann

      •  und mittelsstatauch die Attribute

      • der Dateien erfragen kann.


    6 1 5 verzeichnisdateien

    jefe: ls -l

    total 40

    -rw------- 1 lohr institut 7342 Jun 16 20:50 Text

    lrwxrwxrwx 1 lohr institut 4 Jun 16 21:00 alias -> Text

    drwx------ 2 lohr institut 14 Jun 16 20:57 dir

    -rw------- 3 lohr institut 266 Jun 16 21:18 foo

    -rw------- 3 lohr institut 266 Jun 16 21:18 foo1

    -rw------- 3 lohr institut 266 Jun 16 21:18 foo2

    - sequentiell Eigner Eignergruppe Name Inhalt

    lsoft link letzte Änderungszeit

    d Verzeichnis Größe in Bytes

    Anzahl der hard links


    6 1 8 dateisysteme in programmiersprachen

    6.1.8 Dateisysteme in Programmiersprachen

    sind ansprechbar über Modul/Klassen-Bibliotheken

    • Typische Leistung einer solchen Bibliothek:

      • Abstraktion von den spezifischen Systemaufrufen

      • des unterliegenden Betriebssystems

      •  Manipulation getypterDaten


    6 1 5 verzeichnisdateien

    Java – einige wenige Beispiele aus java.io:

    class File beinhaltet lediglich einen Wegnamen

    und erlaubt Abfragen über die so

    benannte Datei – sofern vorhanden

    abstract class InputStream

    ist Oberklasse für diverse „ungetypte“

    – d.h. byteorientierte – Eingabeklassen

    für sequentielles Lesen

    class FileInputStream extends InputStream

    ermöglicht das Lesen von Bytes und

    Bytefolgen aus einer sequentiellen Datei


    6 1 5 verzeichnisdateien

    class InputStreamReader extends Reader

    liest Zeichenfolgen von einem

    angegebenenInputStream

    class DataOutputStream extends Writer

    schreibt Daten aller primitivenTypen

    in einen angegebenen OutputStream

    class PrintWriter extends Writer

    schreibt Daten aller Typen als

    Zeichenketten in einen angegebenen

    OutputStream


  • Login