12

При механическом хранении операция seek() диска низкого уровня заставляет головки жестких дисков перемещаться в такое место, чтобы они были готовы к чтению из заданной области диска.

С твердотельным хранилищем, таким как SD-карты, флэш-накопители и твердотельные накопители, нет никаких движущихся частей оборудования, только электрические сигналы.

Предполагая, что технология энергонезависимого ОЗУ NAND является основой аппаратного обеспечения, какую функцию выполняет seek() на аппаратном уровне для такого устройства?

Просто чтобы прояснить, я уже знаю, что происходит следующее:

  1. Вызовы программы из пространства пользователя. Системный вызов seek() или эквивалент ОС.

  2. Ядро интерпретирует системный вызов и отправляет сообщение на контроллер SATA для поиска

  3. Контроллер SATA интерпретирует команду и сообщает подключенному дисковому устройству, которое находится в твердотельном состоянии, искать (или, может быть, оно достаточно умное, чтобы распознать, что оно твердотельное и даже не сообщает об этом ??)

  4. То, что я не знаю, твердотельное устройство делает ??? с командой "искать".

Если есть детали, которые будут зависеть от операционной системы, предположим, что относительно стандартная настольная версия GNU/Linux с версией ядра 3.2.

1 ответ1

4

Если вы имеете в виду Linux, поиск по-прежнему продвигается на необходимое количество байтов. Например:

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

Начнет копировать нули 1024 байта в начало диска, не имеет значения, является ли sdb sd-картой или ssd-диском, из-за небольшой вещи, называемой абстракцией, фактическая механика этого рассматривается на более низком уровне.

Обновить

Теперь я понимаю, что вы говорите. Следуя моему примеру с SD-картой, флэш-память использует то, что называется страницами, и страницы имеют определенный размер. когда происходит поиск, ОС отправляет команду контроллеру SD-карты / карты для перехода на определенную страницу для чтения и записи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .