您的位置:首页 > 其它

硬盘寻址模式、分区表

2017-11-08 10:30 204 查看
1.      硬盘的寻址模式

 

①  最初的小容量硬盘

采用CHS,Cylinder/Head/Sector,既磁头数(Heads), 柱面数(Cylinders), 扇区数(Sectors), 当时硬盘的容量还非常小,磁头数(Heads) 表示硬盘总共有几个磁头,也就是有几面盘片,
最大为 255 (用 8 个二进制位存储),柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道, 最大为 1023(用 10 个二进制位存储); 扇区数(Sectors) 表示每一条磁道上有几个扇区, 最大为 63 (用 6个二进制位存储),每个扇区一般是 512个字节,磁盘最大容量为255 * 1023 * 63 * 512 / 1048576 = 8024 MB ( 1M = 1048576 Bytes )

 

② 大容量硬盘

由于每个磁道的扇区数相等, 外道的记录密度要远低于内道, 因此会浪费很多磁盘空间为了解决这一问题, 进一步提高硬盘容量, 人们改用等密度结构生产硬盘. 也就是说, 外圈磁道的扇区比内圈磁道多. 采用这种结构后, 硬盘不再具有实际的3D参数, 寻址方式也改为线性寻址, 即以扇区为单位进行寻址,这就是LBA,Logical Block
Address
,从0开始编号来定位区块,第一区块LBA=0,第二区块LBA=1,依此类推;为了兼容BIOS Int13H接口的软件,硬盘控制器内部安装了一个地址翻译器, 由它负责将老式3D参数翻译成新的线性参数,但是由于容量的增大,提出了扩展 Int 13H 标准

 

③ 电子硬盘

现在市面上出现了大量的电子硬盘,也即为SSD,取代机械式的HDD已成为潮流。电子硬盘的寻址模式也是LBA,但是由于SSD使用的存储介质NAND闪存有需要先擦除才能再写入、写以页为单位、擦除以块(多个页组成)为单位的特性,引入PBA(物理区块地址)的概念。在HDD上,由于HDD的数据可以直接覆盖,所以LBA和PBA的关系是1:1对应,不会变更,即LBA=PBA。但在SSD上,这种关系就变得复杂了。SSD的主控制器是使用LBA和PBA的映射表来管理闪存的。当有需更新的数据要写入时,主控会把新数据写入到空白的闪存空间(已擦除状态的)内,然后更新映射表数据,把LBA指向新的PBA。原来的PBA就成了无效数据,这个PBA若要再次写入数据就需先进行擦除的操作。

 

2.      分区表

 

MBR分区表

 

硬盘的0柱面、0磁头、1扇区称为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录(MBR),master Boot Record, 它用于硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统区

 

0000-0088

 

Master Boot Record

主引导程序

主引导

程序

0089-01BD

出错信息数据区

数据区

01BE-01CD

分区项1(16字节)

 

分区表

 

01CE-01DD

分区项2(16字节)

01DE-01ED

分区项3(16字节)

01EE-01FD

分区项4(16字节)

01FE

55

结束标志

01FF

AA

 

16byte的分区信息结构
存贮字节位
内容及含义
第1字节
引导标志。若值为80H表示活动分区,若值为00H表示非活动分区。
第2、3、4字节
本分区的起始磁头号、扇区号、柱面号。其中:
   
磁头号——第2字节;
   
扇区号——第3字节的低6位;
   
柱面号——为第3字节高2位+第4字节8
4000
位。
第5字节
分区类型符。
    00H——表示该分区未用(即没有指定);
    06H——FAT16基本分区;
    0BH——FAT32基本分区;
    05H——扩展分区;
    07H——NTFS分区;
0FH——(LBA模式)扩展分区
(83H为Linux分区等)。
第6、7、8字节
本分区的结束磁头号、扇区号、柱面号。其中:
   
磁头号——第6字节;
   
扇区号——第7字节的低6位;
   
柱面号——第7字节的高2位+第8字节。
第9、10、11、12字节
本分区之前已用了的扇区数。
第13、14、15、16字节
本分区的总扇区数。
 
以下为128G SDD硬盘的分区表,安装有Linux CentOS 7.3

80 01 01 00 83 fe 7f ff 3f 00 00 00 c1 81 7d 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 81 00 05 fe ff ff 00 82 7d 00 85 2a 75 0c 
00 00 01 d2 83 fe 3f cd 52 ae f2 0c fc 0c f5 01

3.      从BIOS 启动到OS

BIOS POST过程中会检索到所有的Device,创建出BBS Table,BBS Table中包含着一个个的Boot Entry,对于HDD而言会根据HDD中是否存在Active分区而创建一个boot entry,之后根据该boot entry,调用INT19

INT 19会将MBR的512字节装载到内存0x7c00中,然后JUMP到0x7c00处,开始执行MBR的可执行程序,之后再跳转到其他boot阶段

 

①  MBR的内容是在装系统的时候创建分区的时候确定的

②  Int19没有参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息