【发布时间】:2013-02-06 08:49:00
【问题描述】:
其实这里有几个关于传统硬盘的问题。
磁盘上的每次读/写是否与系统缓存/扇区大小对齐?
磁盘上创建的每个文件是否都与扇区对齐?我的意思是,如果我创建一个文件,文件的起点将与扇区的起点相同?
如果我的扇区大小为 4096,并且我想使用 fseek ( pFile , 10 , SEEK_SET ); 从位置 10 读取 4096 个字节,那么我最终会读取两次?
【问题讨论】:
-
我认为,在内部,分页算法至少会交换一页(可能是 4K)供您的程序读取。但这对您的代码是透明的,不是吗? 进行随机文件访问的有效方法?内存映射文件呢?
-
是的,它是透明的。但是如果最后一个陈述是真的,那么我很可能需要自己进行某种对齐以防止访问时出现错位?
-
您刚刚提出的每个问题都是依赖于操作系统和/或运行时的实现。它们将是决定答案的最终决定因素。
标签: c++ c filesystems