精通FAT的进

[复制链接]

该用户从未签到

0

主题

3

回帖

21

积分

[INTOHARD]工兵

Rank: 1

积分
21
发表于 2007-11-5 16:02:06 | 显示全部楼层 |阅读模式
小弟正在研究FAT 32 ,对于其中的坏簇一直不是很了解,我把FAT表上标记了坏簇(0x0ffffff7,备份的表也标记了),为什么还是会写那个扇区,难道还需要修改别的地方吗?这个坏簇标记是应该在格式化的时候系统自己标记上的吗?如果FAT标记一个坏簇,除了把分配表中那个对应Entry标记为BAD CLUSTER,还需要做什么吗?
坏簇标记是给OS看的?还是只是给那些修复软件看的?
哪位大侠懂呀,小弟感激不尽。。。。。

该用户从未签到

24

主题

737

回帖

5602

积分

[INTOHARD]团长

bbs.yuhedata.com

Rank: 8Rank: 8

积分
5602
QQ
发表于 2007-11-5 16:15:27 | 显示全部楼层
可以通过这个方式来标记坏簇,标记之后的意义是,系统不会再对这个簇进行读写操作。FAT32是这样的。这种方法都只是标记,因为格式化的时候要对FAT进行清空,所以下次格式化,这些标记就又会丢失。坏簇标记不能理解称为给OS看,OS写入文件的时候,要根据文件的大小来计算这个文件占了多少个簇,在写入时,如果第二个粗有坏簇标记,那么就跳到其他的正常的簇写入。对与检测软件来说,比如MHDD,它是通过访问扇区的时间来判定该扇区是否正常,是否稳定。若有不正确的地方,请各位指正。

该用户从未签到

0

主题

3

回帖

21

积分

[INTOHARD]工兵

Rank: 1

积分
21
 楼主| 发表于 2007-11-5 16:27:46 | 显示全部楼层
谢谢兄弟的回复。
1.格式化会把FAT清空,也就是说他应该具备再次标记上的能力咯,可以这么理解吗?
2.OS每次分配新簇的时候是不是只要FAT项是全0的,那空闲簇的管理没有链表吧?就是顺序搜索?
3.我用的U盘,认为修改了分配表以后,再次插入的时候就需要格式化了?我用DiskExplore看标记是没问题的,我想知道标记坏簇是FORMAT做的吗?还是别的软件?标记一个坏簇除了修改FAT表外,其他地方还需要修改不?具体的一个坏簇标记的全过程是什么呀?

该用户从未签到

24

主题

737

回帖

5602

积分

[INTOHARD]团长

bbs.yuhedata.com

Rank: 8Rank: 8

积分
5602
QQ
发表于 2007-11-5 16:43:19 | 显示全部楼层
1、NTFS可以自动标记,通过$badclus文件来记录坏簇。格式化时不会自动标记。
2、是的。簇的管理是从数据区,以簇大小为单位来排列,彼此之间谈不上链表,至于搜索,我想你是想问文件的读取是如何实现的,对吗?文件的读取从文件目录项中得到文件的起始簇,然后用该簇中的值(以一个簇)来描述下一个簇的簇号,比如文件从3号簇开始,那么首先看FAT中3号的值,如果是4,就到4号,如果4号是8,就看8号的值,直到检索到结束标志。也就是文件不连续。不知这样回答可否解答你的疑问。
3、我自己认为,格式化不能标记坏簇,我们使用format命令时,需要等待很长时间,和快速格式化的区别是,多了磁盘表面扫描,不具备标记坏簇的功能。标记一个坏簇,只需要知道坏的扇区位于哪个簇,然后对该簇进行标记,具体的全过程,你自己不是知道吗?

该用户从未签到

0

主题

3

回帖

21

积分

[INTOHARD]工兵

Rank: 1

积分
21
 楼主| 发表于 2007-11-5 16:51:23 | 显示全部楼层
那个空闲簇的管理是不是没有一个链表,也就是说就是从上次分配的最后一个簇开始找,直到遇到第一个Free簇?
坏簇的标记只是在FAT表上标上BAD CLUSTER的标记,OS并没有别的动作吗?
还有FSinfo结构体,他又两个成员变量,一个是剩余簇数,一个是下一个Free的簇号,每次写操作都更新吗?

该用户从未签到

24

主题

737

回帖

5602

积分

[INTOHARD]团长

bbs.yuhedata.com

Rank: 8Rank: 8

积分
5602
QQ
发表于 2007-11-5 18:03:19 | 显示全部楼层
使用了FAT表就会记录,谈不上空簇,在格式化的时候,簇大小已经定好,第一个簇就在第二个FAT表结束的位置。 你说的链表指的是对文件来说,它的存储形成的FAT的链,明白了吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表