LBA- und CHS-Format, LBA-Mapping

  • Dies sind Begriffe, die eigentlich jeder schon mal gehört hat. Aber was bedeuten sie? Hier nun eine kurze Übersicht und Erklärung, die ich mit Hilfe von Dr. Ulrich Staub *) zusammengestellt habe. LBA-Format: LBA steht für Logical Block Address. Hierbei werden die Sektoren der Festplatte beginnend mit 0 einfach fortlaufend durchnummeriert. Ein bestimmter Sektor ist dann durch seine LBA-Nummer eindeutig festgelegt. Das LBA-Format wird nur von einem nicht zu alten BIOS unterstützt (ca. ab Mitte der Neunziger Jahre). CHS-Format: Im CHS-Format wird ein Sektor durch die Angabe der Cylinder/Head/Sector-Nummer festgelegt. Diese Werte gaben früher einmal die tatsächliche physikalische Position des Sektors auf der Platte an. Heutzutage sind die CHS-Angaben jedoch logische Werte. Die (logische) Anzahl der Zylinder, Köpfe und Sektoren pro Spur lassen sich über die Funktion 08h bzw. 48h des BIOS-Interrupts-13 ermitteln. Das CHS-Format wird von jedem BIOS unterstützt, allerdings nur bis zu einer Plattengröße von 8 GB (siehe unten). Im CHS-Format gelten folgende Beschränkungen: Zylinder-Nummer 0 - 1023 - (10 Bit) / Kopf-Nummer 0 - 254 - (8 Bit) Sektor-Nummer 1 - 63 - (6 Bit). Aufgrund eines Fehlers im DOS-Betriebssystem führt eine maximale Kopf-Nummer von 255 zu einem Absturz, obwohl diese Zahl eigentlich vom BIOS erlaubt ist. Die maximale Kopf-Nummer 255 wird deshalb in der Regel nicht benutzt. Maximale Plattengröße: Für das CHS-Format stehen in der Partitionstabelle und für den Aufruf von BIOS-Funktionen generell nur 24 Bit zur Verfügung. Damit lassen sich bei einer Sektorgröße von 512 Byte nur Platten bis 8 GB adressieren. Für die LBA-Nummern stehen in der Partitionstabelle des MBR 32 Bit zur Verfügung. Bei derselben Sektorgröße von 512 Bytes können damit Platten bis zu 2048 GB (2 TB) adressiert werden. Der erweiterte INT 13h benutzt sogar 64 Bit für die Angabe der LBA-Nummer. Aufgrund des einfacheren Konzepts und der Möglichkeit, auch mit größeren Platten zurechtzukommen, wird das LBA-Format intern von allen modernen Betriebssystemen für den direkten Plattenzugriff benutzt. Umrechnung zwischen CHS und LBA: Beide Angaben (CHS und LBA) lassen sich ineinander umrechnen und sind praktisch äquivalent. Ein Sektor C/H/S im CHS-Format hat folgende LBA-Nummer: LBA = C x Num_Head x Num_Sec + H x Num_Sec + (S - 1) Hierbei bedeutet Num_Sec die (logische) Anzahl der Sektoren pro Spur und Num_Head die (logische) Anzahl der Köpfe. Nur diese beiden (logischen) Geometrie-Parameter der Platte sind für die Umrechnung maßgebend. Die Anzahl der Zylinder ist unerheblich. LBA-Mapping: Die beiden Umrechnungsparameter Num_Head und Num_Sec werden unter dem Begriff LBA-Mapping zusammengefasst. Das LBA-Mapping bestimmt also den Zusammenhang zwischen den CHS- und LBA-Werten eines Sektors. Diese beiden Parameter werden generell über die Funktion AH=08h des Standard-BIOS-Interrupts 13h ermittelt. Auch wenn der erweiterte Interrupt 13h vorhanden ist, wird das LBA-Mapping über den gewöhnlichen INT 13h ermittelt. Die Plattenparameter, die vom erweiterten INT 13h zurückgegeben werden, dienen praktisch nur zur Ermittlung der Plattengröße. Die Plattengröße ergibt sich bei einer festen Sektorgröße von 512 Bytes unmittelbar aus der Gesamtzahl der Platten-Sektoren, die sich wiederum aus dem Produkten der Anzahl Zylinder, Köpfe und Sektoren/Spur berechnet. INT 13h / erweiterter INT 13h - INT 13h: Der BIOS-Interrupt 13h stellt Funktionen zum Zugriff auf die Festplatte bereit. Er ist im BIOS implementiert, d. h. diese Funktionen können ohne zusätzliche Treiber benutzt werden. Dies ist insbesondere beim Booten wichtig, da zu diesem Zeitpunkt noch kein Betriebssystem und auch noch keine Festplattentreiber geladen sind. Zum Einlesen des Bootsektors von der Festplatte wird also in der Regel der INT 13h benutzt. Der INT 13h verwendet zur Adressierung eines Sektors die CHS-Notation mit 24 Bit. Damit kann der INT 13h nur für Platten mit einer maximalen Kapazität von 8 GB benutzt werden. Bei größeren Platten sind im günstigsten Fall die ersten 8 GB über den INT 13h zugänglich. Erweiterter INT 13h: Der erweiterte INT 13h ist eine Erweiterung des INT 13h. Diese Erweiterung wurde Anfang der neunziger Jahre von IBM und Microsoft spezifiziert. Beim erweiterten INT 13h wird (neben weiteren Änderungen) ein Sektor durch die LBA-Nummer mit einer Breite von 64 Bit gekennzeichnet. Damit lassen sich Sektoren bis zu einer maximalen Plattengröße von 8 Milliarden TB adressieren. Diese Grenze übersteigt heutige Plattenkapazitäten (8 GB) um 12 Zehnerpotenzen. Dies sollte also noch für "einige" weitere Jahre ausreichen. Das Konfigurationsprogramm Boot-US arbeitet intern jedoch "nur" mit 32 Bit für die LBA-Nummern. Man beachte, dass in der Partitionstabelle die LBA-Nummern ebenfalls mit einer Breite von 32 Bit angegeben sind. Mit diesen 32 Bit können allerdings immer noch alle Sektoren bis zu einer maximalen Plattengröße von 2048 GB (2 TB) adressiert werden. http://www.boot-us.de/gloss11.htm) Dr. Ulrich Straub: LBA- und CHS-Format, LBA-Mapping - http://www.boot-us.de/gloss12.htm) Dr. Ulrich Straub: INT 13h / erweiterter INT 13h