写系统调用C - HDD顺序或随机访问?

时间:2015-10-17 22:17:01

标签: random system-calls hard-drive libc sequential

我正在寻找一种解决方案来检测写入功能对磁盘的访问方式。我想知道它是顺序访问还是随机访问。我想在libC上打开写系统调用并尝试编辑它并计算它是否是随机或seq访问..是否可能?如何?

如果有另一种解决方案,我会很感激知道它!

2 个答案:

答案 0 :(得分:3)

  

我正在寻找一种解决方案来检测写入功能如何访问磁盘。

既然你的问题提到了libc,我们可以假设你是在某个操作系统下运行,而不是在“裸机”系统上运行,在这种情况下答案是write函数不能访问磁盘< em> at all 。它只是要求操作系统(最终)将数据写入磁盘。

答案 1 :(得分:0)

今天你的问题可能毫无意义,因为在今天的磁盘上,即使硬件在逻辑上处理磁盘扇区:两个“连续”磁盘扇区物理附近,因为hard disk控制器正在重新映射它们。另请阅读SATA。有些控制器甚至能够重新订购待处理的磁盘请求。

BTW,SSD没有任何物理几何(对于扇区),但确实给出了扇区编号的外观。

此外,操作系统内核(尤其是Linux)正在管理page cache,因此write通常不会直接写入磁盘。参见例如sync(2)系统调用。

最后,write(2)(在Linux和大多数Unix上)是syscall,并且发生在内核中。因此,您将无法在 libc 中更改其行为。

另请阅读SMART