使用机械存储时,低级磁盘操作seek()
会导致硬盘驱动器磁头移动到某个位置,以便可以随时从磁盘的给定区域读取数据。
对于固态存储(例如SD卡,闪存驱动器和SSD),没有硬件的活动部件,只有电信号。
假设NAND非易失性RAM技术是硬件的基础,那么seek()
这种设备实际上在硬件级别执行什么功能?
明确地说,我已经知道会发生以下情况:
用户空间程序调用seek()
系统调用或特定于OS的等效程序
内核解释系统调用并将消息发送到SATA控制器以查找
SATA控制器解释该命令并告诉连接的磁盘设备(固态)寻求(或者说它足够聪明,可以识别出固态甚至不告诉它??)
我不知道的是,固态设备确实可以???用命令“搜索”。
如果有一些细节取决于操作系统,请假设使用内核版本3.2的相对标准的GNU / Linux桌面版本。
如果您指的是Linux,seek仍将向前移动所需的字节数。例如:
dd if=/dev/zero of=/dev/sdb bs=512 SEEK=2
将开始将零个1024字节复制到磁盘的开头,无论sdb是sd卡还是ssd驱动器都没有关系,因为有一点称为抽象的东西,因此它的实际机制在较低的层次上得到了解决。
更新
我明白你现在在说什么。在我的sd卡示例之后,闪存使用了一种称为page的东西,并且这些页面具有特定的大小。搜索到时,操作系统将命令发送到sd卡/卡控制器,以移至某个页面进行读取和写入。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句