磁盘

软盘和硬盘

目前主流的硬盘分为两种:

1)机械硬盘

2)固态硬盘

硬盘最早的接口分为两种方式

  1. 并行接口方式(PATA),目前已经淘汰。
  2. 串行接口(SATA)。

CHS方式访问磁盘

磁盘的三层定位结构分别为 柱面(Cylinder),磁头(Head),扇区(Sector)

使用数字,按顺序根据柱面,磁头,扇区定位扇区地址的方式,称之为CHS方式。

CHS方式的局限:这种模式及下,支持的最大柱面数为1024,最大磁头数为16,追打扇区数位63,扇区字节数为512.因此最大访问硬盘容量为

1024 x 16 x 63 x 512 = 528MB

虽然后面又拓展了large模式读取,但是没有解决根本问题。

所以后来有LBA的读取方式。LBA方式不使用柱面-磁头-扇区方式定位,直接以从0开始,逐次递增的方式来定位逻辑扇区。

比如: 扇区0,扇区1,....

LBA方式访问磁盘

LBA方式不考虑扇区的物理位置,而是根据逻辑位置来定位的。

LAB使用 :device寄存器,LBA low寄存器,LBA mid寄存器,LBA high寄存器 来计算位置,每个寄存器8位。

例如LAB28,使用一个28位来表示。

LAB28地址 = device寄存器的低4位 + LBA high寄存器 + LBA mid寄存器 + LBA low寄存器

  1. LBA28的局限以及LAB48

CHS和LBA的转换

CHS地址可用以下公式转成LBA,

$lba=($c x H+$h) x S+$s-1

$c 磁柱编号
$h 磁头编号
$s 扇区编号
H=heads per cylinder,每个磁柱的磁头数
S=sectors per track,每磁道的扇区数

其中,
$lba是逻辑区块编号

LBA可用以下公式对应到CHS:

c=#lba/(S*H)

h=(#lba/S)%H

s=(#lba%S)+1

功能08H 功能描述:读取驱动器参数 入口参数:

AH=08H

DL=驱动器,00H7FH:软盘;80H0FFH:硬盘

出口参数:

CF=1——操作失败,

AH=状态代码,参见功能号01H中的说明,否则, BL=01H — 360K =02H — 1.2M =03H — 720K =04H — 1.44M

CH=柱面数的低8位

CL的位7-6=柱面数的该2位

CL的位5-0=扇区数

DH=磁头数

DL=驱动器数

ES:DI=磁盘驱动器参数表地址

RATSOS磁盘分布配置

0x0000 - ox01ff 引导扇区,1个扇区,512 B
0x0200 - 0x09ff loader文件,4个扇区,2048 B
0x0a00 - 0x39ff 内核文件,24个扇区,12288 B