© 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