Я готовлюсь к экзаменам и столкнулся со следующей проблемой:
Один диск имеет 20000 дорожек, скорость 7200 об/мин и время поиска 1 мс. В вопросе мне предлагается рассчитать общее время, необходимое для чтения всех дорожек на диске. Это дает нам одну подсказку: время передачи дорожки — это время, необходимое для совершения полного оборота под головкой диска.
Я сначала попытался найти время передачи, но не знаю, правильно ли. У меня получается 7200/3600.
Как мне решить эту проблему?
решение1
Я думаю, что проблема не совсем в компьютерах или жестких дисках, если ее задать как в экзаменационном вопросе. Она больше касается основ.
- Если у вас 7200 об/мин, это значит, что диск будет вращаться
(7200/60) = 120
раз в секунду. - Каждый раз, когда диск совершает полный оборот, теоретически вы можете прочитать 1 полную дорожку. Это означает, что чтение 1 дорожки занимает
(1/120)s
Итак, теперь вопрос о времени поиска в 1 мс:
- Если вы можете сделать непрерывное чтение, то вам нужно добавить время поиска только один раз. Таким образом, у вас есть
(1/120)s
для каждого трека и одноразовое добавление времени поиска. Это кажется чрезмерным упрощением. - Более реалистично: если предположить, что вопрос подразумевает, что вам нужен дополнительный инструмент
1ms (1/1000)s
для переключения с одного трека на другой, то вы не сможете считывать 120 треков в секунду, как можно было бы предположить, исходя из одного лишь вращения. - Учитывая время вращения и поиска,
(1/1000 + 1/120)s
для считывания каждой дорожки потребуется время.
Примечание:
Как правильно отмечает @sawdust в комментариях, этот ответ использует несколько упрощений. Это связано с тем, что в вопросе не было предоставлено никакой дополнительной информации, и я попытался работать с основами. Если вопрос более сложный (или касается реального оборудования, а не экзаменационного вопроса), необходимо учитывать следующие факторы:
- Диск может иметь несколько (скажем,
N
) пластин, поэтому 20000 дорожек могут быть распределены поN
пластинам. В общем, пластину можно использовать с обеих сторон.[1] Таким образом, 20000 дорожек каждой из2N
головок чтения/записи в приводе — это не 20000 цилиндров, а скорее20000/(2N)
цилиндры. Это может позволить считывать2N
дорожки одновременно. Тогда считывание2N
дорожек занимает(1/120)s
. - Время поиска не должно быть зафиксировано на
1ms
. Обычно это комбинациявремя поиска головы, когда головка перемещается в нужный цилиндр (который может не всегда быть постоянным в зависимости от того, где вы находитесь на диске),ПЛЮСзадержка вращения, которая означает, что сам диск должен вращаться, пока головка не окажется над нужным сектором. В среднем задержка вращения может быть упрощена до половины времени, которое требуется диску, чтобы сделать 1 полный оборот. Таким образом, задержка вращения может быть около(1/240)s
для каждого нового цилиндра. - Реальные приводы могут иметь определенные проблемы с задержкой при возникновении проблем с правильным чтением данных. Это происходит, когда блоки повреждены или иным образом их трудно прочитать, и привод пытается прочитать сектора с разным расположением головок и параметрами, чтобы увеличить вероятность извлечения любых данных. Результирующие задержки иногда можно наблюдать даже с новыми розничными приводами, и их необходимо учитывать при планировании реальной системы, которая зависит от своевременного чтения диска. Поэтому вы не всегда можете предполагать, что дорожка будет полностью прочитана после одного оборота. Проблема может стать очень серьезной, поэтому все больше корпоративных приводов предлагают такие функции, как TLER, чтобы ограничить разрешенное время для повторной попытки чтения сектора.[2]
[1]:Википедия: Цилиндр-Головка-Сектор
[2]:Western Digital: Разница между дисками Desktop edition (WD Blue, WD Green и WD Black) и RAID (Enterprise) edition