当前位置:首页 > 技术 > 嵌入式 > 正文内容

FAT硬盘及分区结构

Watrt7年前 (2017-12-16)嵌入式20430

1 硬盘的物理结构

硬盘存储数据是根据电磁转换原理来实现的。硬盘工作时,盘片以设计速度高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置将数据存储或读取出来。只要将盘片表面设计得更平滑、磁头设计得更精密以及尽量提高盘片旋转速度,就能造出容量更大,存储速度更快的硬盘。

2 硬盘的逻辑结构

硬盘首先分成很多个盘片platter,每个盘片有2面,每面对应一个磁头head;每个盘片被划分若干个同心圆磁道,这多个同心圆就形成了一个柱面cylinder;每个盘面的每个磁道又被分成几十个扇区sector,通常容量是512bytes。故共有cylinderxheadsxsector个扇区。

3 磁盘的分区结构

磁盘的开始为整个磁盘的Bootsector,往下有不超过4个的基本分区。如果某个基本分区的分区类型为EXTENDX,则该分区被指定为扩展分区。扩展分区又被分为多个逻辑分区。

3.1 Bootsector

Bootsector由MBR(Master Boot Record)、DPT(Disk Partion Table)和Boot Record ID(结束符)组成。

MBR,主引导记录,有时也称主引导扇区,占用了整个硬盘的0柱面0磁头1扇区的前面的446个字节;BIOS在执行完自己的固有程序以后,便会跳转到MBR的第一条语句。MBR负责从活动分区中装载并运行系统引导程序。

DPT:DPT占用接下来的64个字节,描述磁盘的基本分区信息。共4个分区项,每项16个字节。

Boot Record ID:结束符55AA。

Bootsector的整体结构如下图所示:

其中,16字节的分区信息包含内容如下:

3.2 扩展分区

由于基本分区最多只能分4个分区,无法满足需求,因此设计了一种扩展分区格式。如果DPT的某个表项,标记基本分区类型为0x05(EXTENDX)时,该分区即为主扩展分区,其他所有的扩展分区,以主扩展分区为链表头,链式排列。扩展分区的第一个扇区存放类似于DPT的分区信息(EBR),该分区信息仅有2项,一项指向自身的逻辑盘,另一项指向链表中下一个扩展分区。每个扩展分区含一个逻辑盘(也称逻辑分区)。具体结构如下图:

3.3 如何找到一个逻辑分区

综上,找到一个逻辑盘(逻辑分区)的步骤为:从磁盘第一个扇区BootSector的DPT,获取基本分区信息;如果基本分区类型为EXTENDX,该基本分区即为主扩展分区(第一个扩展分区);从扩展分区的分区表EBR,可以得到当前扩展分区的逻辑盘位置,以及下一个扩展分区的起始位置。如下图(以一个有4个基本分区的磁盘为例):

再对照一下弟3章开始的表格:



4 逻辑分区结构

第三章介绍了从“磁盘Bootsector到逻辑分区”的结构。现在以FAT16和FAT32为例,对逻辑分区的结构进行说明。

FAT16和FAT32的分区组成机构类似,其基本如下:

下面以这个图上显示的顺序,逐项说明。

4.1 逻辑分区的BOOTSECTOR--DBR(DOS BOOT RECORD)

DBR区(DOS BOOT RECORD)即操作系统引导记录区的意思,通常占用分区的第0扇区共512个字节(特殊情况也要占用其它保留扇区,我们先说第0扇)。在这512个字节中,其实又是由跳转指令,厂商标志和操作系统版本号,BPB(BIOS Parameter Block),扩展BPB,os引导程序,结束标志几部分组成。

4.2 保留扇区

在DBR的偏移0x0e处,用2个字节制定了保留扇区的数目。保留扇区及系统保留区,用户不可见。

4.3 FAT表(详细内容见<<FAT文件系统存储原理>>)

FAT表(File Allocation Table 文件分配表),是Microsoft在FAT文件系统中用于磁盘数据(文件)索引和定位引进的一种链式结构。假如把磁盘比作一本书,FAT表可以认为相当于书中的目录,而文件就是各个章节的内容。在FAT文件系统中,文件的存储依照FAT表制定的簇链式数据结构来进行。其中FAT2是FAT1的同步,内容是一样的。

4.4 根目录区

根目录区就是跟目录区(跳过^_^)。


分享给朋友:

相关文章

Qt5.x移植后的环境配置

Qt5.x移植后的环境配置

环境配置脚本如下#!/bin/sh export QTDIR=/usr/lib/qt5 export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins export QT_QPA_PLATFORM=eglfs:fb=/dev/fb0 export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event1 export QT_QPAFONTDIR=/usr/...

qemu 防真arm

qemu 防真arm

我使用的是:qemu-system-arm -M versatilepb -kernel arm2/vmlinuz-2.6.26-2-versatile -hda arm2/arm.qcow2 -initrd arm2/initrd.gz -append "root=/dev/ram" -m 256这是我打包的文件mv.zip下面是常用的命令:1 ...

嵌入试设备中杂记

嵌入试设备中杂记

WIFI:首先确定是否正确的加载USB无线网卡的驱动然后配置连接wifi配置:文件位置:/etc/wpa_supplicant.confctrl_interface=/var/run/wpa_supplicant ap_scan=1 network={   ssid="ZCWH"   key_mgmt=WPA-PSK   psk="00004157" }配置好后开始连接:wpa_sup...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。