文件系统块大小的意义是什么?如果我的文件系统块大小设置为8K,这是否意味着所有读/写I / O都将发生在8K大小?因此,如果我的应用程序想要读取偏移4097处的16个字节,那么将读取从偏移量4096开始的4K块?
在这种情况下,写作是如何工作的?假设我想写64字节。
答案 0 :(得分:19)
你是对的。块大小是文件系统的工作单元。每次读取和写入都以块大小的完整倍数完成。
块大小也是文件可以拥有的最小磁盘大小。如果块大小为16字节,那么16字节大小的文件占用磁盘上的完整块。
这本书"Practical file system design"陈述:
块:磁盘或文件系统可写的最小单位。一切都是 文件系统由在块上完成的操作组成。文件系统 block总是与大小相同或更大(以整数倍为单位) 磁盘块大小。
答案 1 :(得分:0)
通常,当你必须处理编程中的文件时,你应该使用Stream抽象。 通过代码进行的I / O操作通常是对流的读写操作;可以缓冲从流中读取和写入流,以便可以读取或写入文件块。
fs上的块大小是指映射磁盘表面;较小的单个块的大小主要是块的数量(以及表中保存文件分配信息的元素)。
因此OS可以根据块大小离散地映射磁盘上的文件,并且具有较小的“文件映射”。 据我所知,这不会影响API编程语言中的流抽象。