Звездная сила обращается в пыль


Как это работает - часть 2


Таким образом, замеряя время чтения различных пар секторов, мы можем приблизительно определить их взаимное расположение на спиральной дорожке. У каждой партии диска оно будет своим (ведь плотность секторов на 1мм и крутизна спирали неодинакова и варьируется от партии к партии). Чтобы побороть упреждающее считывание (которым "страдают" многие приводы), защита должна читать сектора в порядке убывания их номеров. Так же она должна измерять скорость вращения привода, чтобы во-первых, определить постоянство временных замеров (пляшут они как пьяные человечки или нет), а во-вторых скорректировать формулу для вычисления угла, ведь как легко показать, чем быстрее вращается диск, тем скорее "уплывает" сектор.

Именно так Star-Force и поступает. Ниже приведен протокол работы защиты, перехваченный программой BusHound (при этом использовался SCSI-накопитель, поскольку с IDE защита работает напрямую и программный перехват уже не спасает).

 

Рисунок 3 BusHound за работой

Сначала защита выполняет профилировку поверхности, определяя время одного оборота, и оценивая величину разброса, исходя из которого будет рассчитываться допуск на отклонение ключевых характеристик:

 

049634  292ms

04961f   192ms

04960a  8.5ms

0495f5   8.3ms

0495e0  8.5ms

0495cb  8.5ms

0495b6  8.5ms

0495a1  8.5ms

04958c  8.5ms

049577  8.5ms

049562  8.5ms

04954d  8.5ms

049538  8.5ms

049523  8.5ms

04950e  8.7ms

048e7e   8.1ms

048e69  8.2ms

048e54  8.2ms

048e3f   8.2ms

048e2a  8.2ms

048e15  8.2ms

048e00  8.2ms

Листинг 1 профилировка спиральной дорожки (все номера секторов шестнадцатеричные)

Как видно, каждый последующий номер на 15h меньше предыдущего (приблизительно столько секторов и содержится на данном витке спирали), а время чтения сектора колеблется от 8,1 до 8,7 ms.

Затем защита делает некоторые несущественные операции (то есть очень даже существенные, но не суть важные) и приступает к измерению углов. Вот так выглядит протокол оригинального диска:




- Начало -  - Назад -  - Вперед -