FAT32系统中长文件名的存储

本文详细介绍了FAT32文件系统如何支持长文件名,包括长文件名的实现原理、与短文件名的对应关系、以及长文件名与短文件名之间的校验机制。此外,文章还阐述了长文件名和短文件名在读取数据时的作用和相互依赖性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FAT32的一个重要的特点是完全支持长文件名。长文件名依然是记录在目录项中的。

 

为了低版本的OS或程序能正确读取长文件名文件,系统自动为所有长文件名文件创建了一个对应的短文件名,使对应数据既可以用长文件名寻址,也可以用短文件名寻址。不支持长文件名的OS或程序会忽略它认为不合法的长文件名字段,而支持长文件名的OS或程序则会以长文件名为显式项来记录和编辑,并隐藏起短文件名。


    当创建一个长文件名文件时,系统会自动加上对应的短文件名,其一般有的原则:
    (1)、取长文件名的前6个字符加上"~1"形成短文件名,扩展名不变。
    (2)、如果已存在这个文件名,则符号"~"后的数字递增,直到5。
    (3)、如果文件名中"~"后面的数字达到5,则短文件名只使用长文件名的前两个字母。通过数学操纵长文件名的剩余字母生成短文件名的后四个字母,然后加后缀"~1"直到最后(如果有必要,或是其他数字以避免重复的文件名)。
    (4)、如果存在老OS或程序无法读取的字符,换以"_"

 

短文件格式的目录项。其参数意义见表14:

表14   FAT32短文件目录项32个字节的表示定义
字节偏移(16进制)字节数定义
0x0~0x78文件名
0x8~0xA3扩展名
0xB*1属性字节00000000(读写)
00000001(只读)
00000010(隐藏)
00000100(系统)
00001000(卷标)
  00010000(子目录)
00100000(归档)
0xC1系统保留
0xD1创建时间的10毫秒位
0xE~0xF2文件创建时间
0x10~0x11 2文件创建日期
0x12~0x132文件最后访问日期
0x14~0x15 2文件起始簇号的高16位
0x16~0x172文件的最近修改时间
0x18~0x192文件的最近修改日期
0x1A~0x1B2文件起始簇号的低16位
0x1C~0x1F4表示文件的长度

      * 此字段在短文件目录项中不可取值0FH,如果设值为0FH,目录段为长文件名目录段

 

    长文件名的实现有赖于目录项偏移为0xB的属性字节,当此字节的属性为:只读、隐藏、系统、卷标,即其值为0FH时,DOS和WIN32会认为其不合法而忽略其存在。这正是长文件名存在的依据。

 

    将目录项的0xB置为0F,其他就任由系统定义了,Windows9x或Windows 2000、XP通常支持不超过255个字符的长文件名。

 

    系统将长文件名以13个字符为单位进行切割,每一组占据一个目录项。所以可能一个文件需要多个目录项,这时长文件名的各个目录项按倒序排列在目录表中,以防与其他文件名混淆
    长文件名中的字符采用unicode形式编码(一个巨大的进步哦),每个字符占据2字节的空间。其目录项定义如表15。

表15   FAT32长文件目录项32个字节的表示定义
字节偏移
(16进制)
字节数定义
0x01属性字节位意义7保留未用
61表示长文件最后一个目录项
5保留未用
4顺序号数值
3
2
1
0
0x1~0xA10长文件名unicode码①
0xB1长文件名目录项标志,取值0FH
0xC1系统保留
0xD1校验值(根据短文件名计算得出)
0xE~0x1912长文件名unicode码②
0x1A~0x1B 2文件起始簇号(目前常置0)
0x1C~0x1F4长文件名unicode码③

 

 

   系统在存储长文件名时,总是先按倒序填充长文件名目录项,然后紧跟其对应的短文件名。从表15可以看出,长文件名中并不存储对应文件的文件开始簇、文件大小、各种时间和日期属性。文件的这些属性还是存放在短文件名目录项中,一个长文件名总是和其相应的短文件名一一对应,短文件名没有了长文件名还可以读,但长文件名如果没有对应的短文件名,不管什么系统都将忽略其存在。所以短文件名是至关重要的。

    在不支持长文件名的环境中对短文件名中的文件名和扩展名字段作更改(包括删除,因为删除是对首字符改写E5H),都会使长文件名形同虚设。

 

(长文件名如何与短文件名对应?仅靠她们之间的位置关系?)

    长文件名和短文件名之间的联系光靠他们之间的位置关系维系显然远远不够。其实,长文件名的0xD字节的校验和起很重要的作用,此校验和是用短文件名的11个字符通过一种运算方式来得到的。系统根据相应的算法来确定相应的长文件名和短文件名是否匹配。这个算法不太容易用公式说明,我们用一段c程序来加以说明。
    假设文件名11个字符组成字符串shortname[],校验和用chknum表示。得到过程如下:

    int i,j,chknum=0;
    for (i=11; i>0; i--)
        chksum = ((chksum & 1) ? 0x80 : 0) + (chksum >> 1) + shortname[j++];

    如果通过短文件名计算出来的校验和与长文件名中的0xD偏移处数据不相等。系统无论如何都不会将它们配对的。
    依据长文件名和短文件名对目录项的定义,加上对簇的编号和链接,FAT32上数据的读取便游刃有余了。

 

 

 

本文出自数据恢复网(www.sjhf.net),疏漏在所难免,希望指正。若需转载请保留此信息;若需修改,请用以下方式与作者取得联系
    1、
http://www.sjhf.net
    2、zymail@vip.sina.com
    3、sjhf@sjhf.net

<think>好的,用户让我介绍一下先进封装HBM是什么。首先,我需要确定用户可能对HBM了解多少,可能他们听说过但不太清楚细节。HBM全称是高带宽存储器,属于先进封装技术的一部分,常用于高性能计算领域。 用户可能是在新闻或者技术文章中看到HBM这个词,比如与GPU、AI芯片相关的报道。他们可能想了解HBM的基本概念、工作原理以及应用场景。我需要用简单易懂的语言解释,避免太多专业术语,但又要准确。 首先,HBM的定义。需要说明它是一种3D堆叠的DRAM技术,通过垂直堆叠多层内存芯片,与传统的内存有什么不同。比如传统的是在平面上排列,而HBM是立体堆叠,从而节省空间,提升带宽。 然后,HBM的结构特点。比如使用TSV(硅通孔)技术连接各层,中介层(Interposer)连接HBM和处理器。这部分可能需要稍微解释一下TSV和中介层的作用,但不用太深入。 接下来是优势,高带宽、低功耗、小面积。这些优势为什么重要,比如在高性能计算中,数据传输速度是关键,HBM的高带宽可以满足需求,低功耗有助于散热,小面积适合紧凑设计。 应用场景,比如GPU、AI加速器、超级计算机。可以举例子,比如NVIDIA的GPU使用HBM,这样用户更容易联想到实际产品。 可能还需要提到HBM的发展历程,比如从HBM1到HBM3,每一代的改进,比如带宽提升、层数增加等。这样用户能了解其技术进步。 用户可能的深层需求是了解HBM为什么重要,特别是在当前AI和大数据发展的背景下,HBM如何支持这些技术的发展。可能需要强调其在高性能计算中的关键作用,以及未来趋势。 需要检查是否有常见的误区,比如HBM与其他内存技术如GDDR的区别,可以简要对比,帮助用户更好理解HBM的独特之处。 最后,总结HBM的重要性,以及它在未来技术发展中的位置。确保解释清晰,结构合理,让用户能够全面理解HBM是什么,以及它的应用和优势。</think>**HBM(High Bandwidth Memory,高带宽存储器)** 是一种基于3D堆叠封装技术的先进内存解决方案,专为满足高性能计算(如AI、GPU、超级计算机等)对高速数据传输和低功耗的需求而设计。以下是其核心特点和应用介绍: --- ### **1. 核心特点** - **3D堆叠结构**: 将多颗DRAM芯片(通常4-12层)垂直堆叠,通过**硅通孔(TSV)**技术实现层间直接互联,大幅缩短数据传输距离,提升效率。 - **高带宽**: 通过宽总线(1024位以上,远高于传统GDDR的32位)和高速接口,单颗HBM的带宽可达数百GB/s至数TB/s(如HBM3可达6.4TB/s),适合处理海量数据。 - **低功耗与小型化**: 短距离传输减少能耗,同时堆叠设计节省芯片面积,使其在紧凑设备(如服务器、移动芯片)中更具优势。 - **先进封装技术**: 依赖**中介层(Interposer)**将HBM与处理器(如CPU/GPU)紧密集成,实现高速互连,典型技术包括CoWoS(台积电)、FOWLP等。 --- ### **2. 技术演进** - **HBM1**(2013年):首代,4层堆叠,带宽128GB/s。 - **HBM2/HBM2E**:支持8-12层堆叠,带宽提升至307GB/s(HBM2E达4TB/s)。 - **HBM3**(2022年):带宽达6.4TB/s,支持24层堆叠,面向AI和超算需求。 - **HBM3E**:进一步优化速度和密度,成为当前AI芯片(如NVIDIA H100/H200)的首选。 --- ### **3. 应用场景** - **AI/深度学习**: 训练大模型需快速存取海量数据,HBM为GPU(如NVIDIA A100/H100)和TPU提供关键支持。 - **高性能计算(HPC)**: 超算中心利用HBM加速气候模拟、基因分析等复杂计算。 - **数据中心与云计算**: 应对实时数据处理、高并发需求,HBM提升服务器效率。 - **高端显卡**: AMD Radeon系列、NVIDIA Tesla显卡采用HBM,增强图形渲染与并行计算能力。 --- ### **4. 对比传统内存(如GDDR)** - **带宽**:HBM的宽总线设计使其带宽远超GDDR。 - **功耗**:HBM在相同性能下功耗更低。 - **面积**:3D堆叠节省空间,但封装复杂度更高,成本也更高。 --- ### **5. 挑战与趋势** - **成本**:3D堆叠和先进封装工艺导致HBM价格昂贵,多用于高端芯片。 - **技术瓶颈**:堆叠层数增加可能带来散热和良率问题。 - **未来方向**: 继续提升堆叠层数(如16层以上)、优化散热方案(液冷/新材料),并与Chiplet(小芯片)技术结合,进一步突破性能极限。 --- ### **总结** HBM通过3D堆叠和先进封装技术,解决了传统内存带宽不足的瓶颈,成为AI芯片、超算和高端GPU的核心组件。随着AI与大模型爆发式发展,HBM将持续推动高性能计算领域的革新。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值