有关ntfs文件系统的读写机制

zzyokk 2008-04-29 04:12:32
大家好,请问ntfs文件系统读写文件的具体过程怎么样的?包括对$bitmap的修改,何时修改等,谢谢~是不是ntfs自己管理空闲空间的?假如下层的磁盘驱动程序返回的写入空间比ntfs要求写入的要少,会怎么样等?非常感谢~~~
...全文
78 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
好像没那么简单,呵呵.
zzyokk 2008-04-30
  • 打赏
  • 举报
回复
很感谢你,给了我好多启示~,现在想再问你一个问题,假如ntfs想写一个文件,它根据这个文件的大小发现需要5个空闲的簇才够,现在它调用磁盘驱动程序写这几个簇,现在磁盘驱动程序成功写了3个簇,在写第4个簇的时候报告给ntfs写进磁盘的空间大小小于一个簇,这个时候可能ntfs会让磁盘驱动程序循环写一直到能写进这个簇,可是假如我们在ntfs和磁盘驱动程序之间加入一层,它的作用是截获ntfs要写磁盘的IRP,并把数据压缩后再送到磁盘写,这个时候磁盘驱动程序写进簇的空间可能就不足一个簇大小,这个时候中间层该如何报告ntfs写入的数据情况

总的问题是:在ntfs和磁盘驱动程序中加入一个压缩数据的层合不合理,是否应该把这层放在ntfs之上!!!!

谢谢~
cnzdgs 2008-04-30
  • 打赏
  • 举报
回复
这种做法的可行性很低,即使能实现也相当复杂。根本原因是由于压缩率是不固定的。
如果把压缩做在文件系统上问题可以相对简单一些,但处理文件指针也是很麻烦的。
llg84 2008-04-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zzyokk 的回复:]
很感谢你,给了我好多启示~,现在想再问你一个问题,假如ntfs想写一个文件,它根据这个文件的大小发现需要5个空闲的簇才够,现在它调用磁盘驱动程序写这几个簇,现在磁盘驱动程序成功写了3个簇,在写第4个簇的时候报告给ntfs写进磁盘的空间大小小于一个簇,这个时候可能ntfs会让磁盘驱动程序循环写一直到能写进这个簇,可是假如我们在ntfs和磁盘驱动程序之间加入一层,它的作用是截获ntfs要写磁盘的IRP,并把数据压缩后再送到磁…
[/Quote]
写入前就会判断当前剩余空间是否足够,所以一般不会出现要求写入的簇数大于可用簇数的情况,如果因为坏簇等原因导致写入失败,NTFS会寻找新簇写入,无空闲簇则会返回IO错误。你想压缩数据的话,不要做到文件系统的下层去,读写时候的偏移处理起来太麻烦
cnzdgs 2008-04-29
  • 打赏
  • 举报
回复
这问题涉及到NTFS文件系统的结构,是很复杂的,只能稍稍跟你说一下,如果想要详细了解需要看书或者到网上搜索详细资料。
NTFS中的文件和目录都是FILE,在$MFT中记录了每个FILE文件的详细信息,包括其占用的储存空间。根据目录索引可以逐层找到各级子目录,最终找到文件的FILE号。$bitmap中记录了储存空间的分配情况。对于磁盘操作系统,储存介质上的空间都是由文件系统来管理的,由文件系统驱动程序调用磁盘驱动程序读写指定的储存单元(扇区)。
zzyokk 2008-04-29
  • 打赏
  • 举报
回复
顶一下~ 知道的请指点一下,谢谢~~

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧