K_Kap11B: Files, Filesysteme Datenstrukturen
Transcription
K_Kap11B: Files, Filesysteme Datenstrukturen
Betriebssysteme K_Kap11B: Files, Filesysteme Datenstrukturen Mühlbacher BS: Files, Filesysteme: Datenstrukturen 1 Files als lineare Liste File angeordnet als verkette Liste von Blöcken Jeder Block enthält Zeiger zum Nachfolger Zeiger = Adresse des Blocks Directory enthält Zeiger auf ersten Block Allenfalls auch auf letzten Block Fazit: Klassiche Implementierung einer Liste Mühlbacher BS: Files, Filesysteme: Datenstrukturen 2 Files als lineare Liste FILE START XX.Y 9 25 0 1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 BS: Files, Filesysteme: Datenstrukturen 13 Mühlbacher END 3 Files als lineare Liste Einzelschritte create: Neuen Eintrag im Directory eröffen Zeiger auf NIL setzen File-Anfangsgrösse: 0 write Finde eine freien Block auf Disk » Dazu: Komponente des BS Setze Zeiger dorthin Schreibe in den bereitgestellten Block Mühlbacher BS: Files, Filesysteme: Datenstrukturen 4 File Allocation Table (FAT) FAT Konzept: Einfache und effiziente Umsetzung von verketteten Listen Eingeführt bei MS-DOS und (wegen Rückwärtskompatibilität) in der Windows Familie und praktisch alles anderen Betriebssystemen Idee: Ergänze das Directory um ein gesondertes Verzeichnis (FAT) für jede Partition Enthält die Nummern der zu einem File gehörigen Cluster Zugriffsoptimierung: „cache FAT“ ! Mühlbacher BS: Files, Filesysteme: Datenstrukturen 5 File Allocation Table (FAT) FAT entspricht verketteter Liste FAT für jeden Cluster einen Eintrag Frei: “0” Letzter eines Files: “EOF” (z.B. FFF816) Defekt: „BAD“(z.B. FFF716) Ansonsten: Nummer des Folgecluster Mühlbacher BS: Files, Filesysteme: Datenstrukturen 6 FAT: Directory-Einträge Jeder Directory Eintrag enthält Clusternummer des Startcluster des jeweiligen Files Außerdem Metadaten Dateiname Attribute wie read only, hidden, system-file Zeitstempel Dateigröße Mühlbacher BS: Files, Filesysteme: Datenstrukturen 7 File Allocation Table (FAT) FILE START XX.txt 9 Directory Eintrag File Daten 25 9 ... E O F ..... 10 ..... Teil1 Teil3 . . . . . 8 FAT Mühlbacher 27 9 10 .. Teil2 25 26 27 Allocation Units = Clusters BS: Files, Filesysteme: Datenstrukturen 8 FAT Versionen (Auszug) FAT 12 „8.3“ Dateinamen 12-Bit Clusternummern -> 212 = 4096 Cluster Clustergröße 512 bis 4096 Bytes Partitionen bis 16 MB möglich Typisch für 3,5 Zoll Disketten FAT 16 Mühlbacher „8.3“ Dateinamen 216 - 12 = 65524 Cluster (12 speziell reserv.) Clustergröße 512 bis 32 KByte Partitionen bis 2GB (Windows-NT bis 4GB) BS: Files, Filesysteme: Datenstrukturen 9 FAT Versionen (Auszug) VFAT (Virtual File Allocation Table) Erweiterng von FAT 16 Lange Dateinamen Unicode FAT 32 32 Bit (28 verwendet; 218 Cluster), 268.435.456 Cluster Clustergröße 512Bytes bis 32KB Dateigröße max 4GB (-1 Byte) Partitionsgröße bis ca 8TB (im Prinzip) » Format unterstützt nur 32GB Dateisysteme » Gesonderte Tools für größere erforderlich Rootverzeichnis kann variabel groß sein exFAT für Flashspeicher Unter Windows CE 6.0 eingeführt VISTA unterstützt exFAT Mühlbacher BS: Files, Filesysteme: Datenstrukturen 10 Indizierte Anordnung: Grundidee Anstatt einer blockweisen Verkettung werden alle Zeiger in einem Index gehalten Jeder File hat eigenen Index Index selbst ist ein Block (Cluster) auf dem Massenspeicher Zeiger vom Directory zum Indexblock Der j-te Eintrag im Index-Block zeigt auf den j-ten Block (Cluster) des Files Mühlbacher BS: Files, Filesysteme: Datenstrukturen 11 Speicherung mit Index FILE XX.Y 0 1 4 5 8 9 1 2 3 6 7 10 4 14 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 BS: Files, Filesysteme: Datenstrukturen 16 2 5 15 11 12 13 Mühlbacher 3 INDEX 15 12 Index Spezielle Probleme Wird ein File groß, enthält er viele Blöcke Blöcke haben feste Größe Auch der Indexblock selbst Großer Indexblock: » Platzverschwendung für kleine Files Kleiner Block: BS kann keine großen Files verwalten Mühlbacher BS: Files, Filesysteme: Datenstrukturen 13 UNIX Verwendet “Inodes” Jedem File ein spezieller Indexblock zugeordnet: Kombination der Index-Idee Inode » » Inodes als Liste angeordnet Länge der Liste steht im „Superblock“ vgl.: Partition Boot Record PBR Enthält Metadaten Enthält Zeiger auf File-Blöcke und Zeiger auf indirekte Blöcke » » » Mühlbacher (typisch) 15 Zeiger in einem Inode 12 davon zeigen direkt auf Blöcke des Files, Gut geeignet für kleine Files die nächsten 3 Zeiger verweisen auf Indexblöcke (“Indirekte Blöcke”) der erste auf einen “single indirect block” der zweite auf einen “double indirect block” der dritte auf einen “ triple indirect block” BS: Files, Filesysteme: Datenstrukturen 14 UNIX/Linux INODE size, owner, time/date, ... 1 12 direct 0 DATA .. .. . .. .. .. direct x DATA DATA 13 14 15 single double triple reference count Mühlbacher .. . DATA DATA .. . .. . DATA DATA .. . BS: Files, Filesysteme: Datenstrukturen DATA 15 Verzeichnis in UNIX/Linux Datei mit festem Format Einträge: Dateiname Länge der Datei Inode- Nummer (4 Bytes) Zeiger auf nächsten Eintrag Mühlbacher BS: Files, Filesysteme: Datenstrukturen 16 Links Reference counter n File – Einträge (auch aus verschiedenen Directories) verweisen auf den selben File (link auf Inode) \dir2\ file2.txt Link Link ….………… size, owner, time/date, ... Erst wenn referencecount =0 kann File wirklich gelöscht werden direct 0 DATA .. .. . .. .. .. direct x DATA \dir1\subdir1\ file1.txt DATA reference count single .. . double DATA triple 2 DATA .. . .. . DATA DATA .. . DATA Mühlbacher BS: Files, Filesysteme: Datenstrukturen 17 Globale Struktur eines UNIX Filesystems boot Super Inode Cluster Sys Block Bitmap Bitmap Inode Tabelle Cluster Eingebettet in eine aktive Partition folgender logischer Aufbau: Mühlbacher Bootblock: Startroutine des BS Superblock: Allgemeine Verwaltungsinformation Inode Bitmap: Benutzt/nicht benutzt Cluster-Bitmap: Für jeden Block „frei“/“belegt“ Inode Tabelle: Alle Inodes Cluster: Eigentliche Nutzdaten » Dateien und Verzeichnisse BS: Files, Filesysteme: Datenstrukturen 18 NTFS-Modell MFT Verwaltung der Disk (Volume) erfolgt über eine relationale Datenbank: Master File Table (MFT) MFT: Zeilen von Eintragungen Eine Zeile pro File oder Directory Eintrag Für MFT selbst ist Zeile 0 vorgesehen Die Spalten sind die Attribute des File » Die (bisher gewohnten Daten) sind nur ein spezielles Attribut Größe je Eintrag: 2KB Mühlbacher BS: Files, Filesysteme: Datenstrukturen 19 MFT Struktur allgemein MFT File x Standard information File name Data Security descriptor EAs = Extended Attributes Mühlbacher BS: Files, Filesysteme: Datenstrukturen 20 Kleine und große Files MFT smallFile largerFile smallFile Das ist eine sehr kleine Datei! Dateiname Dateiinhalt Dateiname largerFile Cluster c1 c2 c3 c4 run 1 Mühlbacher c5 … (Verweis auf) Dateiinhalt 5 1 2 … c7 (Runs) c8 run 3 BS: Files, Filesysteme: Datenstrukturen … c6 run 2 21 NTFS-Modell MFT File kann mehrere Namen haben: long Name, MS-DOS name MFT enthält auch die Einträge für directories Demnach entspricht einem (sub-) directory wieder eine Zeile im MFT Mühlbacher BS: Files, Filesysteme: Datenstrukturen 22 MFT Struktur Eintrag für kleines Directory MFT directory Standard information Mühlbacher File name Security descriptor index root index of files index root f1, f2, f3, .......... BS: Files, Filesysteme: Datenstrukturen other 23 Großes directory mit Unterverzeichnis MFT Verzeichnis dir1 Datei file1 Verzeichnisname Verzeichnis dir2 dir1 dir2, file1, file2 Index of files file4 … file9 file5, file6, file7 file10, file11, file12 Organisation als B-Baum Mühlbacher BS: Files, Filesysteme: Datenstrukturen 24