FAT文件系统与文件装载.docx
- 文档编号:26421631
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:149
- 大小:1.62MB
FAT文件系统与文件装载.docx
《FAT文件系统与文件装载.docx》由会员分享,可在线阅读,更多相关《FAT文件系统与文件装载.docx(149页珍藏版)》请在冰豆网上搜索。
FAT文件系统与文件装载
FAT文件系统与文件装载
在建立自己的文件系统之前,为了进行操作系统装载程序的实验,我们选择使用DOS简单的FAT12文件系统,作为存储数据和文件的组织方式。
1文件系统
文件系统是操作系统在(磁/U/光)盘上组织文件的方法和存储数据的结构;也指用于存储文件的磁盘分区、或文件系统的种类;还是操作系统中负责管理和存储文件信息的软件模块(文件管理系统)的简称。
文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。
具体地说,它负责为用户创建文件,存入、读出、修改、转储文件,控制对文件的访问,当用户不再使用时撤销和删除文件等。
操作系统与文件系统
每种操作系统都有自己的文件系统,而且往往一种操作系统有多种文件系统类型,并且每种类型又有若干具体格式和多个升级版本。
有的操作系统还支持多种文件系统类型,如
Windows支持NTFS和FATLinux通过VFS(VirtualFileSystems,虚拟文件系统)机制支持多种文件系统,如ext2、ext3、ReiserFSMinix、FAT32NTFS等。
DOS操作系统的文件系统为FAT(FileAllocationTable,文件分配表),包括FAT12FAT16
FAT32和exFAT等多种具体格式,老式Windows是DOS的外壳,当然也支持FAT文件系统。
WindowsNT系列(包括NT2000/XP/Vista/7/8)的文件系统为NTFS(NewTechnologyFileSystem,新技术文件系统),版本有(NT)、(NT)(NT和NT)、(NTFSWin2000)、(NTFSWinXP、NTFSWinServer2003、NTFSVistaNTFSWinServer2008和Win7、。
WindowsNT系列操作系统也支持老式的FAT文件系统。
Linux最初使用的是Minix文件系统。
为了突破Minix文件系统的局限,RemyCardF1992年4月在传统的UFS(UnixFileSystem,Unix文件系统)的启发下设计出了ext(extendedfilesystem,扩展文件系统)。
后来RemyCarcF1993年1月又推出了改进的ext2(secondextendedfilesystem),成为Linux的标准文件系统。
StephenTweedie设计的带有日志功能的ext3(thirdextendedfilesystem)于2001年11月被引入Linux2.4.15内核,现在也被许多Linux发行版广泛使用。
2006年10月10日西奥多•周(TheodoreTs'o)和MingmingCao(曹明明)等人又开发出了ext4(fourthextendedfilesystem),引进了盘区(extent、文件储存方式,以取代ext2/3使用的块映射(blockmapping、方式,提高了大型文件的操作效率,2008年10月
21日推出的Linux开始提供对ext4文件系统的支持。
ReiserFS是Linux的另一种日志型文件系统格式,由HansReiser及其公司Namesys于1997年7月23日推出,Linux内核从版本(2001年1月30日)开始支持ReiserFS。
磁盘分区
磁盘分区(diskpartitioning)将硬盘分割成若干逻辑部分(分区,partition),可安装多个操作系统和使用不同的文件系统。
在DOS和Windows中,硬盘的分区对应于文件系统中
不同的卷(volume),如C:
、D:
E:
等。
由于软盘的容量小,没有分区结构。
1引导扇区的构成
引导扇区(BootSector)是磁盘的第一个物理扇区,由主引导记录(MBR=MasterBoot
Record)、磁盘分区表(DPT=DiskPartitionTable)和引导记录标识符(BRID=BootRecord
IDentifier)三部分组成。
0
1BD
1BE
1CD
1CE
1DD
1DE
1ED
1EE
1FD
1FE
1FF
主引导记录
分区项1(16B)
分区项2(16B)
分区项3(16B)
分区项4(16B)
55AA
MBR(446B)
>DPT(64B)
BRID(2B)
引导扇区结构图
2.分区表项的结构
DPT含4个分区表项,每一项占16B,参见下表:
分区表项的字段结构
偏移量
长度
含义(值)
0x00
1B
分区是否激活(0x80或0)
0x01
1B
开始磁头号
0x02
2B
开始扇区号(低字节的低6位)和柱面号(其余10位,其中低位字节的咼2位为其第9、10位)
0x04
1B
分区类型(如:
0x06/0x0E=FAT160x0B/0x0C=FAT32、
0x07=NTFS0x05/0x0F=扩展、0x83=Linux)
0x05
1B
结束磁头号
0x06
2B
结束扇区号(低字节的低6位)和柱面号(其余10位,其中低位字节的咼2位为其第9、10位)
0x08
4B
分区起始地址(相对扇区数)
0x0C
4B
分区大小(总扇区数)
3.分区类型
pc的分区类型标志
数值
开发者
分区类型
数值
开发者
分区类型
0x00
IBM
空分区
3C
PowerQuest
PqRP(PartitionMagic)
0x01
微软
FAT12
64
Novell
NetWareFileSystem286
0x02
微软
Xenixroot
65
Novell
NetWareFileSystem386
0x03
微软
Xenixuser
78
GeurtVos
XOSL引导装入文件系统
0x04
微软
FAT16<32MB
80
Andrew
Tanenbaum
老Minix文件系统
0x05
IBM
扩展分区(CHS
81
Minix文件系统
0x06
Compaq
FAT16B
82
GNU/Sun
Linux交换空间/Solaris
0x07
微软
HPFS/NTFS/exFAT
83
GNU/Linux
Linux文件系统
0x08
IBM
Aix
84
微软
休眠
0x09
IBM
Aixbootable
85
GNU/Linux
Linux扩展
0x0A
微软&IBM
OS/2BootManager
86
微软
LegacyFTFAT16
0x0B
微软
FAT32(CHS)
87
微软
LegacyFTNTFS
0x0C
微软
FAT32(LBA)
88
GNU/Linux
Linux无格式文本
0x0E
微软
FAT16(LBA)
89
GNU/Linux
LinuxLVM
0x0F
微软
扩展分区(LBA)
8B
微软
LegacyFTFAT32
0x11
微软
隐藏FAT12
8C
微软
LegacyFTFAT32withLBA
0x12
Compaq
康柏诊断(FAT
A0
HP
HP膝上型电脑诊断分区
0x14
微软
隐藏FAT16<32MB
A5
FreeBSD
BSDslice
0x17
微软
隐藏HPFS/NTFS
DE
Dell
Dell诊断分区
0x1B
微软
隐藏FAT32
EB
Be公司
BFS(BeOS或Haiku)
0x1C
微软
隐藏FAT32(LBA
EE
微软
EFI保护分区
0x1D
微软
隐藏FAT16(LBA
EF
Intel
EFI系统分区(可为FAT文件系统)
0x20
微软
WindowsMobileupdateXIP
FB
VMware
VMwareVMFS
0x23
微软
WindowsMobilebootXIP
FC
VMware
VMwareVMKCORE
0x25
微软
WindowsMobileIMGFS
FD
GNU/Linux
LinuxRAIDauto
0x27
微软
Windows恢复分区(隐藏NTFS
FE
IBM
IBMIML分区
其中:
Xenix是微软公司于1980年为微机推出的一种Unix系统(最后的版本是1989年推出的2.3.4),1987年转让给了SCO公司,后者在其基础上推出了SCOUnix(即现在的SCOOpenServe)。
HPF(HighPerformaneeFileSystem,高性能文件系统)是微软公司于1989年为IBM的操作系统OS/2推出的一种文件系统,WindowsNT~支持,但是从WindowsNT后不再支持。
AIX(AdvaneedInteraetiveExecutive,高级交互执行体/先进交互执行程序)是IBM于1986年推出的一种Unix系统,现在最新的版本是2010年9月推出的。
CHS(Cylinder/Head/Sector,柱面/磁头/扇区)磁盘的一种传统寻址方式。
LBA(LogicalBlockAddressing,逻辑块寻址)磁盘的一种线性寻址方式,有22b(ATA,
1986)、28b(ATA-1,1994)和48b(ATA-6,2003)三种版本。
1996年以后推出的
硬盘一般都采用了LBA。
下面是LBA与CHS的转换公式:
LBA=((C*HPC)+H)*SPT+S-1
{
C=LBA/(SPT*HPC)
H=(LBA/SPT)%HPC
S=(LBA%SPT)+1
其中:
HPC=HeadsPerCylinder柱面磁头数(对28位的LBA一般为16)SPT=SectorsPerTrack磁道扇区数(对28位的LBA一般为63)
OS2(OperatingSystem/2,操作系统/第二代)微软与IBM于1987年为IBM的第二代个人计算机系统PS2(PersonalSystem/2)开发的一种操作系统,最后的版本为2001年12月推出的。
4.磁盘寻址方式
用这种CHS(Cylinder柱面/Head磁头/Sector扇区)方式表示的分区容量是有限的,因
为柱面和磁头从0开始编号,扇区从1开始编号,所以最多只能表示1024个柱面X63个
扇区X256个磁头X512B=8455716864B([实际上应该是左右])。
对容量超过的分区,分区结束的CHS—般用其最大值FEFFFF填充,有时也用柱面与1024的模来填充。
用4B存储的分区大小,最大为232*512B=2147483648KB=2048GB=2TB。
即使使用NTFS文件系统,也不能创建大于2TB的分区,但可以使用动态卷或GPT来创建超过2TB的NTFS卷。
由于分区不允许跨柱面(分区粒度,分区的扇区总数加上与前一分区之间的保留扇区数必须是柱面容量[=磁头数*每个柱面的扇区数]的整数倍),所以用操作系统进行分区时所得到的分区容量往往不是我们所指定的整数值。
为了增加容量,现代硬盘一般使用等密度结构(即外圈磁道的扇区数比内圈磁道的多),
大容量磁盘一般采用线性寻址(可突破CHS寻址方式下容量<限制,硬盘控制器内部的地址
翻译器可将老式的CHS参数转换成线性参数)。
硬盘的扇区总数不一定是(所设)柱面容量的整数倍,所以磁盘的末尾处常会出现未被分配使用的剩余空间。
5.GPT
GPT(GUIDPartitionTable,全局唯一标识符分区表)一种新的磁盘分区表标准,最初由Intel公司开发,2010年作为UEFI(UnifiedExtensibleFirmwareInterface,统一可扩展固件接口)规范的子集而推出,可突破传统MBR的2TB限制,最大可支持的硬盘和分区。
字节的十进制/二进制次方单位
缩写
英文名
中文名
次方
KB
kilobyte/kibibyte
千字节
103/210
MB
megabyte/mebibyte
兆字节
106/220
GB
gigabyte/gibibyte
吉字节
109/230
TB
terabyte/tebibyte
太字节
1012/240
PB
petabyte/pebibyte
拍字节
1015/250
EB
exabyte/exbibyte
艾字节
1018/260
ZB
zettabyte/zebibyte
泽字节
1021/270
YB
yottabyte/yobibyte
尧字节
1024/280
GUIDPartitionTableScheme
LEWD
ProtectiveMlBR
LBA1
Primary右PTHeader
lhXz
&山丫1JE LBA3 \A.X.a.A. 、Ch.-iez5-12: ' LUA34 Partitian1 Partiitian2 UBA-34 、PdrtiticinE> LBA-33 fntry水nny才打細』|刨巧* LBA-? SaciaiMlArv口何H«Bd«r| GPT方案 (LBA的大小为512B,LBA0=MBRLBA-1为磁盘的最后一个512B大小的块) 类别 OS 起始版本 平台 类Unix FreeBSD x86x64 Linux 2.5.8 MacOSX 10.4.0 Windows Vista SP1 x64 Server 2008 7 支持GPT的操作系统平台 扩展分区与逻辑驱动器 在主引导扇区的DPT中,最多可以定义4个(基本)分区(卷)。 为了引入和管理更多的逻辑驱动器(分区/卷),微软定义了扩展分区(类型值一般为0x0F)。 在Windows操作系统中,一般将主引导扇区里DPT的第一个表项作为磁盘的主(基本)分区,第二个表项作 为扩展分区。 在一个扩展分区中,可包含多个逻辑驱动器。 每个逻辑驱动器都有自己的引导扇区和引导记录,分别叫做扩展引导扇区和扩展引导记录(EBR=ExtendedBootRecord),逻辑驱 动器还有自己的扩展分区表。 在扩展分区表的4个分区表项中,第1个指向自己的引导扇 区,第2个指向下一个逻辑驱动器的EBR后两个分区表项没有使用。 最后一个逻辑驱动器 的第2个分区表项的值,必须全为0。 I■ 注引导■扇殴瓦 ! 弄分区1 I 笨]施吉頊 第(低却 55 引导屋区 引导床区 F导S匮 扩JB妣番 等AA 1引导Bi匡 弱AA 1引导高区 基本分叵1 一也"CT-一芈)打-逻辑躯勛希-邊輯麵矍 A■: ! “厂! 產—」廉灌! 一1_? _.? -,L? _一蠢員一.*■*■塾 g区一区一篋-匡心亠3 ¥,黑汾.E...1. 一r喙屢'"S iir展训爭扇£i JIrL-^^11“—■■$,^^1,・Flrr^ihkuu. -第二个逻辑眶越赛 ■l^i-■n^—41.^14a4^1■.整.丁茁龜分IX FL2—L总一一急為養亟塗一<£1巨一査L黑Jsb^-奁虔一y展呀国<■一魅一i'Ill区一 -F—“l•FLI: hL\nF|>1-一舊-4逵辑祗矍 一L2一工4邑X曩一參為藝一区一昱區医一1昼势E.E.A一护卷分匡表詰一-轿札;^昴区一 -IIacrlUuII-I1Etpl-t一第一亍逻辑岖1■H-^i70-.^■n.^—-n-^i■«-a4-^1■4d DOS/Windows硬盘的分区结构 FAT分区 FAT(FileAllocationTable,文件分配表)是微软公司为其操作系统DOS和老式Windows 所定义的一套文件系统,包括FAT12FAT16FAT32和exFAT等多种具体格式。 FAT12可支持的最大容量为32MB,用于早期的软盘和小容量硬盘,现在已被淘汰。 FAT16 则可支持<4GB的盘,现在一般用于中小容量的U盘°FAT32虽然在理论上最多可以支持128TB 的盘,但是由于目前只使用了大小为32位簇字段中的28位,所以允许的最大容量是8TB, 但Windows2000/XP最多只能格式化32GB的盘,如小容量硬盘和较大容量U盘。 exFAT(也 叫FAT64支持现代的大容量硬盘、移动硬盘和固态盘,但出现的晚,支持的系统少,而且由于exTAT采用了与NTFS—样的分区类型值(7),造成了一些兼容性问题。 WindowsNT系列操作系统,一般都采用性能更好的NTFS格式。 NTFS支持的最大卷为 264-1个簇(WinXP的为232-1簇),若采用默认/最大的簇大小4KB/64KB,则最大卷为64ZB-4KB/1YB-64K敦WinXP的为16TB-4KB/256TB-64KB。 NTFS支持的最大文件的理论值为16EB-1KB,实现值为16TB-64KB 不同版本FAT的比较 FAT 开发商 微软(Compaq) 全名 文件分配表 12位版 16位版 32位版 64位版 发布时间 1980年8月 1984年8月 1987年11月 1996年8月 2006年11月 OS版本 QDOS MSDOS CompaqDOS Windows95OSR2 WindowsEmbedded CE 分区标识 0x01 0x04、0x0E 0x06 0x0B、0x0C 0x07 结构 FAT12 FAT16 FAT16B FAT32 exFAT 目录内容 表格 文件配置 链表 坏块 对含损坏磁区的簇加以标识 最大文件大小 32MB 32MB 2GB 4GB 64ZB(推荐512TB) 最大文件数量: 4,077(212-21) 65,517(216-19) 65,517(216-19) 268,435,437(228-19) 每个目录2,796,202 最长文件名 、长文件名(255个字符) 最大卷大小 32MB(64KB簇时256MB) 32MB(64KB簇时256MB) 2GB(64KB簇时4GB) 2TB(32KB簇时 8TB) 64ZB(推荐512TB) 记录日期 创建、修改、访问 日期范围1 1980年1月1日至2107年12月31日 日期分辨率 2秒、10秒 属性 只读、隐藏、系统、卷标、子目录、归档 访问许可权 无 1.分区结构 F面以FAT16和FAT32为例,讨论FAT文件系统的基本内容。 FAT16分区结构 区域 扇区数 内容 说明 保留扇区 1 分区引导扇区 r-1 其余保留扇区 可选 FAT区 k FAT#1 主FAT k FAT#2 备份FAT 根目录区 m 根目录 固定大小1 数据区 n 数据 FAT32分区结构 区域 扇区数 内容 说明 保留扇区 1 分区引导扇区 1 FS信息扇区 r-2 其余保留扇区 可选 FAT区 k FAT#1 主FAT k FAT#2 备份FAT 数据区 n 数据 根目录表一般位于其第1个簇 2.分区引导扇区 分区引导扇区也叫VBR(VolumeBootRecord,卷引导记录)区或PBR(PartitionBootRecord,分区引导记录)区,是分区的第一个扇区(一般是512B)。 FAT1216分区引导扇区的结构 偏移 长度 内容 0x0000 3B 跳转指令 0x0003 8B OEM名串(厂商标志与操作系统版本,剩余字节用空格符填充)女口“MSDOS5.0'、“MSWIN4.1”、“NTFS”、“EXFAT”。 0x000B 25B BPB 0x0024 26B 扩展BPB 0x005A 448B 引导程序代码 0x01FE 2B 有效结束标志(55AA) FAT32分区引导扇区的结构 偏移 长度 内容 0x0000 3B 跳转指令 0x0003 8B OEM名串(厂商标志与操作系统版本,剩余字节用空格符填充)女口“MSDOS5.0'、“MSWIN4.1”、“NTFS”、“EXFAT”。 0x000B 53B BPB 0x0040 26B 扩展BPB 0x005A 420B 引导程序代码 0x01FE 2B 有效结束标志(55AA) 3.BPB与EPBP BPB(BIOSParameterBlock,BIOS参数块)是一种数据结构,用于描述数据存储卷(如 硬盘的卷分区)的物理布局。 EBPB(ExtendedBIOSParameterBlock,扩展BPB)是BPB的补 充。 BPB结构(25B) 偏移 长度 内容 0x0B 2B 每扇区字节数(一般为512) 0x0D 1B 每簇扇区数 0x0E 2B 保留扇区数[含本扇区](》1,FAT32一般为32) 0x10 1B FAT数(一般为2) 0x11 2B 最大根目录项数(FAT32必须为0) 0x13 2B 总扇区数(为0时使用偏移0x20处的4字节值)(<64K,容量<32MB) 0x15 1B 介质描述符(盘类型,高密度寸软盘为0xF0、硬盘和U盘为0xF8) 0x16 2B FAT占扇区数(FAT32为0,参见偏移0x24) 0x18 2B 每道扇区数 0x1A 2B 磁头数 0x1C 4B 隐藏扇区数 0x20 4B 总扇区数(》64K,容量》32MB) FAT32的补充BPB结构(28B) 偏移 长度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FAT 文件系统 文件 装载