使用机械存储时,低级别磁盘操作seek()
会导致硬盘驱动器磁头移动到某个位置,以便可以随时从磁盘的给定区域读取数据。
对于固态存储(例如SD卡,闪存驱动器和SSD),没有硬件的活动部件,只有电信号。
假设NAND非易失性RAM技术是硬件的基础,那么seek()
这种设备实际上在硬件级别执行什么功能?
明确地说,我已经知道会发生以下情况:
用户空间程序调用
seek()
系统调用或操作系统特定的等效项内核解释系统调用并将消息发送到SATA控制器以查找
SATA控制器解释该命令并告诉连接的磁盘设备(固态)寻求(或者说它足够聪明,可以识别出固态甚至不告诉它?)
我不知道的是,固态设备确实可以???用命令“搜索”。
如果存在取决于操作系统的详细信息,请假设使用内核版本3.2的相对标准的GNU / Linux桌面版本。
2
我认为它确实有很大的脂肪。开个玩笑,如果我是SSD驱动器,我将对缓存进行一些“预防性”读取,以确保事情尽快发生。但是,由于这只是对我没有丝毫想法的模糊的猜测,所以请带一点盐...
—
ppeterka 2013年
我认为低层存储接口中不再使用“搜索”操作。如果它们确实存在,则只需为下一个I / O操作更改存储位置。
—
David Schwartz