LBA- und CHS-Format, LBA-Mapping
LBA-Format:
LBA steht für Logical Block Address. Hierbei werden die Sektoren der Platte
beginnend mit 0 einfach fortlaufend durchnummeriert. Ein bestimmter Sektor ist
dann durch seine LBA-Nummer eindeutig festgelegt.
Das LBA-Format wird vom BIOS (ab 1995) und von UEFI unterstützt.
CHS-Format:
Das CHS-Format ist das ursprüngliche BIOS-Format zur Identifizierung eines Sektors.
Es wird in UEFI nicht verwendet.
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, später waren die CHS-Angaben jedoch
logische Werte. Die (logische) Anzahl der Zylinder, Köpfe und Sektoren pro Spur
lassen sich über die Fkt. 08h bzw. 48h des
BIOS-Interrupts 13h
ermitteln. Das CHS-Format wird von jedem BIOS unterstützt, allerdings nur
bis zu einer Plattengrösse 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.
Max. Plattengrösse:
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össe 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össe 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össeren Platten zurechtzukommen, wird das
LBA-Format intern von allen modernen Betriebssysteme 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 bestimmend. 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össe.
Die Plattengrösse ergibt sich bei einer festen Sektorgrösse 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.
|