„CHS-Adressierung“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Überarbeitung
Markierung: 2017-Quelltext-Bearbeitung
Überarbeitung und weitere Quellen
Markierung: 2017-Quelltext-Bearbeitung
Zeile 24: Zeile 24:
Mit Fortschreiten der Entwicklung und immer höheren Speicherkapazitäten bei Festplatten ergaben sich in der Realität mehrere Kapazitätsgrenzen, die sich aufgrund unterschiedlicher Design-Entscheidungen ergaben. So waren die CHS-Werte z. B. in der Firmware und im Speichercontroller unterschiedlich abgespeichert.
Mit Fortschreiten der Entwicklung und immer höheren Speicherkapazitäten bei Festplatten ergaben sich in der Realität mehrere Kapazitätsgrenzen, die sich aufgrund unterschiedlicher Design-Entscheidungen ergaben. So waren die CHS-Werte z. B. in der Firmware und im Speichercontroller unterschiedlich abgespeichert.


[[ATA/ATAPI]], ursprünglich als IDE (für {{lang|en|Integrated Drive Electronics}}) bekannt, sieht 28 Bits für die CHS-Adressierung vor:
[[ATA/ATAPI]], ursprünglich als IDE (für {{lang|en|Integrated Drive Electronics}}) bekannt und später auch als Parallel-ATA (kurz PATA) bezeichnet, sieht 28 Bits für die CHS-Adressierung vor:<ref name="Betriebssysteme_Kompakt_2020">{{Literatur |Autor=Georg Witzel |Titel=Betriebssysteme Kompakt: Grundlagen, Daten, Speicher, Dateien, Prozesse und Kommunikation |Verlag=Springer-Verlag |Datum=2020 |ISBN=978-3-662-61411-2 |Seiten=56 |Online={{Google Buch |BuchID=iC3rDwAAQBAJ |Seite=56 |Hervorhebung=Zylinder-Kopf-Sektor-Adressierung}} }}</ref>
* 16 Bits für die Anzahl der Zylinder, 2<sup>16</sup> = max. 65.536 (0–65.535) Zylinder
* 16 Bits für die Anzahl der Zylinder, 2<sup>16</sup> = max. 65.536 (0–65.535) Zylinder
* 4 Bits für die Anzahl der Köpfe, 2<sup>4</sup> = max. 16 (0–15) Köpfe (pro Zylinder)
* 4 Bits für die Anzahl der Köpfe, 2<sup>4</sup> = max. 16 (0–15) Köpfe (pro Zylinder)
* 8 Bits für die Sektoren pro Spur, 2<sup>8</sup>−1 = 255 (1–255) Sektoren pro Spur
* 8 Bits für die Sektoren pro Spur, 2<sup>8</sup>−1 = 255 (1–255) Sektoren pro Spur


Im BIOS werden dafür aber nur 24 Bits bereitgestellt:
Im BIOS werden dafür aber nur 24 Bits bereitgestellt:<ref name="Betriebssysteme_Kompakt_2020" />
* 10 Bits für die Anzahl der Zylinder, 2<sup>10</sup> = max. 1.024 (0–1.023) Zylinder
* 10 Bits für die Anzahl der Zylinder, 2<sup>10</sup> = max. 1.024 (0–1.023) Zylinder
* 8 Bits für die Anzahl der Köpfe, 2<sup>8</sup> = max. 256 (0–255) Köpfe (pro Zylinder)
* 8 Bits für die Anzahl der Köpfe, 2<sup>8</sup> = max. 256 (0–255) Köpfe (pro Zylinder)
Zeile 35: Zeile 35:


=== 504-MB-Grenze ===
=== 504-MB-Grenze ===
{| class="wikitable" style="float:right; margin-left:1em; text-align:right; padding-left:1em; padding-right:1em"
Bis zur 504-MB-Grenze können bei Festplatten die reale Geometriedaten in Form der CHS-Werte eingegeben werden, der Datenzugriff erfolgt damit vielfach auch real an jener Stelle, die als C/H/S-Wertepaar angegeben ist.
! <ref name="breaking-the-barriers-2002">{{Internetquelle |autor=James McPherson |url=https://www.techrepublic.com/article/breaking-the-barriers-of-hard-drive-limitations/ |titel=Breaking the barriers of hard drive limitations |hrsg=TechRepublic.com |datum=2002-07-18 |sprache=en |abruf=2021-06-08}}</ref>

{| class="wikitable" style="float:right; margin-left:1em;"
!
! IDE
! BIOS
! BIOS
! ATA
! → Limit
! style="border-left: 2px solid; border-top: 2px solid; border-right: 2px solid;" | → Limit
|-
|colspan="3" style="background:#DDDDDD;" |
|style="border-left: 2px solid; border-right: 2px solid; background:#DDDDDD;" |
|-
|-
| Zylinder
| Zylinder
| 65.536
| '''1.024'''
| '''1.024'''
| '''1.024'''
| 65.536
|style="border-left: 2px solid; border-right: 2px solid;" | '''1.024'''
|-
|-
| Köpfe
| Köpfe
| '''16'''
| 256
| 256
| '''16'''
| '''16'''
|style="border-left: 2px solid; border-right: 2px solid;" | '''16'''
|-
|-
| Sektoren/Spur
| Sektoren/Spur
| 255
| '''63'''
| '''63'''
| '''63'''
| 255
|style="border-left: 2px solid; border-right: 2px solid;" | '''63'''
|-
|colspan="3" style="background:#DDDDDD;" |
|style="border-left: 2px solid; border-right: 2px solid; background:#DDDDDD;" |
|-
| Speicherkapazität
| 8,4&nbsp;GB
| 136,9&nbsp;GB
|style="border-left: 2px solid; border-bottom: 2px solid; border-right: 2px solid;" | 504&nbsp;GB
|}
|}

Bis zur 504-MB-Grenze können bei Festplatten die reale Geometriedaten in Form der CHS-Werte eingegeben werden, der Datenzugriff erfolgt damit vielfach auch real an jener Stelle, die als C/H/S-Wertepaar angegeben ist.


Da bei der Speichergrenze der jeweils maximale Wert bei C/H/S, jeweils vom BIOS und vom Speichercontroller, den Ausschlag gibt, können ältere Versionen eines BIOS nur 1.024 (2<sup>10</sup>) Zylinder, 16 (2<sup>4</sup>) Köpfe und 63 (2<sup>6</sup>&nbsp;- 1) Sektoren ansteuern. Das ergab bei der Sektorgröße von 512&nbsp;[[Byte]]s (2<sup>9</sup>) maximal 504&nbsp;[[Byte #IEC-Präfixe|MiB]] (2<sup>29</sup> Bytes). Später wurde die maximale Anzahl der Köpfe auf&nbsp;256 (2<sup>8</sup>) Bytes erhöht, was die Kapazitätsgrenze auf 8.064&nbsp;MiB bzw. ≈&nbsp;8&nbsp;GiB (≈&nbsp;2<sup>33</sup> Bytes) erhöhte.
Da bei der Speichergrenze der jeweils maximale Wert bei C/H/S, jeweils vom BIOS und vom Speichercontroller, den Ausschlag gibt, können ältere Versionen eines BIOS nur 1.024 (2<sup>10</sup>) Zylinder, 16 (2<sup>4</sup>) Köpfe und 63 (2<sup>6</sup>&nbsp;- 1) Sektoren ansteuern. Das ergab bei der Sektorgröße von 512&nbsp;[[Byte]]s (2<sup>9</sup>) maximal 504&nbsp;[[Byte #IEC-Präfixe|MiB]] (2<sup>29</sup> Bytes). Später wurde die maximale Anzahl der Köpfe auf&nbsp;256 (2<sup>8</sup>) Bytes erhöht, was die Kapazitätsgrenze auf 8.064&nbsp;MiB bzw. ≈&nbsp;8&nbsp;GiB (≈&nbsp;2<sup>33</sup> Bytes) erhöhte.


=== 8-GB-Grenze ===
=== 8,4-GB-Grenze (Extended CHS) ===
Beim BIOS wurde daher ab den frühen 1990er Jahren die maximale Anzahl der Köpfe genutzt, um weiteren Speicherplatz nutzbar zu machen. Bei dieser als ''Extended CHS'' bezeichneten Methode wird nicht die reale Geometrie der Festplatte eingegeben, sondern ein fiktiver Wert:
Beim BIOS wurde daher ab den frühen 1990er Jahren die maximale Anzahl der Köpfe genutzt, um weiteren Speicherplatz nutzbar zu machen. Bei dieser als ''Extended CHS'' bezeichneten Methode wird nicht die reale Geometrie der Festplatte eingegeben sondern fiktive CHS-Werte, wobei die Maximal-Anzahl der Köpfe ausgenutzt wird:
:<math>1024 \text{ Zylinder} \cdot 255 \text{ Köpfe} \cdot 63 \text{ Sektoren/Spur} = 16450560 \text{ Sektoren}</math>
:<math>1024 \text{ Zylinder} \cdot 255 \text{ Köpfe} \cdot 63 \text{ Sektoren/Spur} = 16450560 \text{ Sektoren}</math>
Das ergibt bei der üblichen Blockgröße von 512 Bytes pro Spur: <math>16450560 \cdot 512 = 8422686720 Bytes</math>, also 8032,5&nbsp;MiB oder rund 7,8&nbsp;GiB.
Das ergibt bei der üblichen Blockgröße von 512 Bytes pro Spur: <math>16450560 \cdot 512 = 8422686720 Bytes</math>, also 8032,5&nbsp;MiB oder rund 7,8&nbsp;GiB in binärer Umwandung, oder 8,4 GB in der SI-Einheit (siehe [[Byte#Bedeutungen von Dezimal- und Binärpräfixen für große Anzahlen von Bytes]]).


=== Konvertierung von CHS nach LBA ===
=== Konvertierung von CHS nach LBA ===

Version vom 8. Juni 2021, 20:53 Uhr

Die Zylinder-Kopf-Sektor-Adressierung ist eine historische Adressierungsmethode für Datenspeicher wie Festplatten, die bis in die frühen 2000er-Jahre bei Computern und Betriebssystemen relevant war. Englisch findet sich meist die Abkürzung CHS für cylinder/head/sector, etwa bei frühen IBM-PC-kompatiblen Computern mit BIOS, wo der physikalische Aufbau einer Festplatte in Form der Festplattengeometrie mit diesen drei Werten manuell eingestellt werden musste: Anzahl der Zylinder (cylinders), Anzahl der Köpfe (heads) und die Sektoren pro Spur (sectors per track).

Selten findet sich auch die deutsche Abkürzung ZKS für Zylinder/Kopf/Sektor.

Aufbau

Festplattengeometrie, schematische Darstellung des Grundprinzips
Zylinder, Kopf, Sektor und Spur in Bezug auf die Datenscheiben einer Festplatte

Die drei CHS-Werte sind eine Art „Koordinatenangabe“, die sich aus dem physikalischen Aufbau von Festplatten und Disketten(-laufwerken) ergeben hat, denn diese bestehen aus einer oder mehreren rotierenden Scheiben (Platter oder engl. Disks), die auf beiden Seiten mit einem Lese-/Schreib-Kopf abgetastet werden. Die Sektoren werden ab eins gezählt, während bei den Zylindern und Köpfen die Zählung (wie in der Informatik üblich) bei Null beginnt. Bei Disketten und einigen frühen Festplatten wurde nur eine Scheibe verwendet, darum wird manchmal der Begriff Seite als Synonym für Kopf verwendet, denn es gibt dann nur jeweils den Kopf auf der Ober- und der Unterseite. Ist diese Schreibe (Disk) dazu noch einseitig, so entspricht der Zylinder der Spur (engl. Track).[1]

Für den Zugriff auf die einzelnen Sektoren wurde dieses Schema bei vielen Computern übernommen. So nutzt das BIOS IBM-PC-kompatibler Computer sowie viele (ältere) PC-Betriebssysteme die CHS-Adressierung, allen voran PC-kompatibles DOS wie MS-DOS oder PC DOS, aber auch z. B. OS/2 und Windows. Linux hingegen nutzte von Anfang an Logical Block Addressing (LBA), bei dem die Datenblöcke einfach durchnummeriert sind und bei Null beginnen.

Für den Zugriff auf die einzelnen Datenblöcke muss die „Adresse“, in Form von Zylinder/Kopf/Sektor bzw. C/H/S, sowohl in der Firmware (beim PC das BIOS) und im Betriebssystem als auch auf den Partitionen und Dateisystemen auf dem Datenspeicher selbst korrekt bzw. identisch sein.

Verwendung

Über die CHS-Adressierung lässt sich jeder Datenblock, bei Disketten und Festplatten Sektor (von Kreissektor) bezeichnet, ansprechen bzw. adressieren.

Ist die Angabe der CHS-Werte falsch, so sind etwaige zuvor verwendete Adressierungsangaben, die bereits auf dem Datenspeicher hinterlegt sind, falsch und verweisen damit auf einen anderen Datenblock, der nicht die referenzierten Daten enthält, wodurch eine reale Gefahr für Datenverlust besteht, oder sie verweisen auf eine nicht vorhandene Adresse, was zu E/A-Fehlern beim Datenzugriff führt. Die tatsächliche Speicheradresse in Form der „Koordinatenangabe“ Zylinder, Kopf, Sektor war allerdings bereits in den 1980er Jahren oft nicht mehr physikalisch korrekt, denn ein zwischengeschalteter Controller überführte jede logische CHS-Adresse in eine physikalische Speicheradresse, die nur dem Speichercontroller der Festplatte selbst bekannt war. So funktionierten Festplatten meist selbst bei falschen Angaben z. B. im BIOS korrekt, solange die sich aus den CHS-Angaben ergebende Größe nicht die tatsächlich vorhandene Speicherkapazität überstieg. Spätere BIOS-Versionen seit den frühen 1990er Jahren konnten die CHS-Angaben von Festplatten normalerweise automatisch ermitteln.

Bei der Aufteilung des Speichers in Partitionen finden sich bei der CHS-Adressierung die jeweiligen Start- und End-Sektoren in der Partitionstabelle, bei IBM-PC-kompatiblen Computern ab dem IBM-PC XT von 1983 ist das der Master Boot Record (MBR). Bei späteren Varianten wurde Logical Block Addressing (LBA) als Adressierungsmethode verwendet und die CHS-Werte, soweit möglich, umgerechnet, sodass beide Werte, CHS und LBA, auf dem Speichermedium (z. B. im MBR) gespeichert wurden. Später wurden die CHS-Werte dann komplett weggelassen.[2]

Speicherkapazitätsgrenzen

Mit Fortschreiten der Entwicklung und immer höheren Speicherkapazitäten bei Festplatten ergaben sich in der Realität mehrere Kapazitätsgrenzen, die sich aufgrund unterschiedlicher Design-Entscheidungen ergaben. So waren die CHS-Werte z. B. in der Firmware und im Speichercontroller unterschiedlich abgespeichert.

ATA/ATAPI, ursprünglich als IDE (für Integrated Drive Electronics) bekannt und später auch als Parallel-ATA (kurz PATA) bezeichnet, sieht 28 Bits für die CHS-Adressierung vor:[3]

  • 16 Bits für die Anzahl der Zylinder, 216 = max. 65.536 (0–65.535) Zylinder
  • 4 Bits für die Anzahl der Köpfe, 24 = max. 16 (0–15) Köpfe (pro Zylinder)
  • 8 Bits für die Sektoren pro Spur, 28−1 = 255 (1–255) Sektoren pro Spur

Im BIOS werden dafür aber nur 24 Bits bereitgestellt:[3]

  • 10 Bits für die Anzahl der Zylinder, 210 = max. 1.024 (0–1.023) Zylinder
  • 8 Bits für die Anzahl der Köpfe, 28 = max. 256 (0–255) Köpfe (pro Zylinder)
  • 6 Bits für die Sektoren pro Spur, 26−1 = 63 (1–63) Sektoren pro Spur

504-MB-Grenze

[4] BIOS ATA → Limit
Zylinder 1.024 65.536 1.024
Köpfe 256 16 16
Sektoren/Spur 63 255 63
Speicherkapazität 8,4 GB 136,9 GB 504 GB

Bis zur 504-MB-Grenze können bei Festplatten die reale Geometriedaten in Form der CHS-Werte eingegeben werden, der Datenzugriff erfolgt damit vielfach auch real an jener Stelle, die als C/H/S-Wertepaar angegeben ist.

Da bei der Speichergrenze der jeweils maximale Wert bei C/H/S, jeweils vom BIOS und vom Speichercontroller, den Ausschlag gibt, können ältere Versionen eines BIOS nur 1.024 (210) Zylinder, 16 (24) Köpfe und 63 (26 - 1) Sektoren ansteuern. Das ergab bei der Sektorgröße von 512 Bytes (29) maximal 504 MiB (229 Bytes). Später wurde die maximale Anzahl der Köpfe auf 256 (28) Bytes erhöht, was die Kapazitätsgrenze auf 8.064 MiB bzw. ≈ 8 GiB (≈ 233 Bytes) erhöhte.

8,4-GB-Grenze (Extended CHS)

Beim BIOS wurde daher ab den frühen 1990er Jahren die maximale Anzahl der Köpfe genutzt, um weiteren Speicherplatz nutzbar zu machen. Bei dieser als Extended CHS bezeichneten Methode wird nicht die reale Geometrie der Festplatte eingegeben sondern fiktive CHS-Werte, wobei die Maximal-Anzahl der Köpfe ausgenutzt wird:

Das ergibt bei der üblichen Blockgröße von 512 Bytes pro Spur: , also 8032,5 MiB oder rund 7,8 GiB in binärer Umwandung, oder 8,4 GB in der SI-Einheit (siehe Byte#Bedeutungen von Dezimal- und Binärpräfixen für große Anzahlen von Bytes).

Konvertierung von CHS nach LBA

Beim LBA-Verfahren (Logical Block Addressing) werden die Blöcke beginnend mit Null durchgehend gezählt. Die Konvertierung der CHS-Angaben in die Adresse des Blocks nach dem LBA-Verfahren erfolgt nach der Formel

mit

  • : Zylindernummer
  • : Zahl der Leseköpfe
  • : Lesekopfnummer
  • : Zahl der Sektoren (= Zahl der Blöcke je Zylinderkopfspur bzw. Track)
  • : Sektornummer.

Probleme mit der CHS-Adressierung

U. a. bei RAID spielen die genauen CHS-Angaben eine wichtige Rolle, weil man bei einigen Formen der Datenspiegelung darauf achten muss, dass beide Festplatten identische Eigenschaften haben – nicht nur die gleiche Größe.

Einzelnachweise

  1. Daniel B. Sedory: Understanding Disk Drive Terminology, Technology and Capacity Calculations. In: The Starman's Realm. 26. Mai 2017, abgerufen am 8. Juni 2021 (englisch, Abschnitt Terminology and Physical Description).
  2. Andries E. Brouwer, A. V. Le Blanc, Karel Zak, Davidlohr Bueso, u. a.: fdisk(8). (Manpage) In: Linux manual page. Februar 2016, abgerufen am 8. Juni 2021 (englisch): „CHS (Cylinder-Head-Sector) addressing is deprecated and not used by default.“
  3. a b Georg Witzel: Betriebssysteme Kompakt: Grundlagen, Daten, Speicher, Dateien, Prozesse und Kommunikation. Springer-Verlag, 2020, ISBN 978-3-662-61411-2, S. 56 (eingeschränkte Vorschau in der Google-Buchsuche).
  4. James McPherson: Breaking the barriers of hard drive limitations. TechRepublic.com, 18. Juli 2002, abgerufen am 8. Juni 2021 (englisch).