Antes de que se introdujera LBA, ¿por qué CHS comienza en 0,0,1
y no 0,0,0
?
hard-drive
partitioning
filesystems
disk-space
storage
Jordan Davis
fuente
fuente
Respuestas:
Desafortunadamente, así es como se implementó y adoptó el esquema de direccionamiento CHS, popular en ese momento. Esto se adoptó como la convención oficial para las computadoras compatibles con IBM en las interrupciones del BIOS utilizadas para el acceso al disco, lo que explica por qué esta convención se utiliza hasta el día de hoy. Del estándar ECMA-107 , volumen y estructura de archivos de los cartuchos de disco para el intercambio de información (esto también se menciona en la especificación original ATA-1 ):
Este problema se aborda en las especificaciones de algunos discos duros , donde se observa que una dirección CHS lógica dada difiere de la ubicación de la dirección CHS física . Esto se trata más detalladamente en el Manual de referencia de la interfaz ATA de Seagate , que contiene esta narrativa interesante:
Por lo tanto, para el direccionamiento CHS lógico, aunque los primeros índices de cilindro / cabeza comienzan desde un desplazamiento basado en 0, y el primer índice del sector comienza desde 1 (por ejemplo, la dirección CHS mínima posible es 0/0/1), esto no cambia nada sobre La ubicación física de este sector. Piense en ello como el primer sector físico en el disco llamado "sector 1", que ocupa CHS 0/0/1. De hecho, el "primer" elemento en la mayoría de los lenguajes de programación está basado en 0, por lo que la dirección lógica del sector en la dirección CHS 0/0/1 es cero (
0x00
).Esto tiene mucho más sentido lógicamente (es decir, la dirección lógica "zeroth" es el primer sector físico ), ya que podemos abordar el dispositivo de disco como cualquier otro dispositivo de memoria (ya que cada sector tiene una dirección lineal única para mapearlo a un físico sector), por lo que tiene sentido que LBA comience desde cero. De hecho, si traducimos la dirección CHS 0/0/1 a un LBA , el LBA resultante será
0x00000000
(es por eso que 1 se resta del índice del sector en la mayoría de los cálculos de CHS a LBA, y por qué 1 se agrega al índice para LBA a los cálculos CHS).fuente
zero sector
códigos de error y bloques defectuosos, etc. la transición de agregar un controlador (firmware) a la unidad y el inicio de asociaciones de disco "lógicas" ... el controlador ahora es invisible pero se puede suponer que lo usa de la misma manera ... el término ahora se llama "Host Protected" zona" en.wikipedia.org/wiki/Fixed-block_architecture y en.wikipedia.org/wiki/Host_protected_area1
, todavía no he encontrado ninguna información sobre por qué (aunque sospecho que puede tener algo que ver con que el sector0
esté reservado como un indicador de error). Me aseguraré de actualizarlo si encuentro algo.He tratado de rastrear la historia de CHS y el fiasco de numeración del sector "comenzando con 1", que ha causado muchas complicaciones para los escritores de controladores de disco y ha dado lugar rápidamente a LBA .
CHS se remonta a los días en que las computadoras personales funcionaban con disquetes y cuando se inventaba el BIOS. Esto es lo que dice Wikipedia :
Una investigación sobre el BIOS CP / M ha encontrado el documento Archivo de información CP / M: llamadas al sistema BDOS , en las que los números de sector comienzan con cero. La conclusión es que: el esquema CHS más antiguo en realidad usaba direcciones de sector basadas en cero .
Las direcciones de un sector se introdujeron por primera vez con el primer IBP / PC. El documento INT 13 - Diskette BIOS Services dice específicamente:
Entonces, fue la IBM / PC la que, por una implementación de facto del BIOS, convirtió la numeración del sector de cero a uno.
De los doce ingenieros de IBM asignados para crear la Computadora personal IBM (modelo 5150), David J. Bradley desarrolló el código para su BIOS. Entonces él es quien, entre todos sus otros detalles, decidió los parámetros para las interrupciones del disco. También le debemos a este tipo junto con Mel Hallerman el famoso CTRL+ ALT+ DEL.
Entonces, la respuesta a la pregunta ¿Por qué el recuento del sector comienza en 1 y no 0 en CHS es:
Porque David J. Bradley programó el BIOS de esa manera .
En cuanto a por qué lo hizo de esta manera, esta es la mejor respuesta para él. Si tuviera que adivinar, diría que dejó el sector cero como un sector de direccionamiento mediante el cual el conductor pudo verificar que la cabeza estaba en el camino correcto.
Como los discos se diseñaron realmente para no requerir ese mecanismo, y los ingenieros no estaban listos para desperdiciar un sector debido a la BIOS, el sector cero nunca llegó a existir. A partir de entonces, los escritores de controladores se quedaron con la necesidad de restar uno y agregar uno a las direcciones de sector para todas las llamadas al disco BIOS.
fuente
La primera especificación de los disquetes fue realizada por IBM con la aparición del IBM 3740 y no menciona que hay sectores reservados para el sistema. La única reserva para el sistema es la pista 00, que almacena solo las "Etiquetas de conjunto de datos" que identifican el tipo de información almacenada en las pistas 01 a 76. Define claramente que el primer sector es SECTOR 1. Esto no es una coincidencia sino un cuestión de numeración natural contra la numeración de la computadora.
Podemos observar que cuando un humano comienza a contar algo, no comienza con cero sino con uno. Por ejemplo, imagine que hay 135 estudiantes en un salón de clases. Contar el número sería algo así: uno, dos, tres ... ciento treinta y cuatro, ciento treinta y cinco.
Su representación numérica sería así: 1, 2, 3, ... 134, 135 Hasta ahora estamos de acuerdo, ¿verdad?
Ahora pongamos los dígitos que no están representados por 0. Se vería así: 001, 002, 003, ..., 015, 016, ..., 099, 100, ..., 133, 134, 135
Esto es lo que sucede con CHS : 0,0,1 - 0,0,2 - 0,0,3 ...
Es significativo que las filas en las hojas de Excel o los campos autonuméricos en una base de datos comiencen por 1 y no por 0 y nadie ha dicho nada al respecto.
¿David J. Bradley programó el BIOS de esa manera?
Sí, pero no estaba fuera de juego.
Definitivamente no existe una razón técnica por la cual SECTOR 0 no se pueda usar a menos que esté reservado y oculto a los usuarios por otras razones. En principio, todo apunta a que es una cuestión de numeración natural.
GA21-9152-2 Archivo Nº 3740-00,15
Sistema de entrada de datos IBM 3740
página 12
INICIALIZACIÓN DEL DISCO
... Cada disco contiene dos pistas de repuesto para reemplazar cualquier pista irregular. Además, la función de inicialización proporciona un medio para alterar la secuencia de la dirección del sector en el disquete. Normalmente, la secuencia de sectores está en orden numérico (1, 2, 3, ... 25,26) .
página 24
ETIQUETADO DE DATOS EN EL DISCO
Durante la inicialización, la etiqueta del conjunto de datos para un conjunto de datos se graba magnéticamente en la pista de índice (pista 00) del disquete. El objetivo principal de esta etiqueta es mostrar la ubicación del conjunto de datos en el disquete
Esto fue en 1973. Grabó datos en un disquete de 8 ". La PC 5150 de IBM nació el 12 de agosto de 1981 ... y no podemos olvidar que tuvieron que mantener cierta compatibilidad con los dispositivos anteriores.
Definitivamente no había ninguna razón técnica.
fuente