seek 对固态存储有何作用?

seek 对固态存储有何作用?

对于机械存储来说,低级磁盘操作seek()会导致硬盘磁头移动到某个位置,以便它们准备从磁盘的给定区域读取数据。

对于固态存储(例如 SD 卡、闪存驱动器和 SSD)而言,硬件没有移动部件,只有电信号。

假设NAND非易失性RAM技术是硬件的基础,seek()那么对于这样的设备来说,在硬件层面上实际上发挥什么功能呢?

需要明确的是,我已经知道发生了以下情况:

  1. 用户空间程序调用seek()系统调用或特定于操作系统的等效调用

  2. 内核解释系统调用并向 SATA 控制器发送消息以寻求

  3. SATA 控制器解释该命令并告诉所连接的磁盘设备(固态)进行寻道(或者也许它足够智能,可以识别出它是固态的,甚至没有告诉它??)

  4. 知道的是,固态设备???使用“寻找”命令。

如果有依赖于操作系统的细节,则假设 GNU/Linux 的桌面版本相对标准,内核版本为 3.2。

答案1

如果您指的是 Linux,seek 仍会向前移动所需的字节数。例如:

dd if=/dev/zero of=/dev/sdb bs=512 SEEK=2

将开始将 1024 个字节的零复制到磁盘的开头,sdb 是 sd 卡还是 ssd 驱动器并不重要,因为有一个叫做抽象这一过程的实际机制是在较低层次上进行的。

更新

我明白你的意思了。按照我的 SD 卡示例,闪存使用一种叫做页面,并且页面具有特定的大小。当寻道发生时,操作系统会向 SD 卡/卡控制器发送命令,以移动到某个用于阅读和写作。

相关内容