El sector de culata ( CHS ) es un método temprano para dar direcciones a cada bloque físico de datos en una unidad de disco duro .
Es un sistema de coordenadas 3D formado por un cabezal de coordenadas verticales , un cilindro de coordenadas horizontales (o radiales) y un sector de coordenadas angulares . El cabezal selecciona una superficie circular: un plato en el disco (y uno de sus dos lados). El cilindro es una intersección cilíndrica a través de la pila de platos en un disco, centrada alrededor del eje del disco. Combinados, el cilindro y el cabezal se intersecan en una línea circular, o más precisamente: una tira circular de bloques de datos físicos llamada pista . El sector finalmente selecciona qué bloque de datos en esta pista se va a abordar, ya que la pista se subdivide en varias porciones de igual tamaño, cada una de las cuales es un arco de (360/n) grados, donde n es el número de sectores en la pista.
Se expusieron las direcciones CHS, en lugar de direcciones lineales simples (que van desde 0 hasta el recuento total de bloques en el disco - 1 ), porque los primeros discos duros no venían con un controlador de disco incorporado , que ocultaría la disposición física. Se utilizó una tarjeta controladora genérica separada, de modo que el sistema operativo tenía que conocer la "geometría" física exacta de la unidad específica conectada al controlador, para direccionar correctamente los bloques de datos. Los límites tradicionales eran 512 bytes/sector × 63 sectores/pista × 255 cabezales (pistas/cilindro) × 1024 cilindros, lo que resultaba en un límite de 8032,5 MiB para la capacidad total de un disco.
A medida que la geometría se volvió más complicada (por ejemplo, con la introducción de la grabación de bits de zona ) y los tamaños de las unidades crecieron con el tiempo, el método de direccionamiento CHS se volvió restrictivo. Desde fines de la década de 1980, los discos duros comenzaron a enviarse con un controlador de disco incorporado [1] que tenía un buen conocimiento de la geometría física; sin embargo, informarían una geometría falsa a la computadora, por ejemplo, una cantidad mayor de cabezales de los realmente presentes, para ganar más espacio direccionable. Estos valores CHS lógicos serían traducidos por el controlador, por lo que el direccionamiento CHS ya no se correspondía con ningún atributo físico de la unidad. [2]
A mediados de la década de 1990, las interfaces de disco duro reemplazaron el esquema CHS con direccionamiento de bloque lógico (LBA), pero muchas herramientas para manipular la tabla de particiones del registro de arranque maestro (MBR) todavía alineaban las particiones con los límites de los cilindros; por lo tanto, los artefactos de direccionamiento CHS todavía se veían en el software de particionamiento a fines de la década de 2000. [2]
A principios de la década de 2010, las limitaciones de tamaño de disco impuestas por MBR se volvieron problemáticas y se diseñó la tabla de particiones GUID (GPT) como reemplazo; las computadoras modernas que usan firmware UEFI sin soporte MBR ya no usan ninguna noción de direccionamiento CHS.
El direccionamiento CHS es el proceso de identificar sectores individuales (también conocidos como bloques físicos de datos) en un disco por su posición en una pista, donde la pista está determinada por los números de cabezal y cilindro. Los términos se explican de abajo a arriba; para el direccionamiento de discos, el sector es la unidad más pequeña. Los controladores de disco pueden introducir traducciones de direcciones para asignar posiciones lógicas a físicas, por ejemplo, la grabación de bits de zona almacena menos sectores en pistas más cortas (internas), los formatos de disco físicos no son necesariamente cilíndricos y los números de sector en una pista pueden estar sesgados.
Los disquetes y controladores habían utilizado tamaños de sectores físicos de 128, 256, 512 y 1024 bytes (por ejemplo, PC/AX), pero los formatos con 512 bytes por sector físico se volvieron dominantes en la década de 1980. [3] [4]
El tamaño de sector físico más común para los discos duros en la actualidad es de 512 bytes, pero también ha habido discos duros con 520 bytes por sector para máquinas no compatibles con IBM. En 2005, algunos discos duros personalizados de Seagate usaban tamaños de sector de 1024 bytes por sector. Los discos duros de formato avanzado usan 4096 bytes por sector físico ( 4Kn ) [5] desde 2010, pero también podrán emular sectores de 512 bytes ( 512e ) durante un período de transición. [6]
Las unidades magneto-ópticas utilizan tamaños de sector de 512 y 1024 bytes en unidades de 5,25 pulgadas y 512 y 2048 bytes en unidades de 3,5 pulgadas.
En el direccionamiento CHS, los números de sector siempre comienzan en 1 , no hay sector 0 , [1] lo que puede generar confusión ya que los esquemas de direccionamiento de sector lógico normalmente comienzan a contar con 0, por ejemplo, el direccionamiento de bloque lógico (LBA) o el "direccionamiento de sector relativo" utilizado en DOS.
En el caso de las geometrías de discos físicos, el número máximo de sectores está determinado por el formato de bajo nivel del disco. Sin embargo, para el acceso al disco con el BIOS de las máquinas compatibles con IBM-PC, el número de sectores se codificó en seis bits, lo que dio como resultado un número máximo de 111111 (63) sectores por pista. Este máximo todavía se utiliza para las geometrías CHS virtuales.
Las pistas son delgadas tiras circulares concéntricas de sectores. Se requiere al menos un cabezal para leer una sola pista. Con respecto a las geometrías de los discos, los términos pista y cilindro están estrechamente relacionados. Para un disquete de una o dos caras, el término común es pista; y para más de dos cabezales , el término común es cilindro . Estrictamente hablando, una pista es una combinación dada que consta de sectores, mientras que un cilindro consta de sectores.CH
SPT
SPT×H
Un cilindro es una división de datos en una unidad de disco , como se utiliza en el modo de direccionamiento CHS de un disco de arquitectura de bloque fijo o el modo de direccionamiento cilindro-cabeza-registro (CCHHR) de un disco CKD .
El concepto consiste en cortar porciones cilíndricas huecas y concéntricas de los discos físicos ( platos ), recogiendo las pistas circulares respectivas alineadas a través de la pila de platos. La cantidad de cilindros de una unidad de disco es exactamente igual a la cantidad de pistas en una sola superficie de la unidad. Comprende el mismo número de pista en cada plato, abarcando todas esas pistas en cada superficie del plato que pueda almacenar datos (sin importar si la pista es "mala" o no). Los cilindros están formados verticalmente por pistas . En otras palabras, la pista 12 en el plato 0 más la pista 12 en el plato 1, etc. es el cilindro 12.
Otras formas de dispositivo de almacenamiento de acceso directo (DASD), como los dispositivos de memoria de tambor o la celda de datos IBM 2321 , pueden proporcionar direcciones de bloques que incluyen una dirección de cilindro, aunque la dirección de cilindro no selecciona una porción cilíndrica (geométrica) del dispositivo.
Un dispositivo llamado cabezal lee y escribe datos en un disco duro manipulando el medio magnético que compone la superficie de un plato de disco asociado. Naturalmente, un plato tiene dos lados y, por lo tanto, dos superficies en las que se pueden manipular los datos; por lo general, hay dos cabezales por plato, uno por lado. (A veces, el término lado se sustituye por cabezal, ya que los platos pueden estar separados de sus conjuntos de cabezales, como sucede con los medios extraíbles de una unidad de disquete ).
El direccionamiento admitido en el código de las BIOS compatibles con IBM-PC utilizaba ocho bits para un máximo de 256 cabezales contados como cabezal 0 hasta 255 ( ). Sin embargo, un error en todas las versiones de Microsoft DOS / IBM PC DOS hasta la 7.10 inclusive hará que estos sistemas operativos se bloqueen al iniciarse cuando encuentren volúmenes con 256 cabezales [2] . Por lo tanto, todas las BIOS compatibles utilizarán asignaciones con hasta 255 cabezales ( ) únicamente, incluso en geometrías virtuales .CHS
FFh
00h..FEh
255×63
Esta rareza histórica puede afectar el tamaño máximo del disco en el antiguo código BIOS INT 13h , así como en los antiguos PC DOS o sistemas operativos similares:
(512 bytes/sector)×(63 sectors/track)×(255 heads (tracks/cylinder))×(1024 cylinders)=8032.5
MB , pero en realidad 512×63×256×1024=8064
MB produce lo que se conoce como límite de 8 GB . [7] En este contexto, la definición relevante de 8 GB = 8192 MB es otro límite incorrecto, porque requeriría CHS 512×64×256
con 64 sectores por pista.
Las pistas y los cilindros se cuentan desde 0, es decir, la pista 0 es la primera pista (la más externa) en disquetes u otros discos cilíndricos. El código BIOS antiguo admitía diez bits en el direccionamiento CHS con hasta 1024 cilindros ( ). Agregar seis bits para sectores y ocho bits para cabezales da como resultado los 24 bits admitidos por la interrupción BIOS 13h . Restar el número de sector no permitido 0 en las pistas corresponde a 128 MB para un tamaño de sector de 512 bytes ( ); y confirma el límite (aproximadamente) de 8 GB . [8]1024=210
1024×256
128 MB=1024×256×(512 byte/sector)
8192-128=8064
El direccionamiento CHS comienza 0/0/1
con un valor máximo 1023/255/63
para 24=10+8+6
bits, o 1023/254/63
para 24 bits limitado a 255 cabezas. Los valores CHS utilizados para especificar la geometría de un disco tienen que contar el cilindro 0 y la cabeza 0, lo que da como resultado un máximo ( 1024/256/63
o) 1024/255/63
para 24 bits con (256 o) 255 cabezas. En las tuplas CHS que especifican una geometría, S en realidad significa sectores por pista, y donde la geometría (virtual) aún coincide con la capacidad que el disco contiene C×H×S
sectores. A medida que se han utilizado discos duros más grandes, un cilindro se ha convertido también en una estructura de disco lógica, estandarizada [ cita requerida ] en 16 065 sectores ( 16065=255×63
).
El direccionamiento CHS con 28 bits ( EIDE y ATA-2 ) permite ocho bits para sectores que aún comienzan en 1, es decir, sectores 1...255, cuatro bits para cabezas 0...15 y dieciséis bits para cilindros 0...65535. [9] Esto da como resultado un límite de aproximadamente 128 GB65536×16×255=267386880
; en realidad sectores correspondientes a 130560 MB para un tamaño de sector de 512 bytes. [7] Los 28=16+4+8
bits en la especificación ATA-2 también están cubiertos por la Lista de interrupciones de Ralf Brown , y se publicó un antiguo borrador de trabajo de este estándar ahora expirado. [10]
Con un límite de BIOS antiguo de 1024 cilindros y el límite de ATA de 16 cabezas [11], el efecto combinado fueron 1024×16×63=1032192
los sectores, es decir, un límite de 504 MB para un tamaño de sector de 512. Los esquemas de traducción de BIOS conocidos como ECHS y ECHS revisado mitigaron esta limitación al usar 128 o 240 en lugar de 16 cabezas, reduciendo simultáneamente la cantidad de cilindros y sectores que caben 1024/128/63
(límite de ECHS: 4032 MB ) o 1024/240/63
(límite de ECHS revisado: 7560 MB) para la cantidad total dada de sectores en un disco. [7]
Las comunidades Unix emplean el término bloque para referirse a un sector o grupo de sectores. Por ejemplo, la utilidad fdisk de Linux , antes de la versión 2.25, [12] mostraba los tamaños de las particiones utilizando bloques de 1024 bytes .
Los clústeres son unidades de asignación de datos en varios sistemas de archivos ( FAT , NTFS , etc.), donde los datos consisten principalmente en archivos. Los clústeres no se ven afectados directamente por la geometría física o virtual del disco, es decir, un clúster puede comenzar en un sector cerca del final de una pista determinada y terminar en un sector en la pista física o lógicamente siguiente.CH
CH
En 2002, la especificación ATA-6 introdujo un direccionamiento de bloque lógico opcional de 48 bits y declaró obsoleto el direccionamiento CHS, pero aún permitía implementar las traducciones ATA-5. [13] Como era de esperar, la fórmula de traducción de CHS a LBA que se muestra a continuación también coincide con la última traducción CHS de ATA-5. En la especificación ATA-5, el soporte de CHS era obligatorio para hasta 16 514 064 sectores y opcional para discos más grandes. El límite ATA-5 corresponde a CHS 16383 16 63
o capacidades de disco equivalentes (16514064 = 16383 × 16 × 63 = 1032 × 254 × 63) y requiere 24 = 14 + 4 + 6 bits ( 16383 + 1 = 2 14 ). [14]
Las tuplas CHS se pueden asignar a direcciones LBA utilizando la siguiente fórmula:
donde A es la dirección LBA, N cabezas es el número de cabezas en el disco, N sectores es el número máximo de sectores por pista y ( c , h , s ) es la dirección CHS.
Una fórmula de Número de Sector Lógico en los estándares ECMA -107 [3] e ISO / IEC 9293:1994 [15] (que reemplaza a ISO 9293:1987 [16] ) para sistemas de archivos FAT coincide exactamente con la fórmula LBA dada anteriormente: Dirección de Bloque Lógico y Número de Sector Lógico (LSN) son sinónimos. [3] [15] [16] La fórmula no utiliza el número de cilindros, pero requiere el número de cabezales y el número de sectores por pista en la geometría del disco, porque la misma tupla CHS direcciona diferentes números de sector lógico dependiendo de la geometría.
Ejemplos :
1020 16 63
de un disco con 1028160 sectores, CHS 3 2 1
es LBA 3150 = ((3 × 16) + 2) × 63 + (1 – 1) ;1008 4 255
de un disco con 1028160 sectores, CHS 3 2 1
es LBA 3570 = ((3 × 4) + 2) × 255 + (1 – 1) 64 255 63
de un disco con 1028160 sectores, CHS 3 2 1
es LBA 48321=((3 × 255) + 2) × 63 + (1 – 1)2142 15 32
de un disco con 1028160 sectores, CHS 3 2 1
es LBA 1504 = ((3 × 15) + 2) × 32 + (1 – 1)Para ayudar a visualizar la secuenciación de sectores en un modelo LBA lineal, tenga en cuenta lo siguiente:
El formato de registro de culata se ha utilizado en los discos duros Count Key Data (CKD) de los mainframes de IBM desde al menos la década de 1960. Es comparable en gran medida al formato de sector de culata utilizado por los PC, con la excepción de que el tamaño del sector no era fijo, sino que podía variar de una pista a otra en función de las necesidades de cada aplicación. En el uso contemporáneo, la geometría del disco presentada al mainframe es emulada por el firmware de almacenamiento y ya no tiene ninguna relación con la geometría física del disco. [ cita requerida ]
Los discos duros anteriores utilizados en PC, como los discos MFM y RLL , dividían cada cilindro en un número igual de sectores, de modo que los valores CHS coincidieran con las propiedades físicas del disco. Un disco con una tupla CHS de 500 4 32
tendría 500 pistas por lado en cada plato, dos platos (4 cabezales) y 32 sectores por pista, con un total de 32 768 000 bytes (31,25 MiB ). [ cita requerida ]
Las unidades ATA/IDE eran mucho más eficientes en el almacenamiento de datos y han reemplazado a las ahora obsoletas unidades MFM y RLL. Utilizan grabación de bits de zona (ZBR), donde el número de sectores que dividen cada pista varía con la ubicación de los grupos de pistas en la superficie del plato. Las pistas más cercanas al borde del plato contienen más bloques de datos que las pistas cercanas al eje, porque hay más espacio físico dentro de una pista dada cerca del borde del plato. Por lo tanto, el esquema de direccionamiento CHS no puede corresponderse directamente con la geometría física de dichas unidades, debido al número variable de sectores por pista para diferentes regiones en un plato. Debido a esto, muchas unidades aún tienen un excedente de sectores (menos de un cilindro de tamaño) al final de la unidad, ya que el número total de sectores rara vez, o nunca, termina en un límite de cilindro. [ cita requerida ]
Se puede configurar una unidad ATA/IDE en el BIOS del sistema con cualquier configuración de cilindros, cabezales y sectores que no exceda la capacidad de la unidad (o del BIOS), ya que la unidad convertirá cualquier valor CHS dado en una dirección real para su configuración de hardware específica. Sin embargo, esto puede causar problemas de compatibilidad. [ cita requerida ]
En sistemas operativos como Microsoft DOS o versiones anteriores de Windows , cada partición debe comenzar y terminar en un límite de cilindro. [ cita requerida ] Solo algunos de los sistemas operativos relativamente modernos (incluido Windows XP) pueden ignorar esta regla, pero hacerlo aún puede causar algunos problemas de compatibilidad, especialmente si el usuario desea realizar un arranque dual en la misma unidad. Microsoft no sigue esta regla con las herramientas de partición de disco internas desde Windows Vista. [17]
La emulación de 512 bytes a veces se denomina 512e
En los estándares ATA/ATAPI-5 y anteriores, se definió una traducción CHS. Esta traducción está obsoleta, pero puede implementarse tal como se define en ATA/ATAPI-5.
Si la capacidad del dispositivo es mayor o igual a un sector y menor o igual a 16.514.064 sectores, entonces el dispositivo deberá soportar la traducción CHS.
0xFF
0x100 & 0xFF = 0x00