Engaged Clown Утверждать можно что угодно. То же самое на винтах с поддержкой стандарта ATA8 (может даже более ранних, над читать, а мне лень) можно сделать в разы проще, и на много быстрее и точнее. Причем авторепам можно сделать еще на стадии тестирования, без всяких чтений и посекторных вычитываний. То есть аффтор изобрел велосипед с квадратными колесами, вместо того, что бы почитать стандарт и сделать с круглыми. А поддержка LBA28, это кончено огромное достоинство у этой программы. Кста, товарищ немного лукавит, и часть жизненно критичных моментов делает через анус.
И второй момент. В этой статейке нет ни слова о долго читаемых секторах, а вопрос был именно о них.
Цитата: К тому же многие харды читают в буфер сразу по многу секторов до 65000, так называемое - предчтение, не зависимо от того сколько запрашивает команда.
А в этом вообще сильно сомневаюсь. Что бы считать 64К секторов, требуется как минимум 32МБ ОЗУ, которого "многие харды" просто физически не имеют. И
упреждающее чтение никогда не переходит за границы трека.
Самое смешное, что если даже запрошено так, что придется читать два смежных трека, даже если это один цилиндр, то чтение будет разбито на две операции.
И вот ты поднял очень интересный момент. По всем докам, при операциях чтения, нужно дождаться, пока винт поднимет флаг готовности для передачи, а потом разом все считать.
А вот теперь интересны момент... Допустим я запросил больше секторов, чем в лезет в буфер. То есть винт просто вынужден будет выкинуть флаг ДО того, как все считает, и дочитывать уже по ходу обмена. А вот теперь такой момент... Винт выкинул флаг, нарвался на долго читаемый, и пока он его вычитывал я выгреб весь буфер, но продолжаю опрос, не смотря на то, что читать то уже нечего, а механизма остановки передачи в протоколе PIO не предусмотрено.
Вот объясни, чего я не понимаю?
Может где-то в паспорте винт выдает, сколько можно максимально разово запросить? Только не путай с размером блока для чтения блоками (реад мультипле который).
Или флаг готовности выставляется на готовность блока данных, который может быть размером меньше запрошенного объема, а вовсе не по готовности к передачи?
Вот этот тонкий момент, только со ссылками на стандарты, или цитататы из оных. Рассуждать я и сам могу, хоть до седьмого пришествия.
PS: Потестил тут HDAT5, нашел такие ляпы, что решил, что это проще отправить в мусорку, чем использовать.