磁盘
软盘和硬盘
目前主流的硬盘分为两种:
1)机械硬盘
2)固态硬盘
硬盘最早的接口分为两种方式
- 并行接口方式(PATA),目前已经淘汰。
- 串行接口(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寄存器
- 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