Avant l'introduction de LBA, pourquoi le CHS commence-t-il 0,0,1
et non 0,0,0
?
hard-drive
partitioning
filesystems
disk-space
storage
Jordan Davis
la source
la source
Réponses:
Malheureusement, c'est exactement ainsi que le schéma d'adressage CHS, populaire à l'époque, a été implémenté et adopté. Cela a été adopté comme convention officielle pour les ordinateurs compatibles IBM dans les interruptions du BIOS utilisées pour l'accès au disque, expliquant pourquoi cette convention est utilisée à ce jour. D'après la norme ECMA-107 , structure de volume et de fichier des cartouches de disque pour l'échange d'informations (cela est également mentionné dans la spécification ATA-1 d'origine ):
Ce problème est résolu dans les spécifications de certains disques durs , où il est noté qu'une adresse CHS logique donnée diffère de l' emplacement de l' adresse CHS physique . Ceci est discuté plus en détail dans le manuel de référence de l'interface Seagate ATA , qui contient ce récit intéressant:
Ainsi, pour l'adressage CHS logique, bien que les premiers indices de cylindre / culasse commencent à partir d'un décalage basé sur 0 et que le premier index de secteur commence à 1 (par exemple, l'adresse CHS minimale possible est 0/0/1), cela ne change rien l' emplacement physique de ce secteur. Considérez-le comme le premier secteur physique du disque appelé "secteur 1", occupant CHS 0/0/1. En effet, le "premier" élément dans la plupart des langages de programmation est basé sur 0, donc l' adresse logique du secteur à l'adresse CHS 0/0/1 est zéro (
0x00
).Cela a beaucoup plus de sens sur le plan logique (à savoir, l' adresse logique "zéro" étant le premier secteur physique ), car nous pouvons adresser le périphérique de disque comme n'importe quel autre périphérique de mémoire (car chaque secteur a une adresse linéaire unique pour le mapper à un physique). secteur), c'est pourquoi il est logique que LBA commence à zéro. En effet, si nous traduisons l'adresse CHS 0/0/1 en LBA , le LBA résultant sera
0x00000000
(c'est pourquoi 1 est soustrait de l'indice de secteur dans la plupart des calculs CHS en LBA, et pourquoi 1 est ajouté à l'index pour LBA aux calculs du SHC).la source
zero sector
codes d'erreur et les mauvais blocs, etc. la transition de l'ajout d'un contrôleur (firmware) au lecteur et le début des associations de disques "logiques" ... le contrôleur est maintenant invisible mais vous pouvez supposer qu'il l'utilise de la même manière ... le terme est maintenant appelé "Host Protected" Zone " en.wikipedia.org/wiki/Fixed-block_architecture et en.wikipedia.org/wiki/Host_protected_area1
, je n'ai toujours pas trouvé d'informations sur la raison (même si je soupçonne que cela peut avoir quelque chose à voir avec le secteur0
réservé comme indicateur d'erreur). Je serai sûr de vous mettre à jour si je tombe sur quelque chose.J'ai essayé de retracer l'histoire de CHS et le fiasco de numérotation de secteur "commençant par 1", qui a causé de nombreuses complications pour les auteurs de pilotes de disque et a donné lieu rapidement à LBA .
CHS remonte à l'époque où les ordinateurs personnels fonctionnaient sur disquettes et à l'époque où le BIOS a été inventé. Voici ce que dit Wikipedia :
Une recherche sur le BIOS CP / M a trouvé le document archive d'informations CP / M: appels système BDOS , dans lequel les numéros de secteur commencent par zéro. La conclusion est la suivante: le premier schéma CHS utilisait en fait des adresses de secteur à base zéro .
Les adresses sectorielles à base unique ont été introduites pour la première fois avec le premier IBP / PC. Le document INT 13 - Diskette BIOS Services dit spécifiquement:
C'est donc l'IBM / PC qui, par une implémentation de facto du BIOS, a converti la numérotation des secteurs de base zéro à base unique.
Parmi les douze ingénieurs IBM affectés à la création de l'ordinateur personnel IBM (modèle 5150), David J. Bradley a développé le code de son BIOS. C'est donc lui qui, parmi tous ses autres détails, a décidé des paramètres des interruptions de disque. On doit aussi à ce mec avec Mel Hallerman le fameux CTRL+ ALT+ DEL.
Ainsi, la réponse à la question Pourquoi le nombre de secteurs commence-t-il à 1 et non à 0 dans CHS est:
Parce que David J. Bradley a programmé le BIOS de cette façon .
Quant à savoir pourquoi il l'a fait de cette façon, il vaut mieux lui-même répondre. Si je devais deviner, je dirais qu'il a quitté le secteur zéro en tant que secteur d'adressage par lequel le conducteur pouvait vérifier que la tête était sur la bonne voie.
Comme les disques ont été conçus pour ne pas nécessiter un tel mécanisme et que les ingénieurs n'étaient pas prêts à gaspiller un secteur à cause du BIOS, le secteur zéro n'a jamais vu le jour. Par la suite, les rédacteurs de pilotes se sont retrouvés avec la nécessité de soustraire un et d'ajouter un aux adresses de secteur pour tous les appels de disque BIOS.
la source
La première spécification sur les disquettes a été faite par IBM avec l'apparition de l'IBM 3740 et ne mentionne pas qu'il existe des secteurs réservés au système. La seule réservation pour le système est la piste 00, qui ne stocke que les "Data Set Labels" qui identifient le type d'informations stockées dans les pistes 01 à 76. Elle définit clairement que le premier secteur est le SECTEUR 1. Ce n'est pas une coïncidence mais une question de numération naturelle par rapport à la numérotation de l'ordinateur.
Nous pouvons observer que lorsqu'un humain commence à compter quoi que ce soit, il ne commence pas par zéro mais un. Par exemple, imaginez qu'il y a 135 élèves dans une classe. Compter le nombre serait quelque chose comme ça: un, deux, trois ... cent trente quatre, cent trente cinq.
Sa représentation numérique serait donc: 1, 2, 3, ... 134, 135 Jusqu'à présent, nous sommes d'accord, non?
Maintenant, mettons les chiffres qui ne sont pas représentés par 0. Cela ressemblerait à ceci: 001, 002, 003, ..., 015, 016, ..., 099, 100, ..., 133, 134, 135
C'est ce qui se passe avec CHS : 0,0,1 - 0,0,2 - 0,0,3 ...
Il est significatif que les lignes des feuilles Excel ou les champs auto-numériques d'une base de données commencent par 1 et non par 0 et personne n'a rien dit à ce sujet.
David J. Bradley a-t-il programmé le BIOS de cette façon?
Oui, mais il n'était pas en dehors.
Il n'y a certainement aucune raison technique pour laquelle SECTOR 0 ne peut pas être utilisé sauf s'il est réservé et caché aux utilisateurs pour d'autres raisons. En principe, tout indique qu'il s'agit d'une numérotation naturelle.
GA21-9152-2 No de dossier 3740-00,15
IBM 3740 Data Entry System
page 12
INITIALISATION DES DISQUES
... Chaque disque contient deux pistes de rechange pour remplacer les pistes irrégulières. De plus, la fonction d'initialisation fournit un moyen de modifier la séquence d'adresse de secteur sur la disquette. Normalement, la séquence des secteurs est dans l'ordre numérique (1, 2, 3, ... 25,26) .
page 24
ÉTIQUETAGE DES DONNÉES SUR LA DISKETTE
Pendant l'initialisation, l'étiquette de l'ensemble de données d'un ensemble de données est enregistrée magnétiquement sur la piste d'index (piste 00) de la disquette. Le but principal de cette étiquette est de montrer l'emplacement de l'ensemble de données sur la disquette
C'était en 1973. Il enregistrait des données sur une disquette 8 ". L'IBM PC 5150 est né le 12 août 1981 ... et nous ne pouvons pas oublier qu'ils devaient maintenir une certaine compatibilité avec les appareils précédents.
Il n'y avait définitivement aucune raison technique.
la source