软盘与FAT12文件系统的组织格式
来源:互联网 发布:react dom.js下载 编辑:程序博客网 时间:2024/05/17 02:33
根据《Orange's》第4章理解。
软盘的文件组织格式为FAT12,组织单位由大到小分为分区、簇(一个或多个扇区)和扇区(磁盘上的最小数据单元)。
对于1.44M的软盘有2面(磁头号为0和1),每面有80个磁道(0-79),每个磁道有18个扇区(1-18),每个扇区有512字节,共有1474569字节(2880个扇区)。
为了便于理解,认为软盘的扇区号为0-2879,其中偶数和奇数扇区分别位于磁头号0和1面上,位置相间。
(开始看这一章的时候我始终不理解磁头,磁道及扇区的关系公式,现在已经明白了)
引导扇区(即软盘的第0个扇区)上有个BPB数据结构,大小为62字节,除去末2字节0xAA55,引导扇区还有448字节可用来存放引导代码、数据和其他填充字符。
以软盘作为启动盘时,如果引导扇区有效,则引导代码会被BIOS加载到0000:7C00处,然后CPU跳转到0000:7C00处执行。
BPB信息中比较重要的:根目录区的目录条目数BPB_RootEntCnt。
FAT12的组织格式为引导扇区0、FAT1表(1-9扇区)、FAT2表(10-18扇区)、根目录区(长度非固定,由BPB信息中的目录条目数BPB_RootEntCnt决定,每个目录条目占用32字节)、数据区(长度非固定)。
目录条目的内容中包括文件名、文件属性、最后一次写入时间、最后一次写入日期、此条目对应的开始簇号DIR_FstClus和文件大小DIR_FileSize。其中开始簇号DIR_FstClus和文件大小DIR_FileSize比较重要,决定文件数据存放在哪。
FAT表占用9个扇区共9x512个字节,每12位为一个簇,则最多可表示3072个簇。在软盘中一个簇对应一个扇区,FAT表可表示的范围3072已经大于实际的扇区数2880了。另外,12位可表示的范围为4096,也大于实际的扇区数2880了。
FAT1和FAT2通常相同。
文件数据内容的查找:根据目录条目中的DIR_FstClus,从FAT表中取出一个对应的12位数——FAT项,该数如果是0xFFF则表示后面没有数据了,否则表示该簇也被占用,如此依次可找到所有占用的簇。根据这些簇所对应的扇区,就可知道数据存放在什么位置了。
注意的是,数据区的第一个簇号为2,对应的扇区编号如此计算:
数据区开始扇区号 = 根目录区开始扇区号 + 根目录区占用的扇区数
其中,根目录区占用的扇区数RootDirSectors如此计算:
RootDirSectors = [(BPB_RootEntCnt x 32) + (BPB_BytesPerSec -1)]/BPB_BytesPerSec
根据Orange's中的定义,数据区第一个簇对应的扇区号为19 + 14 = 33,所以有
扇区号 = 33 + 簇号 - 2
对应的在软盘中的物理位置=扇区号x512字节。
根据磁头号、柱面号和起始扇区号,利用BIOS中断int 13h,可一次性读n个扇区内容到指定内存中。
- 软盘与FAT12文件系统的组织格式
- 软盘与FAT12文件系统的组织格式
- FAT12格式引导软盘
- FAT12软盘引导扇区格式
- FAT12文件系统基本格式
- FAT12文件系统基本格式
- FAT12 文件系统格式描述
- Pyos 支持的 FAT12 文件系统~~~~
- 对FAT12文件系统的理解
- 从'0'开始的操作系统MyOs(汇编FAT12软盘)
- FAT12格式的引导程序
- FAT12 文件系统
- FAT12文件系统
- FAT12文件系统
- 文件系统:FAT12
- 制作FAT12软盘以查看软盘的根目录条目+文件属性+文件内容
- FAT12 FAT16 FAT32文件系统的比较
- 【文件系统】FAT12文件系统简介
- SQL注入攻击三部曲之进阶篇
- 浏览器性能评测报告(四):评测数据
- 【object-c基础】Object-c基础之一:#import,NSLog(),数据类型
- 获取IE (控件)的所有链接(包括Frameset, iframe)zz
- android NDK 使用第三方静态库
- 软盘与FAT12文件系统的组织格式
- Oracle 分页查询 为什么需要嵌套
- 别迷失在“成功故事”中
- SQL注入攻击三部曲之高级篇
- asp.net HttpModule类
- struts2 动态方法调用 感叹号
- gvim 使用技巧
- 【object-c基础】object-c基础之二:property,assign,copy,retain,release
- 重要的东西