VOICE Homepage: http://www.os2voice.org
[Newsletter Inhalt]
[Vorherige Seite] [Nächste Seite]
[Artikelübersicht]

Dezember 2000
editor@os2voice.org


Festplatten-Geometrie und OS/2

Von Daniela Engert ©Dezember 2000, Übersetzung: Peter Weilbacher

Zitierte Webseiten:
T10 Technical Committee (I/O Interfaces): http://www.t10.org
Technical Committee T13 AT Attachment: http://www.t13.org

Lassen Sie mich versuchen, ein bißchen Licht in das Dunkel zu bringen, wie die Festplatten-Geometrie von ATA- (IDE-) und SCSI-Subsystemen von OS/2 erkannt wird.

Wie sprechen hier über ein Szenario, wo das BIOS in die Kommunikation zwischen Platte und Anwendung eingebunden ist. Deshalb spricht die Anwendung nicht direkt mit der Platte, sondern eher mit einer abstrakten Schnittstelle, die das BIOS anbietet: Die INT13 API. Das gilt sowohl für ATA- als auch SCSI-Systeme.

Nun, was die meisten Leute nicht wissen (und meist nicht wissen müssen), ist die Tatsache, daß bis zu zwei unterschiedliche Konvertierungen der CHS-Geometrie (Cylinder, Head, Sector) während dieses Prozesses aktiv sein können! Lassen Sie uns das im Detail ansehen.

1) Die Schnittstelle zwischen Anwendung und BIOS.

Die "alte" INT13-API stellt nur eine CHS-basierte Schnittstelle zu Verfügung:
10 Bit für die Zylindernummer (C), max. Bereich 0..1023
 8 Bit für die Nummer des Kopfes (H), max. Bereich 0..254
 6 Bit für die Sektornummer (S), max. Bereich 1..63
Die obere Grenze von 254 Köpfen (H) kommt von Programmierfehlern in einigen MS-DOS Varianten, die untere Grenze von 1 Sektor aus historischen Gründen. CHS insgesamt ergibt dann eine maximalen adressierbaren Bereich von bis zu 1,645,056 Sektoren (7.84 GB). Diese Grenze ist nur durch die API-Spezifikation bestimmt, ich habe bisher noch nicht von der Hardware gesprochen!

Das System-BIOS sucht sich aufgrund der oben diskutierten Grenzen und der im BIOS einstellbaren Varianten (Normal/Large/LBA) eine "virtuelle" Geometrie aus. Die Partner auf beiden Seiten der Schnittstelle müssen sich auf diese Geometrie einigen. Diese "virtuelle" Geometrie wird für die Partitionierung und Formatierung der Platte benutzt!

Die "neue" (erweiterte) INT13-API stellt nur noch eine LBA-basierte Schnittstelle mit einem 64 bit LBA-Wert zur Verfügung. Das ergibt eine maximalen adressierbaren Bereich von 8,388,608 PB.

SCSI-Hostadapter stellen normalerweise auch eine INT13-API zur Verfügung. Das müssen sie auch tun, wenn sie bootfähig sein wollen. Deshalb leiden SCSI-Platten unter genau denselben BIOS-Einschränkungen wie auch die ATA-Platten. Um kompatibel zu sein, müssen diese SCSI-BIOS Implementationen genauso "virtuelle" Platten-Geometrien erfinden. Der am häufigsten vorkommende Standard ist hierbei der sogenannte "Adaptec-Standard", der unterschiedliche CHS-Zuordnungen für Platten mit weniger als 1 GB, weniger als 2 GB und mehr als 2 GB verwendet (IIRC) - manchmal ist die Art der Zuordnung im SCSI-BIOS einstellbar. SCSI-Adapter von LSI (früher als NCR oder Symbios bekannt) verhalten sich anders: Wenn man eine partitionierte/formatierte Platte an solch einen Adapter anschließt, wird ein BIOS die CHS-Geometrie benutzen, die es im MBR findet, anstatt selbst eine anhand der Plattengröße zu erzeugen.

Dieselbe Regel über passende "virtuelle" Geometrien, die vom BIOS gemeldet und bei der Partitionierung benutzt werden, gilt auch hier!
 

2) Die Schnittstelle zwischen BIOS und Platte.
Im Fall eines ATA-Systems bietet die ATA-Spezifikation schon seit seiner Entstehung zwei Adress-Schemata an - ein CHS-Schema und eins mit LBA. Die SCSI-Spezifikation kennt nur das LBA Schema.

Das ATA-CHS Schema funktioniert so:

16 Bit für die Zylindernummer (C), max. Bereich 0..65535
 4 Bit für die Nummer des Kopfes (H), max. Bereich 0..15
 8 Bit für die Sektornummer (S), max. Bereich 1..255
Das ergibt eine maximalen adressierbaren Bereich von Sektoren im CHS-Modus von 267,386,880 Sektoren (127.5 GB), aber die Spezifikation erlaubt, dies auf (16,383/16/63) bzw. 16,514,064 Sektoren (7.8 GB) zu reduzieren. Die meisten Geräte unterstützen CHS-Adressierung auch nicht über diese Grenze hinaus.

Die Platte schlägt die "beste" Konvertierung der CHS-Geometrie für diese Kommunikationsebene vor, aber das BIOS kann sich überlegen, das innerhalb der Grenzen zu überstimmen.

Die ATA-LBA-Adressierung benutzt einen 28 Bit LBA-Wert, der einem maximalen adressierbaren Bereich von 268.435.456 Sektoren (128 GB) entspricht. Es gibt Vorschläge, diese Grenze für die kommende ATA-Spezifikation auf 64 Bit anzuheben. Details dazu können Sie auf der Webseite des ANSI T13-Kommitees finden.

Im Fall von SCSI gab es bisher verschiedene obere Grenzen des adressierbaren LBA-Bereichs (6/10/12 Byte Kommandos). Details dazu finden Sie auf der Webseite des ANSI T10-Komitees.

Wie Sie sehen gab es mit dem Schema der LBA-Adressierung niemals eine wirkliche Grenze im adressierbaren Bereich, weder mit ATA noch mit SCSI. Die einzige Beschränkung bestand in der "alten" CHS-Schnittstelle des BIOS.

Der mit WSeB (und CP/eCS) gelieferte OS/2-Bootmanager und alle Teile, die in späteren Stadien beim Start von OS/2 wichtig sind ("partition sector loader", OS2BOOT, OS2LDR, ...), können von der "neuen" INT13-BIOS-API profitieren, um die gefürchtete 1024 Zylinder-Grenze zu überwinden und OS/2 auch jenseits dieser Grenze zu booten.

Ein kleines Geheimnis:

Dem OS/2 IDE-Treiber (IBM1S506 oder DaniS506) macht es nichts aus, wenn man die BIOS-Einstellungen (LBA/Large usw.) ändert oder die Platte an ein anderes System mit anderen Einstellungen anschließt! Wenn eine Platte gefunden wird, werden die Partitionen gescannt. Wenn eine Partition mit einem gültigen BPB (oder zumindest einem konsistenten MBR im Fall von DaniS506) gefunden wird, benutzt der Treiber diese CHS-Information statt der vom BIOS gemeldeten. So kann man ohne Probleme Festplatten zwischen verschiedenen Rechnern austauschen.

Glossar der in diesen Artikel benutzen Ausdrücke:

ATA (AT Attachment = AT Verbindung): Die Spezifikation für IDE-Festplatten.

INT 13: Ein grundlegender Betriebssystem-Interrupt, aus Zeiten von DOS. Wird benutzt um Funktionen der Festplatte wie Suche, Lesen, Schreiben und Formatieren zu aktivieren.

LBA (Logical Block Addressing = Logische Blockadressierung): Eine Methode, IDE-Platten größer als 504MB (528.482.304 Byte) an PCs zu unterstützen. LBA stellt die notwendige Adressenkonvertierung im BIOS zur Verfügung, um Laufwerke bis zu 8 GB zu unterstützen. BIOSe nach Mitte 1994, die manchmal "erweiterte BIOSe" genannt werden, stellen im Allgemeinen LBA-Konvertierung zur Verfügung.

MBR: Der Master Boot Record von Festplatten.

BPB (Boot Parameter Block): Ein Teil des ersten Sektors eines IBM/MS kompatiblen Dateisystems. Er beschreibt die grundlegende Organisation der Partition (unter anderem die CHS-Geometrie, die während der Formatierung benutzt wurde).

PB: Petabyte, 1 PB = 2^50 byte = 1024 TeB = 1024 * 1024 GB


Daniela Engert ist Systementwicklerin bei der MEDAV GmbH. Sie ist Autorin der Treiber DANIS506.ADD und DANIATAPI.FLT, sowie einer Anzahl anderer Freeware-Tools für OS/2.

[Artikelübersicht]
editor@os2voice.org
[Vorherige Seite] [Inhalt] [Nächste Seite]
VOICE Homepage: http://www.os2voice.org