Page suivantePage pr�c�denteTable des mati�res

4. Acc�s � un disque dur

Si on veut lire ou �crire quelque chose � partir de, ou sur un disque dur, il faut sp�cifier une position sur ce disque, en donnant par exemple un num�ro de secteur ou de bloc. Si le disque dur est de type SCSI, alors ce num�ro de secteur va directement au moteur de commande SCSI et est compris par le disque. Si le disque dur est de type IDE et qu'il utilise le mode LBA, alors il se passe exactement la m�me chose. Mais si le disque dur est vieux, RLL, MFM ou IDE avant l'apparition du LBA, alors l'�lectronique qui lui est attach�e attend un triplet (cylindre, t�te, secteur) pour d�signer l'endroit voulu.

La correspondance entre la num�rotation lin�aire et cette notation tridimensionnelle est la suivante : pour un disque dur avec C cylindres, H t�tes et S secteurs/pistes, la position (c,h,s) en 3D, ou la notation CHS, est la m�me que la position c×H×S+h×S+(s-1) en notation lin�aire ou bien LBA. (Le -1 est d� au fait que traditionnellement les secteurs sont num�rot�s � partir de 1 et non 0, dans cette notation 3D.)

En cons�quence, pour pouvoir utiliser un tr�s vieux disque non-SCSI, il faut conna�tre sa g�om�trie, c'est-�-dire les valeurs de C, H et S. (Si vous n'avez pas d'information � ce sujet, vous pouvez toujours fouiller cette mine : www.thetechpage.com.)

4.1 Acc�s disques du BIOS et la limite des 1024 cylindres

Linux ne se sert pas du BIOS, mais d'autres syst�mes d'exploitation le font. Le BIOS, qui existait avant le temps du LBA, offre avec INT13 des routines d'�ntr�e/Sortie disque qui prennent (c,h,s) comme arguments. (Plus pr�cis�ment : AH s�lectionne la fonction � ex�cuter, CH correspond aux 8 bits de poids faible du num�ro de cylindre, CL a dans ses bits 7-6 les deux bits de poids fort de ce m�me num�ro et dans ses bits 5-0 le num�ro du secteur, DH est le num�ro de la t�te et DL est le num�ro du lecteur (80h ou 81h). Cela explique en partie l'agencement de la table des partitions.)

Donc, nous obtenons un CHS cod� sur trois octets, avec 10 bits pour le num�ro du cylindre, 8 bits pour le num�ro de t�te et 6 bits pour le num�ro de secteur sur la piste (num�rot� de 1 � 63). Il s'ensuit que le num�ro de cylindre peut prendre des valeurs allant de 0 � 1023 et que le BIOS ne peut pas adresser plus de 1024 cylindres.

Les logiciels DOS et Windows n'ont pas �volu� quand furent introduits les disques IDE avec le support LBA et ont toujours eu besoin du soutien d'une g�om�trie pour g�rer les disques durs, m�me quand cela n'a plus �t� n�cessaire pour effectuer des �ntr�es/Sorties, mais uniquement pour converser avec le BIOS. Cela signifie bien s�r que Linux a besoin du support de la g�om�trie du disque dur quand il est n�cessaire de communiquer avec le BIOS ou avec d'autres syst�mes d'exploitation, m�me sur des disques durs modernes.

Cet �tat de choses a dur� pendant � peu pr�s quatre ans. Ont alors commenc� � appara�tre sur le march� des disques durs qui ne pouvaient plus �tre adress�s avec les fonctions INT13 (� cause du fait que 10+8+6=24 bits pour (c,h,s) ne peuvent pas adresser plus de 8,5 Go) et une nouvelle interface BIOS a �t� cr��e : les d�nomm�es Fonctions INT13 �tendues, o� DS:SI pointe sur un paquet repr�sentant l'adressage du disque sur 16 octets, qui contient un nombre absolu de blocs commen�ant par 8 octets.

Tout doucement, le monde Microsoft semble aller vers une utilisation de ces Fonctions INT13 �tendues. Probablement, dans quelques ann�es, plus aucun syst�me moderne plac� dans un ordinateur moderne n'aura besoin du concept de 'g�om�trie de disque dur'.

4.2 Histoire du BIOS et des limites de l'IDE

Sp�cification ATA (pour les disques durs IDE) -- la limite des 137 Go

Au plus 65536 cylindres (num�rot�s de 0 � 65535), 16 t�tes (num�rot�es de 0 � 15), 255 secteurs par piste (num�rot�s de 1 � 255), pour une capacit� totale maximale de 267386880 secteurs (de 512 octets chacun), ce qui fait 136902082560 octets (137 Go). En 2001, le premier disque dur d'un capacit� sup�rieure � cela est apparu (le Maxtor Diamondmax de 160 Go).

BIOS Int 13 -- la limite des 8,5 Go

Au plus 1024 cylindres (num�rot�s de 0 � 1023), 256 t�tes (num�rot�es de 0 � 255), 63 secteurs par piste (num�rot�s de 1 � 63) pour une capacit� totale maximale de 8455716864 octets (8,5 Go). De nos jours, cela est une s�rieuse limitation. Cela signifie que DOS ne peut utiliser les actuels disques de grande capacit�.

La limite des 528 Mo

Si les m�mes valeurs c,h,s sont utilis�es pour les appels aux fonctions Int13 du BIOS et pour les op�rations d'�ntr�es/Sorties du disque dur, alors les deux limitations s'ajoutent et l'on ne peut utiliser au plus que 1024 cylindres, 16 t�tes, 63 secteurs par piste, ce qui donne une capacit� totale maximale de 528482304 octets (528 Mo), l'abominable limite des 504 Mio pour DOS avec un vieux BIOS. Cela a commenc� � poser des probl�mes aux alentours de 1993 et les gens ont eu recours � toutes sortes de bidouillages, aussi bien au niveau mat�riel (LBA), qu'au niveau du micro-code (NdT : le 'firmware') (les conversions du BIOS), ou qu'au niveau logiciel (les gestionnaires de disques durs). Le concept de 'conversion' a �t� invent� (1994) : un BIOS pouvait utiliser une g�om�trie quand il s'adressait au lecteur et une autre g�om�trie, fausse celle-l�, quand il parlait � DOS et faire des conversions de l'une � l'autre.

La limite des 2,1 Go (avril 1996)

Quelques vieux BIOS n'utilisent qu'un champ de 12 bits en RAM CMOS pour donner le nombre de cylindres. De ce fait, ce nombre peut �tre au plus �gal � 4095 et l'on ne peut acc�der qu'� 4095×16×63×512=2113413120 octets. Le fait d'avoir un disque dur de plus grande capacit� se traduirait par un plantage au moment du d�marrage. Cela a pour effet de rendre les disques avec une g�om�trie de 4092/16/63 assez populaires. Et encore de nos jours, beaucoup de gros disques durs ont un cavalier qui permet de faire croire qu'ils ont une g�om�trie de 4092/16/63. Vous pouvez �galement jeter un coup d'oeil � la page plus de 2 Go.

La limite des 3,2 Go

Il y avait un bug dans la gestion des BIOS Phoenix 4.03 et 4.04 qui bloquait le syst�me lors de la configuration du CMOS pour des disques durs ayant une capacit� sup�rieure � 3277 Mo. Jetez un oeil � la page plus de 3 Go.

La limite des 4,2 Go (f�vrier 1997)

Une conversion simple du BIOS (ECHS=CHS �tendu, parfois appel�e 'Large disk support' ou simplement 'Large') fonctionne en doublant le nombre de t�tes et en divisant par deux le nombre de cylindres montr�s au DOS, de mani�re r�p�t�e, jusqu'� ce que le nombre de cylindres soit au plus �gal � 1024. Maintenant, DOS et Windows 95 ne peuvent pas supporter 256 t�tes de lecture et donc, dans le cas fr�quent o� le disque dit avoir 16 t�tes, cela signifie que cette moulinette ne fonctionne que jusqu'� une taille de 8192×16×63×512=4227858432 octets (avec une fausse g�om�trie de 1024 cylindres, 128 t�tes et 63 secteurs par piste). Remarquez que ECHS ne modifie pas le nombre de secteurs par piste, donc si ce n'est pas 63, la limite sera encore plus basse. Voyez la page plus de 4 Go.

La limite des 7,9 Go

Des BIOS un peu plus malins que les autres �vitent le probl�me pr�c�dent en ajustant d'abord le nombre de t�tes � 15 ('revised ECHS'), de fa�on qu'une fausse g�om�trie comportant 240 t�tes soit obtenue, valable jusqu'� une taille de 1024×240×63×512=7927234560 octets.

La limite des 8,4 Go

En d�finitive, si le BIOS fait tout ce qu'il peut pour r�ussir la conversion et utilise 255 t�tes et 63 secteurs par piste ('assisted LBA' ou simplement 'LBA') il peut atteindre 1024×255×63×512=8422686720 octets, soit l�g�rement moins que la pr�c�dente limite de 8,5 Go, cela parce que les g�om�tries avec 256 t�tes doivent �tre �vit�es. (Cette conversion utilisera pour le nombre de t�tes la premi�re valeur H, prise dans la suite 16, 32, 64, 128, 255, pour laquelle la capacit� totale du disque dur tient dans 1024×H×63×512 et calcule alors le nombre de cylindres C comme �tant �gal � la capacit� totale divis�e par (H×63×512).)

La limite des 33,8 Go (ao�t 1999)

Le prochain obstacle se pr�sente avec une taille de 33,8 Go. Le probl�me est qu'avec les 16 t�tes et les 63 secteurs/piste par d�faut, �a donne un nombre de cylindres sup�rieur � 65535, qui ne rentre pas dans un short. La plupart des BIOS existants ne peuvent pas g�rer de tels disques. (Jetez un oeil, par exemple � Asus upgrades pour une nouvelle image � flasher qui fonctionne.) Les noyaux Linux plus anciens que le 2.2.14/2.3.21 ont besoin d'un correctif. Voyez les probl�mes pos�s par les disques durs IDE de 34 Go et plus ci-dessous.

la limite des 137 Go (septembre 2001)

Comme ceci a d�j� �t� mentionn� ci-dessus, le vieux protocole ATA utilises 16+4+8=28 bits pour donner le num�ro de secteur et de ce fait, ne peut pas adresser plus de 2^28 secteurs. ATA-6 d�crit une extension qui permet d'adresser 2^48 secteurs, soit un million de fois plus. Les noyaux tr�s r�cents incluent un support pour cette extension.

Pour une autre discussion sur ce sujet, vous pouvez consulter la page Breaking the Barriers et pour encore plus de d�tails, IDE Hard Drive Capacity Barriers.

Les disques durs de plus de 8,4 Go sont suppos�s donner leur g�om�trie comme �tant 16383/16/63. Cela signifie en fait que la 'g�om�trie' est obsol�te, et qu'elle ne peut plus servir � calculer la taille totale d'un disque dur.


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:42