Windows - Hochschule Fulda
Transcription
Windows - Hochschule Fulda
Betriebssysteme Folie 4 - 1 4 Datenträger/Dateiverwaltung • Dateien − enthalten logisch zusammengehörende Daten − werden auf einem Datenträger permanent gespeichert − können im Allgemeinen über einen Namen identifiziert werden • Dateiverzeichnis enthält Informationen zur Verwaltung von Dateien • Dateiverwaltung bietet Benutzer/Programmierer komfortable Dienste − Speicherung der Daten auf Datenträgern − Realisierung von Zugriffsverfahren ♦ sequentiell ♦ indexsequentiell ♦ wahlfrei/direkt • − Verwaltung belegter und freier Teile des Datenträgers − Gewährleistung von Sicherheit und Zugriffsschutz Dateisystem enthält alle vom Betriebssystem in derselben Art verwalteten Dateien inklusive der erforderlichen Verwaltungsinformationen Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 2 Entwicklung der Datenträger (Teil 1) 1725 Basile Bouchon benutzt eine Lochbandsteuerung zum Weben dekorativer Muster 1728 Jacques deFalcon benutzt ein „Lochkartenband“ zur Steuerung seiner Webstühle (Weiterentwicklung der Technik von Bouchon) 1805 Joseph Marie Jacquard stellt Webstühle, die durch ein Lochkartenband gesteuert werden, industriell her 1833 Analytical Engine von Charles Babbage (Konzept benutzt Lochkartenbänder zur Zahlen- und Programmeingabe. Augusta Ada Byron, Countess of Lovelace erstellt auf diesem Konzept als erste Programmiererin ein Programm zur Berechnung der Bernoullizahlen.) 1841 Sir Charles Wheatstone erfindet den Lochstreifen (paper tape) (2 Spuren, Einsatz in der Telegrafie. Wurde später für Computer auf 5, 6, 7 oder 8 Spuren erweitert. Die Z3 von Konrad Zuse (der erste programmgesteuerte Rechner, 1941) benutzt z. B. einen 8-Spur Kinofilmlochstreifen.) 1886 Herman Hollerith baut Hollerithmaschine (tabulating machine) und „erfindet“ Lochkarte (punched card) als Datenträger (Im Jahr 1890 werden Lochkarten erstmalig zur Datenverarbeitung der 11. Volkszählung in Amerika eingesetzt. Hollerith verwendet runde Löcher. Die IBM-Lochkarte für Computer benutzt eckige Löcher und hat 12 Zeilen zu je 80 Spalten.) 1946 Magnettrommelspeicher (magnetic drum) (1950 liefert Engineering Research Associates den ersten kommerziell gebauten Rechner mit Trommelspeicher (ERA 1101) aus; Speicherkapazität: 16.384 Wörter zu je 24 Bits) 1953 IBM 726: erste kommerziell erfolgreiche Magnetbandstation 1956 IBM 350: erste Festplatte (wurde mit dem Rechner 305 RAMAC ausgeliefert und konnte auf 50 Plattenscheiben 5 MB speichern. Die Plattenscheiben hatten einen Durchmesser von 24".) 1963 IBM 1311: erste Wechselplatte (sechs 14"-Plattenscheiben, ca. 2 MB) 1970 IBM: erste 8"-Floppy (ca. 80 KB, später 180 KB und 360 KB) 1973 IBM 3340: erste „Winchester“-Festplatte (2-mal 30 MB) 1976 Shugart: erste 5,25"-Floppy (Kapazität: 160 KB (z. B. im IBM PC, 1981), später 360 KB (z. B. im IBM XT, 1983) und 1,2 MB (z. B. ab IBM AT, 1984)) 1980 Seagate ST-506: erste 5,25"-Festplatte (vier Plattenscheiben, 5 MB) 1981 Sony: erste 3,5"-Floppy (Kapazität: ???, später 720 KB und 1,44 MB) 1983 Rodtime RO-352: erste 3,5"-Festplatte (ca. 20 MB) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 3 Entwicklung der Datenträger (Teil 2) 1984 IBM: erste 1/2"-Bandkassette (Anfang vom Ende der bisherigen Bandgeräte) 1984 Toshiba stellt „Flash Memory“ vor (ersetzt später EEPROM und ist Basis für Speicherkarten (z. B. Compact Flash) und USB-Sticks) 1985 erste CD-ROM-Laufwerke für PCs (z. B. Hitachi CDR-1502-S) 1987 Redundant Arrays of Inexpensive Disks (RAID, „inexpensive“ wurde später durch „independent“ ersetzt) 1988 Conner CP3022: erste 1"-hohe 3,5"-Festplatte (ca. 21 MB) 1988 PrairieTek: erste 2,5"-Festplatte (Prairietek 220, 20 MB) 1988 Gigatape: 1,2 GB Magnetbandkassette 1990 Kodak: Foto-CD 1991 IBM: erste 3,5"-Festplatte mit 1 GB Kapazität 1993 Seagate ST-12550 Barracuda 2: erste Festplatte mit 7.200 Umdrehungen/Minute (zehn 3,5"-Plattenscheiben, 2 GB) 1994 Syquest: 3,5"-Wechselplatte, (SQ-3270, 270 MB) 1994 „Compact Flash“-Speicherkarte 1997 Seagate ST-19101 Cheetah 9: erste Festplatte mit 10.000 Umdrehungen/Minute (acht 3,5"-Plattenscheiben, 9 GB) 1997 erste DVD-Laufwerke für PCs (z. B. Hitachi GF-1000, Hitachi GD-2000) 1998 M-Systems, Netac und Trek 2000 stellen fast zeitgleich „USB Flash Drive“ vor 1999 IBM Microdrive: erste 1"-Festplatte (340 MB; Juni 2000: 1 GB) 2000 Seagate ST-318451 Cheetah X15: erste Festplatte mit 15.000 Umdrehungen/Minute (drei 2,5"-Plattenscheiben, 18 GB) 2001 erste kombinierte DVD/CDRW-Laufwerke für PCs 2002 erste Festplatten mit „Serial ATA“-Schnittstelle (z. B. Seagate ST3160023AS) 2002 erste mehrsprachige DVD-Brenner (z. B. Hitachi GMA-4020B) 2005 erste Festplatten mit „perpendicular recording“ (z. B. Seagate ST9160821A, 2,5"-Plattenscheiben, 160 GB) 2006 erste Blu-ray-Disc-Brenner und HD-DVD-Brenner (z. B. BenQ BW1000, Plextor PX-B900A, Toshiba SD-L902A) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 4 Entwicklung der Datenträger (Teil 3) 2007 erste Hybrid-Festplatten (z. B. Samsung HM16HJI, 160 GB und 256 MB FlashSpeicher) 2008 • • Blu-ray-Disc hat sich gegen HD-DVD durchgesetzt und wird Nachfolger der DVD rasante Kapazitätssteigerung bei 1"- bis 5,25"-Festplatten − 1980: 5 MB (Seagate ST-506) − 1993: 2 GB (Seagate Barracuda 2, ST-12550) − 1998: 46 GB (Seagate Elite 47, ST-446452W) − 1999: 1"-Festplatte mit 340 MB Kapazität (IBM Microdrive) − 2002: 200 GB (Western Digital Caviar, WD2000BB) − 2006: 1"-Festplatte mit 12 GB Kapazität (Cornice Dragon) − 2006: 750 GB (Seagate ST-3750640AS, „perpendicular recording“) − 2007: 1 TB (Hitachi Deskstar 7K1000) − 2009: 2 TB (Western Digital WD20EADS oder WD2002FYPS) − 2010: 3 TB (Western Digital WD30EZRSDTL, Hitachi Deskstar 7K3000) Entwicklung der Solid-state Storage Devices (SSD) − 1982: 64-256 MB (SSD für Cray X-MP; 1,76-3,28 Millionen Dollar) − 2000: 8 MB USB-Stick (M-Systems DiskOnKey, IBM USB Flash Drive) − 2008: 1,6 TB (BitMicro Altima E3S320, vermutlich erstes SSD mit mehr als einem Terabyte Kapzität im 3,5"-Festplattenlaufwerkformat) − 2009: 256 GB USB-Stick (Kingston Datatraveller DT300) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 5 Problem: die einzelnen Geräte besitzen im Allgemeinen völlig unterschiedliche Geräteparameter (z. B. unterschiedlich viele Oberflächen, Spuren pro Oberfläche, Sektoren pro Spur oder Blockgrößen) ⇒ Dateiverwaltung müsste spezifisch für Datenträger erfolgen • Beispiel: 3,5"-Disketten 1) Double-density: 720 KB 2 Köpfe, 80 Spuren pro Kopf, 9 Sektoren pro Spur 2) High-density: 1.440 KB 2 Köpfe, 80 Spuren pro Kopf, 18 Sektoren pro Spur • Lösung des Problems: − Dateiverwaltung sieht nur eine Folge von logischen Blöcken − logischer Block kann aus mehreren zusammenhängenden Sektoren bestehen (Beispiel: bei einer Blockgröße von 2 KB (vier Sektoren) besitzt die 720 KB Diskette 360 Blöcke und die 1,4 MB Diskette 720 Blöcke; bei Disketten entspricht ein logischer Block allerdings im Allgemeinen immer einem Sektor, damit genügend viele Blöcke zur Verfügung stehen) − Blocknummern werden vom sogenannten Gerätetreiber in gerätespezifische Angaben umgesetzt (z. B. in Zylinder/Kopf/Sektor-Werte oder logische Blockadressen bei Festplatten) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 6 Betriebssystem und Anwendungsprogramm sehen Datei verschieden − aus der Sicht des Programms besteht eine Datei aus einer Folge von Datensätzen oder Zeichen − für das Betriebssystem ist die Strukturierung der Datei auf Programmebene ohne Bedeutung − Betriebssystem teilt die Datei in eine Folge aufeinander folgender Blöcke ein (virtuelle Blöcke) − Dateiverwaltung bildet virtuelle Blöcke der Datei auf logische Blöcke des Datenträgers ab (virtuelle und logische Blöcke werden im Allgemeinen gleich groß gewählt) buffer in application record 0 record 1 record 2 record 3 block 0 block 1 block 2 ... ... block 0 ... ... file (application view) ... ... file (operating system view: virtual block or cluster numbers) ... ... ... ... block h ... ... block k buffer cache in operating system ... ... block n file (operating system view: logical block or cluster numbers) devices (operating system view: device dependent parameters, e. g., (cylinder, track, sector) or "logical block address" for a disk) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 7 die Größe eines Datensatzes im Programm entspricht normalerweise nicht der Blockgröße des Betriebssystems (kann kleiner oder größer als Block sein) ⇒ das Betriebssystem speichert z. B. Blöcke zuerst in einem Systempuffer, aus dem es den gewünschten Datensatz in den Puffer des Programms kopiert (falls der gewünschte Datensatz über virtuelle Blockgrenzen hinausgeht, muss das Betriebssystem mehrere logische Blöcke anfordern) ⇒ das Betriebssystem speichert Datensätze des Programms zuerst in Systempuffern, bevor sie auf den Datenträger geschrieben werden (die Systempuffer minimieren den zeitaufwendigen Datenaustausch mit dem peripheren Speicher, so dass ein Prozess in den meisten Fällen nicht blockiert werden muss, sondern seine Daten sofort aus dem internen Puffer erhält bzw. in diesen schreiben kann) • logische Blöcke eines Datenträgers sind nach einiger Zeit mehr oder weniger zufällig belegt oder frei, so dass eine große Datei im Allgemeinen nicht zusammenhängend gespeichert werden kann • Datenaustausch mit Datenträger erfolgt bei einer Festplatte z. B. durch − Angabe der Zylinder/Kopf/Sektornummer (CHS-Notation) oder der logischen Sektornummer (LBA-Notation) des 1. Sektors des logischen Blocks − Anzahl der zu übertragenden Sektoren/Blöcke Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 8 4.1 Festplatten/RAID-Systeme/LVM/NAS/SAN • Aufbau einer Festplatte sector track actuator axis cylinder head arm spindle platter read/write head • relevante Zeiten für Datenzugriff − Kopfpositionierzeit (seek time) − Drehwartezeit (Latenzzeit, latency time) − Zugriffszeit (access time = seek time + latency time) − Übertragungszeit (transfer time) seek time transfer time read/write head latency time Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 9 Parameter einiger Festplatten Seagate ST-4026 Seagate Marathon 4030sl Seagate Elite 47 Seagate Barracuda 180 Seagate Cheetah 18 (ca. 1983/84) (ST-94030AG, 1998) (ST-446452W, 1998) (ST1181677LCV 2001) (ST-118202LC, 1998) Formfaktor (in Inch) 5,25 2,5 5,25 3,5 3,5 Schnittstelle ST412 Ultra ATA-2 Ultra Wide Ultra 160 SCSI Wide SCSI Ultra 2 SCSI Datenübertragungsrate extern (MB/s) intern (Mbit/s) 0,6 ? < 33,3 < 104 < 40 < 185 < 160 < 508 < 80 < 231 Kapazität (in GB, 1 GB = 230 B) 20,4 MB 3,8 43,8 169,1 17 Anzahl Platten/Köpfe (phys.) 3/4 3/6 14/28 12/24 12/24 Geometrie physikal. logisch physikal. physikal. physikal. 4 615 41.820 17 512 16 7.944 8.007.552 63 512 28 9.996 91.923.356 328 (avg.) 512 - 4.096 24 24.247 354.600.002 609 (avg.) 512 - 4.096 24 6.962 35.566.479 213 (avg.) 180 - 4.096 Pufferspeicher (in KB) - read/write multiple - read look-ahead - multi-segmented - adaptive ? 128 x x x ? 4.096 x x x x 16.384 x x x x 1.024 x x x x Umdrehungen pro Minute 3.600 4.508 5.357 7.200 10.025 Umdrehungsdauer (in ms) 16,67 13,31 11,20 8,33 5,99 Kopfpositionierzeiten (in ms) - Spur-zu-Spur - erste-letzte-Spur - mittlere Positionierzeit 8 ? 40 3 24 12 1,3 28,2 13,2 0,8 16 7,4 0,8 12,2 6 6,65 5,6 4,17 2,99 0,211 0,034 0,013 0,028 - Anzahl Schreib-/Leseköpfe - Anzahl Zylinder - Anzahl Sektoren (phys.) - Anzahl Sektoren (pro Spur) - Sektorgröße (in Byte) mittlere Drehwartezeit (in ms) 8,34 mittlere Übertragungszeit eines Sektors (in ms) 0,981 Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 10 unterschiedliche Kapazitätsangaben in Datenblättern (teilweise gemischt) − formatierte/unformatierte Kapazität − Kapazitätsangabe in 10-er oder 2-er Potenzen − mittlere Anzahl Sektoren/Spur für (un)formatierte Platte − Beispiel: Seagate Barracuda 180 (354.600.002 Sektoren) formatiert unformatiert Kapazität in 10-er Potenz 181,6 GB 241,9 GB Kapazität in 2-er Potenz 169,1 GB 225,3 GB 609 793 mittlere Anzahl Sektoren/Spur ⇒ Angaben sind teilweise widersprüchlich (z. B. wird für die Seagate Barracuda 180 als Kapazität 181,6 GB und als mittlere Anzahl Sektoren/Spur 793 angegeben (was zur unformatierten Kapazität passt, die weiter vorne im Handbuch angegeben ist)) ⇒ Vergleich der Festplatten wird erschwert • Datenübertragungsrate − intern: Transport der Daten von der Plattenoberfläche in Puffer ♦ abhängig von Umdrehungsgeschwindigkeit und Spurkapazität (außen höhere Übertragungsrate als innen) ♦ bestes Maß für Leistungsfähigkeit der Festplatte − extern: Transport der Daten aus Pufferspeicher in Hauptspeicher ♦ abhängig von der Schnittstelle (ATA, SCSI, SATA, ...) ♦ gibt die maximal mögliche Übertragungsrate an Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 11 Pufferspeicher − je größer desto besser (im Allgemeinen weniger Zugriffe auf die Plattenoberflächen) − read look-ahead ♦ wenn ein Block benötigt wird, werden mit hoher Wahrscheinlichkeit auch die nächsten Blöcke gebraucht (sequentielle Verarbeitung) ♦ u. U. werden Daten gelesen, die nicht gebraucht werden ♦ Güte des Algorithmus wird durch Trefferrate bestimmt − multi-segmented ♦ teilt den Pufferspeicher in Segmente für unabhängige Aufträge ein (die Seagate Barracuda 180 kann bis zu 64 Segmente verwalten) ♦ für jedes Segment kann read look-ahead benutzt werden ♦ bessere Nutzung großer Pufferspeicher − adaptive ♦ adaptive segmentation: Anzahl der Segmente im Pufferspeicher wird dynamisch verwaltet ♦ adaptive algorithm: Ersetzungsstrategie für Segmente (Wenn es für einen neuen Auftrag noch keine Daten im Pufferspeicher gibt, müssen die Daten in einem Segment überschrieben werden. Der Algorithmus wählt z. B. das Segment aus, dessen Daten am wenigsten benutzt worden sind.) ⇒ Implementierung des Pufferspeichers hat großen Einfluss auf Leistungsfähigkeit ⇒ Festplatten mit i. w. identischen Parametern, können sich in der Leistung erheblich unterscheiden Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 12 Verarbeitung mehrerer Kommandos (Multiple Command Queueing and Reordering) − erhöht die Leistungsfähigkeit (die Seagate Barracuda 180 kann bis zu 64 Kommandos gleichzeitig bearbeiten) − • • • Zugriffe auf die Plattenoberflächen können optimiert werden Umdrehungsgeschwindigkeit − bestimmt die Drehwartezeit und Übertragungszeit für Blöcke − sehr wichtig für Audio/Video-Dateien, sehr große Dateien, ... Kopfpositionierzeiten − Zeiten für Sektor lesen sind kürzer als Zeiten für Sektor schreiben − in der obigen Tabelle sind die Zeiten für Sektor lesen angegeben Sektorgröße − einige Festplatten können mit unterschiedlichen Sektorgrößen formatiert werden (spezielles Programm zur Low-Level-Formatierung erforderlich; der Hersteller formatiert die Festplatten im Allgemeinen immer mit 512 Byte großen Sektoren) − Sektorgröße hat Einfluss auf die Kapazität der Festplatte (größere Sektoren resultieren im Allgemeinen in einer höheren Kapazität, da die Verwaltungsinformation pro Sektor nur geringfügig steigt; das National Storage Industry Consortium hat im Jahr 2000 im Artikel Large Block Size for Disk Drives beschrieben, dass die Sektorgröße mittelfristig auf 4 KB und langfristig sogar auf größere Werte steigen muss) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 13 einige Kapazitätsbarrieren für Festplatten in der PC-Welt − FAT12-Grenze: 212 * 4 KB = 16 MB (ca. 1982/83; FAT12 wird heute (2007) immer noch bei allen Microsoft-Betriebssystemen für Disketten und DOS-Partitionen bis 16 MB eingesetzt; Windows 2000 unterstützt auch Blockgrößen von 8 KB; das Dateisystem kann dann aber von älteren Betriebssystemen (einschließlich Windows 98/ME) nicht benutzt werden) − Grenze durch inkompatible Schnittstellen: 512 MB (ca. 1991/92; physikalische Adressierung der Festplatte, CHS-Notation (cylinderhead-sector); exakt liegt die Grenze bei 504 MB, da jede Spur nur 63 Sektoren enthalten kann (siehe unten)) Standard max. Anzahl max. Anzahl max. Anzahl max. Zylinder Köpfe Sektoren/Spur Kapazität IDE/ATA 210 216 28 24 26 28 128 GB Kombination 210 24 26 512 MB BIOS INT 13h 8 GB (IDE: Integrated Device Electronics, ATA: Advanced Technology Attachment storage interface) Lösung: logische Plattengeometrie und Umrechnung (BIOS INT 13h extensions; wurde auch durch „neue“ Festplatten mit unterschiedlicher Anzahl Sektoren/Spur in verschiedenen Zylinderbereichen erforderlich (siehe weiter unten); ECHS-Notation (extended CHS); aus historischen Gründen werden Zylinder und Spuren ab 0 und Sektoren ab 1 (max. 2^n – 1 Sektoren/Spur) gezählt) Zylinder Köpfe Sektoren/Spur Kapazität „IDE/ATA“-Grenze 65.536 16 255 127,5 GB 7.944 16 63 3,8 GB BIOS-Umrechnungsfaktor /8 *8 umgerechnete Geometrie 993 128 63 3,8 GB „BIOS INT 13h“- Grenze 1.024 256 63 7,875 GB logische Plattengeometrie (Seagate Marathon 4030sl) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 14 FAT16-Grenze: 216 * 32 KB = 2 GB (ca. 1993/94; Windows NT/2000/XP unterstützen auch 64 KB Blockgrößen; das Dateisystem kann dann aber von anderen Betriebssystemen (einschließlich Windows 98/ME) nicht benutzt werden) − „BIOS INT 13h“-Grenze: 8 GB (ca. 1997) Lösung: logical block addressing (LBA) (BIOS INT 13h extensions; Sektoren werden nicht mehr über die 24-Bit großen CHSWerte angesprochen, sondern direkt über 64-Bit Sektornummern, d. h., die Plattengröße wird nur über die Anzahl der physikalischen Sektoren definiert; entspricht der Adressierung bei SCSI-Festplatten (SCSI: Small Computer System Interface); große Festplatten melden im Allgemeinen immer C/H/S = 16.383/16/63, so dass bei alter BIOS-Software nur die ersten 8 GB sichtbar sind; Linux kann ab Version 2.0.34 (06/1998) Festplatten über 8 GB vollständig nutzen und Solaris ab Version 7 für Sparc- bzw. Version 8 für Intel-Prozessoren) − FAT32-Grenze: 32 GB (theoretisch wären 228 * 32 KB = 8 TB möglich) (ca. 1998; die höherwertigen vier Bits sind reserviert, so dass nur 28 Bits für Blockadressen zur Verfügung stehen; FAT32 wird von Windows 95 OSR2, Windows 98/ME/2000/XP/... unterstützt; Partitionen mit mehr als 32 GB Kapazität können von Windows 2000/XP nicht mit FAT32 formatiert werden; Windows 2000/XP können solche Partitionen benutzen, wenn sie von anderen Betriebssystemen formatiert worden sind) − vor Linux v2.2.14 (01/2000) und Solaris 8 Rel. 10/2000: 32 GB (Die Anzahl der Zylinder wurde bei Linux im Betriebssystemkern als short int gespeichert. Die Festplatte IBM Deskstar Modell DTLA-305040 meldet z. B. C/H/S = 16.383/16/63 und 80.418.240 physikalische Sektoren (ca. 38 GB). Linux hätte 80.418.240/(16 * 63) = 79.780 Zylinder für die Platte berechnet. Da der Wert als short int gespeichert wird, gehen die höherwertigen Bits verloren, so dass alte Linux-Versionen nur eine Festplatte mit 14.244 Zylindern, 16 Köpfen und 63 Sektoren/Spur (6,8 GB) erkennen.) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 15 „IDE/ATA“-Grenze: 128 GB (ca. 2001/2002) Lösung: - ATA/ATAPI-6-Schnittstelle oder neuer - SCSI-Festplatten anstelle von IDE/ATA-Festplatten (ATAPI: ATA Packet Interface; Erweiterung der 28-Bit Adressierung auf 48-Bit Adressen (144 Peta Bytes); kann bis zu 65.536 Sektoren (32 MB) pro Kommando übertragen (vorher max. 256 Sektoren); Ultra DMA/100-Übertragungsmodus (100 MByte/s); wird auch „137 GB“-Grenze genannt, wenn 1 GB mit 109 Bytes benutzt wird; Linux kann erst seit Version 2.5.3 (01/2002) IDE/ATA-Festplatten über 128 GB vollständig nutzen) − nächste Grenze: 2 TB (alle 32-Bit Betriebssysteme können bei 512-Byte Sektoren maximal 232 * 512 Byte = 2 TB adressieren) ⇒ Lösungen erforder(te)n Änderungen im BIOS und im Betriebssystem Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 16 Aufgabe 4-1: Welche Zeiten müssen beim Lesen/Schreiben eines Datenblocks von/auf einer/eine Festplatte berücksichtigt werden? Aufgabe 4-2: Gegeben sei eine Festplatte mit folgenden Eigenschaften: Umdrehungsgeschwindigkeit: 3.600 U/min, mittlere Kopfpositionierzeit: 8 ms, logische Blockgröße: 8 Sektoren, mittlere Anzahl Sektoren/Spur: 640. a) Wie lange dauert die Übertragung eines Datenblocks im Mittel? b) Welche Änderung ergibt sich, wenn die Umdrehungsgeschwindigkeit der Festplatte 10.000 U/min beträgt? Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 17 wie wurden Kapazitätssteigerungen erreicht ? a) b) c) d) a) Festplatten hatten zuerst wenige Spuren und Sektoren/Spur (die Adressierung erfolgte mit den physikalischen Zylinder/Kopf/Sektor-Nummern) b) zuerst wurde die Kapazität durch mehr Spuren/Köpfe gesteigert (die Adressierung erfolgte mit den physikalischen Zylinder/Kopf/Sektor-Nummern) c) dann wurde die Anzahl der Sektoren/Spur erhöht (die Adressierung erfolgte relativ schnell mit logischen Zylinder/Kopf/SektorNummern, da die physikalischen Nummern für die Datenstrukturen des BasicInput/Output-Systems (BIOS) bzw. des Betriebssystems zu groß waren) d) schließlich wurden in verschiedenen Bändern/Zonen unterschiedlich vielen Sektoren/Spur benutzt (zoned bit recording) (die Adressierung erfolgte mit logischen Zylinder/Kopf/Sektor-Nummern bzw. später mit logischen Blockadressen (LBA), da die Struktur der Festplatte extern nicht mehr sichtbar war; im obigen Beispiel hat die innere Zone der Festplatte 10 Sektoren/Spur und die äußere 20 Sektoren/Spur; bei PC’s sind logische Blockadressen zwingend bei Festplatten mit Kapazitäten größer als 8 GB erforderlich) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 18 Beispiele Zylinder Köpfe Sektoren/ Spur Modell Seagate ST-506 Seagate ST-412 Seagate ST-4096 Seagate ST-4144R Seagate ST-2274A * 153 306 1024 1024 1747 4 4 9 9 5 17 17 17 26 54 Kapazität 5,1 MB 10,1 MB 76,5 MB 117,0 MB 230,3 MB * mögliche logische Geometrie: CHS = 873/10/54 ⇒ 230,2 MB Zylinderbereiche der IBM Deskstar 40GV & 75GXP (Modell DTLA-307xxx, Kapazitäten: 15 - 75 GB, November 2000) physikalische Zylinder Sektoren/Spur 0 - 1.375 1.376 - 2.831 ... 25.216 - 26.319 26.320 - 27.724 702 684 ... 378 351 Datenzone 0 Datenzone 1 ... Datenzone 13 Datenzone 14 • weitere Kapazitätssteigerung durch neues Aufzeichnungsverfahren (anstelle der horizontalen Magnetisierung wird seit dem Jahr 2005 bei neuen Festplatten oft eine vertikale Magnetisierung benutzt) longitudinal recording N S N S S N N S N S S perpendicular recording N N S N N S S N S S N S S N N S Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß N S N N S Betriebssysteme • Folie 4 - 19 wie werden Daten auf der Festplatte gespeichert ? − Format ist abhängig vom Hersteller und Modell der Festplatte − zwei grundsätzliche Formate ♦ Speicherung einer Identifikation für jeden Sektor auf der Festplatte (ID-Feld) ♦ Sektoridentifikation wird nicht auf der Festplatte sondern im Speicher des Controllers verwaltet (no-id Format) (erhöht die formatierte Speicherkapazität, da weniger Speicherplatz für Verwaltungsinformation benutzt wird) − alle modernen Festplatten benutzen Servo-Blöcke zur Positionierung der Köpfe über der Spurmitte ♦ Servo-Blöcke identifizieren die Spuren (im Allgemeinen wird ein Graycode verwendet, bei dem sich zwei benachbarte Codewörter nur in einem Bit unterscheiden.) ♦ Servo-Blöcke sind notwendig bei der hohen Spurdichte ♦ Servosystem benötigt konstante Abtastrate der Servo-Blöcke ♦ entweder Servo-Informationen auf eigener Plattenoberfläche (veraltet, da die Köpfe u. U. nicht genau über der Spurmitte positioniert werden, wenn die Servo-Plattenoberfläche z. B. wärmer oder kälter als die Datenplattenoberfläche ist (unterschiedliche Ausdehnung); im Allgemeinen bei Festplatten mit ungerader Anzahl Schreib-/Leseköpfe) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 20 ♦ oder Servo-Informationen sind in die Datenspuren eingebettet (embedded servo, sector servo; gibt es seit ca. Mitte der 1990-er Jahre; jedem Datenblock ist z. B. ein Servo-Block vorangestellt, dessen Information gelesen wird, um den Abstand der Köpfe von der Spurmitte zu bestimmen; ServoMechanismus der Festplatte benutzt diese Information, um den Kopf ggf. neu zu positionieren) • prinzipielle Struktur einer Datenspur bei ID-Formaten ... gap servo gap data gap servo gap data ... block block block block sync ID gap sync data sector CHS, flags CRC LBA good, servo bad split track ECC data blocks servo blocks relocate pointer ... − weitere Lücken (gap) werden verwendet, wenn sie z. B. für Umschaltvorgänge der Elektronik oder Spurwechsel notwendig sind − CRC-Feld zur Überprüfung eines korrekten ID-Feldes − ECC-Feld zur Fehlerkorrektur (im Allgemeinen wird ein ReedSolomon Code verwendet, der Mehrfachfehler korrigieren kann) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 21 für fehlerhafte Datensektoren wird ein Verweis auf einen Ersatzsektor gespeichert (jede Festplatte hat von Anfang an fehlerhafte Sektoren, so dass entsprechend viele Ersatzsektoren oder sogar Ersatzspuren vorgesehen sind (reduziert die formatierte Kapazität); Leistungsminderung durch erneutes Positionieren des Kopfes auf Ersatzsektor) − • früher wurden fehlerhafte Sektoren im Betriebssystem verwaltet Problem mit eingebetteter Servo-Information bei modernen Festplatten mit unterschiedlichen Datenzonen − Anzahl der Servo-Blöcke wäre in jeder Zone verschieden ⇒ keine konstante Abtastrate − an den Grenzen der Datenzonen sind die Anfänge der ServoBlöcke versetzt ⇒ Problem für den Servo-Mechanismus − Mitte der 1990-er Jahre hat IBM die Banded Sector Servo Disk Architecture entwickelt (vorher konnte die Servo-Information bei diesen Platten nicht eingebettet werden; die neue Technik wird inzwischen von (fast) allen Festplatten-Herstellern benutzt) ♦ Servo-Information kann in Datenblöcken abgelegt werden (Datenblöcke werden durch Servo-Information u. U. geteilt) ♦ Abtastrate ist wieder konstant Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 22 ♦ zusätzliche Leistungssteigerung durch Aufhebung der festen 1:1-Bindung von Servo- und Datenblöcken (im äußeren Bereich gibt es im Beispiel einen Servo-Block für zwei Datenblöcke) data band / zone servo splits data blocks data blocks servo blocks • No-ID Format − kein ID-Feld im Datenblock ⇒ mehr Speicherplatz für Daten ⇒ höhere Datenrate, da jede Spur mehr Daten enthält − Sektor-Identifikation über Tabellen im Festplatten-Controller ♦ logische Blockadresse ist Wert zwischen 0 und Anzahl adressierbarer Blöcke der Festplatte ♦ physikalische Blocknummer (PBN) ist Wert zwischen 0 und Anzahl physikalischer Blöcke der Festplatte (fehlerhafte Sektoren sind ausgeblendet; Servo-Mechanismus findet physikalische Blöcke) ♦ PBN wird in exakten Wert für Zone/Zylinder/Kopf/Sektor umgesetzt (der logische Block wird auf jeden Fall an der berechneten Stelle gefunden, da die Ersatzsektoren für fehlerhafte Sektoren in einer Tabelle im Controller stehen (ID-Felder müssen nicht mehr durchsucht werden) ⇒ schnellerer Zugriff (kein erneutes Positionieren, keine weitere Drehwartezeit bei defekten Sektoren)) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 23 Formatierung einer Festplatte − „low-level“-Formatierung (legt die physikalische Struktur der Festplatte fest) ♦ erstellt die Spuren und Sektoren auf der Festplatte inkl. der erforderlichen Datenstrukturen zum Auffinden der Sektoren ♦ wird heute immer und nur vom Hersteller durchgeführt (Als die Festplatten noch dieselbe Anzahl Sektoren/Spur hatten, konnte bzw. musste diese Aufgabe vom externen Platten-Controller durchgeführt werden, damit der Schrittmotor die Schreib-/Leseköpfe genau auf die Spuren positionieren konnte. Die integrierte Servo-Information moderner Festplatten sorgt automatisch für eine korrekte Positionierung der Schreib-/Leseköpfe über der Spur.) − „high-level“-Formatierung (legt die logische Struktur der Festplatte fest) ♦ schreibt die erforderlichen Informationen für das Dateisystem auf die Festplatte ♦ u. U. wird die Festplatte vorher in logische Platten (Partitionen) eingeteilt ♦ Festplatte kann mehrfach in verschiedene logische Platten eingeteilt oder mit unterschiedlichen Dateisystemen formatiert werden (Wenn die Festplatte neu formatiert wird, werden nur die Datenstrukturen für die Partitionen und/oder Dateisysteme neu geschrieben. Die eigentlichen Daten befinden sich im Allgemeinen immer noch auf der Festplatte und können ggf. restauriert werden (der Vorgang ist allerdings sehr aufwendig, da die Datenstrukturen des „alten“ Dateisystems zerstört worden sind.)) ♦ die „low-level“-Formatierung wird durch eine „high-level“Formatierung nicht verändert Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 24 Dateien sind zusammenhängend oder fragmentiert gespeichert fragmented file unfragmented file 6 3 5 2 4 1 − lange Zugriffszeiten bei fragmentierten Dateien (Drehwartezeit für Zugriff auf ersten Block; Blöcke 1, 2, 3 und 4 können in der ersten Umdrehung, Block 5 in der zweiten und Block 6 in der dritten Umdrehung gelesen werden; Zeit wird noch größer, wenn die Sektorabstände so ungünstig liegen, dass die Drehzeit nicht für die Positionierung des Kopfes ausreicht) − Zugriffszeit sollte optimiert werden • Schreib-/Leseaufträge von verschiedenen Prozessen für verschiedene Festplattenbereiche • wahlfreier Zugriff auf Dateiblöcke ⇒ Festplatten-Elektronik muss Positionierzeit im Vergleich zur Drehwartezeit optimieren ⇒ Festplatten-Elektronik muss Zugriff auf Sektoren der Spuren optimieren (es sollen möglichst viele Sektoren in einer Umdrehung gelesen/geschrieben werden; war früher Aufgabe des Betriebssystems; Algorithmus braucht genaue Kenntnis der Zeiten, da eine volle Umdrehungszeit gewartet werden muss, wenn der Schreib-/Lesekopf auch nur etwas zu spät auf den Sektor positioniert hat) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 25 Beispiel: Lesen einer 1.090.560 Byte großen Datei (2.130 Sektoren) (Annahme: Datei ist kompakt auf 10 aufeinander folgenden Spuren gespeichert; jeder Sektor wird genau einmal gelesen) Seagate Cheetah 18: 10.025 U/min ⇒ 5,985 ms/U mittlere Drehwartezeit: mittlere Positionierzeit: Spur-zu-Spur Positionierzeit: mittlere Anzahl Sektoren/Spur: mittlere Übertragungszeit/Sektor: 2,99 ms 6 ms 0,8 ms 213 0,0281 ms a) sequentielles Lesen 1. Spur lesen: 6 ms + 2,99 ms + 213 * 0,0281 ms ≈ 14,98 ms 2.-10. Spur lesen: 9*(0,8 + 2,99 + 213 * 0,0281) ms ≈ 87,98 ms minimal: 9*(0,8 + 213 * 0,0281) ms ≈ 61,07 ms insgesamt: 102,96 ms ≈ 0,1 s b) wahlfreies Lesen einen Sektor lesen: 6 ms + 2,99 ms + 0,0281 ms = 9,0181 ms insgesamt: 2.130 * 9,0181 ms ≈ 19 s Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Festplattendefragmentierung unter Windows 1. Durchlauf 2. Durchlauf 3. Durchlauf Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Folie 4 - 26 Betriebssysteme • Folie 4 - 27 Scheduling von Festplattenzugriffen (heute im Allgemeinen im Festplatten-Controller) − im Multitasking-Betrieb werden Schreib-/Leseaufträge im Allgemeinen für zufällige Plattenbereiche erzeugt (viele Prozesse mit Ein-/Ausgabe-Operationen) − Schreib-/Leseaufträge können im Allgemeinen nicht so schnell ausgeführt werden wie sie eingehen (Festplatte ist viel langsamer als Prozessor) − vor jedem Gerät gibt es eine Auftragswarteschlange − Aufträge können umgeordnet werden, um die Zugriffszeiten zu verkürzen ♦ Auftragsreihenfolge bzgl. Kopfpositionierzeiten optimieren ♦ Auftragsreihenfolge bzgl. Drehwartezeiten optimieren (über alle Spuren eines Zylinders; wird manchmal auch sector queueing genannt; Sortierung der Sektornummern für eine Spur ist u. U. nicht erforderlich, da Festplatten mit großem Pufferspeicher im Allgemeinen alle Sektoren einer Spur einlesen (read look-ahead)) ♦ Kombination beider Verfahren − Scheduler muss die genaue Position der Auftragsziele auf der Festplatte kennen − Scheduler muss wissen, wie viel Zeit er für einen Positionswechsel benötigt (im Allgemeinen ist es günstiger, einen zweiten Auftrag auf derselben Spur zu bearbeiten, bevor er einen Auftrag auf einer benachbarten Spur bearbeitet; ein Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 28 Spurwechsel wäre nur sinnvoll, wenn die Drehwartezeit für den zweiten Auftrag größer ist als die Summe aus den beiden Positionierzeiten und der Übertragungszeit für den Auftrag auf der anderen Spur) − • im Allgemeinen wird der Scheduler die Aufträge so anordnen, dass zur Ausführung möglichst wenig Kopfbewegungen notwendig sind Bewertungskriterien für Scheduling-Verfahren − Fairness − Durchsatz maximieren (Anzahl bearbeiteter Anfragen pro Zeiteinheit) − mittlere Antwortzeit minimieren − Varianz der Antwortzeiten minimieren (Vorhersagbarkeit der Antwortzeit) ⇒ globales Verhalten wird zu Lasten von Einzelanfragen optimiert Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 29 einige Scheduling-Verfahren a) FCFS b) SSTF 2 461 35 c) SCAN 2 461 35 d) C-SCAN request arrived after inward sweep began jump to outermost request 2 461 35 2 461 35 inward sweep outward sweep − First-Come-First-Served, First-In-First-Out ♦ sehr einfaches, faires Verfahren ♦ Aufträge werden nicht umgeordnet ♦ sehr viele Kopfpositionierungen über große Distanzen bei zufälligen Zugriffen ⇒ geringer Durchsatz ♦ sehr große Antwortzeiten bei hoher Last ♦ u. U. geeignet bei geringer Last ♦ kleine Varianz der Antwortzeiten Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 30 Shortest-Seek-Time-First ♦ Auftrag, dessen Spur der aktuellen Spur am nächsten ist, wird zuerst bearbeitet ♦ Positionierung erfolgt in beide Richtungen ♦ unfair, da Aufträge mit großem Abstand benachteiligt werden (Aufträge für die inneren und äußeren Spuren können extrem benachteiligt werden, während Aufträge für die mittleren Spuren bevorzugt werden; starkes Lokalitätsverhalten; u. U. werden Aufträge für die inneren und äußeren Spuren bei hoher Last überhaupt nicht bearbeitet (starvation)) ♦ hoher Durchsatz ♦ im Allgemeinen kurze Antwortzeiten ♦ hohe Varianz der Antwortzeiten − SCAN (bestes Verfahren für geringe Last) ♦ Kopf wird in einer Richtung positioniert, solange es in dieser Richtung Aufträge gibt ♦ Richtungsumkehr, wenn alle Aufträge in der ursprünglichen Richtung abgearbeitet worden sind (wird auch Fahrstuhl-Algorithmus genannt) ♦ unfair, da mittlere Plattenspuren im Allgemeinen häufiger bearbeitet werden als die Randspuren (auch bei hoher Last wird allerdings jeder Auftrag bearbeitet) ♦ hoher Durchsatz ♦ kurze Antwortzeiten ♦ mittlere Varianz der Antwortzeiten Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 31 Circular SCAN (bestes Verfahren für mittlere bis hohe Last; ausgezeichnet, wenn zusätzlich Drehwartezeit optimiert wird) ♦ Kopf wird von außen nach innen positioniert, solange es in dieser Richtung Aufträge gibt ♦ Positionierung auf den äußersten Auftrag, wenn alle Aufträge in der ursprünglichen Richtung abgearbeitet worden sind ♦ vermeidet die Nachteile von SCAN (wird oft so implementiert, dass Aufträge, die nach dem Start des Scan-Vorgangs ankommen, erst im nächsten Durchlauf bearbeitet werden ⇒ Aufträge der inneren und äußeren Spuren werden nicht benachteiligt) ♦ sehr kleine Varianz der Antwortzeiten Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 32 warum wurden RAID-Systeme eingeführt? (Redundant Array of Independent Disks) − Steigerung der Festplattenkapazität (viele kleine Festplatten verhalten sich wie eine große Festplatte) − Steigerung der Leistung (parallele Bearbeitung auf den verschiedenen Laufwerken ⇒ höhere Datenübertragungsrate) − höhere Zuverlässigkeit/Verfügbarkeit (Daten werden redundant gespeichert, so dass Fehler und sogar der Ausfall einer Festplatte im laufenden Betrieb korrigiert werden können. Sobald die defekte Festplatte ersetzt worden ist, werden die verlorenen Daten automatisch wieder erzeugt. Die Daten müssen trotzdem immer noch gesichert werden (Backup), da u. U. zwei Festplatten gleichzeitig ausfallen (führt im Allgemeinen zu Datenverlust), Daten bewusst (verärgerte Angestellte, Viren) oder versehentlich gelöscht werden können, usw.) • Basistechniken von RAID-Systemen − Striping ♦ mehrere Laufwerke als logische Einheit zusammenfassen ♦ Daten blockweise auf die Laufwerke verteilen (Auf diese Weise können die Daten später parallel von mehreren Laufwerken gelesen werden ⇒ Leistungssteigerung. Entspricht dem „Interleaving“ beim Hauptspeicher.) − Mirroring/Duplexing Spiegelung von Laufwerken über einen bzw. zwei Controller − Parity kostengünstige Art zur Implementierung von Redundanz • verschiedene RAID-Typen (RAID level) haben unterschiedliche Eigenschaften (es werden nur RAID 0, RAID 1, RAID 5, RAID 0+1 und RAID 1+0 vorgestellt) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 33 RAID 0 (striping) logical disk strip 0 strip 1 strip 2 strip 3 strip 4 strip 5 strip 6 strip 7 strip 8 ... − physical physical physical physical disk 0 disk 1 disk 2 disk 3 ... RAID controller and management software ... strip 0 strip 4 strip 8 ... strip 1 strip 5 strip 9 ... strip 2 strip 6 strip 10 ... strip 3 strip 7 strip 11 ... wird benutzt, um die Festplattenkapazität und/oder die Datenübertragungsrate zu erhöhen (Wenn in einem E/A-Auftrag mehrere zusammenhängende Blöcke übertragen werden, arbeiten mehrere Festplatten parallel. Die maximale Datenübertragungsrate wird erreicht, wenn das Datenvolumen eines Auftrags ein Vielfaches von „Blockgröße * Anzahl Festplatten“ ist. Sehr kleine Aufträge bringen u. U. keine Leistungssteigerung, da die Daten dann eventuell nur auf einer Festplatte gespeichert sind. Controller kann in diesem Fall eventuell andere Aufträge parallel auf den anderen Festplatten ausführen.) − keine Redundanz (daher eigentlich kein RAID) ⇒ Ausfall einer Festplatte führt zu totalem Datenverlust − Daten werden über zwei oder mehr Festplatten verteilt − verschiedene Blockgrößen (block size, strip size, striping factor, ...) (In der Praxis werden im Allgemeinen Vielfache der Sektorgröße der Festplatten als Blockgröße benutzt. Kleine Blockgrößen erhöhen ggf. die Parallelität.) − Ausfallsicherheit sinkt mit steigender Anzahl Festplatten (MTBF RAID = MTBF Festplatte / Anzahl Festplatten; MTBF: Mean Time Between Failure) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 34 RAID 1 (mirroring/duplexing) logical disk block 0 block 1 block 2 block 3 block 4 block 5 block 6 block 7 block 8 ... − mirror of another mir- mirror of hot spare physical ror of physi- physical disks disk 0 cal disk 0 disk 1 ... RAID controller and management software ... block 0 block 1 block 2 ... block 0 block 1 physical block 2 ... disk 0 block 0 block 1 block 2 ... block a block b block c ... block a block b physical block c ... disk 1 speichert alle Daten auf jeweils zwei unabhängigen Festplatten (Bei „Mirroring“ werden beide Festplatten am selben Kanal eines RAID-Controllers angeschlossen und bei „Duplexing“ an verschiedenen Kanälen des Controllers oder es werden sogar zwei Controller benutzt. Ggf. können auch mehrere Kopien der Festplatte erstellt werden, um die Datenübertragungsrate beim Lesen durch paralleles Lesen von verschiedenen Festplatten zu erhöhen. Die Kapazität des RAID-Systems kann durch hinzufügen weiterer gespiegelter Festplattensätze erhöht werden. Manchmal werden auch Ersatz-Festplatten (hot spare disks) verwaltet, die eine defekte Festplatte kurzfristig ersetzen können, um die Ausfallsicherheit des Systems zu erhöhen.) − sehr hohe Redundanz ⇒ für sicherheitsrelevante Anwendungen (Solange höchstens eine Festplatte eines Festplattenpaares ausfällt, tritt kein Datenverlust auf.) − sehr teuer (Hardware, Strom, Klimatisierung, Stellfläche, ...), da mindestens 50 Prozent der Festplatten nur Duplikate der Daten enthalten − hohe Datenrate bei Leseaufträgen, da von beiden Festplatten gelesen werden kann − geringe Datenrate bei Schreibaufträgen, da die Daten auf beide Festplatten geschrieben werden müssen und die Drehwartezeiten auf den beiden Festplatten im Allgemeinen unterschiedlich sind Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 35 RAID 5 (striping with distributed parity) logical disk physical physical physical physical physical disk 0 disk 1 disk 2 disk 3 disk 4 strip 0 strip 1 strip 2 strip 3 strip 4 ... strip 5 strip 6 strip 7 RAID controller ... and management software strip 8 ... − strip 0 strip 1 strip 2 strip 3 p(0-3) strip 4 strip 5 strip 6 p(4-7) strip 7 strip 8 strip 9 p(8-11) strip 10 strip 11 strip 12 p(12-15) strip 13 strip 14 strip 15 p(16-19) ... strip 16 ... strip 17 ... strip 18 ... strip 19 ... Berechnung der Parität mit Hilfe der XOR-Operation („a xor b“ ist „0“, wenn „a“ und „b“ denselben Bit-Wert haben und „1“ sonst. Die XOR-Operation hat die interessante Eigenschaft, dass bei einem Fehler jedes von „n+1“ Bits aus den verbleibenden „n“ Bits rekonstruiert werden kann.) − a b c = a xor b b = c xor a a = c xor b 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 Vorteile ♦ kein Datenverlust beim Ausfall eines Festplattenlaufwerks ♦ preiswerter als RAID 1, da bei n Festplattenlaufwerken nur 100/n Prozent der Festplattenkapazität für redundante Daten benutzt werden ♦ hohe Datenübertragungsraten durch „striping“ beim Lesen Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 36 Nachteile ♦ Schreibzugriffe sind langsam, da die Parität berechnet und auf eine Festplatte geschrieben werden muss (Drehwartezeiten der beteiligten Festplatten sind im Allgemeinen unterschiedlich, so dass die „langsamste“ Festplatte die Zeit bestimmt. Falls das Programm die Blöcke nicht sequentiell sondern wahlfrei schreibt, müssen alle restlichen Blöcke eines „Stripes“ gelesen werden, damit die Parität berechnet werden kann, bevor der aktuelle Block und der Paritätsblock geschrieben werden können ⇒ RAID 5 ist für wahlfreien Zugriff oder sehr kleine Schreibaufträge eigentlich nicht geeignet, wenn die Übertragungsrate eine Rolle spielt. Bei RAID 3 oder RAID 4 wird der Paritätsblock sogar auf eine spezielle Festplatte geschrieben, die dadurch zum Flaschenhals (bottleneck) wird, da alle Schreibzugriffe diese Festplatte benötigen.) ♦ sehr rechenintensiv, da die Parität berechnet werden muss (muss im RAID-Controller erfolgen, da die CPU sonst zu stark belastet werden würde) ♦ falls ein Laufwerk ausgefallen ist, müssen dessen Daten bei jedem Zugriff rekonstruiert werden (Sehr rechenintensiv, so dass das RAID-System im sogenannten „degraded mode“ relativ langsam ist. Bei einem „RAID 1“-System können die Daten in so einem Fall einfach von der redundanten Festplatte gelesen werden.) ♦ Schreibaufträge sind kritisch und müssen deshalb synchronisiert werden ⇒ Leistungseinbuße (Falls der Schreib-Prozess zwischen dem Schreiben des Datenblocks und dem Schreiben des Paritätsblocks unterbrochen wird, könnte die Datenintegrität des gesamten RAID-Systems kompromittiert werden.) − bevorzugtes RAID-System für Server mit großer Festplattenkapazität (Datei-Server, Datenbank-Server, Web-Server, Intranet-Server, ...) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 37 RAID 0+1 (RAID 01) und RAID 1+0 (RAID 10) − zweistufige Verfahren, die die Vorteile von RAID 0 und RAID 1 kombinieren − RAID 01: zuerst RAID 0 und dann RAID 1 (Spiegelung von „Stripes“. Der RAID-Controller fasst zuerst jeweils n/2 Festplatten zu zwei virtuellen „RAID 0“-Festplatten zusammen. Danach fasst er die beiden virtuellen Festplatten zu einer virtuellen „Raid 1“-Festplatte zusammen, die dann die logische Festplatte bildet, die der Server sieht.) mirror of stripe set logical disk strip 0 strip 1 strip 2 strip 3 strip 4 strip 5 strip 6 strip 7 strip 8 ... physical disk 4 RAID ... controller and management software ... physical disk 5 physical disk 6 physical disk 7 strip 0 strip 4 strip 8 ... strip 1 strip 5 strip 9 ... strip 2 strip 6 strip 10 ... strip 3 strip 7 strip 11 ... strip 0 strip 4 strip 8 ... strip 1 strip 5 strip 9 ... strip 2 strip 6 strip 10 ... strip 3 strip 7 strip 11 ... physical disk 1 physical disk 2 physical disk 3 physical disk 0 stripe set − sehr einfach zu verwalten − Ausfall einer Festplatte führt zu vollständigem Datenverlust im zugehörigen „Stripe Set“ (Redundanz ist verloren) − Ausfall einer weiteren Festplatte im anderen „Stripe Set“ führt zu vollständigem Datenverlust des RAID-Systems Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 38 RAID 10: zuerst RAID 1 und dann RAID 0 („Stripes“ auf gespiegelten Festplatten. Der RAID-Controller fasst zuerst jeweils zwei Festplatten zu n/2 virtuellen „RAID 1“-Festplatten zusammen. Danach fasst er die n/2 virtuellen Festplatten zu einer virtuellen „Raid 0“-Festplatte zusammen, die dann die logische Festplatte bildet, die der Server sieht.) logical disk strip 0 strip 1 strip 2 strip 3 strip 4 strip 5 strip 6 strip 7 strip 8 ... mirror of physical disk 0 RAID ... controller and management software ... mirror of physical disk 2 mirror of physical disk 3 strip 0 strip 4 strip 8 ... strip 1 strip 5 strip 9 ... strip 2 strip 6 strip 10 ... strip 3 strip 7 strip 11 ... strip 0 strip 4 strip 8 ... strip 1 strip 5 strip 9 ... strip 2 strip 6 strip 10 ... strip 3 strip 7 strip 11 ... physical disk 1 physical disk 2 physical disk 3 physical disk 0 − mirror of physical disk 1 in jedem Festplattenpaar darf maximal eine Festplatte ausfallen (höhere Ausfallsicherheit als RAID 01) − RAID 10 wird RAID 01 vorgezogen, wenn hohe Verfügbarkeit und hohe Datenübertragungsraten gefordert werden − RAID 01 und RAID 10 unterscheiden sich durch die Organisation der Festplatten, während die Aufteilung der Daten auf die Festplatten identisch ist − bei RAID 10 muss nur die defekte Festplatte resynchronisiert werden und bei RAID 01 müssen alle Festplatten der defekten virtuellen „RAID 0“-Festplatte resynchronisiert werden Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 39 Zusammenfassung RAID 0 RAID 1 RAID 5 Speichereffizienz 100% 50% 100*(n-1)/n % bei n Laufwerken Fehlertoleranz keine sehr gut gut Verfügbarkeit niedrig sehr gut gut wahlfreies Lesen sehr gut gut sehr gut wahlfreies Schreiben sehr gut gut mäßig sequentielles Lesen sehr gut gut gut bis sehr gut sequentielles Schreiben sehr gut gut mäßig Kosten gering hoch mittel Die Eigenschaften von RAID 10 wurden fett hervorgehoben. In der Praxis können sich einzelne RAID-Systeme sehr stark in der Leistung unterscheiden, da die Leistung von den verwendeten Festplatten, dem RAID-Controller, der Größe des Pufferspeichers (Cache) im System, den implementierten Algorithmen zur Verwaltung des Pufferspeichers und vielen anderen Dingen abhängt, so dass man die Leistungsdaten der Systeme vor einem Kauf sehr genau vergleichen sollte. • erstes RAID-System der Hochschule Fulda − 5 Festplatten Quantum Atlas 2 (ca. 9 GB, 7.200 U/min., „SCSI-3 Ultra Wide“-Schnittstelle mit 40 MB/s Übertragungsrate) − RAID-Level 5 (45 GB physikalisch; 36 GB logisch) − RAID-Controller: CMD 5500 − Anschaffungsdatum: Juni 1997 − Kosten: 26.000 DM (ca. 13.300 Euro) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 40 Logical Volume Manager (LVM) − Zwischenschicht im Betriebssystem zwischen Festplatten und Dateisystem − fasst mehrere physikalische Festplatten zu einer großen virtuellen Festplatte zusammen (der Logical Volume Manager bietet damit wie ein RAID-System eine hardwareunabhängige Sicht auf die Festplatten) − im Allgemeinen kann die virtuelle Festplatte wieder in kleinere logische Festplatten aufgeteilt werden − Größe der virtuellen Festplatte bzw. der logischen Festplatten kann einfach geändert werden − schnelle und einfache Reaktion auf neue Anforderungen des Dateisystems an die Festplattengröße (Falls ein Dateisystem direkt auf einer physikalischen Festplatte aufsetzt, kann es im Allgemeinen nicht über die Festplatte hinauswachsen, wenn es im Laufe der Zeit den gesamten Festplattenplatz belegt hat. Eine virtuelle Festplatte kann dagegen sehr einfach vergrößert werden, um ein derartiges Problem zu lösen.) − belastet die CPU(s) und die Bussysteme des Servers, da die Virtualisierung durch Software auf dem Server erbracht wird (bei einem RAID-System ist die Virtualisierung ausgelagert, so dass der Server entlastet wird) • bisher nur blockorientierter Zugriff auf Festplatten möglich ⋅ Betriebssystem benötigt höhere Abstraktionsebene ⋅ Dateisystem (Verzeichnisse und Dateien) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 41 lokale Dateisysteme und Netzwerk-Dateisysteme Workstation Storage PC Storage Workstation Storage a) Einzelplatzsysteme − Client Storage Client Storage Client Storage Client Storage Server Storage Server Storage LAN Client Storage Client Storage b) vernetzte Rechner unvernetzte Rechner haben eine lokale Festplatte mit lokalen Dateisystemen (preiswert, hohe Transaktions- (Ein-/Ausgaben pro Sekunde) und Datenübertragungsrate (MB/s), hoher Administrationsaufwand bei vielen Rechnern) − vernetzte Rechner haben im Allgemeinen Zugriff auf eine lokale Festplatte und auf Festplatten von Server-Systemen (u. U. aufwendig, wenn Inkompatibilitäten überwunden werden müssen, z. B. Zugriff von Windows-Rechnern auf UNIX-Server) − Zugriff auf Server erfolgt über Netzwerk-Dateisystem (z. B. das Netzwerk-Dateisystem NFS (network file system) von Sun Microsystems, das von vielen Betriebssystemen unterstützt wird oder das Netzwerk-Dateisystem CIFS (common internet file system) von Microsoft (ist zu NFS inkompatibel)) − freie Speicherkapazitäten auf einem System können von einem anderen System im Allgemeinen nicht benutzt werden − Datei-Server (file server) sind heute sehr wichtig ⋅ haben sich zu einer eigenen Produktgruppe entwickelt Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 42 Network Attached Storage (NAS) Client Client (Storage) (Storage) Client LAN (Storage) News Server (Storage) − Web/FTP Server (Storage) NAS RAID, ... NAS Backup Application Server (Storage) vorkonfigurierte Server (Können direkt über das LAN (local area network) adressiert werden. Einfache Installation: anschließen, hochfahren, benutzen) − bestehen im Allgemeinen aus einem oder mehreren internen Servern − Speicherkapazität wird im Allgemeinen über NFS oder CIFS bzw. FTP (file transfer protocol) oder HTTP (hypertext tranport protocol) zur Verfügung gestellt (Heterogene Systeme können dieselben Daten benutzen, da das Dateisystem im Speichersubsystem implementiert ist und die Daten über Standard-Protokolle übertragen werden. Für Datenbanksysteme im Allgemeinen nicht geeignet, da kein direkter Blockzugriff (raw volume) unterstützt wird (viele Datenbanksysteme verwalten ihre Daten selbst auf der Festplatte).) − besitzen im Allgemeinen ein für den speziellen Einsatz optimiertes Betriebssystem, das auch die Dateisysteme enthält − im Allgemeinen zu langsam für E/A-intensive Anwendungen − Datensicherung (Backup) belastet das Netzwerk (LAN) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 43 Storage Area Network (SAN) Storage Server Application Server Backup Server Client Client SAN Client LAN Storage Server Database Server − Web/FTP Server Client Client Client Client SAN ist Hochgeschwindigkeitsnetzwerk (Fibre Channel) zwischen Servern und Speichersubsystemen (SAN unterstützt „Server-Speicher“-, „Server-Server“- und „Speicher-Speicher“Kommunikation. Mehrere Server können auf denselben Speicher sequentiell oder parallel zugreifen.) − Übertragung erfolgt blockorientiert (Datenbanksysteme können damit sehr effizient arbeiten) − Dateisystem ist im Server und nicht im Speichersubsystem implementiert − Entlastung von LAN und Server durch direkte „SpeicherSpeicher“-Kommunikation bei der Datensicherung (Backup) − für E/A-intensive Anwendungen geeignet − sehr gute Skalierbarkeit (wächst mit den Anforderungen) − hohe Kosten Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 44 Aufgabe 4-3: Welche Verfahren wurden zur Kapazitätssteigerung von Festplatten eingesetzt? Aufgabe 4-4: Beschreiben Sie stichwortartig die Begriffe „low level“-Formatierung und „high level“-Formatierung. Aufgabe 4-5: Beschreiben Sie stichwortartig die Arbeitsweise des SCAN-SchedulingVerfahrens. Aufgabe 4-6: a) Welche Vorteile bieten RAID-Systeme? b) Welche Techniken werden zur Realisierung von RAID-Systemen eingesetzt? Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 45 4.2 Festplatten-Layout/Boot-Vorgang • Besonderheiten bei PCs − bis zu vier Partitionen je Festplatte in der Partitionstabelle − höchstens eine erweiterte Partition − jede Partition (heißt bei Solaris logische Platte, die ihrerseits in slices eingeteilt wird) kann für unterschiedliche Dateisysteme formatiert werden − jede Partition, von der ein Betriebssystem gestartet werden soll, muss (bei älteren Systemen) in den ersten 1024 Zylindern der Festplatte beginnen (Beschränkung in der Partitionstabelle) − die meisten (alle?) Betriebssysteme können nur von der ersten Festplatte gestartet werden − manche Betriebssysteme können sowohl von primären Partitionen als auch von logischen Laufwerken der erweiterten Partition gestartet werden − manche Betriebssysteme können nur von der ersten primären Partition des ersten Laufwerks gestartet werden Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 46 Beispiel: Layout einer Festplatte in einem PC 01 primary DOS partition (12 bit FAT) 04 primary DOS partition (16 bit FAT) 05 extended partition ... cylinder, head, ... sector of 1st sector of partition data for 1st partition partition / file system type data for 2nd partition cylinder, head, sector of last sector of partition data for 3rd partition ... ufs file system data for 4th partition super block cylinder group block inode table boot sector cylinder group 0 ... data blocks cylinder group n tertiary boot sector drive c: boot program MS-DOS boot sector partition table FAT FAT duplicate root directory secondary boot sector disk slice 0 Solaris boot sector data blocks slice 7 ... secondary boot sector partition 1 MBR primary partition 2 primary partition 3 extended primary boot sector partition 4 primary ... data data for 1st for 2nd partition partition drive d: Windows NT boot sector master file table master file table mirror system files partition table (only 2 entries) files secondary boot sector log file volume file logical device / drive drive d: (e: using Win NT) attribute definition table file root directory cluster bitmap file boot file ... MS-DOS boot sector ... linked list of extended partitions extended partition ... partition table (only 2 entries) extended partition logical device / drive secondary boot sector ... ext2fs file system Linux boot sector block group 0 block group n ... partition table (only 2 entries) extended partition logical device / drive ... super block filesystem descriptors block bitmap inode bitmap Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß inode table data blocks Betriebssysteme • Folie 4 - 47 Verwaltung der Partitionen über grafische Oberfläche (Windows XP: „Start → Systemsteuerung → Verwaltung → Computerverwaltung → Datenträgerverwaltung“ oder „Start → Ausführen → diskmgmt.msc“ aufrufen. Die Festplatte enthält zwei primäre und eine erweiterte Partition. Die erste primäre Partition enthält Windows XP und die zweite Solaris x86. Eine Solaris-Partition muss immer als aktive Partition gekennzeichnet sein, damit Solaris starten kann. Die erweiterte Partition enthält ein logisches Laufwerk für die Linux-Swap-Partition, ein weiteres für Linux und ein drittes für Benutzerverzeichnisse und -daten. Im DVD/CD-Laufwerk befindet sich eine CD und in einer USB-Schnittstelle ein Memory-Stick. Windows XP erkennt die Dateisysteme NTFS (NT file system), FAT (file allocation table file system, hier FAT16), FAT32 und CDFS (compact disk file system). Falls sich im DVD/CD-Laufwerk eine DVD befunden hätte, hätte Windows XP vermutlich das Dateisystem UDF (universal disk format) erkannt.) • Verwaltung der Partitionen über Kommandozeilen-Programm (255 * 63 = 16.065 Sektoren pro Zylinder) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 48 der erste Sektor einer Festplatte von einem PC enthält den sogenannten Master Boot Record (MBR, Boot-Block der Festplatte) Adresse • Inhalt 0x0000-0x01BD Master-Boot-Programm (Urlader) 0x01BE-0x01CD Daten der 1. Partition 0x01CE-0x01DD Daten der 2. Partition 0x01DE-0x01ED Daten der 3. Partition 0x01EE-0x01FD Daten der 4. Partition 0x01FE-0x01FF Signatur für gültigen Master Boot Record (16 Byte) einige Datenfelder und Partitionsarten der Partitionstabelle Adresse (1. Partition) Inhalt 0x01BE-0x01BE Bootflag (0x80: aktive Partition, 0x00: sonst) 0x01BF-0x01BF Schreib-/Lesekopfnummer, mit der der erste Sektor der Partition angesteuert werden kann 0x01C0-0x01C1 Sektor- und Zylindernummer des ersten Sektors der Partition (die höherwertigen 10 Bits enthalten die Zylindernummer und die niederwertigen 6 Bits die Sektornummer) 0x01C2-0x01C2 Art der Partition (Auszug) 0x00 unbekannte Partition 0x01 primäre DOS-Partition (12 Bit FAT) 0x04 primäre DOS-Partition (16 Bit FAT) 0x07 HPFS/NTFS 0x0B Win95 FAT32 0x0F Win95 extended partition (LBA) 0x82 Linux swap/Solaris x86 ... 0x01CA-0x01CD Anzahl Sektoren in der Partition Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 49 Beispiel für MBR (Kann z. B. unter Linux mit dem Kommando „dd if=/dev/hda of=mbr.bin bs=512 count=1“ gelesen und in die Datei „mbr.bin“ gespeichert werden. Vorsicht: Bei Tippfehlern kann dieses Kommando die gesamte Festplatte unbrauchbar machen! Die Datei kann dann unter Windows mit dem Befehl „debug mbr.bin“ gelesen werden. Es erscheint die Eingabeaufforderung von „debug“. Mit dem Befehl „?“ kann jetzt Hilfe zur Benutzung von „debug“ ausgegeben werden. Vor „Windows 2000“ konnte „debug“ über seine Eingabeaufforderung direkt Sektoren von der Festplatte lesen (allerdings nie den MBR): „L [Adresse] [Laufwerk] [Erster Sektor als Hex-Wert] [Anzahl]“, z. B. „L 0 2 0 1“: Lade von Laufwerk „c:“ (a=0, c=2, ...) ab Sektor 0 einen Sektor in den Hauptspeicher ab Adresse 0. Sektoren der Festplatte können auch mit dem Programm „secinspect.exe‘‘ (Sector Inspector) aus den „Windows Server 2003 Resource Kit Tools‘‘ gelesen und geändert werden. Die Datei „secinspect.msi‘‘ kann kostenfrei von der Web-Seite http://www.microsoft.com heruntergeladen und dann installiert werden. Das Programm läuft unter den Betriebssystemen „Windows NT 4.0‘‘, „Windows 2000‘‘, „Windows XP‘‘ und „Windows Server 2003‘‘ und wird in einem Kommandozeilenfenster aufgerufen, z. B. „secinspect -?“ für Hilfe.) 155D:0000 155D:0010 EB 48 90 33 2E 30 FA FC-BE 00 7C BF 00 06 8C C8 8E D0 8B E6 8E C0 8E D8-51 B9 00 01 F3 A5 59 E9 .H.3.0....|..... ........Q.....Y. zuerst Boot-Programm, dann Partitionstabelle (Einträge fett bzw. kursiv geschrieben), dann Signatur 155D:0180 155D:0190 155D:01A0 155D:01B0 155D:01C0 155D:01D0 155D:01E0 155D:01F0 − FE 20 72 00 01 C1 FF 00 47 44 00 00 00 FF FE 00 52 69 BB 00 07 0F 82 00 55 73 01 00 FE FE FE 00 42 6B 00 00 FF FF FF 00 20 00 B4 00 FE FE FE 00 00 52 0E 00 3F 35 A0 00 47-65 65-61 CD-10 00-BE 00-00 BA-0D C2-CD 00-00 6F 64 AC 73 00 03 05 00 6D 00 3C BE F6 38 40 00 00 20 00 73 B9 05 A2 00 48 45 75 00 0D C0 2E 00 61 72 F4 00 03 02 01 00 72 72 C3 00 00 80 00 55 64 6F 00 01 00 FE 00 AA .GRUB .Geom.Hard Disk.Read. Erro r.........<.u... .........s.s.... ......?......... ......5...8..... ..........@..... ..............U. 1. Partition: NTFS ♦ Windows XP ♦ Größe: F6 B9 0D 03 ⇒ 0x030DB9F6 (Little-Endian) = 51.231.222 Sektoren ≈ 24,4 GB − − − 2. Partition: Win95 extended partition (LBA), u. a. für Linux 3. Partition: Solaris x86 (aktive Partition) 4. Partition: unbenutzt • Urlader im MBR kann Urlader für Betriebssystem aus einer Partition laden • alle Datenträger, die partitioniert werden können, sind entsprechend aufgebaut Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 50 • der erste Sektor einer Partition enthält den Urlader (Boot-Programm) für das Betriebssystem • Datenträger, die nicht partitioniert werden können (z. B. Disketten), enthalten im ersten Sektor immer den Urlader für das Betriebssystem • Aufbau eines Standard-Urladers in der MS-DOS/Windows-Welt − − − − − − − Sprungbefehl zum Urlader (3 Byte) Parameterblock Urlader Fehlermeldungen ggf. Namen der Systemdateien, die geladen werden müssen ggf. ein unbenutzter Bereich Signatur für gültigen Boot-Sektor Adresse Inhalt 0x00-0x02 Sprungbefehl 0x03-0x0A OEM-ID (MSDOS5.0) 0x0B-0x0C Anzahl Bytes pro Sektor (0x0200 = 512) 0x0D Anzahl Sektoren/Cluster (0x08 ⇒ 4 KB Blöcke) 0x0E-0x0F reservierte Sektoren (0x0022 = 34) 0x10 Anzahl FAT’s (0x02) ... 0x18-0x19 Anzahl Sektoren/Spur (0x003F = 63) 0x1A-0x1B Anzahl Schreib-/Leseköpfe (0x00FF = 255) ... 0x24-0x27 Anzahl Sektoren/FAT (0x00004F93 = 20.371) ... 0x47-0x51 Name der Partition (NO NAME) ... Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 51 Beispiel für einen Betriebssystem-Urlader (einzelne Felder immer „unterstrichen“, „kursiv“, „fett“ voneinander getrennt) 155D:0000 155D:0010 155D:0020 155D:0030 155D:0040 155D:0050 155D:0060 EB 02 96 01 80 20 7B 58 00 EA 00 00 20 8E 90 00 3E 06 29 46 C1 4D 00 01 00 62 41 8E 53 00 93 00 B6 54 D9 44 F8 4F 00 4F 33 BD 4F 00 00 00 90 32 00 53-35 00-3F 00-00 00-00 4E-4F 20-20 7C-88 2E 00 00 00 20 20 4E 30 FF 00 00 4E 33 02 00 00 00 00 41 C9 8A 02 3F 02 00 4D 8E 56 08 00 00 00 45 D1 40 22 00 00 00 20 BC B4 00 00 00 00 20 F4 08 .X.MSDOS5.0...". ........?...?... ..>..O.......... ................ ..)b.O.NO NAME FAT32 3..... {......|.N..V@.. Boot-Programm, zu ladendes Systemprogramm, Fehlermeldungen, Signatur 155D:0160 155D:0170 155D:0180 155D:0190 155D:01A0 155D:01B0 155D:01C0 155D:01D0 155D:01E0 155D:01F0 • 0F 4E 00 00 00 74 6E 65 61 00 82 54 00 00 00 65 65 72 73 00 54 4C 00 00 00 6E 6E FF 74 00 FF 44 00 00 00 74 FF 0D 65 00 81 52 00 00 00 72 0D 0A 20 00 C3 20 00 00 00 84 0A 4E 64 00 00 20 00 00 00 67 4D 65 72 00 02-66 20-20 00-00 00-00 00-00 65-72 65-64 75-73 81-63 00-00 40 20 00 00 00 20 69 74 6B AC 49 20 00 00 00 65 65 61 65 C4 0F 00 00 00 00 6E 6E 72 6E D3 85 00 00 00 0D 74 66 74 0D 00 71 00 00 00 0A 66 65 3A 0A 00 FF 00 00 00 44 65 68 20 00 55 C3 00 00 00 61 72 6C 54 00 AA [email protected].. NTLDR ..... ................ ................ ..............Da tentr.ger entfer nen...Medienfehl er...Neustart: T aste dr.cken.... ..............U. was passiert beim Einschalten eines Rechners? − Programmausführung beginnt an einer vordefinierten Adresse (Die Adresse wurde von den Entwicklern des Rechners festgelegt, die auch dafür gesorgt haben, dass alle Bausteine in einem definierten Anfangszustand sind (ResetSignal). An der Adresse wird ein Programm in einem nicht-flüchtigen Speicher erwartet. In der PC-Welt beginnt alles an der Adresse F000:FFF0, an der im Allgemeinen ein Sprungbefehl zu einer BIOS-Routine (Basic Input/Output System) steht, die die eigentliche Initialisierung des Systems in die Wege leitet.) − Test und Initialisierung der Hardware (Power-On Self Test, POST) ♦ Funktionen des Prozessors testen ♦ ROM und RAM testen ♦ Schnittstellenbausteine, DMA-Controller usw. testen und initialisieren ♦ Peripherie (Tastatur, Diskettenlaufwerke, usw.) testen ♦ BIOS-Variablen/Unterbrechungsvektor-Tabelle initialisieren ♦ ROM-Erweiterungen suchen und testen (z. B. Video-Karte) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 52 im Fehlerfall wird der Rechner im Allgemeinen angehalten (Fehler werden akustisch (Piepstöne, beep code) oder optisch (Blink-Code einer Leuchtdiode) ausgegeben, solange die Grafikkarte noch nicht initialisiert ist.) − Urladen eines Betriebssystems (Boot-Vorgang) (Bis jetzt befindet sich noch kein Betriebssystem auf dem Rechner! In der PC-Welt können unterschiedliche Betriebssysteme geladen werden, z. B. MS-DOS, Windows, Linux, Solaris x86, BeOS, OS/2, QNX, ...) ♦ erfolgt über spezielle Routine im nicht-flüchtigen Speicher (Urlader im Flash-Speicher/NVRAM/BIOS) (In der PC-Welt wird das Betriebssystem über den Interrupt 19H (bootstrap loader) des BIOS geladen, der auch beim Drücken der Tastenkombination „<Strg><Alt><Entf>“ bzw. „<Ctrl><Alt><Del>“ aufgerufen wird.) ♦ genauer Ablauf hängt vom Rechner und Boot-Gerät ab (Festplatte, CD/DVD, Netzwerk, Diskette, ...) ♦ Ablauf in der PC-Welt ⋅ BIOS unterstützt verschiedene Boot-Geräte ⋅ Boot-Geräte werden in voreingestellter Reihenfolge nach einem Urlader durchsucht ⋅ meistens wird z. B. der Urlader der Festplatte (MBR) über den Interrupt 19H geladen und gestartet (In der PC-Welt ist festgelegt, dass jeder Urlader ab Adresse 0000:7C00H geladen wird. Da der Urlader aus dem MBR noch den Urlader einer Partition laden und starten muss, der auch wieder nur ab Adresse 0000:7C00H ausgeführt werden kann, muss er sich zunächst selbst in „Sicherheit“ bringen. Der Urlader aus dem MBR besitzt deswegen am Anfang eine kleine Kopierroutine, die den Urlader an eine andere Adresse verschiebt. Nur die Kopierroutine ist an der Adresse 0000:7C00H lauffähig. Anschließend wird ein Sprung auf den verschobenen Urlader ausgeführt, der dann die eigentliche Arbeit erledigt.) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme ⋅ Folie 4 - 53 falls keine Systempartition gefunden wurde, wird der Benutzer aufgefordert, eine Systemdiskette einzulegen (es muss keine MSDOS/Windows-Diskette sein, da es dem BIOS egal ist, welches Betriebssystem es lädt) ⇒ die Aufgaben des BIOS sind abgeschlossen ⋅ der Urlader aus dem MBR überprüft im einfachsten Fall die Partitionstabelle (Falls er einen fehlerhaften Eintrag feststellt, gibt er eine Fehlermeldung aus und stoppt.) ⋅ der Urlader aus dem MBR lädt dann den Urlader aus der aktiven Partition und startet ihn (Falls er keine aktive Partition findet, gibt er eine Fehlermeldung aus und stoppt. Heutige Urlader starten im Allgemeinen Programme mit komfortabler grafischer Oberfläche, so dass der Benutzer auf einfache Weise wählen kann, welches Betriebssystem er starten will, wenn er verschiedene Betriebssysteme in verschiedenen Partitionen installiert hat. Diese Programme passen natürlich nicht mehr in den Boot-Sektor.) ⇒ ab jetzt ist es spezifisch für das jeweilige Betriebssystem ⋅ der Urlader aus der Partition überprüft, ob die erforderliche(n) Betriebssystemdatei(en) vorhanden ist(sind) (Für MSDOS: IO.SYS und MSDOS.SYS, für Windows NT/2000/XP: ntldr, für OS/2: OS2LDR usw. Einige Betriebssysteme haben selbst wieder einen mehrstufigen Boot-Vorgang. Bei Windows 2000 liest „ntldr“ z. B. die versteckte Datei „boot.ini“ und präsentiert dann das bekannte „Boot-Menü“. Danach lädt es „ntdetect.com“, „ntoskrnl.exe“ und weitere Dateien. „ntoskrnl“ startet dann irgendwann den Session Manger „smss.exe“, der dann irgendwann den Login-Prozess startet, der seinerseits den „Service Control Manager“ und weitere Prozesse startet, bevor er den LoginBildschirm anzeigt.) ⋅ nachdem diese Dateien geladen und gestartet worden sind, werden verschiedene Systemprozesse gestartet und konfiguriert ⇒ der Boot-Vorgang ist im Wesentlichen abgeschlossen, sobald der Benutzer eine Eingabeaufforderung erhält Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 54 Startvorgang (bootstrapping) bei MS-DOS/Windows BIOS bootstrap loader (Interrupt 19H) Master Boot Record (MBR) bootstrap loader Partition Boot Record (PBR) bootstrap loader MS-DOS io.sys msdos.sys config.sys command.com autoexec.bat Windows 3.x Login possible Windows NT/2000/XP ntldr boot.ini bootsect.dos ... ntdetect.com ntoskrnl.exe registry hal.dll, drivers, ... registry smss.exe registry win32 subsystem registry winlogon.exe registry lsass.exe registry network, services, ... registry Windows Vista bootmgr.exe bcd ... winload.exe ntoskrnl.exe registry hal.dll, drivers, ... registry smss.exe registry win32 subsystem registry winlogon.exe registry lsass.exe registry network, services, ... registry (Bei MS-DOS bilden „io.sys“ und „msdos.sys“ den Betriebssystemkern. Mit „config.sys“ kann der Kern an die aktuelle Hardware angepasst werden, z. B. „deutsche Tastatur“, „hochauflösende Grafikkarte“, usw. „command.com“ ist die Kommandozeilen-Schnittstelle von MS-DOS, die mit „autoexec.bat“ konfiguriert werden kann, z. B. könnte mit der letzten Anweisung in dieser Datei automatisch die grafische Oberfläche gestartet werden. Bei Windows NT/2000/XP/… wurden die Aufgaben von „config.sys“ und „autoexec.bat“ in die Registrierungsdatenbank (registry) verlagert. Windows NT/2000/XP/… kann verschiedene Betriebssysteme über ein Boot-Menü starten. In der versteckten Datei „boot.ini“ müssen die Namen der Betriebssysteme, deren Partitionen und der Name der Datei, die den Boot-Sektor enthält, eingetragen werden. Einige Betriebssysteme ersetzen den „Master Boot Record“ durch eine eigene Version. In diesem Fall muss der MBR des Betriebssystems und sonst der PBR in einer Datei im selben Verzeichnis wie „boot.ini“ gespeichert werden. Die Aufgaben von „ntldr“ wurden unter „Windows Vista“ den Programmen „bootmgr.exe“ (Startmenü), „winload.exe“ (erster Start von Windows) und „winresume.exe“ („Aufwecken“ von Windows aus dem Schlafzustand (hibernate state) zugeordnet. Die Textdatei „boot.ini“ wurde durch die binäre Datei „bcd“ (boot configuration data“ ersetzt, die mit dem Programm „bcdedit“ bearbeitet werden kann. Falls eine ältere Windows-Version gestartet werden soll, würde der Boot-Manager den alten „ntldr“ in der Partition der alten Windows-Installation starten, der dann auch wieder die Datei „boot.ini“ benötigt. Ein Boot-Menü wird nur dann angezeigt, wenn es mehr als ein Betriebssystem gibt, das gestartet werden kann.) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 55 Startvorgang bei Solaris x86 (32-Bit Betriebssystemkern) bis Solaris x86 Version 9 ab Solaris x86 Version 10 BIOS bootstrap loader (Interrupt 19H) Master Boot Record (MBR) bootstrap loader (/usr/platform/i86pc/lib/fs/ufs/mboot) Partition Boot Record (PBR) bootstrap loader (/usr/platform/i86pc/fs/ufs/pboot) BIOS bootstrap loader (Interrupt 19H) Master Boot Record (MBR) bootstrap loader (/boot/grub/stage1, loads "stage1.5" or stage 2) Partition Boot Record (PBR) bootstrap loader (/boot/grub/stage1 (skipped, if installed in MBR)) bootblk boot.bin or ufsboot device configuration assistant mount root file system /etc/bootrc /platform/.../kernel/unix load kernel modules, mount file systems, ... /sbin/init /etc/inittab /sbin/rc? (start more system processes/services) "stage1.5", e. g., /boot/grub/ufs_stage1_5 other operating systems dtlogin stage2 /boot/grub/menu.lst load /platform/.../boot_archive /platform/.../multiboot /boot/solaris/bootenv.rc assembles core kernel from boot_archive, ... /platform/.../kernel/unix mount file systems, ... /sbin/init /etc/inittab start service management facility (smf) (start system services) other operating systems /sbin/rc? (outdated) dtlogin (Bis Solaris x86 v9 wurde der Solaris Bootloader benutzt und ab Version 10 wird der GRand Unified Bootloader (GRUB) eingesetzt. Grub kann Betriebssysteme von jeder Partition jeder Festplatte starten (selbst MS-DOS, dass eigentlich nur von der „c:\“-Partition der ersten Festplatte gestartet werden kann), indem es dem Betriebssystem eine geeignete Partition und Festplatte vorspiegelt. Weitere Informationen zu GRUB finden Sie unter der URL „http://www.gnu.org/software/grub“. Bis Version 9 wurden Systemdienste über Skriptdateien gestartet und gestoppt. Die Datei „/etc/inittab“ enthielt dafür entsprechende Einträge. In der Version 10 wurde die Anzahl der Einträge stark verringert, da alle Dienste mit Hilfe des Programms „svccfg“ der „Service Management Facility“ (SMF) verwaltet werden. Die alten Skripte werden noch unterstützt, obwohl sie in das neue Konzept überführt werden sollten. Falls ein 64-Bit Betriebssystem gestartet werden soll, wird anstelle von „…/kernel/unix“ der Betriebssystemkern „…/kernel/amd64/unix“ gestartet.) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 56 4.3 Funktionen/Kommandos • • • Zugriffe auf Dateiverzeichnisse und Dateien − über Funktionen für Programme − über Kommandos für Benutzer folgende Aufgaben sollen möglich sein − erzeugen eines Dateiverzeichnisses bzw. einer Datei − löschen eines Dateiverzeichnisses bzw. einer Datei − umbenennen eines Dateiverzeichnisses bzw. einer Datei − verschieben eines Dateiverzeichnisses bzw. einer Datei − kopieren eines Dateiverzeichnisses bzw. einer Datei − suchen eines Dateiverzeichnisses bzw. einer Datei − vergleichen von zwei Dateiverzeichnissen/Dateien − in anderes Dateiverzeichnis wechseln − Dateien eines Dateiverzeichnisses anzeigen − Inhalt einer Datei anzeigen − suchen eines Musters in einer Datei − Attribute eines Dateiverzeichnisses bzw. einer Datei anzeigen − Attribute eines Dateiverzeichnisses bzw. einer Datei ändern − Datei sequentiell lesen/schreiben − Datei wahlfrei lesen/schreiben − Datensatz in einer Datei ändern/löschen − usw. Betriebssystem stellt Funktionen für die Aufgaben zur Verfügung Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • • Folie 4 - 57 Dateisystem benötigt Datenstruktur − in der Attribute gespeichert werden können − zur Verwaltung der Blöcke der Dateiverzeichnisse/Dateien einige Kommandos (in der Windows-Welt wird im Allgemeinen alles über den Explorer gemacht) UNIX Windows Kurzbeschreibung mkdir mkdir Dateiverzeichnis erzeugen rmdir rmdir leeres Dateiverzeichnis löschen rm -r rmdir /s Dateiverzeichnisbaum inkl. Dateien löschen mv [-i] ren Dateiverzeichnis umbenennen mv [-i] - Dateiverzeichnisbaum verschieben cp -r[ip] xcopy /s /e /h /k /o /x Dateiverzeichnisbaum kopieren dircmp, diff -rl - zwei Dateiverzeichnisbäume vergleichen cd cd in neues Dateiverzeichnis wechseln ls [-al] dir Dateien in Dateiverzeichnis anzeigen touch - leere Datei erzeugen rm [-i] del Datei löschen mv [-i] ren Datei umbenennen mv [-i] - Datei verschieben cp [-ip] copy Datei kopieren diff, sdiff, cmp comp, fc zwei Dateien vergleichen cat, more, less, pg, tail, head, ... type Dateiinhalt anzeigen find dir /s Dateiverzeichnis/Datei suchen grep, egrep find, findstr Muster in Datei suchen ls -ali, getfacl attrib, cacls Attribute anzeigen chmod, chgrp, chown, touch, setfacl, sdtfprop attrib, cacls Attribute ändern Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 58 einige Funktionen für Dateiverzeichnisse (Diese Funktionsgruppe wird von ISO-C zur Zeit nicht unterstützt.) UNIX Windows C-Bibliothek Kurzbeschreibung mkdir CreateDirectory - Dateiverzeichnis erzeugen link, symlink CreateHardLink, CreateSymbolicLink - Verzeichnis mit neuem Namen verknüpfen opendir, fopendir FindFirstFile, FindFirstFileEx - Dateiverzeichnis öffnen (und ersten Eintrag lesen) readdir, scandir FindNextFile, FindNextFileEx - Dateiverzeichniseinträge lesen rewinddir, seekdir, telldir - - Position im Dateiverzeichnis festlegen/abfragen closedir FindClose - Dateiverzeichnis schließen rmdir RemoveDirectory - leeres Dateiverzeichnis löschen rename, renameat MoveFile, MoveFileEx rename Dateiverzeichnis umbenennen - SearchPath - bestimmte Datei suchen chdir, fchdir SetCurrentDirectory - in neues Dateiverzeichnis wechseln getcwd GetCurrentDirectory - aktuelles Verzeichnis liefern chroot, fchroot - - neues Root-Verzeichnis festlegen stat, lstat, fstat GetFileAttributes, GetFileTime, GetFileSize, ... - Dateiverzeichnisattribute anzeigen chmod, chown, utime, ... SetFileAttributes, SetFileTime, SetFileSize, ... - Dateiverzeichnisattribute ändern Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 59 einige Funktionen für Dateizugriffe (Teil 1) UNIX Windows C-Bibliothek Kurzbeschreibung creat, open CreateFile fopen, freopen Datei erzeugen/öffnen link, symlink CreateHardLink, CreateSymbolicLink - Datei mit neuem Namen verknüpfen - - tmpfile, tmpnam temporäre Datei mit eindeutigem Namen erzeugen unlink DeleteFile remove Datei löschen rename MoveFile, MoveFileEx rename Datei umbenennen - CopyFile, CopyFileEx - Datei kopieren stat, lstat, fstat GetFileAttributes, GetFileTime, GetFileSize, ... - Attribute anzeigen chmod, chown, utime, ... SetFileAttributes, SetFileTime, SetFileSize, ... - Attribute ändern read ReadFile fread, fgetc, fgets, fscanf, ... Datensatz/Zeichen aus Datei lesen write WriteFile fwrite, fputc, fputs, fprintf, ... Datensatz/Zeichen in Datei schreiben close CloseHandle fclose geöffnete Datei schließen fgetpos, ftell Schreib-/Lesezeigerposition abfragen fsetpos, fseek, rewind Schreib-/Lesezeigerposition setzen lseek SetFilePointer Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 60 einige Funktionen für Dateizugriffe (Teil 2) Windows UNIX C-Bibliothek Kurzbeschreibung fcntl - - Zugriffssteuerung auf geöffnete Datei fcntl, lockf LockFile, UnlockFile, LockFileEx, UnlockFileEx flockfile, funlockfile, ftrylockfile Zugriff auf Datei sperren/freigeben fsync FlushFileBuffers fflush Systempuffer sofort in Datei schreiben acl, facl, aclcheck GetEffectiveRightsFromAcl, AccessCheckByType, SetSecurityInfo, SetNamedSecurityInfo, ... Dateizugriffsrechte (access control list) anzeigen/setzen • Programme, die mit Dateien arbeiten, können im Allgemeinen portabel in ISO-C geschrieben werden • Programme, die mit Dateiverzeichnissen oder Dateiattributen arbeiten, müssen betriebssystemspezifische Funktionen benutzen Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 61 4.4 Attribute/Zugriffsschutz • Aufbau des Dateityp-/Zugriffsrechtefeldes unter UNIX - r w x r - x - - - Zugriffsrechte für andere Benutzer (o) Zugriffsrechte für Gruppenmitglieder (g) Zugriffsrechte für den Eigentümer (u) Dateityp − 3-mal drei Bits (erste Bit-Gruppe für Eigentümer, zweite für Gruppenmitglieder, dritte für alle anderen Benutzer) − 1. Bit einer Gruppe: Lesen erlaubt/nicht erlaubt 2. Bit einer Gruppe: Schreiben/Löschen erlaubt/nicht erlaubt 3. Bit einer Gruppe: Ausführen der Datei erlaubt/nicht erlaubt − Codierung der Werte - kein Recht r Leserecht (read) w Schreib-/Löschrecht (write) x ausführbar (execute) s SUID/SGID-Bit und execute gesetzt S/l/L SUID/SGID-Bit gesetzt t Sticky-Bit und execute gesetzt T Sticky-Bit gesetzt Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 62 falls das SUID-Bit gesetzt ist, hat das Programm während der Ausführung die Rechte des Besitzers (Auf die Datei /etc/passwd darf nur der Superuser (im Allgemeinen der Benutzer root) zugreifen. Wenn ein Benutzer mit Hilfe des Kommandos passwd sein Passwort ändert, wird seine effektive Benutzernummer temporär auf die Benutzernummer des Eigentümers der Datei gesetzt, so dass er seinen Eintrag in der Datei ändern kann.) − falls das SGID-Bit gesetzt ist, hat das Programm während der Ausführung die Rechte der Gruppe − damit ein beliebiger Benutzer Programme mit gesetztem SUID/ SGID-Bit ausführen kann, müssen zusätzlich Ausführungsrechte für andere Benutzer gesetzt sein (3. Bit-Gruppe) − falls Ausführungsrechte für den Besitzer/die Gruppe gesetzt sind, wird „s“ anstelle von „x“ benutzt − falls keine Ausführungsrechte für den Besitzer/die Gruppe gesetzt sind, wird S, l oder L benutzt (in diesem Fall haben die Bits keine Bedeutung; sie haben ebenfalls keine Bedeutung bei Verzeichnissen) − Programme mit gesetztem SUID/SGID-Bit können eine Sicherheitslücke sein − auf keinen Fall bei Shell-Skripten das SUID/SGID-Bit setzen − bei Solaris stellt das SGID-Bit bei Datendateien die exklusive Nutzung der Datei sicher (mandatory file locking) − bei ausführbaren Programmen sorgt das Sticky-Bit (save text image after execution) dafür, dass das Programm auch dann im Hauptspeicher (Swap-Bereich) bleibt, wenn es augenblicklich von niemandem benutzt wird (ist heute ohne Bedeutung) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 63 bei Dateiverzeichnissen sorgt das Sticky-Bit dafür, dass nur der Besitzer einer Datei die Datei löschen kann (Beim Verzeichnis /tmp haben alle Benutzer Schreib- und damit Löschrechte im Verzeichnis. Damit könnte jeder Benutzer jede Datei in diesem Verzeichnis löschen (auch Dateien des Benutzers root, die keine Rechte für irgendeine Gruppe oder alle anderen Benutzer haben). Durch das Sticky-Bit kann dies verhindert werden.) • Beispiel eiger:/home/fd1026 -rwsr-xr-x 1 root -rwxr-sr-x 1 root drwxrwxrwt 21 root • # ls -ld /usr/bin/passwd /usr/bin/write /tmp shadow 72836 May 2 2006 /usr/bin/passwd tty 8936 May 2 2006 /usr/bin/write root 832 Dec 21 20:56 /tmp Dateitypen - normale Dateien (Textdateien, Shell-Skripte, Objektdateien, ausführbare Programme, ...) • b blockorientierte Gerätedatei c zeichenorientierte Gerätedatei d Dateiverzeichnis D Verweisdatei für Kommunikation (door) l symbolischer Verweis (symbolic link; Kommando ln -s) p FIFO-Datei (named pipe) s AF_Unix Socket-Datei für Prozesskommunikation Dateityp wird anhand einer Byte-Folge am Anfang der Datei erkannt (magic number) • bekannte Bytefolgen sind in der Datei /etc/magic gespeichert • Dateityp kann mit Hilfe des Kommandos file bestimmt werden (Es kann sich auch dann um eine Datei im Binärformat handeln, wenn file eine Text- oder Datendatei meldet. Das Kommando file benutzt /etc/magic zur Bestimmung des Dateityps.) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 64 • ein Benutzer hat eine Benutzer- und Gruppennummer (user ID, UID, group ID, GID), die im Allgemeinen in der Datei /etc/passwd, in einer NIS-, NIS+- oder LDAP-Tabelle mit seinem Namen verknüpft wird • er kann seine Gruppe mit einem Kommando ändern, falls er verschiedenen Gruppen angehört (z. B. mit dem Befehl newgrp) (Gruppen sind in der Datei /etc/group, in einer NIS-, NIS+- oder LDAP-Tabelle definiert) • der login-Prozess ordnet die Benutzer- und Gruppennummer der login-shell des Benutzers zu, die sie an alle Sohnprozesse vererbt • die UID und GID des Benutzers sind die realen Benutzer- und Gruppennummern des Prozesses, da sie die Person identifizieren, die sich beim Rechner angemeldet hat • außerdem besitzt jeder Prozess eine effektive Benutzer- und Gruppennummer, die im Allgemeinen mit der jeweiligen realen Nummer übereinstimmt • die realen UID's und GID's werden z. B. für Abrechnungszwecke verwendet und die effektiven zur Überprüfung der Zugriffsrechte des Prozesses auf Dateien, Semaphore usw. • die Benutzer- und Gruppennummer des Eigentümers einer Datei sind Attribute der Datei • UNIX unterstützt auch Dateizugriffslisten (file access control lists) (Solaris unterstützt Dateizugriffslisten seit 1993 (Trusted Solaris) bzw. kommerziell seit 1995 (Solaris 2.5).) Beispiel tyr fd1027 62 touch datei.txt tyr fd1027 63 setfacl –m user:fd1026:r-- datei.txt tyr fd1027 64 getfacl datei.txt # file: datei.txt # owner: fd1027 # group: inf user::rwuser:fd1026:r-group::r-mask:r-other:r-- #effective:r-#effective:r-- Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 65 Zugriffsrechte unter Windows C:\>attrib A SH A SHR A SH A A R A SH A SHR A SHR SHR SHR A SH A SHR • * C:\boot.ini C:\bootfont.bin C:\BOOTSECT.DOS C:\cdcops.log C:\CLDMA.LOG C:\hiberfil.sys C:\IO.SYS C:\MSDOS.SYS C:\NTDETECT.COM C:\ntldr C:\pagefile.sys C:\PRELOAD.AAA Symbol Bedeutung A Attribut für „Zu archivierende Datei“ (Archive) H Attribut für „Versteckte Datei“ (Hidden) R Attribut für „Schreibgeschützte Datei“ (Read-only) S Attribut für „Systemdatei“ (System) weitere Dateiattribute (abhängig vom Betriebssystem) − Eigentümer der Datei − Größe der Datei − Datum/Uhrzeit des letzten Zugriff bzw. der letzten Modifikation − Anzahl Namen für eine Datei − Anzahl Unterverzeichnisse im Dateiverzeichnis Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 66 Beispiel 1 (Ausgabe von Dateiattributen unter Windows): D:\gross\skripte\bachelor\bs_praktikum>dir Datenträger in Laufwerk D: ist VOLUME Volumeseriennummer: 904F-B662 Verzeichnis von D:\gross\skripte\bachelor\bs_praktikum 19.06.2006 19.06.2006 19.05.2006 19.06.2006 20.08.2006 03.12.2006 30.06.2006 23.11.2006 03.12.2006 08.07.2006 09.07.2006 19.05.2006 19.10.2006 18:36 <DIR> . 18:36 <DIR> .. 19:41 <DIR> bilder 15:55 <DIR> www 09:09 <DIR> text 12:12 3.243.801 www.zip 17:35 <DIR> backup 16:37 3.832.615 text_06.zip 11:18 39.065 prog_06.zip 19:11 2.647.252 bilder_06.zip 14:53 <DIR> Loesungen 19:41 <DIR> prog 15:04 87.786 Loesungen_06.zip 5 Datei(en) 9.850.519 Bytes 8 Verzeichnis(se), 6.727.647.232 Bytes frei D:\gross\skripte\bachelor\bs_praktikum> • Beispiel 2 (Ausgabe von Dateiattributen unter Cygwin): eiger bs_praktikum 17 ls total 9628 drwxr-xr-x 8 sgross Kein drwxr-xr-x 5 sgross Kein drwxr-xr-x 2 sgross Kein -rw-r--r-- 1 sgross Kein drwxr-xr-x 2 sgross Kein drwxr-xr-x 2 sgross Kein -rw-r--r-- 1 sgross Kein drwxr-xr-x 4 sgross Kein -rw-r--r-- 1 sgross Kein drwxr-xr-x 3 sgross Kein -rw-r--r-- 1 sgross Kein drwxr-xr-x 3 sgross Kein -rw-r--r-- 1 sgross Kein eiger bs_praktikum 18 • –al 0 0 0 87786 0 0 2647252 0 39065 0 3832615 0 3243801 Jul Aug Jul Oct Jun May Jul May Dec Aug Nov Jun Dec 2 30 9 19 30 19 8 19 3 20 23 19 3 14:25 10:47 15:53 16:04 18:35 2006 20:11 2006 11:18 10:09 16:37 2006 12:12 . .. Loesungen Loesungen_06.zip backup bilder bilder_06.zip prog prog_06.zip text text_06.zip www www.zip Beispiel 3 (Änderung des Zeitstempels für letzten Zugriff): eiger:~ # ls -lc .login -rw-r--r-- 1 root bin 1013 eiger:~ # ls -lu .login -rw-r--r-- 1 root bin 1013 eiger:~ # head -1 .login # Datei: .login eiger:~ # ls -lc .login -rw-r--r-- 1 root bin 1013 eiger:~ # ls -lu .login -rw-r--r-- 1 root bin 1013 letzte Modifikation Sep 6 2005 .login Jul 2 10:28 .login letzter Zugriff Datei lesen Autor: S. Gross Sep 6 2005 .login Dec 21 21:06 .login Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß alte Modifikationszeit neue Zugriffszeit Betriebssysteme Folie 4 - 67 Aufgabe 4-7: Beschreiben Sie stichwortartig, was beim Einschalten eines Rechners passiert, bevor Sie eine Eingabeaufforderung/grafische Oberfläche erhalten (Boot-Vorgang). Aufgabe 4-8: a) Wie wird der Zugriffsschutz auf Dateien unter UNIX realisiert? b) Welche Möglichkeiten des Zugriffsschutz gibt es unter Windows? Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 68 4.5 Dateisysteme • erlauben persistente (dauerhafte) Speicherung von Daten • verwalten den Speicherplatz auf Hintergrundspeichern • Aufgaben • − Verknüpfung von Dateinamen mit Speicherbereichen − Verwaltung der Datenblöcke einer Datei − Verwaltung der freien Datenblöcke auf dem Datenträger − Zugriffschutz auf Dateien sicherstellen physische Struktur von Dateisystemen FAT volume layout file allo- file allo- root boot cation sector cation directable table (copy) tory data blocks NTFS volume layout boot sector master system data blocks file files table master file table (copy) data blocks Linux volume layout (ext2fs) boot sector super block block block group 0 group 1 filesystem block descrip- bitmap tors block group n ... inode inode bitmap table Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß data blocks Betriebssysteme • Folie 4 - 69 logische Struktur von Dateisystemen − Sicht des Benutzers − heutzutage werden Dateien im Allgemeinen in hierarchisch angeordneten Dateiverzeichnissen (Verzeichnis, Katalog, Ordner, directory, folder) verwaltet − Verzeichnisse sind im Allgemeinen selbst Dateien − flaches Dateiverzeichnis (globales Verzeichnis, flat directory, single-level directory system, global namespace) ♦ Struktur directory file 1 ... file m ♦ alle Dateinamen müssen verschieden sein (ein Benutzer kann die Datei eines anderen Benutzers ggf. überschreiben, wenn er zufällig denselben Namen benutzt) ♦ Beispiel: Control Data Corporation CDC 6600 (Großrechner, ca. 1964, Betriebssysteme: COS, SIPROS, Scope, ...) − benutzerspezifische Dateiverzeichnisse (two-level directory system) ♦ Struktur root directory user directory 1 file 1 ... file m ... user directory k file 1 ... file n ♦ Beispiel: CP/M (Control-Program for Microcomputers) (Mikrorechner-Betriebssystem, ca. 1973 - Mitte 1980, bis zu 16 Benutzerverzeichnisse) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 70 hierarchisch aufgebaute Dateiverzeichnisse (Verzeichnisbaum, hierarchical directory system, directory tree) ♦ Struktur root directory subdirectory file ... subdirectory subdirectory ... file ... ... subdirectory file ... file file file ♦ Beispiel: UNIX, Windows, ... ♦ Ansicht eines Verzeichnisses im Windows Explorer Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 71 ♦ Ansicht eines Verzeichnisses im Kommandozeilenfenster Windows XP: cmd.exe Cygwin Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 72 Verwaltung der Datenblöcke einer Datei − zusammenhängende Blöcke (contiguous (pre)allocation) ♦ Datei wird zusammenhängend in aufeinanderfolgende Blöcke gespeichert ♦ beste Form aus Sicht der einzelnen Datei ⋅ einfache Verwaltung: Anfangsadresse und Dateigröße ⋅ einfache sequentielle Verarbeitung ⋅ einfache direkte Verarbeitung: Block i (i >= 0) befindet sich z. B. an Position Anfangsadresse + i ♦ Dateigröße ist vorab häufig nicht bekannt ♦ nach kurzer Zeit hohe externe Fragmentierung ⇒ alle Dateien müssen umkopiert werden ♦ wird heute im Allgemeinen nicht mehr benutzt (Die Wurzelverzeichnisse einiger Dateisysteme sind von dieser Regel ausgenommen, z. B. die Stammverzeichnisse von FAT-Systemen. Die Master File Table von NTFS wird ebenfalls in einem zusammenhängenden Bereich gespeichert, während das Wurzelverzeichnis aller Benutzerdateien und -verzeichnisse bereits als Indexknoten eines B-Baums realisiert ist.) − interne Verkettung der Datenblöcke (linked list, block chaining, ...) ♦ Nachteil: Datei kann nur sequentiell bearbeitet werden (Speicherplatz für Zeiger geht vom Datenplatz ab ⇒ Blockgröße der Nutzdaten ist im Allgemeinen keine Zweierpotenz.) ♦ Struktur directory file x file y i ... j block i m block j Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß 0 block m Betriebssysteme − Folie 4 - 73 externe Verkettung der Datenblöcke (file allocation table, FAT) ♦ Nachteile: ⋅ Verweistabelle kann bei großen Partitionen viel Speicherplatz beanspruchen (Tabelle bleibt klein, wenn Blockgröße erhöht wird) ⋅ große Blöcke bei kleinen Dateien nur teilweise gefüllt ⋅ Fehler in der Verweistabelle führen zu Datenverlust ⋅ Zugriffe auf Blöcke am Ende der Datei dauern lange ♦ Struktur directory file x file y i ... file allocation table i j k l m ... j m 0 ... ... ... block i block j block k block l block m (Blocknummer für Zugriff auf Datenblock und als Index in Verweistabelle für nächsten Block) − Verwaltung über Indexblöcke (Baumstruktur, indexed allocation, ...) ♦ viele moderne Dateisysteme ♦ unterschiedliche Realisierungen ⋅ Windows, OS/2, ...: Varianten von B-Bäumen ⋅ UNIX: Index-Struktur hängt von Dateigröße ab ♦ Struktur directory file x file y p ... pointer block, index node, B-tree, ... i j m 0 0 0 0 0 ... ... block i block j block k block l Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß block m Betriebssysteme • • Folie 4 - 74 Verwaltung der freien Speicherblöcke − über Bit-Listen − über verkettete Listen − über Indexblöcke Zugriff auf Dateien erfolgt über Pfadnamen − Windows ♦ jede Partition hat eigenen Laufwerksbuchstaben ♦ jede Partition hat eigenes Wurzelverzeichnis (Wurzelkatalog, Stammverzeichnis, root directory) − UNIX ♦ alle Partitionen werden in einen gemeinsamen Dateibaum eingehängt ♦ man sieht nur ein Wurzelverzeichnis, obwohl jede Partition ein Wurzelverzeichnis besitzt − − absolute Pfadnamen beginnen immer im Wurzelverzeichnis ♦ Windows: dir \cmd\split.exe dir c:\cmd\split.exe ♦ UNIX: ls -l /windows/c/cmd/split.exe relative Pfadnamen beginnen immer im aktuellen Verzeichnis ♦ Windows: dir bs_praktikum\text dir ..\bs_praktikum\text ♦ UNIX: ls -l ../bs_praktikum/text Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 75 4.5.1 Transaktionsorientiertes Dateisystem • klassische Dateisysteme können bei „Systemabstürzen“ (z. B. Stromausfall, Rechner wird einfach ausgeschaltet, ...) in einen inkonsistenten Zustand kommen − Metadaten (Verzeichniseinträge, Blockverwaltungen) stimmen nicht mehr mit den tatsächlichen Dateien überein (Wenn unter UNIX eine Datei gelöscht wird, müssen die Blöcke der Datei und der Indexblock (i-node) bzw. die Indexblöcke der Datei freigegeben werden sowie der Eintrag im Verzeichnis gelöscht werden. Wenn zuerst der Verzeichniseintrag gelöscht wird und dann ein Systemabsturz stattfindet, gibt es nach einem Neustart des Systems „verwaiste“ Blöcke, die weder einer Datei noch der Freispeicherliste angehören. Falls zuerst die Blöcke freigegeben werden, können die freigegebenen Blöcke bereits überschrieben werden, obwohl die Datei im Verzeichnis noch existiert und ihr vielleicht auch noch Indexblöcke zugeordnet sind, d. h., dass der Dateiinhalt u. U. zerstört wird/wurde.) − Dateisystem muss beim nächsten Start des Betriebssystems überprüft und repariert werden (In der UNIX-Welt würde das Dateisystem z. B. mit dem Programm „fsck“ (file system check) überprüft und repariert werden, indem das Programm „verwaiste“ Blöcke in die Freispeicherliste einträgt bzw. bereits freigegebene Blöcke wieder einer Datei zuordnet, sofern dies möglich ist.) ♦ bei großen Dateisystemen sehr zeitaufwendig (Minuten bis Stunden) ♦ Dateisystem kann u. U. nicht repariert werden ⇒ Datenverlust • transaktionsorientierte Dateisysteme vermeiden diesen Nachteil (protokollierendes Dateisystem, journaling file system, logging file system) − stellen Konsistenz des Dateisystems durch Transaktionen sicher ♦ zuerst werden die beabsichtigten Änderungen in ein Journal eingetragen ♦ danach werden die Änderungen irgendwann durchgeführt ♦ zuletzt wird der Eintrag wieder aus dem Journal gelöscht Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 76 nach einem Systemabsturz wird das Journal gelesen ♦ unvollständig durchgeführte Aktionen werden abgearbeitet oder rückgängig gemacht ♦ unvollständige Einträge in das Journal können gelöscht werden, da sie noch keine Aktion bewirkt haben − für das Journal wird entweder ein fester Bereich reserviert oder es darf dynamisch wachsen und schrumpfen (Wenn bei Solaris für ein Dateisystem „logging“ eingestellt wird, wird für jeweils ein Gigabyte des Dateisystems ca. ein Megabyte (max. 64 MB) für das Journal reserviert.) − falls nur Metadaten transaktionsorientiert geändert werden, können Dateiinhalte u. U. verloren gehen (In diesem Fall kann eine Datei z. B. einen Block mit zufälligen oder alten Daten enthalten, wenn der Datei der Block in den Metadaten bereits zugeordnet wurde, aber die Daten noch nicht in den Block kopiert bzw. die Daten noch nicht geändert worden sind. Die meisten transaktionsorientierten Dateisysteme schützen nur die Metadaten, um leistungsfähig zu sein.) − falls alle Daten transaktionsorientiert geändert werden, müssen Datenblöcke u. U. zweimal geschrieben werden (einmal in das Journal und dann in die Datei; Datenbanksysteme schützen auch die Nutzdaten) − Beispiel: NTFS von Microsoft ♦ maximale Dateisystemgröße: ≈16 Exabyte (2^64 Byte) (Bei allen 32-Bit Systemen mit logischen Festplatten (dynamic volume, multipartition disk) ist das Dateisystem auf ≈256 Terabyte bei 64 KB und ≈16 Terabyte bei 4 KB Cluster-Größe beschränkt und bei allen klassischen Partitionen (normale Partition einer Festplatte) auf 2 Terabyte.) ♦ maximale Dateigröße: theoretisch: ≈16 Exabyte, implementiert: ≈16 Terabyte ♦ maximale Anzahl Dateien/Dateisystem: 4.294.967.295 ♦ Verzeichnisorganisation: B-Baum-Variante Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 77 4.5.2 Virtuelles Dateisystem (VFS) • virtuelles Dateisystem (virtual file system) ist Schnittstelle zwischen der Dateisystem-unabhängigen und der Dateisystem-spezifischen Funktionalität im Betriebssystemkern • virtuelles Dateisystem ist transparent − unterschiedliche Dateisysteme sehen für den Benutzer gleich aus (Benutzer kann nicht unterscheiden, ob das Dateisystem lokal oder über ein Rechnernetz zur Verfügung gestellt wird oder ob es ein Windows- oder UNIX-Dateisystem ist) − netzwerkweit eindeutige Dateideskriptoren (normale Deskriptoren sind nur innerhalb eines einzelnen Dateisystems eindeutig) − Architektur und Funktionsweise user process open(), read(), ... system call (trap) operating system kernel system calls interface Virtual File System (VFS) local net fat ... ntfs vfat hsfs buffer cache server RFS ufs hpfs ... ext2 AFS Virtual File System (VFS) net local NFS NFS client NFS server ... ... ... device driver RPC/XDR RPC/XDR operating system kernel I/O request disk controller • network wurde z. B. ca. 1985 von Sun Microsystems für ufs, ms-dos fat und nfs eingeführt (eines der ersten virtuellen Dateisysteme für UNIX) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 78 4.5.3 MS-DOS/Windows 95/Windows 98 • verwenden eine externe Verkettung der Datenblöcke (Dateizuordnungstabelle, Dateibelegungstabelle, Verweistabelle, file allocation table, FAT) • Tabelle enthält für jeden Block des Datenträgers einen Eintrag, der u. a. angibt, ob der Block frei, unbrauchbar (fehlerhaft) oder einer Datei zugeordnet ist (die Blöcke heißen Sektorgruppe oder cluster) • im Dateiverzeichnis wird der Dateiname mit der ersten Blocknummer der Datei verknüpft (FAT-Dateisystem) directory ... filename (8 bytes) name extension (3 bytes) attributes (1 byte) reserved modifi- modifi- first filecation cation cluster size time date number (10 bytes) (2 bytes) (2 bytes) (2 bytes) (4 bytes) ... logical blocks ... 100 101 102 file allocation table (FAT) ... data of file 100 101 102 101 102 501 ... 500 501 502 Free 502 EOF ... ... 500 501 502 ... unused part of last block • jeder Eintrag im Dateiverzeichnis ist 32 Byte groß • jeder Eintrag in der Verweistabelle ist 12 Bit (FAT12), 16 Bit (FAT16) oder 32 Bit (FAT32) groß Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 79 • Partitionen bis zu 16 MB werden mit FAT12 formatiert • FAT32 wird ab Windows 95 OSR2 unterstützt • VFAT-Dateisystem erlaubt lange Dateinamen (Virtual FAT, long file name, LFN, seit Windows 95 Bestandteil der FAT-Dateisysteme) − kompatibel zum „alten“ FAT-Dateisystem − unterscheidet zwischen Groß- und Kleinbuchstaben (nur in der Anzeige; Dateisystem unterscheidet nicht zwischen Groß- und Kleinbuchstaben) − lange Dateinamen werden in zusätzlichen Verzeichniseinträgen gespeichert − lange Dateinamen sollten nicht im Wurzelverzeichnis benutzt werden, da dessen Größe beschränkt ist (abhängig vom Datenträger und dem Dateisystem können im Wurzelverzeichnis zwischen 112 und 512 Dateien verwaltet werden) − Anordnung der Verzeichniseinträge ohne VFAT mit VFAT ... ... 8.3 Dateiname 4 8.3 Dateiname 2 8.3 Dateiname 3 LFN-Erweiterung 2 zu Datei 1 8.3 Dateiname 2 LFN-Erweiterung 1 zu Datei 1 8.3 Dateiname 1 ... 8.3 Dateiname 1 ... Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 80 Beispiel: dir unter MS-DOS von Windows 98 ... TEST-DAT TXT 76 21.10.01 18:57 test-dat.txt THIS_I~1 TXT 76 21.10.01 18:57 this_is_a_very_very_long_filename.text.txt ... dir unter MS-DOS 6.22 ... TEST-DAT TXT THIS_I~1 TXT ... 76 21.10.01 18:57 76 21.10.01 18:57 Ausschnitt aus dem Dateiverzeichnis 24AA:0060 24AA:0070 24AA:0080 24AA:0090 41 61 54 55 74 00 45 2B 00 74 53 55 65 00 54 2B 00 2E 2D 00 73 00 44 00 00 74 41 28 74-00 00-78 54-54 97-55 2D 00 58 2B 00 00 54 02 0F 00 20 00 00 74 00 4C 95 00 C4 00 64 00 27 00 00 00 97 00 At.e.s.t.-....d. a.t...t.x...t... TEST-DATTXT ..'. U+U+..(.U+..L... 24AA:00A0 24AA:00B0 24AA:00C0 24AA:00D0 24AA:00E0 24AA:00F0 24AA:0100 24AA:0110 24AA:0120 24AA:0130 44 FF 03 65 02 5F 01 73 54 55 74 FF 69 00 79 00 74 00 48 2B 00 FF 00 2E 00 6C 00 5F 49 55 78 FF 6C 00 5F 00 68 00 53 2B 00 FF 00 74 00 6F 00 61 5F 00 74 FF 65 00 76 00 69 00 49 00 00 FF 00 65 00 6E 00 5F 7E 28 00-00 FF-FF 6E-00 00-78 65-00 00-67 73-00 00-76 31-54 97-55 FF FF 61 00 72 00 5F 00 58 2B FF 00 00 00 00 00 00 00 54 03 0F 00 0F 00 0F 00 0F 00 20 00 00 FF 00 74 00 5F 00 65 00 4C FB FF FB 00 FB 00 FB 00 9F 00 FF FF 6D 2E 79 66 69 72 4C 00 FF FF 00 00 00 00 00 00 97 00 Dt.x.t.......... ................ .i.l.e.n.a....m. e...t.e.x...t... .y._.v.e.r....y. _.l.o.n.g..._.f. .t.h.i.s._....i. s._.a._.v...e.r. THIS_I~1TXT ..L. U+U+..(.U+..L... Der erste Dateiname benötigt einen zusätzlichen Eintrag und der zweite vier zusätzliche Einträge im Dateiverzeichnis. Im letzten Eintrag wird Bit 6 gesetzt (0x40). Der lange Dateiname wird im Unicode (2 Byte je Zeichen) gespeichert. • einige Default-Cluster-Größen bei verschiedenen Dateisystemen Partitionsgröße FAT12 FAT16 FAT32 NTFS 512 Byte - - - 512 MB – 1 GB - 16 KB 4 KB 1 KB 1 GB – 2 GB - 32 KB 4 KB 2 KB 8 GB – 16 GB - - 8 KB 4 KB 16 GB – 32 GB - - 16 KB 4 KB 32 GB – 2 TB - - - 4 KB Disketten Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 81 4.5.4 Windows NT/Windows 2000/Windows XP • für diese Systeme wurde NTFS (NT file system) entwickelt • einige Eigenschaften − transaktionsorientiertes Dateisystem (change logging) − unterstützt individuelle Zugriffsrechte für Dateien und Ordner (file and folder permissions, access control lists) − Beschränkung des Festplattenplatzes pro Benutzer (disk quota) − Dateiverschlüsselung (file encryption) − Dateikompression (file compression) − platzsparende Speicherung von großen Dateien mit wenig Daten (sparse files) − mehrere Datenkanäle in einer Datei (multiple data streams) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 82 Zugriffsschutz auf Dateien und Verzeichnisse unter Windows XP − mit rechter Maustaste auf Datei- oder Verzeichnisnamen klicken und „Eigenschaften“ wählen Rechner in keiner Domäne und „Einfache Dateifreigabe“ − Rechner in Domäne Rechner in keiner Domäne ♦ als Administrator „Start → Systemsteuerung“ wählen ♦ Doppelklick auf „Ordneroptionen“ ♦ „Ansicht“ wählen ♦ im Fenster „Erweiterte Einstellungen“ den Punkt „Einfache Dateifreigabe verwenden (empfohlen)“ deaktivieren (Die Freigabe kann auch im „Windows Explorer“ unter „Extras → Ordneroptionen → Ansicht“ deaktiviert werden.) ♦ mit rechter Maustaste auf Datei- oder Ordnernamen klicken ♦ „Eigenschaften → Sicherheit“ wählen Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 83 ♦ erweiterte Sicherheitseinstellungen ♦ effektive Berechtigungen ♦ ggf. wieder „Einfache Dateifreigabe verwenden“ aktivieren Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 84 Zugriffsrechte mit Kommandozeilenprogramm „cacls“ anzeigen C:\>cacls WINDOWS C:\WINDOWS VORDEFINIERT\Benutzer:R VORDEFINIERT\Benutzer:(OI)(CI)(IO)(Beschränkter Zugriff:) GENERIC_READ GENERIC_EXECUTE VORDEFINIERT\Hauptbenutzer:C VORDEFINIERT\Hauptbenutzer:(OI)(CI)(IO)C VORDEFINIERT\Administratoren:F VORDEFINIERT\Administratoren:(OI)(CI)(IO)F NT-AUTORITÄT\SYSTEM:F NT-AUTORITÄT\SYSTEM:(OI)(CI)(IO)F VORDEFINIERT\Administratoren:F ERSTELLER-BESITZER:(OI)(CI)(IO)F C:\>cacls tmp C:\tmp VORDEFINIERT\Administratoren:F VORDEFINIERT\Administratoren:(OI)(CI)(IO)F NT-AUTORITÄT\SYSTEM:F NT-AUTORITÄT\SYSTEM:(OI)(CI)(IO)F ERSTELLER-BESITZER:(OI)(CI)(IO)F VORDEFINIERT\Benutzer:R VORDEFINIERT\Benutzer:(OI)(CI)(IO)(Beschränkter Zugriff:) GENERIC_READ GENERIC_EXECUTE VORDEFINIERT\Benutzer:(CI)(Beschränkter Zugriff:) FILE_APPEND_DATA VORDEFINIERT\Benutzer:(CI)(Beschränkter Zugriff:) FILE_WRITE_DATA • Beschränkung des Festplattenplatzes pro Benutzer (disk quota) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 85 Master File Table (MFT) ist zentrale Datenstruktur − enthält für alle Dateien/Verzeichnisse der Partition einen Eintrag (Falls die Informationen für einen Eintrag zu groß sind, werden weitere Einträge benutzt.) − jeder Eintrag ist ein Kilobyte groß − Struktur der MFT (die ersten 16 Einträge sind für Systemdateien reserviert) Dateiname MFT-Eintrag Einsatzgebiet $Mft 0 master file table $MftMirr 1 Kopie der MFT $LogFile 2 Journal-Datei für Transaktionen $Volume 3 Informationen zur Partition (Kommando „fsutil fsinfo volumeinfo c:\“) $AttrDef 4 definiert alle Attribute \ 5 Wurzelverzeichnis $Bitmap 6 Freispeicherliste $Boot 7 Boot-Sektor $BadClus 8 Liste fehlerhafter Cluster $Secure 9 Sicherheitseinstellungen für alle Dateien $UpCase 10 wandelt Kleinbuchstaben in Unicode-Großbuchstaben $Extend 11 verschiedene Erweiterungen, z. B. quota, reparse points, ... reserved 12 – 15 normale Dateien ab 16 für spätere Erweiterungen Benutzerdateien und -verzeichnisse Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 86 12,5 Prozent des Speicherplatzes der Partition werden für die MFT reserviert, damit sie nicht fragmentiert, wenn die Anzahl der Dateien wächst (MFT zone) ♦ bei sehr vielen kleinen Dateien muss die MFT-Zone direkt nach der Formatierung der Partition vergrößert werden ♦ Kommando „fsutil behavior set mftzone <value>“ • value Größe 1 12,5 Prozent des Speicherplatzes 2 25 Prozent des Speicherplatzes 3 37,5 Prozent des Speicherplatzes 4 50 Prozent des Speicherplatzes Datei/Verzeichnis besteht aus mehreren Attributen, z. B. − Datei-/Verzeichnisname − Zugriffsrechte − Daten der Datei bzw. Index des Verzeichnisses • kleine Attribute können vollständig im MFT-Eintrag gespeichert werden (resident attributes) • umfangreiche Attribute können nicht im MFT-Eintrag gespeichert werden (non-resident attributes) − diese Attribute werden in einem Block bzw. mehreren Blöcken der Partition gespeichert − das entsprechende Attribut in der MFT verweist dann auf diesen Block bzw. diese Blöcke Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 87 MFT-Eintrag für eine kleine Datei bzw. ein kleines Verzeichnis standard file or directory information name data or index unused space − kleine Dateien/Verzeichnisse (bis ca. 900 Byte) passen vollständig in den MFT-Eintrag ⇒ schneller, effizienter Zugriff − standard information, z. B. ♦ Erzeugungszeitpunkt ♦ Zeitpunkt des letzten Zugriffs (kann mit „fsutil behavior set disablelastaccess“ abgeschaltet werden) ♦ read-only, hidden, ... − file/directory name Attribut kann mehrfach vorkommen, z. B. ♦ langer NTFS-Dateiname (bis zu 255 Zeichen, Unicode) ♦ 8.3 Dateiname für alte Programme (Großbuchstaben) (kann mit Kommando „fsutil behavior set disable8dot3“ abgeschaltet werden) − Daten-Attribut ♦ namenloses Attribut (Standard für jede Datei) ♦ Attribute mit Namen (weitere „unsichtbare“ Datenströme) ♦ Beispiel C:\tmp>echo default > MultipleStream.txt C:\tmp>dir MultipleStream.txt ... 20.01.07 16:07 10 MultipleStream.txt ... C:\tmp>echo stream-1 > MultipleStream.txt:stream1 C:\tmp>dir MultipleStream.txt ... 20.01.07 16:07 10 MultipleStream.txt ... C:\tmp>more < MultipleStream.txt default C:\tmp>more < MultipleStream.txt:stream1 stream-1 Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme − Folie 4 - 88 Index-Attribute ♦ Attribute zur Implementierung des B-Baums ♦ index root, index allocation, index bitmap • MFT-Eintrag für große Datei standard fileinformation name VCN 0 1 2 data starting VCN 0 8 3 4 5 attribute list starting number of LCN clusters 200 8 420 4 6 7 LCN 200 201 202 203 204 205 206 207 8 9 10 11 420 421 422 423 − Datei wird in Blöcke eingeteilt (virtual cluster number, VCN) − Festplatte ist ebenfalls in Blöcke gleicher Größe aufgeteilt (logical cluster number, LCN) − Datenattribut enthält VCN-LCN-Abbildungstabelle − falls die Datei sehr stark fragmentiert ist, ist das Datenattribut zu klein für die Abbildungstabelle ⇒ Attribut „attribute list“ wird hinzugefügt, über das weitere MFT-Einträge für diese Datei allokiert werden können, die weitere Attribute aufnehmen können ⇒ im Allgemeinen notwendig, wenn die Datei in mehr als 200 Bereiche zerteilt wird Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • • Folie 4 - 89 MFT-Eintrag für großes Verzeichnis − analog zu großen Dateien − Attribut „index root“ enthält den Wurzelknoten des B-Baums − Indexknoten des B-Baums werden in Index-Blöcken gespeichert − Attribut „index allocation“ enthält die VCN-LCN-Abbildungstabelle für die Index-Blöcke − das Attribut „index bitmap“ gibt an, welche VCNs in den IndexBlöcken benutzt werden bzw. noch frei sind Auszug aus der Master File Table (Das erforderliche Programm „nfi.exe“ findet man auf der Web-Seite von Microsoft in der Datei „oem3sr2.zip“ oder „oem3sr2s.zip“ für Windows 2000. Es funktioniert bei mir aber auch unter Windows XP.) NTFS File Sector Information Utility. Copyright (C) Microsoft Corporation 1999. All rights reserved. File 0 Master File Table ($Mft) $STANDARD_INFORMATION (resident) $FILE_NAME (resident) $DATA (nonresident) logical sectors 6291456-6638047 (0x600000-0x6549df) ... $BITMAP (nonresident) logical sectors 6291448-6291455 (0x5ffff8-0x5fffff) ... File 1 Master File Table Mirror ($MftMirr) $STANDARD_INFORMATION (resident) $FILE_NAME (resident) $DATA (nonresident) logical sectors 30724280-30724287 (0x1d4d0b8-0x1d4d0bf) File 2 Log File ($LogFile) $STANDARD_INFORMATION (resident) $FILE_NAME (resident) $DATA (nonresident) logical sectors 6160368-6291439 (0x5dfff0-0x5fffef) ... File 5 Root Directory $STANDARD_INFORMATION (resident) $FILE_NAME (resident) $INDEX_ROOT $I30 (resident) $INDEX_ALLOCATION $I30 (nonresident) logical sectors 41409584-41409607 (0x277dc30-0x277dc47) $BITMAP $I30 (resident) ... Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme 4.5.5 • Folie 4 - 90 UNIX Dateisystem (unix file system, ufs) besteht aus Zylindergruppen und wird durch Superblock beschrieben (jede Partition hat ggf. ein eigenes Dateisystem) • • • Superblock enthält u. a. − Verweise auf Zylindergruppen − Anzahl Zylindergruppen − Anzahl Datenblöcke − maximale Anzahl Dateien − Zeiger auf Freispeicherliste − verschiedene Zeitstempel warum gibt es Zylindergruppen? − Metadaten (i-nodes) und Daten liegen dicht beieinander − effizienter, da kleinere Kopfpositionierzeiten auf der Festplatte jede Zylindergruppe enthält − Kopie vom Superblock, da kritische Datenstruktur − Bitliste der belegten/freien Blöcke − Bitliste der belegten/freien i-nodes − i-node-Tabelle − Daten Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 91 Partitionen (c0t0*) werden in gemeinsamen Dateibaum integriert / c0t0d0s0 cdrom sbin etc dev opt home var export usr ... c0t0d0s5 c0t0d0s3 c0t0d0s6 hosts passwd group named.conf ... ... ... home c0t0d0s7 ... ... gross ... ... • .cshrc .login SunOS ... ... Baum wird beim Starten des Systems automatisch erzeugt − Datei /etc/fstab (Linux) #device #to mount # /dev/hda6 /dev/hda5 /dev/sda /dev/hda1 /dev/hda7 ... mount point FS type mount options dump fsck pass / swap /media/floppy /windows/C /windows/D reiserfs swap auto ntfs vfat acl,user_xattr pri=42 noauto,user,sync noauto,ro,users,... noauto,users,... 1 0 0 0 0 1 0 0 0 0 ♦ Dateisysteme auf Disketten und die Windows-Partitionen müssen manuell eingebunden werden (wegen „noauto“) z. B.: mount /windows/C ♦ falls das Dateisystem nicht in /etc/fstab steht, muss das vollständige Kommando benutzt werden z. B.: mount –t ntfs –o ro /dev/hda1 /windows/C − Datei /etc/vfstab (Solaris) #device #to mount # /dev/dsk/c1t2d0s1 /dev/dsk/c1t2d0s0 /dev/dsk/c1t2d0s3 /dev/dsk/c1t1d0s6 ... device to fsck mount point FS type fsck pass mount at boot mount options /dev/rdsk/c1t2d0s0 /dev/rdsk/c1t2d0s3 /dev/rdsk/c1t1d0s6 / /var /export2 swap ufs ufs ufs 1 1 1 no no no yes logging Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 92 Dateiverzeichnis enthält für jede Datei im Allgemeinen vier Werte − sogenannte i-node-Nummer als Index in eine i-node-Tabelle − die Größe des Eintrags, um schnell auf den nächsten Eintrag positionieren zu können (eine Art verkettete Liste) − die Länge des Dateinamens − den Dateinamen (bis zu 255 Zeichen; ggf. mit Nullen auf eine durch vier teilbare Länge ergänzt) • jede Datei wird durch einen i-node beschrieben (Attribute der Datei) • alle Dateien werden in der i-node-Tabelle (i-node-list) verwaltet (entspricht der Master File Table bei Windows NTFS) directory i-node table ... ... i-node entry length filename length filename filetype, access permissions reference count owner (UID) group (GID) filesize last access time-stamp last modification time-stamp creation time-stamp block number for data block 0 ... ... block number for data block 11 block number for single indirect block block number for double indirect block block number for triple indirect block ... data blocks (e.g., 8 KB) ... ... ... ... ... ... ... ... ... .. ... ... ... ... Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 93 i-node-Nummern mit spezieller Bedeutung − 0 wird nicht benutzt − 1 wird nicht benutzt (früher „bad block“-Liste) − 2 Wurzelverzeichnis • falls eine Datei unter verschiedenen Namen bekannt ist (z. B. in verschiedenen Dateiverzeichnissen) müssen die Daten nur einmal gespeichert werden, da ein Referenzzähler im i-node angibt, wie viele Verweise auf die Datei existieren (hard link, Kommando: „ln“) • die Datenblöcke einer Datei werden erst dann gelöscht, wenn der Referenzzähler den Wert 0 annimmt • „hard link“ ist auf Dateien eines Dateisystems beschränkt • „symbolic link“ (Kommando: „ln -s“) ist dateisystemübergreifend („symbolic link“ hat eigenen i-node, der den Pfad zur anderen Datei enthält. „symbolic link“ kann auf noch nicht oder nicht mehr existierende Dateien verweisen.) • sobald eine Datei geöffnet wird, wird der i-node vom Datenträger in den Hauptspeicher übertragen und bleibt dort solange bis die Datei wieder geschlossen wird • die virtuellen Blocknummern der Datei werden über eine Verweisstruktur auf die logischen Blöcke des Datenträgers abgebildet (die Nummern der ersten 12 Blöcke können direkt über den i-node umgewandelt werden, so dass ein schneller Zugriff auf kleine Dateien sichergestellt ist. Falls die Datei größer ist, werden die nächsten Blöcke über (mehrstufige) Verweisblöcke adressiert) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 94 Darstellung der internen Struktur des ufs-Dateisystems i-node table directory "/" 2 2 3 8 ... ... 2 drwxr-xr-x ... direct block ... 3 drwxr-xr-x ... direct block ... 1 2 10 3 . .. lost+found usr directory "/usr" 8 2 100 ... ... 8 drwxr-xr-x ... direct block ... 12 12 12 1 2 3 . .. bin directory "/usr/bin" 100 8 680 ... ... 100 12 12 20 12 drwxr-xr-x ... direct block ... 12 12 20 1 2 11 . .. xemacs-20.4 file "/usr/bin/xemacs-20.4" ... 680 -rwxr-xr-x ... 5.158.908 ... direct block ... direct block single indirect ... ... ... 0 ... ... 616 617 unused (Die ersten 12 * 8 KB = 96 KB werden direkt adressiert. Der Indexblock kann zweitausend 32-Bit-Adressen oder eintausend 64-Bit-Adressen speichern. 12 + 618 = 630 Blöcke können 5.160.960 Byte speichern.) Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme • Folie 4 - 95 Tabellenstruktur im Betriebssystem process context process-specific open file table kernel resident system open file table disk-resident active i-node table 0 1 2 i-node ... ... file descriptor ... i-node data ... ... process-specific open file table 0 1 2 ... data ... ... file descriptor • unabhängige Prozesse benutzen im Allgemeinen verschiedene Einträge in der systemweiten Tabelle offener Dateien ⇒ jeder hat einen separaten Schreib-/Lesezeiger in die Datei • abhängige Prozesse (Vater - Sohn) benutzen u. U. denselben Eintrag in der systemweiten Tabelle offener Dateien ⇒ Prozesse benutzen ggf. denselben Schreib-/Lesezeiger in die Datei ⇒ wenn ein Prozess die Position des Zeigers ändert, arbeitet der andere Prozess an der neuen Position weiter (Prozesse können sich u. U. gegenseitig stören) • Beispiel: OpenFileTable.c im Programmarchiv Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß Betriebssysteme Folie 4 - 96 Aufgabe 4-9: a) Warum benutzt das Dateiverwaltungssystem bei Festplatten Blocknummern zur Speicherung von Dateien? b) Wie werden die virtuellen Blocknummern einer Datei unter MS-DOS in logische Blocknummern umgesetzt? c) Skizzieren Sie, wie der dritte Datenblock der Datei „bs_klau.doc“ in einem FAT-Dateisystem gefunden wird. Nennen oder zeichnen Sie alle wesentlichen Schritte. Aufgabe 4-10: a) Wie würde die Verweisstruktur für die obige Datei /usr/bin/xemacs20.4 (5.158.908 Byte) aussehen, wenn das Dateisystem vier Kilobyte große Blöcke und 32-Bit-Adressen benutzt? b) Beschreiben Sie stichwortartig, wie die Daten der Datei bs.doc (2.292.767 Byte) von UNIX auf einer Festplatte gefunden werden, wenn 32-Bit Adressen benutzt werden. Nennen Sie alle wesentlichen Begriffe. Hochschule Fulda, Fachbereich AI, Prof. Dr. S. Groß