fat32文件系统的实现与buddy算法

本文介绍了FAT32文件系统,包括其组成、结构和工作原理,如DBR、FAT表、数据区等,并详细阐述了FAT表的用途和簇的分配。接着,讨论了Linux内核的Buddy系统,这是一种用于管理内存页的算法,用于解决外部碎片问题。Buddy算法将内存分为多个链表,根据2的幂大小进行分配和合并,以确保连续内存的高效使用。
摘要由CSDN通过智能技术生成

报告一    FAT32文件系统的实现

文件系统(File System)是计算机系统必不可少的组成部分,可以说除了部分结构简单的单片机系统之外,文件系统是支撑每一个计算机系统运行的最重要的支撑,无论是操作系统、应用程序、文档还是音视频都是基于文件系统的。所以由此可见文件系统在计算机上的重要地位。

起初所有的FAT文件系统都是为PC机器设计的,这说明了一个重要的问题:FAT文件系统在磁盘上的数据是以“小端”结构存储的。我们使用4个8-bit字节----起始字节为byte[0],结束字节为byte[3],类存储一个32-bit的FAT项。然后分别给这32位编号为00—31,从下表可以看出这32位如何排序。

Byte[3]  3 3 2 2 2 2 2 2

         1 0 9 8 7 6 5 4

Byte[2]  2 2 2 2 1 1 1 1

         3 2 1 0 9 8 7 6

Byte[1]  1 1 1 1 0 0 0 0

         5 4 3 2 1 0 9 8

Byte[0]  0 0 0 0 0 0 0 0

         7 6 5 4 3 2 1 0

这对于那些使用“大端”存储结构的机器就显得尤为重要,因为在磁盘存取数据之前,必须完成big-endian和little-endian之间的转换。

每个FAT32文件系统由DBR及其保留扇区,FAT1,FAT2和DATA四个部分组成,其结构如下图:

这些结构是在分区被格式化时创建出来的,含义解释如下:

DBR及其保留扇区:DBR的含义是DOS引导记录,也称为操作系统引导记录,在DBR之后往往会有一些保留扇区。

FAT1:FAT的含义是文件分配表,FAT32一般有两份FAT,FAT1是第一份,也是主FAT。

FAT2:FAT2是FAT32的第二份文件分配表,也是FAT1的备份。

DATA:DATA也就是数据区,是FAT32文件系统的主要区域,其中包含目录区域。

 

FAT32文件系统的DBR有5部分组成,分别为跳转指令,OEM代号,BPB,拓展BPB,引导程序和结束标志。

跳转指令将呈现执行流程跳转到引导程序处;

OEM ID由厂商指定,这里是MSDOS5.0;

BPB记录文件系统相关的重要信息,由BPB和拓展BPB组成。

 

接下来一个重要的数据结构就是FAT表,它是一一对应与数据区簇号的列表。

文件系统分配磁盘空间按簇来分配的。因此,文件占用磁盘空间时,基本单位不是字节,而是簇。即使某个文件只有一个字节,操作系统也会给他分配一个最小单元----即一个簇。

磁盘格式化后,用户文件是以簇为单位存放在数据区中,一个文件至少占用一个簇。当一个文件占用多个簇时,这些簇的簇号不一定是连续,但这些簇号间有由存储该文件时确定了的顺序,即每个文件都有其特定的“簇号链”。

在磁盘上的每一个可用的簇在FAT中就只有一个登记项,通过在对应簇号的登记项内填入“表项值”来表明数据区中的该簇是否占用、空闲或是已损坏的。损坏的簇是在格式化的过程中,通过FORMAT命令发现。在一个簇中,只要有一个扇区有问题,该簇就不能够使用。

现将FAT表

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值