What does seek do with solid state storage

ssd

With mechanical storage, the low level disk operation seek() causes the hard drive heads to move to a location so that they are ready to read from a given area of the disk.

With solid state storage, such as SD cards, flash drives and SSDs, there are no moving parts of the hardware, only electrical signals.

Assuming a NAND non-volatile RAM technology is the basis of the hardware, what function does a seek() actually perform at the hardware level for such a device?

Just to be clear, I already know that the following happens:

  1. Userspace program calls seek() system call or the OS-specific equivalent

  2. Kernel interprets system call and sends a message to the SATA controller to seek

  3. SATA controller interprets the command and tells the attached disk device, which is solid state, to seek (or maybe it's smart enough to recognize that it's solid state and doesn't even tell it??)

  4. What I don't know is, solid state device does ??? with the command to "seek".

If there are details that would depend on the operating system, assume a relatively standard desktop version of GNU/Linux with kernel version 3.2.

Best Answer

if you're referring to linux, seek still moves ahead the required number of bytes. For example:

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

Will start copying zeros 1024 bytes into the start of a disk, it doesn't matter if sdb is an sd card or ssd drive, because of a little thing called abstraction the actual mechanics of this is taken care of at a lower level.

Update

I see what you're saying now. Following my sd card example, flash memory uses something called pages, and the pages come in a particular size. when a seek comes, the OS sends the command to the sd card/ card controller to move to a certain page for reading and writing.

Related Question