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

FAT硬盘及分区结构

watrt2年前 (2017-12-16)嵌入式290

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 根目录区

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


分享给朋友:

相关文章

LittleFS - 一个高度完整的嵌入式文件系统

LittleFS - 一个高度完整的嵌入式文件系统

LittleFS - 一个高度完整的嵌入式文件系统拥有小巧灵活的文件系统对许多物联网设备至关重要。使用文件系统并将其与正确的存储技术(如外部闪存或SD卡)配对可能很困难。Mbed操作系统使文件系统的组合变得简单。Mbed OS 5.7既支持FAT文件系统,又引入了高度集成的嵌入式文件系统。这包括对没有自己的磨损平衡控制器的闪存芯片的磨损平衡支持。LittleFS  - 一个高度完整的嵌入式文件系统将数据存储在嵌入式设备上非常有用:无论是配置文件,传感器信息批量还是新的固件更新。您可以抓...

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/...

ARM嵌入式系统

ARM嵌入式系统

1 基于ARM的嵌入式系统在这一章讨论ARM是如何采用RISC设计了一个灵活的嵌入式处理器;然后通过介绍一个嵌入式设备的实例,讨论围绕ARM处理器的典型的软硬件技术。1.1 RISC设计思想ARM采用RISC体系结构。RISC的目标在于设计出一套能在高时钟频率下单周期执行,简单而有效的指令集。RISC的设计重点在于降低硬件执行指令的复杂度,因为软件比硬件能提供更高的灵活性和更高的智能。因此,RISC对编译器有更高的要求。RISC的设计思想主要由以下4个准则来实现:(a)RISC指令集:使用定长的...

发表评论

访客

看不清,换一张

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