bs-61 6.1.5 verzeichnisdateien anstelle eines zentralen verzeichnisses: menge von verzeichnisdateien...
TRANSCRIPT
![Page 1: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/1.jpg)
bs-6 1
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“
![Page 2: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/2.jpg)
bs-6 2
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
![Page 3: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/3.jpg)
bs-6 3
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
Wurzel:
in Unix verboten (um Zyklen zuvermeiden, die die Dateispeicher-verwaltung erschweren)
aal
bx
b
x
123
blay
fritz
![Page 4: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/4.jpg)
bs-6 4
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
![Page 5: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/5.jpg)
bs-6 5
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).
![Page 6: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/6.jpg)
bs-6 6
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),
![Page 7: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/7.jpg)
bs-6 7
absoluter Wegname: beginnt mit '/' und wird relativ zum aktuellen Wurzelverzeichnis interpretiert
relativer Wegname: beginnt ohne '/' und wird relativ zumaktuellen Verzeichnis interpretiert,
z.B. aktuelles Verzeichnis:
/usr/lohr
Wegname tmp/bla.txt
bedeutet /usr/lohr/tmp/bla.txt
![Page 8: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/8.jpg)
bs-6 8
chdir(path)
macht das Verzeichnis path zum aktuellen Verzeichnis
chroot(path)
macht das Verzeichnis path zum aktuellen Wurzelverzeichnis
(diese Systemfunktion ist dem
super-user root vorbehalten)
![Page 9: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/9.jpg)
bs-6 9
6.1.5.2 Erzeugen eines Verzeichnisses
mkdir(path,mode)
erzeugt ein Verzeichnis path mit Schutzstatus mode;
das Verzeichnis ist leer – bis auf Einträge für
"." und ".."
![Page 10: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/10.jpg)
bs-6 10
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 Verzeichnis dir, wenn der angegebene
Wegname path so aussieht: "dir/name„
![Page 11: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/11.jpg)
bs-6 11
unlink("dir/name")
löscht den Eintrag (name,.) im Verzeichnis dir
sofern name kein Verzeichnis ist
rmdir("dir/name")
löscht den Eintrag (name,.) im Verzeichnis dir
sofern name ein leeresVerzeichnis ist
(bis auf "." und ".." )
Zur Erinnerung: Ein Verzeichnis ist grundsätzlich nur über
einen Eintrag erreichbar.
![Page 12: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/12.jpg)
bs-6 12
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 !
![Page 13: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/13.jpg)
bs-6 13
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öffnetund gelesen durch Dienstprogramm ls;
ls kennt die interne Repräsentation der Datei (!) undweiß daher, wo die Namen zu finden sind;
ls –l erfragt die Attribute der Dateien
![Page 14: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/14.jpg)
bs-6 14
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 durch path identifizierten Dateiverweisdurch einen Verweis auf das Wurzelverzeichnisdes Dateisystems auf dem Gerät device
x y z
*
(aktuellesArbeitsverzeichnis:)
![Page 15: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/15.jpg)
bs-6 15
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 durch path identifizierten Dateiverweisdurch einen Verweis auf das Wurzelverzeichnisdes Dateisystems auf dem Gerät device
x y z mount("/dev/fd0","z",0)
a b c
*
(aktuellesArbeitsverzeichnis:)
![Page 16: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/16.jpg)
bs-6 16
! Der alte Dateiverweis geht nicht verloren:
umount(device)
macht mount(device,...) wieder rückgängig
! mount , umount stehen nur dem Super-User zur Verfügung !
In diesem Zusammenhang:
Bei link(path,alias)
müssen sich beide Argumente
auf das gleiche Dateisystem beziehen
![Page 17: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/17.jpg)
bs-6 17
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 alsBezugnahme auf die durch den Wegnamen benannte Datei interpretiert:
a
"x/a"
MyA
x
hard linksoft link
![Page 18: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/18.jpg)
bs-6 18
symlink(path,alias)
erzeugt eine indirekte Datei mit Namen alias
und Inhalt path, z.B. symlink("x/a","MyA")– auch wenn path bereits eine indirekte Datei ist!
link(path,alias)
mit indirekter Datei path :erzeugt eine indirekte Datei mit Namen alias
und Inhalt von path
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!
![Page 19: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/19.jpg)
bs-6 19
Operationen auf einer indirekten Datei path selbst:
unlink(path)
wie unlink für normale Dateien; damit wird dieindirekte Datei gelöscht – denn es gibt keinemehrfachen hard links auf soft links
lstat(path,&buffer)
analog zu stat
readlink(path,&buffer,bufsize)
liefert den Wegnamen in der indirekten Datei
![Page 20: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/20.jpg)
bs-6 20
6.1.7 Auflisten von Verzeichnissen
entweder mit Hilfe eines externen oder internen Iterators
oder durch 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 mittels stat auch die Attribute der Dateien erfragen kann.
![Page 21: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/21.jpg)
bs-6 21
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
l soft link letzte Änderungszeit
d Verzeichnis Größe in Bytes
Anzahl der hard links
![Page 22: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/22.jpg)
bs-6 22
6.1.8 Dateisysteme in Programmiersprachen
sind ansprechbar über Modul/Klassen-Bibliotheken
Typische Leistung einer solchen Bibliothek:
Abstraktion von den spezifischen Systemaufrufendes unterliegenden Betriebssystems
Manipulation getypter Daten
![Page 23: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/23.jpg)
bs-6 23
Java – einige wenige Beispiele aus java.io:
class File beinhaltet lediglich einen Wegnamenund erlaubt Abfragen über die sobenannte 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
![Page 24: Bs-61 6.1.5 Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet](https://reader036.vdocuments.pub/reader036/viewer/2022062623/55204d7f49795902118d0a98/html5/thumbnails/24.jpg)
bs-6 24
class InputStreamReader extends Reader
liest Zeichenfolgen von einem
angegebenen InputStream
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