Быстрое копирование файлов c DVD/CD на HDD

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
-Atom-
Сообщения: 4
Зарегистрирован: 12 апр 2007, 01:21

Собс-но сабж.
Какие мнения будут, товарищи ?
Основной вопрос: алгоритмически или за счет возможностей системы ускорять процес копирования файлов с DVD/CD на HDD.

Вы спросите: "а, что означает быстрое" - быстрее чем CopyFileEx.
Считаете нереальным ?! Гляньте в сторону AoA DVD Copy тулзов.

Зарание спасибо !
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Быстрее возможностей самого привода все-равно не получиться. Разница в скорости копирования 1-го DVD в 10 секунд никак не сподвинет меня засорять реестр системы всякими волшебными утилами, вроде DVD Copy. Уж если на то пошло, то копать надо в
- прямое посекторное чтение
- использование внутренних кешей железа
- быстрой и правильной системой контроля ошибок
- управление логикой разгона и замедления вращения диска
- использование больших буфферов (не менее 20Мб), дабы не перегружать ATA контроллер.
It's a long way to the top if you wanna rock'n'roll
-Atom-
Сообщения: 4
Зарегистрирован: 12 апр 2007, 01:21

> - использование больших буфферов (не менее 20Мб), дабы не перегружать ATA
> контроллер.
С глубиной буфферов поексперементировал.
Также реализовал метод чтения во времья записи (посредством двух потоков).
Результат оставляет желать лучшего.

> Быстрее возможностей самого привода все-равно не получиться.
Согласен, но, есть проги, работающие быстрее моей раза в два. Тот-же AoA DVD Copy - прошу полюбоватся. Интересен факт, что эта прога работает только с двумья потоками (интерефейс и алгоритм) и пиковое использование памьяти вдвое меньше моего, при скорости копирования - много большей. Исспользование "левых" драйверов не замечено.

> - прямое посекторное чтение
Возможно ли без драйверов ?

> - использование внутренних кешей железа
CreateFile позволяет задействовать - попробывал уже.

> - быстрой и правильной системой контроля ошибок
Опьять-таки: возможно ли из юзер-мода ?

> - управление логикой разгона и замедления вращения диска
???? Как ?! Научите !
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

&quot писал(а):Также реализовал метод чтения во времья записи (посредством двух потоков).
Вот тут ты как раз и перегружаешь ATA
&quot писал(а):Возможно ли без драйверов ?
Возможно, почти все приводы используют один диапазон портов, читай спецификацию по работе с приводами компакт-дисков через IO-порты
&quot писал(а):CreateFile позволяет задействовать - попробывал уже.
Внутренний кеш железа - эта память на микросхеме самого DVD-привода. Обычно она работает в автомате, сама определяя какие секторы используются наиболее часто (так же как и HDD) - но ее работу возможно перепрограммировать также через IO-порты. Но это уже Vendor & Device specific. Никакие стандартные средства API, кроме самих дровов на DVD, его не задействуют.
&quot писал(а):Опьять-таки: возможно ли из юзер-мода ?
Из юзверь-морды конечно нет, все выполняет драйвер imapi.sys и cdrom.sys
&quot писал(а):> - управление логикой разгона и замедления вращения диска
???? Как ?! Научите !
Есть идеи, попозжа немного, на обед идти надо...
It's a long way to the top if you wanna rock'n'roll
-Atom-
Сообщения: 4
Зарегистрирован: 12 апр 2007, 01:21

> Вот тут ты как раз и перегружаешь ATA
Если я правильно понимаю речь идет о возможности работы других программ и системы ? Если так - меня это обстоятельство мало волнует (специфика задания). Если нет - поправте, плз.

> Возможно, почти все приводы используют один диапазон портов, читай
> спецификацию по работе с приводами компакт-дисков через IO-порты
Вот этого я не знал - спасибо !

> Внутренний кеш железа - эта память на микросхеме самого DVD-привода. Обычно
> она работает в автомате, сама определяя какие секторы используются наиболее
> часто (так же как и HDD) - но ее работу возможно перепрограммировать также
> через IO-порты. Но это уже Vendor & Device specific. Никакие стандартные средства > API, кроме самих дровов на DVD, его не задействуют.
Все это я понимаю. Как-то в политехе нам рисовали схему и принцып работы кеша.
Собсно я имел ввиду флаг FILE_FLAG_WRITE_THROUGH в вызове CreateFile. Задумка была - избежать кеширования. Следует отметить что ускорение имело место (0.5-1%).

> Из юзверь-морды конечно нет, все выполняет драйвер imapi.sys и cdrom.sys
Есть ли у этих драйверов точки входа кроме тех, что исползуются в API ? Может самому IOCTL-ем попробывать можно было бы ? Сомнения на этот счет .... Но, спросить считаю своим долгом :)
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

&quot писал(а):Если я правильно понимаю речь идет о возможности работы других программ и системы ? Если так - меня это обстоятельство мало волнует (специфика задания). Если нет - поправте, плз.
ATA контроллер имеет ограниченную пропускную способность. При копировании с DVD на HDD существуют два потока. Один - чтение с DVD, другой - запись на HDD. Внутренние операции передачи данных по шине основаны на уровне транзакций и блоков определенной битовой длинны. Зачастую бывают ситуации, когда во время чтения с данных с АТА1 (DVD), АТА0 недоступна для записи некоторое время. Вывод - операции записи должны быть реже, а значит, буффер больше.
&quot писал(а):Собсно я имел ввиду флаг FILE_FLAG_WRITE_THROUGH в вызове CreateFile
Применимо к дисковому кешу WINDOWS, не связан с внутренним кешем.
&quot писал(а):Есть ли у этих драйверов точки входа кроме тех, что исползуются в API ? Может самому IOCTL-ем попробывать можно было бы ? Сомнения на этот счет .... Но, спросить считаю своим долгом
Работой одного лишь драйвера не ограничивается. cdrom.sys например замыкается на ntoskrnl, HAL (Hardware Abstaction Layer) и что-то еще кажется. Свои функции драйвер не экспортирует, но как бы является наследником некоторого класса. Например, при обращении к DVD запрос на чтение проходит через драйвер универсального тома, потом через ядро, через HAL, которые потом и перенаправляют запросы на инфу либо cdrom.sys (DVD,CD) либо на disk.sys (HDD) либо еще на какое устройство - виртуальный диск, например. Насчет прямого вызова функций для работы с DVD - тут можно покопаться, но точно не знаю. Лучше использовать готовые библиотеки, вроде WNASPI32.DLL, которая входит в состав NERO
It's a long way to the top if you wanna rock'n'roll
-Atom-
Сообщения: 4
Зарегистрирован: 12 апр 2007, 01:21

Большое спасибо !
Я узнал нечто новое.
Считаю что закрывать тему рано.
Ответить