Als Acrobat File

Transcription

Als Acrobat File
Dateisystem: Einführung
• Hauptaufgabe des Dateisystems ist der schnelle und
zuverlässige Zugriff auf Dateien
– Problem: Entweder schneller Zugriff oder viel Redundanz beim
speichern!
• Zusätzlich müssen Unterverzeichnisse verwaltet werden
• Eine Datei wird durch einen Namen ausgewählt
– DOS: 8 Zeichen für Datei und 3 Zeichen Erweiterung
– Unix: Keine Erweiterung, 256 Zeichen für Dateinamen
• Dateinamen müssen (inkl. Pfad) eindeutig sein
Dateisystem: Einführung
• Jede Datei kann mehrere Attribute zugeordnet
bekommen:
– Read Only, Hidden, System, Archive
– Zugriffserlaubnis, Besitzerangaben, Zugriffszeiten
– Art der Datei (Programm, Library, Datendatei, …)
• Folgende Strukturen müssen zusätzlich festgelegt
werden, gehören aber nicht mehr zum Dateisystem
– Wo steht der Boot Lader für das Betriebssystem
– Wie ist die Festplatte in Partitionen unterteilt
Dateisystem: Einführung
• Im Prinzip würde ein genormtes Dateisystem für alle
Computer ausreichen
– Vorteil: Jeder Datenträger kann mit jedem Betriebsystem
gelesen werden
• Oft hat jedes Betriebssystem ein eigenes Dateisystem
–
–
–
–
Windows PC: Fat16/Fat32/NTFS
Linux PC: EXT2
Sun: UFS
Amiga: FastFileSystem
• Jedes Dateisystem hat seine Stärken und Schwächen
Dateisystem: Einführung
• Die Festplatte wird vom Dateisystem in mehrere
Bereiche aufgeteilt:
– Beispiel: Festplatte mit zwei Partitionen:
MBR
Partition 1: Bootsektor
Partition 1: FAT
Partition 1: Datenbereich
Partition 2: Bootsektor
Partition 2: FAT
Partition2: Datenbereich
Dateisystem: MBR
• Jede PC Festplatte hat unabhängig vom Betriebssystem
den MBR (Master Boot Record):
– Erster Sektor der Festplatte
– Enthält ca. 450 Byte Boot Programm (z.B. Lilo)
– Enthält die Partitionsdaten der vier möglichen Partitionen
• Ab 0x1BEh stehen 16 Byte für Partition 0
• Ab 0x1CEh stehen 16 Byte für Partition 1
• …
– Die letzten zwei Bytes sind 0xAAh und 0x55h, sind diese
vorhanden, so ist der MBR gültig.
• Binär ist 0xAAh 10101010 und 0x55h 01010101, so daß diese
Muster kaum zufällig entstehen
Dateisystem: MBR
• Die 4*16 Bytes der Partitionstabelle enthalten:
– Byte 0: 0 oder 128, je nachdem ob die Partition aktiv ist
• Die aktive Partition wird zum booten verwendet
– Byte 1-3: Start der Partition in Sektor/Cylinder/Kopf Format
– Byte 4: Partition ID
• 0x06h=FAT16, 0xBh=FAT32, 0x0C=Extended Partition FAT32
• 0x83h=Linux EXT2, 0x82h=Linux Swap Partition
– Byte 5-7: Ende der Partion in Sektor/Cylinder/Kopf Format
– Byte 8-11: Partitionsanfang in LBA
– Byte 12-15: Partitionslänge in Sektoren
Dateisystem: Die extended Partition
• Wenn mehr als vier Partitionen benötigt werden, dann
kann eine extended Partition angelegt werden:
– Verbraucht einen Eintrag im MBR
– In der extended Partition existiert ein weiterer Bereich (MBR
ähnlich), der die extended Partition in weitere Partitionen aufteilt
• Beispiel DOS: FDISK
– Ermöglicht genau eine normale Partition (Primäre Partition)
– Werden weitere Partitionen benötigt, so muß zuerst eine
extended Partition angelegt werden
– Diese kann anschließend in mehrere logische Laufwerke
unterteilt werden.
– Es werden maximal zwei Einträge im MBR verwendet
Dateisystem: Boot Sektor
• Abhängig von der Partition ID (aus dem MBR) ist die
eigentliche Partition völlig unterschiedlich aufgebaut
• Fat12/Fat16/Fat32 Partitionen enthalten zuerst (1.
Sektor der Partition) einen Bootsektor
– Enthält zusätzlichen Boot Code
– Enthält alle Parameter die für das verwendete Dateisystem
notwendig sind
• Fat12/16 sind gleich aufgebaut
• Fat32 unterscheidet sich an mehreren Stellen, da es
flexibler ist als Fat16
Dateisystem: Fat 16 Boot Sektor
• Auszug aus dem Fat16 Boot Sektor
–
–
–
–
–
–
–
–
–
–
–
–
Byte 3-10: Betriebssystem Name
Byte 11/12: Bytes pro Sektor (eigentlich immer 512)
Byte 13: Sektoren pro Cluster (in 2er Potenzen)
Byte 14/15: Reservierte Sektoren vor der ersten FAT
Byte 16: Anzahl FATs (siehe Folie FAT)
Byte 17/18: Anzahl Directory Einträge im Hauptverzeichnis
Byte 21: Media Deskriptor Byte (veraltet)
Byte 22/23: Sektoren pro FAT
Byte 27-31: Anzahl Sektoren vor Bootsektor
Byte 32-35: Anzahl Sektoren für große Partitionen
Byte 39-42: Serial Number (nur FAT16)
Byte 43-53: Volume Label (nur FAT16)
Dateisystem: Fat 32 Boot Sektor
• Zusätzlich zu den Fat16 Daten:
– Byte 36-39: Sektoren pro FAT
– Byte 40/41: Bitkodiert, welche FAT aktuell ist
• Bit 0-3: aktuelle FAT, Bit 7=0: Alle FAT aktuell
– Byte 44-47: Hauptverzeichnis Start Cluster
– Byte 67-70: Serial Number (wird beim DIR Befehl angezeigt)
– Byte 71-81: Volume Label (wird beim DIR Befehl angezeigt)
Dateisystem: Datenbereich
• Der Datenbereich enthält
– Die Daten der Dateien
– Die Verzeichnisstruktur
• Im Datenbereich sind mehrere Sektoren zu Cluster
zusammengefaßt
– Ein Cluster ist die kleinste verwaltbare Einheit
– Zwischen 1 und 128 Sektoren pro Cluster möglich
• Kleine Cluster:
– Vorteil: Bei vielen Dateien geht wenig Platz verloren
– Nachteil: Große FAT, evtl. sehr zerstückelte Dateien
• Große Cluster:
– Vorteil: FAT ist klein, große Dateien sind nicht so zerstückelt
– Nachteil: Pro Datei mehr unbenutzte Datenbereiche
Dateisystem: FAT
• In der FAT (File Allocation Table) werden zwei Dinge
gespeichert:
– Welche Cluster der Festplatte sind frei
– Welche Datei belegt welche Cluster
• Jeder Eintrag der FAT ist 16/32 Bit lang (FAT16/FAT32)
• Für jeden Cluster ist ein Eintrag vorgesehen
– Eine 8 GByte Partition mit 1 Sektor Clustergröße ergibt 16 Mio.
Cluster, das sind 64 MByte für eine FAT
– Bei einer Partition mit 16 Sektoren pro Cluster und 10000
Dateien (z.B. Windows 98 mit Office) gehen im Schnitt 64 MByte
verloren, da im Schnitt jede Datei 8 Sektoren unbenutzt läßt
Dateisystem: FAT32
•
•
•
•
•
•
Jede Datei ist als Clusterkette
gespeichert:
Datei 1:
– Beginnt in Cluster 2, dann der
Reihe nach: 3 4 7
Datei 2:
– Beginnt in Cluster 5, dann der
Reihe nach: 8
Eine 0 steht für Cluster ist frei
Ein Wert größer 0xFFFFFFF7
bedeutet, daß die Datei keine
weiteren Cluster enthält
Bei FAT32 sind eigentlich nur 28 Bit
für die Cluster reserviert, die oberen 4
Bit dürfen nicht verwendet werden!
Cluster Nummer
Enthält
0
Signatur (veraltet)
1
Signatur (veraltet)
2
3
3
4
4
7
5
8
6
0
7
0xFFFFFFF8h
8
0xFFFFFFF8h
9
0
Dateisystem: Vergleich FAT16/32
• FAT16 konnte maximal ca. 65000 Cluster verwalten
– Bei maximaler Clustergröße von 128 Sektoren eine maximale
Partitionsgröße von: 4 GByte
– FAT maximal 65000*2 Byte=130 KByte groß
• FAT32 kann bis zu 2^28=256 Mio. Cluster verwalten
– Mit 128 Sektoren pro Cluster: 16 Terabyte
– Festplattengröße durch Bootsektor auf 2^32 Sektoren*512 Byte
pro Sektor begrenzt auf: 2 Terabyte
– IDE Festplatten durch 28 Bit Sektoradresse auf 128 GByte
begrenzt
• Mögliche Lösung für 2. und 3.: Sektorgröße auf z.B.: 8 KByte
erhöhen. Dann 4 Terabyte Festplatten mit IDE und Bootsektor!
Dateisystem: Hauptverzeichnis
• Das Hauptverzeichnis hat (bei FAT16) als einziges
Verzeichnis eine feste Länge
– Normalerweise 512 Einträge
– Mehr Einträge nicht möglich!
• Cluster Position des Hauptverzeichnisses ist bei FAT32
im Boot Record gespeichert
– Dadurch wird das Hauptverzeichnis zu einer normalen Datei,
und kann auch seine Größe verändern!
• Ein Directory Eintrag ist immer 32 Byte
– Pro Sektor 16 Einträge möglich
Dateisystem: Hauptverzeichnis
• Die Einträge im Hauptverzeichnis haben die folgende
Struktur (Auszug):
–
–
–
–
–
–
Byte 0-7: Dateiname
Byte 8-10: Datei Erweiterung (EXE oder so)
Byte 11: File Attribute
Byte 22/23: Uhrzeit des letzten Schreibzugriffs
Byte 24/25: Datum des letzten Schreibzugriffs
Byte 26/27: Nummer des ersten Clusters (16 Bit reichen nur bei
FAT16!)
– Byte 20/21: Oberen 16 Bit der Clusteradresse
Dateisystem: Hauptverzeichnis
• Was alles für einen DIR \ getan werden muß:
– Lesen des MBR um die Partition zu finden
– Lesen des Bootsektors, für die notwendigen Parameter
• Länge des Bootbereichs, Länge der FAT, Anzahl der FAT, Position
des Hauptverezeichnis (erster Cluster), Anzahl Sektoren/Cluster
– Lesen des ersten Cluster des Hauptverzeichnisses:
• PartitionStart+BootBereich+Anzahl FAT*LängeFat+erstercluster*Sektoren/Cluster
– Ausgabe der Verzeichnisdaten des ersten Clusters
– Mit Hilfe der FAT weitere Cluster finden und lesen (wenn
vorhanden)
• Das Betriebssystem speichert viele Informationen intern ab,
so daß nicht jedesmal alle Parameter neu gelesen werden
Dateisystem: Unterverzeichnisse
• Ein Unterverzeichnis wird im Prinzip wie eine Datei
gespeichert:
– Im Hauptverzeichnis z.B. steht ein Eintrag mit WINDOWS, und
der Startcluster ist 1234.
– Die Dateinamen des Verzeichnis WINDOWS stehen dann ab
Cluster 1234 (mit der selben Struktur wie das Hauptverzeichnis)
Hauptverzeichnis
Name
Cluster
MSDOS.SYS
321
…
WINDOWS
1234
0100101010101010
0100101001001010
WINDOWS
Name
Cluster
WINDOWS\SYSTEM
WIN.COM
10023
Name
VGA.DRV 14023
…
SYSTEM
Cluster
4921
…
Dateisystem: File Attribute
• Wodurch ist feststellbar, ob eine Verzeichniseintrag ein
Verzeichnis oder eine Datei ist?
– Nachschauen in Byte 11 des Eintrags: File Attribute
•
•
•
•
•
•
•
Bit 6/7: reserviert
Bit 5: Archive Flag
Bit 4: Directory Flag
Bit 3: Volume Label Flag
Bit 2: System Datei Flag
Bit 1: Versteckte Datei Flag
Bit 0: Read Only Flag
• Ist Bit 4=1, dann ist es ein Verzeichnis!
– Sonst keine Unterschiede. Datei Größe wird auf 0 gesetzt.
Dateisystem: Freier Speicher
• Wenn eine neue Datei gespeichert, oder eine
vorhandene vergrößert werden soll wird freier Speicher
benötigt:
– Möglicherweise reicht der Restplatz in dem letzten Cluster aus
– Falls nicht: Freien Cluster suchen und FAT entsprechend
modifizieren
– Problem: Wie kann ein freier Cluster (FAT Eintrag=0) gefunden
werden, ohne die ganze FAT zu durchsuchen?
– Lösung: Gar nicht! Es stehen keine weiteren Strukturen zur
Verfügung, die dieses Problem lösen
– Betriebssystem sollte intern entsprechende Strukturen anlegen
Dateisystem: Defragmentieren
• Eine Datei ist fragmentiert, wenn ihre Daten in mehreren
Teilen auf der Festplatte gespeichert ist anstatt alle
Daten hintereinander
– Passiert, wenn eine Festplatte lange Zeit nicht formatiert wurde
– Angfangs nicht fragmentierte Dateien
• Datei 1: Cluster 1-5, Datei 2: Cluster 6, Datei 3: Cluster 7-9
– Jetzt Datei 2 löschen und Datei 4 mit 3 Clustern schreiben:
• Datei 1: Cluser 1-5, Datei 4: Cluster 6/10/11, Datei 3: Cluster 7-9
– Datei 4 ist jetzt fragmentiert! Lösung: Defragmentieren:
• Dateien werden so angeordnet, daß alle Datencluster
hintereinander stehen
• Datei 1: Cluster 1-5, Datei 3: Cluster 6-8, Datei 4: Cluster 9-11
Dateisystem: Zusammenfassung
• FAT32 kann auch große Festplatten verwalten, FAT16
nicht
• Einfaches Dateisystem mit allen notwendigen
Eigenschaften:
– Dateien
– Unterverzeichnisse
• Keine moderne Konzepte enthalten wie
– Links
– Mounten von Speichergeräten
– Redundante Daten speichern um Datenverlust zu vermeiden

Documents pareils