FAT32文件系统分析(操作系统_文件系统_FAT解构)

磁盘物理

磁头径向移动不能过快(磁头的径向运动,的平均加速度 有上限, )

过大的径向加速度 可能导致 磁头垂直运动 从而撞毁盘片的磁化涂层,导致磁盘报废

磁头径向运动的平均加速度如果过大, 所产生的过大动能的释放 可能导致磁头承载装置不稳, 最有可能的是导致磁头产生 垂直方向运行, 从而撞毁盘片的磁化涂层,导致磁盘报废

磁头的径向运动 , 总是 从初速度0 先加速 再减速 到末速度0,
起伏: 先加速再减速,
这个起伏可以是多次的, 也可以是一次的. 多次的更平稳,

正向加速度使得磁头积累动能, 积累的总动能 被负向加速度消耗,
如果一次起伏的动能过大 有可能负向加速度有一部分被垂直运动承担, 从而导致磁头发生垂直运动,
垂直运动如果向下 撞到盘片磁化层 则磁盘报废。
因此 磁头径向加速度 不能过大,必须有上限。

主线

driver层提供扇区
fs层基于driver层,提供文件管理 (包装多个连续扇区为一个簇)
作图演示 文件 到 簇 的过程

路数

fattools_maxpat78 (fat文件系统实现), 在其代码中插入生成dot graphviz作图,用以展现此时簇们怎么表示(构成)文件(目录)的

空fat文件系统的样子
有一个小文件的fat文件系统的样子
有一个稍大文件的fat文件系统的样子
删掉一个文件后 fat文件系统的样子
有一个目录的fat文件系统的样子
一个目录下有多个文件的fat文件系统的样子

记住这个自制程序只做读动作 ,会简单很多

fattools_maxpat78 源码分析

FATtools.vhdutils.Image

FATtools.vhdutils.Image : 表示整个磁盘

  1. 字段: FATtools.vhdutils.Image:_pos

记录本次读取,从磁盘上哪(物理字节位置)开始读取

主线


#FATtools.Volume.vopen

def vopen(path, mode='rb', what='auto'):
        if path.lower().endswith('.vhd'): # VHD image
            diskPhysical:vhdutils.Image = vhdutils.Image(path, mode)
        
        diskPhysical.seek(0)#磁盘位置到起始位置
        
        mbr:partutils.MBR = partutils.MBR(diskPhysical.read(512), disksize=diskPhysical.size) #解析MBR以获得分区表:读磁盘前512字节(第一个扇区:mbr)

        

读主线, 三步:

  1. 解析成 part:disk.Partition
  2. 将part解析成 v目录表:FAT.DirTable
  3. v目录表.iterator的元素是FAT.DirEntry
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ziix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值