Blöcke und S

Werbung
© H.-U. Hei§, Uni Paderborn
Speichermedien
8 Dateiverwaltung
Dateien sollen
¥
auf nichtflŸchtigem Medium mit relativ
¥
geringen Zugriffszeiten und zu
¥
geringen Kosten
8.1 Aufgabenstellung
Benštigt wird eine lŠngerfristige Lagermšglichkeit fŸr gro§e Datenmengen
¥
gespeichert werden und
¥
lesenden und schreibenden Zugriff erlauben
Dateien (logische Betriebsmittel)
Eine Datei ist eine Sammlung nicht nŠher spezifizierter logischer Dateneinheiten,
der SŠtze (records)
Je nach Anforderung des Einsatzgebiets unterstŸtzt ein Dateisystem
Ð
Ð
Ð
Ð
Ð
© H.-U. Hei§, Uni Paderborn
Konstant oder variabel lange SŠtze
Dynamisch umfangsverŠnderliche Dateien
VerŠnderliche innere Struktur der Dateien
Variable Anzahl von Dateien auf einem TrŠger
Evtl. Ÿbergro§e Dateien auf mehreren TrŠgern
Das dafŸr am besten geeignete Medium ist (zur Zeit) die Magnetplatte
¥
FŸr kleinere Datenmengen auch:
Diskette
¥
FŸr gro§e Datenmengen zum Archivieren:
Magnetband(kassette)
¥
Zum Archivieren oder fŸr nur lesenden Zugriff:
CD-ROM
Wir werden uns im folgenden am Plattenspeicher als dem wichtigsten Speichermedium fŸr
Dateien orientieren.
Disketten und CD-ROM besitzen einen Šhnlichen Aufbau wie der Plattenspeicher
Lediglich MagnetbŠnder unterscheiden sich wesentlich, weil sie aufgrund ihrer
eindimensionalen Struktur nur sequentiellen Zugriff erlauben
8-1
8-2
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
8.2Dateien auf Plattenspeicher
Blšcke und SŠtze
Aufbau der Blšcke
Blšcke sind die Elementareinheiten des Plattenspeichers (physikalische Einheiten),
wŠhrend SŠtze die Elementareinheiten der Dateien darstellen (logische Einheiten).
Blšcke (oder Sektoren) sind die kleinsten adressierbaren Einheiten des Plattenspeichers.
Wenn SŠtze beliebige LŠnge haben sollen, benštigen wir eine flexible Zuordnung von
SŠtzen zu Blšcken.
Sie sind rŠumlich getrennt durch sogenannte BlocklŸcken (gaps)
Jeder einzelne Block enthŠlt neben dem Datenfeld
¥
eine Blockkennung, die im einfachsten Fall aus seiner physikalischen Lage resultiert
¥
PrŸffelder zur Fehlererkennung
Bei konstanter SatzlŠnge wird das VerhŠltnis von Block- und SatzlŠnge als
Blockungsfaktor f bezeichnet
Beispiel:
Lücke
Synch
byte
Spur
Nr.
1
2
Satz 1
Satz 2
Block 1
Block 2
f=1
Block-ID
Lücke
Kopf Sektor CRC
Nr.
Nr.
1
1
2
Daten
Lücke
Blocklänge 600 Bytes
Synch
byte
Daten
CRC
1
512
1
8-3
S1
S2
S3
S4
S5
S6
S7
S8
f=4
Block
1
Block 2
Satz 1. Hälfte
Satz 2. Hälfte
Block 1
Block 2
8-4
f = 1/2
© H.-U. Hei§, Uni Paderborn
Blšcke und SŠtze
© H.-U. Hei§, Uni Paderborn
Belegung eines Plattenspeichers
SŠtze mŸssen jedoch keine konstante LŠnge haben
Blöcke (Sektoren)
Es sind folgende Satzformate mšglich:
konstant
S1
Spuren Plattenetikett
S2
S3
Zylinder
S4
Belegungsdarstellung
variabel
BL 1 SL1
S1 SL2
S2
BL 2 SL 3
S3 SL4
S4
Datei
unbestimmt
S1
S2
S3
S4
Inhaltsverzeichnis
S5
Datei
Es ist auch mšglich, da§ Ÿberhaupt keine Satzstruktur vorliegt, d.h. eine Datei ist eine
(unstrukturierte) Folge von Zeichen (z.B. bei Unix)
Datei
8-5
8-6
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Belegungsdarstellung (freie und belegte Blšcke)
Plattenetikett
¥
Vektor- oder Tabellenverfahren (siehe Vorlesung KMS Kap. 5)
¥
Dicht oder gestreut gespeichert (siehe Vorlesung KMS Kap. 5)
¥
Bezeichnung des TrŠgers
¥
Datum der Inbetriebnahme
¥
KapazitŠt
¥
Physikalische Struktur
Vektor (Bitmap) fŸr belegte und freie Blšcke, getrennt fŸr jeden Bereich
(zur Minimierung der Armbewegungen)
¥
BeschŠdigte Blšcke
1100010110100000
¥
Verweis auf Belegungsdarstellung (oder diese selbst)
¥
Verweis auf Inhaltsverzeichnis (oder dieses selbst)
Beispiel:
Bereich, z.B. Zylinder
1100000000000111
1100111100011000
liegt an wohldefinierter Stelle (erster Block) und wird bei Inbetriebnahme angelegt
8-7
8-8
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Freispeicherliste
8.3 Inhaltsverzeichnis (Dateikatalog, file directory)
als abgesetzte Tabelle
Das Inhaltsverzeichnis enthŠlt die Liste der auf der Platte gespeicherten Dateien mit ihren
Beschreibungen
Adresse
(Block-Nr.)
¥
Länge
3
16
1
2
3
4
5
6
7
8
22
9
9
10
11
12
13
14
15
16
32
10
17
18
19
20
21
22
23
24
44
9
25
26
27
28
29
30
31
32
57
8
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Tabelle
Platte
Flache Verzeichnisstruktur
Im einfachsten Fall besteht es aus einer einfachen (eindimensionalen) Tabelle
Dateibeschreibung
konstant oder
variabel lang
Bei gro§en Platten und vielen Dateien ist die flache Struktur zu unhandlich
(sowohl fŸr den menschlichen Benutzer als auch fŸr zugreifende Programme)
8-9
8-10
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Inhaltsverzeichnis (Dateikatalog, file directory)
Dateibeschreibung
Strukturierte Verzeichnisse (†blicherweise Selektorbaum)
Die Dateibeschreibung enthŠlt alle die Datei betreffenden Informationen
Eingang in
Dateikatalog
A
B
E
Evtl. weitere Blöcke
Datei
B
R
S
A
Datei
A.R
D
T
Datei
E.T
Datei
E.A
X
Datei
A.S.X
Y
X
Datei
A.S.Y
Datei
E.D.X
8-11
Y
Datei
E.D.Y
¥
Dateiname
¥
Organisationsform
¥
Erstellungsdatum
¥
EigentŸmer
¥
Zugriffsrechte
¥
Zeitpunkt des letzten Zugriffs
¥
Zeitpunkt der letzten €nderung
¥
Lage der Datei(teile)
¥
Grš§e
8-12
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Zugriffsrechte
8.4 Dateiorganisation
Zugriffsrechte werden vom EigentŸmer, der in der Regel der Erzeuger der Datei ist,
festgelegt.
Die Dateiorganisation betrifft die innere Struktur einer Datei.
Sie legt fest, in welcher Weise auf die einzelnen SŠtze zugegriffen wird.
Sind als Rechte Lesen (L) und Schreiben (S) vorgesehen,
so kšnnten die Zugriffsrechte folgenderma§en spezifiziert sein:
Datei 1
Datei 2
Man unterscheidet
Datei 3
Datei 4
¥
Sequentielle Dateiorganisation
Die SŠtze werden sequentiell zugegriffen
L,S
¥
Direkte Dateiorganisation
Wahlfreier Zugriff auf beliebige SŠtze
¥
Indexsequentielle Dateiorganisation
Sowohl sequentieller als auch wahlfreier Zugriff
Benutzer(gruppe) A
L,S
S
Benutzer(gruppe) B
L
L,S
L
Benutzer(gruppe) C
L
L
Benutzer(gruppe) D
L
Weitere mšgliche Rechtedifferenzierung
¥
AusfŸhren (bei Programmdateien)
¥
€ndern der Zugriffsrechte (dem EigentŸmer vorbehalten)
¥
Schreiben differenziert in ãupdateÒ oder ãappendÒ
¥
Lšschen
¥
Kenntnis
Mehrere Organisationsformen kšnnen gleichzeitig angeboten und auf eine
Basisorganisationsform abgebildet werden
8-13
8-14
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
8.4.1 Sequentielle Dateiorganisation
Sequentielle Dateiorganisation
Es existiert eine Reihenfolge der SŠtze, durch die der Zugriff festgelegt wird.
Ein Schreiben auf die Datei ist in der Regel nur durch AnfŸgen am Dateiende mšglich.
Sie ist die zwingende Organisationsform fŸr Dateien auf MagnetbŠndern.
Nur wenn man einen Satz durch einen anderen Satz gleicher LŠnge ersetzt, kann auch
innerhalb der Datei geschrieben werden
Sie kann natŸrlich auch bei Plattenspeichern eingesetzt werden.
Dateianfang
S4
Es gibt einen Zeiger, der durch spezielle Operationen explizit oder implizit bewegt werden
kann
S1
Ein Zugriff (z.B. Lesen) bezieht sich auf die jeweilige Position des Zeigers:
Dateianfang
S1
S4
S2
S3
S4
S5
S6
S7
S8
8-15
S3
S4
S5
S6
S7
S8
S9
altes neues
Dateiende
Meist gibt es explizite Operationen, um den Zeiger zu bewegen:
¥
¥
¥
alte neue
Position des Zeigers
S2
Ersetzen
(update in place)
next
previous
reset
Zeiger um Satz vorsetzen
Zeiger um einen Satz rŸcksetzen (oft nicht vorhanden)
Zeiger auf Dateianfang setzen
8-16
anfügen
(append)
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Sequentielle Dateien auf Plattenspeicher
Sequentielle Dateien auf Plattenspeicher
Beim Plattenspeicher hat man zur Speicherung sequentieller Dateien einige
Wahlmšglichkeiten:
¥
¥
Blšcke direkt verkettet
S1
S2
S3
ZusammenhŠngende Speicherung
S4
Die Datei belegt aufeinanderfolgende Blšcke auf der Platte
¥
Gestreute Speicherung
S7
Die Datei belegt beliebige Blšcke der Platte
¥
S9
S1
S2
S3
Verkettung (chaining)
-
¥
S6
Blšcke Ÿber Indexblock verwaltet
Die Reihenfolge der Blšcke kann auf zwei Arten realisiert werden
¥
S8
S5
S4
direkte (integrierte) Verkettung der Blšcke
abgesetzte Verkettung in einer Tabelle (z.B. FAT in MS-DOS / Windows)
Indexblšcke
S7
8-17
S8
S5
S9
8-18
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Beispiel
8.4.2 Direkte Dateiorganisation
¥
MS-DOS verwendet abgesetzte Verkettung.
Direkter Zugriff auf einen Satz einer Datei mittels eines SchlŸssels.
¥
Die Verkettung wird in einer File Allocation Table (FAT) vorgenommen, die fŸr jeden
Block einen Eintrag vorsieht.
¥
Aus LeistungsgrŸnden mu§ sie permanent im Hauptspeicher gehalten werden.
Verzeichniseintrag
....
„xyz“
235
Name
1. Block
S6
0
ki
Si
Satz
Schlüssel
Berechnung der Adresse (Block- oder Spurnummer) des Satzes auf Grund des
SchlŸssels.
129
567
235
129
298
EOF
Die berechnete Adresse (Blocknummer) mu§ nicht notwendigerweise die physikalische
Blocknummer sein. Es ist noch ein weiterer Abbildungsschritt denkbar.
567
298
Blšcke oder Spuren dienen als BehŠlter fŸr mehrere SŠtze,
d.h. fŸr alle, die auf dieselbe Hashadresse abgebildet werden.
⇒ Hashfunktion
ai = f ( ki ),
z.B. ai = ki mod n
File Allocation Table
Erst bei †berlaufen des BehŠlters mu§ eine Kollisionsauflšsung stattfinden
8-19
8-20
© H.-U. Hei§, Uni Paderborn
Direkte Dateiorganisation
V
S
S
S
Direkte Dateiorganisation
S
S
ai = f ( ki )
S
S
V
S
S
V
S
S
S
¥
Bei beliebig wachsenden Dateien lŠuft die Hashtabelle irgendwann voll.
¥
Dann ist eine aufwendige Reorganisation (Umspeichern) erforderlich.
¥
Um dies zu vermeiden, kann man das erweiterbare (extendible) Hashing einsetzen
¥
Es erlaubt eine inkrementelle Erweiterung der Hashtabelle ohne Umspeichern
¥
Dazu benštigt man eine zusŠtzliche Indirektionsstufe,
d.h. die Hashabbildung fŸhrt zunŠchst in eine Komponente eines Vektors von Zeigern
¥
Als Hashfunktion verwendet man ai = ki mod 2 g ,
d.h. die SchlŸssel werden nach ihren letzen g Dualstellen diskriminiert.
¥
LŠuft nun ein BehŠlter Ÿber, so wird ein neuer BehŠlter angelegt und der Inhalt auf
beide BehŠlter gemŠ§ der ãverfeinertenÒ Hashfunktion verteilt.
¥
Um die korrekte Adressierung zu gewŠhrleisten,
wird g um eins erhšht (LŠnge des Zeigervektors verdoppelt sich),
und die Zeiger mŸssen entsprechend umgesetzt werden
S
V
V
© H.-U. Hei§, Uni Paderborn
S
Blöcke oder Spuren
V
Kollisionsauflšsung z.B. linear durch
ai+1 = ( ai + d ) mod n
8-21
8-22
© H.-U. Hei§, Uni Paderborn
Beispiel: Vor Erweiterung (SchlŸssel 43 wird eingetragen)
g
Zeiger
b=2
g max
2
2
2
24
16
92
8.4.3 Indexsequentielle Dateiorganisation
g max = 2
=4
2
13
49
© H.-U. Hei§, Uni Paderborn
Manche Datenmengen mŸssen sowohl sequentiell als auch direkt verarbeitet werden (zu
unterschiedlichen Zeitpunkten)
Verweisvektor
22
18
19
15
31
27
Dies fŸhrt zu einer Mischform von sequentieller und direkter (indizierter) Organisation,der
indexsequentiellen Dateiorganisation.
Zwar sind die SŠtze der Datei sequentiell auf dem Speichermedium abgelegt,jedoch wird
zusŠtzlich durch entsprechende Datenstrukturen ein direkter Zugriff unterstŸtzt.
Datenblöcke
In ihrer Urform wird lediglich eine Indexstufe verwendet, in der die jeweils grš§ten
SchlŸssel eines Blocks gehalten werden
Nach Erweiterung
g
b = 2 max = 8
g max = 3
S4
g
Zeiger
24
16
92
2
2
13
49
8-23
2
3
2
22
18
2
2
19
27
43
3
S7
S12
S15
S18
Verweisvektor
15
31
Datenblöcke
S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16 S17 S18
8-24
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Indexsequentielle Organisation
B*-BŠume
Im dynamischen Betrieb (EinfŸgen und Lšschen von SŠtzen) treten natŸrlich Probleme
auf, da Blšcke Ÿberlaufen kšnnen.
Die Verzeigerung bei Verwendung von †berlaufblšcken kann die Zugriffszeit zu einzelnen
SŠtzen drastisch erhšhen.
Dann mŸssen †berlaufblšcke angelegt und entsprechende Verzeigerungen angebracht
werden.
Besser sind Datenstrukturen, bei denen Wachsen und Schrumpfen von vornherein
vorgesehen sind.
S4.2
S4
Der B*-Baum ist eine Variante des B-Baums. Er enthŠlt die SŠtze in den BlŠttern.
S12.3
S7
S12
S15
S18
Die internen Knoten enthalten nur SchlŸssel und dienen nur der Zugriffsbeschleunigung.
BezŸglich FŸllungsgrad und Formerhaltung entspricht der B*-Baum dem B-Baum
41
S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16 S17 S18
19
S4.1 S12.1 S12.2 S4.2 S12.3
Überlaufblock
13 14 17 19
31
23 24 29 31
8-25
71
37 41
43 71
73 79
8-26
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Eigenschaften des B*-Baums
EinfŸgen in B*-Baum
Die Knoten entsprechen den Blšcken auf der Platte.
¥
Normalfall:
Jeder Knoten (Block) ist mindestens zur HŠlfte gefŸllt
¥
†berlauffall:
Sei
¥
¥
ci
die Anzahl SchlŸssel in einem internen Knoten i
m
der minimale FŸllungsgrad fŸr interne Knoten (min. Anzahl SchlŸssel)
ci*
die Anzahl SŠtze in einem Blattknoten i
Nachbar hat genŸgend Platz:
Nachbarn sind voll:
31
16
m ≤ ci ≤ 2 m
m ≤
*
und fŸr alle BlŠtter i:
Ausgleich mit Nachbarn
Knoten teilen (neuen Block belegen)
B*-Baum nach EinfŸgen eines Satzes mit SchlŸssel 16
(Knotenteilung auf Blattebene, Knotenausgeich auf Ebene darŸber))
m* der minimale FŸllungsgrad fŸr BlŠtter (min. Anzahl SŠtze)
Dann gilt fŸr alle internen Knoten i (au§er der Wurzel):
Im Knoten ist noch Platz
ci*
13 14 16
41 71
19
17 19
23 24 29 31
37 41
≤ 2m *
(FŸr das vorangegangene Beispiel gilt m = 1, m* = 2.)
8-27
8-28
43 71
73 79
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Wie hoch werden B*-BŠume ?
Lšschen im B*-Baum
9
Sozialversicherung in China mit ca. 10 EintrŠgen
¥
Normalfall:
¥
Rekonfigurationsfall (Knoten unterschreitet HalbfŸllung):
¥
¥
Knoten bleibt mindestens halbvoll
Nachbar mehr als halbvoll:
Nachbarn halbvoll:
Bei 40 Byte pro Eintrag (SchlŸssel und Zeiger) und einer Blockgrš§e von 4096 Byte ergibt
sich ein AuffŠcherungsgrad von t = 4096 40 ≈ 10 2 (Anzahl SchlŸssel pro Knoten)
102
Ausgleich mit Nachbarn
Mit einem Nachbarnoten vereinigen
(Block freigeben)
104
B*-Baum nach Lšschen eines Satzes mit SchlŸssel 71 (Knotenvereinigung auf
Blattebene)
106
31
16
13 14 16
108
41
19
17 19
1010
23 24 29 31
37 41
Ein B*-Baum der Hšhe 4 reicht aus
43 73 79
8-29
8-30
© H.-U. Hei§, Uni Paderborn
8.5 Dateibetrieb
© H.-U. Hei§, Uni Paderborn
Dateikontrollblock
Operationen auf Dateien
Der Betrieb einer Datei erfordert einige Verwaltungsinformation:
¥
Erzeugen
¥
¥
Positionszeiger
¥
aktuelle Blockadresse
¥
Verweise auf Puffer (im Hauptspeicher)
¥
FŸllgrad der Puffer
¥
Sperrinformation
…ffnen
¥
¥
¥
¥
Lesen
Schreiben
RŸcksetzen
Sperren
¥
Schlie§en
¥
Parameter lesen
¥
Parameter setzen (Zugriffsrechte)
Diese Daten werden im Dateikontrollblock (file control block, FCB) abgelegt.
¥
Der FCB ist eine Datenstruktur, die beim …ffnen einer Datei angelegt
und beim Schlie§en wieder gelšscht wird.
Lšschen
Der Proze§kontrollblock enthŠlt Verweise auf die Dateikontrollblšcke der von diesem
Proze§ gešffneten Dateien.
8-31
8-32
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Gemeinsame Nutzung von Dateien
Pufferung
Eine Datei kann von mehreren Prozessen gleichzeitig genutzt werden
¥
Da hŠufig Daten mehrfach zugegriffen werden, z.B. Indexblšcke, lohnt es sich,
Plattenblšcke im Hauptspeicher zu puffern. (Platten-Cache)
¥
Einige Betriebssysteme verwenden den gesamten sonst ungenutzten Hauptspeicher
als Plattencache (z.B. Linux)
Da der Dateikontrollblock sowohl Informationen enthŠlt, die die Datei als ganzes betreffen
als auch solche, die nur den jeweiligen Benutzer betreffen, kann man folgenderma§en
vorgehen:
(Auch moderne Plattencontroller haben hŠufig einen internen, transparenten Cache)
gemeinsam genutzte Datei
PCB1
FCB
FCB
FCB
¥
Bei jedem Zugriff auf einen Plattenblock wird daher zunŠchst im Puffer nachgesehen,
ob der Block schon vorhanden ist.
¥
Als Auslagerungsstrategie bei Platzmangel kommen dieselben Algorithmen in Frage
wie beim virtuellen Speicher (LRU, FIFO..)
¥
Wenn ein modifizierter Plattenblock jedoch erst im Rahmen einer Auslagerung auf die
Platte geschrieben wird, besteht die Gefahr des Verlustes (bei Systemabsturz,
Stromausfall)
¥
Wichtige Blšcke, von deren AktualitŠt die Konsistenz des Dateisystems abhŠngt
(Verzeichnisblšcke, Indexblšcke) sollten daher sofort gerettet werden.
¥
Sequentieller Zugriff kann beim Puffern ausgenutzt werden: Read-Ahead und FreeBehind
FCB‘
gemeinsamer Teil
PCB2
FCB
FCB
8-33
8-34
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
8.6 Beispiel: Unix-Dateisystem
Dateien in Unix
¥
Hierarchisch
¥
Bytestring
-
¥
Beliebig addressierbar
¥
Eigenschaftsloser Inhalt
¥
Form und Inhalt durch Benutzer definiert
¥
Baumstruktur
Dateikataloge als interne Knoten
Dateien als BlŠtter
Keine Restriktionen bez. Breite und Tiefe
Einheitlich
-
¥
Maximale Dateigrš§e im Gigabyte-Bereich
Nahezu alle Systemobjekte werden als Dateien dargestellt bzw. Ÿber die
Dateischnittstelle benutzt (Dateien, Kataloge, Kommunikationsobjekte, GerŠte)
¥
BeschrŠnkt auf einen logischen DatentrŠger
syntaktische Gleichbehandlung aller Typen, semantische soweit mšglich
¥
Schutz durch Rechte
daher Programme unabhŠngig von Objekttyp
¥
Einfach
-
Nur wenige, aber flexible Dateioperationen
Einfache Dateistruktur
8-35
r
w
e
Leserecht (read)
Schreibrecht (write)
Recht zum AusfŸhren (execute)
spezifisch fŸr user, group, world
8-36
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Der Inode (Index-node)
direkt
0
1
2
3
4
5
6
7
8
9
10
11
12
Jede Datei ist beschrieben durch einen sogenannten Inode. Er reprŠsentiert die Datei.
Er enthŠlt
¥
Owner (UID, GID)
¥
Rechte
¥
Erzeugungsdatum
¥
Datum der letzten €nderung
¥
Grš§e
¥
Typ (Datei, Verzeichnisdatei, GerŠt, Pipe,...)
¥
Feld fŸr baumartige Zugriffsstruktur
:
einfach
indirekt
:
:
zweifach
indirekt
:
:
Zugriffsstruktur
des Inode
(Verweise auf die Datenblšcke)
:
dreifach
indirekt
Inodes werden fŸr jedes Dateisystem in einer Tabelle gehalten
:
8-37
8-38
© H.-U. Hei§, Uni Paderborn
Verzeichnisse (Kataloge, Directories)
¥
¥
Verzeichnisse werden als normale Dateien gehalten, nur der Eintrag im Typ-Feld
kennzeichnet die Datei als Verzeichnis
© H.-U. Hei§, Uni Paderborn
Verzeichnisse (Directories)
¥
Jedes Verzeichnis beginnt mit dem Eintrag ".", das den Inode des aktuellen
Verzeichnisses angibt.
¥
Der zweite Eintrag ist ".." und verweist auf das Ÿbergeordnete Verzeichnis
¥
Der Pfadname wird von links nach rechts aufgelšst,
und der jeweilige Name wird im Verzeichnis gesucht.
¥
Solange es nicht der letzte Name des Pfades ist, mu§ es sich um ein Verzeichnis
handeln. Falls nicht, bricht die Suche mit einem Fehler ab.
Ein Eintrag enthŠlt
¥
¥
¥
LŠnge des Eintrags
Name (variable LŠnge bis 255 Zeichen)
Inode-Nummer
¥
Mehrere VerzeichniseintrŠge kšnnen auf denselben Inode verweisen (hard link)
¥
Benutzer identifizieren Dateien durch den Pfadnamen (Folge von Bezeichnern mit ã/Ò
als Trennzeichen), der vom BS auf eine Inode-Nr. umgesetzt wird
¥
Beginnt der Pfad mit ã/Ò, so handelt es sich um einen absoluten Pfadnamen,
der beim root-directory beginnt.
¥
Beginnt der Pfad mit einem anderen Zeichen, so handelt es sich um einen relativen
Pfadnamen, der sich auf das aktuelle Verzeichnis bezieht.
8-39
8-40
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Symbolic Links
Logisches und physikalisches Dateisystem
Unix bietet die Mšglichkeit, Dateien und Verzeichnisse unter verschiedenen Namen
anzusprechen. Dies hilft auch bei der gemeinamen Nutzung von Dateien
¥
Ein logisches Dateisystem kann aus mehreren physikalischen Dateisystemen
bestehen.
¥
Ein Dateisystem kann an beliebiger Stelle in ein anderes durch das ãmountÒKommando eingehŠngt und mit ãumountÒ wieder ausgehŠngt werden.
¥
Beim Zugriff auf ein eingehŠngtes Verzeichnis gibt ein Bit im Inode gibt an, da§ es
sich um einen ãmount-pointÒ handelt.
¥
Mit dem ãmountÒ wird Ÿber eine vom BS verwaltete ãmount-tableÒ eine Verbindung
des Inode des mount-point zum Wurzel-Inode des eingehŠngten Dateisystems
geschaffen.
durch symlink(bisheriger_name, neuer_name) wird ein zusŠtzlicher Name eingefŸhrt
Beispiel
mit symlink("/usr/src/uts/sys","/usr/include/sys")
und symlink("/usr/include/realfile.h","/usr/src/uts/sys/testfile.h")
/
/
existieren drei Pfadnamen fŸr dieselbe Datei:
bin
etc
mount-point
usr
usr
cc
/usr/src/uts/sys/testfile.h
/usr/include/sys/testfile.h
/usr/include/realfile.h
src
sh
getty
passwd
include
/
uts
sys
realfile.h
bin
sys
8-41
inode.h
awk
testfile.h
yacc
include
src
stdio.h
uts
8-42
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Plattenstruktur
Pufferung
¥
Jedes physikalische Dateisystem liegt auf einem logischen GerŠt (partition),
von denen mehrere auf einem physikalischen GerŠt existieren kšnnen
¥
Plattenblšcke werden im Hauptspeicher gepuffert. Dazu wird eine Hashtabelle
verwendet. Blšcke mit gleichem Hashwert werden in einer verketteten Liste gehalten.
¥
Jedes logische GerŠt (Dateisystem) enthŠlt nach dem Boot-Block einen sogenannten
Superblock mit folgendem Inhalt (u.a.)
¥
Die Verwaltung der Pufferblšcke erfolgt nach LRU. Dazu wird eine Freiliste
unterhalten, die die freien Blšcke doppelt und ringfšrmig verkettet. Freie Blšcke
werden am Kopf der Liste entnommen und am Ende der Liste eingefŸgt.
-
Grš§e des Dateisystems
Liste freier Blšcke
Liste freier Inodes
Kopf der Freiliste
Hashtabelle
¥
Dem Superblock folgt die Liste der Inodes dieses Dateisystems
¥
Neuere Unix-Dateisysteme verwenden das Konzept der Zylindergruppe,
bei der diese Struktur (Superblock, Inodes) fŸr jede Zylindergruppe vorhanden ist.
(Reduzierung von Armbewegungen)
frei
8-43
gesperrt
8-44
© H.-U. Hei§, Uni Paderborn
© H.-U. Hei§, Uni Paderborn
Dateibetrieb
Dateibetrieb
¥
Beim …ffnen einer Datei (ãopenÒ) wird ein Dateideskriptor (integer) erzeugt.
¥
Read und write enthalten keine Positionsangaben, sondern nur die Anzahl zu
Ÿbertragender Bytes
¥
Er wird zum Indizieren einer proze§spezifischen Tabelle offener Dateien verwendet.
¥
¥
Von einem solchen Tabelleneintrag fŸhrt ein Verweis auf einen Eintrag in einer
systemweiten Dateitabelle.
Der aktuelle Positionszeiger wird in der Dateitabelle gehalten und nach jeder
Operation aktualisiert
¥
Ein Proze§ kann mehrere Deskriptoren auf dieselbe Datei besitzen.
¥
Erst von dort gelangt man zum Inode der Datei
¥
Verschiedene Prozesse kšnnen auf dieselbe Datei zugreifen.
¥
Die Kopie des Inode im Puffer enthŠlt einen ZŠhler, der angibt,
wieviele EintrŠge der Dateitabelle auf ihn verweisen
¥
Sperren sind mšglich, haben jedoch keinen zwingenden Charakter (advisory locks).
Sie kšnnen auf ganze Dateien oder auf Teile davon angewendet werden
:
read(3,..)
:
offene Dateien
(prozeßspezif.)
Benutzeradreßraum
Dateitabelle
(systemweit)
Systemadreßraum
8-45
InodeTabelle
(im Puffer)
Datenblöcke
Platte
8-46
Herunterladen