Теперь существует ли «дисковый» кэш на USB-накопителе (4 или 8 ГБ)? Кстати, а как насчет твердотельного накопителя?
Нет нет. Флэш-память в этих устройствах намного быстрее, чем вращающиеся жесткие диски с головками привода R/W, поэтому кэш не является экономически эффективным.
Но отсутствие "кеша" на этих устройствах не означает, что нет локальной буферизации.
Все еще будет память для буферизации данных сектора между интерфейсом USB или SATA и флэш-памятью.
если в Linux потребуется /bin /sync, чтобы абсолютно гарантировать отсутствие потери данных, если сбой питания произойдет вскоре после того, как ОС сообщит о завершении операции записи?
sync
всегда требуется, чтобы гарантировать, что ОС правильно сбросила все свои буферы на устройство.
Завершение write()
(в зависимости от указанной синхронизации) может указывать только на то, что данные пользователя или файла были переданы в системный буфер или что операция записи фактически завершилась. Но помимо данных в файле, должны быть также метаданные файловой системы (таблицы распределения секторов, записи каталога для длины файла, времени модификации и т.д.).
Но одной sync
недостаточно, чтобы гарантировать, что все записанные данные действительно были записаны периферийным устройством. Связанный системный вызов для sync
- это syncfs
, что подразумевает, что они предназначены только для уровня файловой системы, а не на уровне устройства. Существуют операции синхронизации на уровне устройства, а также операции синхронизации на уровне файловой системы. Операции Unmount
или eject
должны выполнить эти окончательные подтверждения синхронизации перед выпуском устройства.
если /bin /mount -o sync ... "эффективно" отключит такой встроенный кеш (если он вообще существует)?
Нет, эта "синхронизация" на уровне монтирования не должна влиять на оптимизацию уровня устройства. Если кеш периферийного устройства может быть отключен, я ожидаю, что это будет делать ioctl()
о котором mount
вряд ли будет знать.
и, наконец, как бы ответили на все вышеперечисленные вопросы, если бы ОС была Windows вместо Linux?
Нет существенной разницы.