El disco duro tiene dos modos de direccionamiento. Uno es el modo de direccionamiento C/H/S (Cilindro/Cabezal/Sector), que también se puede llamar modo de direccionamiento tridimensional. Este es el modo de direccionamiento más antiguo. modo utilizado por el disco duro En ese momento, la capacidad de los discos duros todavía era muy pequeña. La gente usaba una estructura similar a la de los disquetes para producir discos duros, es decir, cada pista del disco duro tenía el mismo número. de sectores, lo que dio como resultado los llamados parámetros 3D (Geometría del Disco), es decir, el número de cabezas (Heads), el número de cilindros (Cylinders), el número de sectores (Sectors) y los métodos de direccionamiento correspondientes.
En los discos duros más antiguos, dado que cada pista tiene el mismo número de sectores (igual que un disquete), la densidad de grabación de las pistas exteriores es mucho menor que la de las pistas interiores, por lo que se desperdicia mucho de espacio en disco. Para resolver este problema y aumentar aún más la capacidad del disco duro (la capacidad de direccionamiento C/H/S es limitada, lo que se mencionará más adelante), la gente pasó a utilizar una estructura de igual densidad para producir discos duros, es decir, los sectores de la pista exterior Hay más pistas que el anillo interior. Después de adoptar esta estructura, el disco duro ya no tiene parámetros 3D reales y el modo de direccionamiento también se cambia a direccionamiento lineal, es decir, direccionamiento en unidades de sectores. Este modo de direccionamiento se llama LBA, que significa Dirección de bloque lógico. dirección del bloque lógico del sector).
La dirección física tridimensional de un sector corresponde uno a uno con el sector físico del disco duro, es decir, la dirección física tridimensional puede determinar completamente el sector físico del disco duro. . En el modo LBA, el sistema trata todos los sectores físicos como sectores numerados linealmente de acuerdo con un determinado método o regla, es decir, ordenados desde 0 hasta un cierto valor máximo y conectados en una línea, y LBA se considera como un todo. en lugar del valor C/H/S real específico, de modo que solo se utiliza un número ordinal para determinar un sector físico único. Obviamente, la dirección lineal es la dirección lógica del sector físico.
Para ser compatible con software antiguo que usa direccionamiento C/H/S (como el software que usa la interfaz BIOS Int13H), se instala un traductor de direcciones dentro del controlador del disco duro, que es responsable de La conversión de parámetros C/H/S se traduce a direcciones LBA.
Entonces, ¿cómo se corresponde la dirección LBA con el valor C/H/S real? ¿Cómo convertir la dirección C/H/S a una dirección LBA y convertir la dirección LBA a un valor C/H/S?
Primero, echemos un vistazo a las reglas de conversión de dirección lineal C/H/S a LBA. Dado que el sistema escribe datos de un cilindro a otro, el cabezal magnético se mueve al siguiente cilindro solo después de que el cilindro anterior se haya llenado con datos y comienza a escribirse desde el primer sector del primer cabezal magnético del cilindro. , optimizando así el rendimiento del disco. Por tanto, cuando se direcciona linealmente a sectores físicos, también se realiza de esta forma. Es decir, el primer sector (sector 1) del primer cabezal magnético (superficie 0) del primer cilindro (cilindro 0) se compila como un sector "0" lógico, y el primer cabezal magnético (superficie 0) del primer cilindro (0 cilindro) El segundo sector (sector 2) del primer cilindro (0 cilindro) se programa como el sector lógico "1", hasta el sector 63 (sector 63) de la primera cabeza (superficie 0) del primer cilindro ( 0 cilindro) se programa como el sector lógico "1" sector "62", luego se pasa al primer sector (1 sector) del primer cilindro (0 cilindro) y al segundo cabezal (1 lado), y luego se realiza lo anterior. compilado en un sector lógico "63", todos los 0 cilindros. Una vez completada la numeración del sector, vaya al sector 0 del cilindro 1 y continúe hacia abajo en secuencia hasta que todos los sectores estén numerados.
Tenga en cuenta también que los números de sector en C/H/S varían de "1" a "63", mientras que en el modo LBA, los sectores se numeran comenzando desde "0" y todos los sectores se numeran secuencialmente.
Una vez dominada esta relación, podemos enumerar las fórmulas para convertir los dos modos de direccionamiento entre sí.
Fórmula de conversión de C/H/S a LBA:
Se estipula que C representa el número de cilindro actual, H representa el número de cabeza actual, S representa el número de sector actual, y CS representa el número de cilindro inicial, HS representa el número de cabezal inicial, SS representa el número de sector inicial, PS representa el número de sectores por pista, PH representa el número de pistas por cilindro, por lo que la fórmula es:
LBA= ( C–CS)﹡PH﹡PS (H–HS)﹡PS (S–SS)
Generalmente, CS=0, HS=0, SS=1, PS=63, PH =255.
Introduzcamos algunos valores para verificar:
Cuando C/H/S=0/0/1, sustituya la fórmula para obtener LBA=0
Cuando C/H/S=0/0/63, sustituye la fórmula para obtener LBA=62
Cuando C/H/S=0/1/1, sustituye la fórmula para obtener LBA =63
No habrá demasiada verificación aquí. Se pide a los lectores que verifiquen el valor múltiple por sí mismos. Veamos la relación de conversión de LBA a C/H/S.
Primero, introducimos dos operaciones DIV y MOD (aquí nos referimos a la operación de números enteros positivos). DIV se llama operación de división de números enteros, que es la parte entera del cociente obtenido al dividir el dividendo por el divisor. Por ejemplo, 3 DIV 2=1, 10 DIV 3=3; la operación MOD es tomar el resto del cociente. Por ejemplo, 5 MOD 2=1, 10 MOD 3=1. DIV y MOD son un par, uno toma la parte entera y el otro toma la parte restante.
Cada parámetro todavía se basa en los supuestos anteriores, entonces la fórmula de conversión de LBA a C/H/S es:
C=LBA DIV (PH﹡PS) CS p>
H=(LBA DIV PS) MOD PH HS
S=LBA MOD PS SS
También puedes traer varios valores para verificación:
Cuando LBA=0, sustituye la fórmula para obtener C/H/S=0/0/1
Cuando LBA=62, sustituye la fórmula para obtener C/H/S=0/ 0/63
Cuando LBA=63, sustituye la fórmula para obtener C/H/S=0/1/1