Занимает ли чтение и запись на диск примерно одинаковое количество времени?

#operating-system

Вопрос:

Рассмотрим дисковый блок A размером 512 байт. Запись 100 байт данных в блок A занимает примерно столько же времени, сколько чтение 100 байт данных из блока A.

Является ли приведенное выше утверждение истинным или ложным?

Заранее спасибо, Сухас

Ответ №1:

Является ли приведенное выше утверждение истинным или ложным?

Да, утверждение является либо истинным, либо ложным, в зависимости от деталей оборудования и состояния диска.

Обратите внимание, что современные («вращающиеся металлические» и SSD) дисководы имеют сложную/сложную логику управления (часто включающую небольшой процессор и собственное встроенное ПО); и имеют встроенные буферы/кэши; и это делает вероятным, что утверждение ложно (делает вероятным, что чтение сектора занимает разное время для записи сектора). Конкретные случаи включают:

  • большинство «вращающихся металлических» жестких дисков, если считываемые данные уже были кэшированы внутри диска
  • все, где размер физического сектора больше, чем размер логического сектора (например, где диск должен прочитать физический сектор размером 4 КБ, затем изменить 512-байтовый логический сектор внутри него, а затем записать физический сектор размером 4 КБ).
  • все, что имеет какой-либо уровень износа (SSD), где «запись» больше похожа на выделение свободного блока и запись в него данных (затем проверка, был ли выделен предыдущий блок или свободен, и освобождение его при необходимости).
  • все, что позволяет буферизировать запись и выполнять ее позже (и позволяет выполнять запись одного сектора очень быстро по сравнению с чтением «еще не кэшированного» сектора)
  • все, что имеет проверку целостности на запись (например, сохраните данные для записи во внутреннем кэше, затем запишите данные, затем прочитайте только что записанные данные и сравните их с данными в кэше, чтобы убедиться, что они были записаны правильно; затем, возможно, отметьте этот сектор как неисправный, найдите запасной сектор для замены и повторите запись).
  • все, что повторяет неудачные попытки чтения (например, прочитайте блок, проверьте его контрольную сумму, если контрольная сумма не удалась, попробуйте прочитать ее снова; и, возможно, перепишите хорошую копию, если последующая попытка чтения увенчается успехом).