Здравствуйте. Прочитал тут статью В этой статье автор говорит, что выигрыш в 10 тактов при инкременте пароля дает в сумме огромный выигрыш в 100 тыс. пароле в секунду, то есть за выигрыш в 10 тактов имеет смысл бороться. Так вот возникает такой вопрос, сколько тактов или процессорного времени сжирает работа самой ОС windows? Время уходит на обслуживание драйверов, служб, графической подсистемы и много чего еще. Процессорные такты тратятся на переключение контекста задачи, прерывания и возврат. Иожно ли как-то оценить затраты на ОС? Например, переписать mdcrack, чтобы он грузился с флешки сразу при включении компьютера как bootloader или хотябы под DOS.
была тема про ОСь для подбора пароля к рару. DOS работает только с UP-машинами. А сейчас уже немало SMP-машин. И придется писать драйвер для поддержки нескольких логических процессоров.
Все относительно. Если сэкономить 10 тактов из 20 получим выигрыш в 2 раза, если из 100, то 10% и т.д. Что касается накладных расходов ОС, то их можно существенно снизить путем задания реал-тайм приоритета процесса и его потоков, а чтобы система не впала в летаргию великодушно отдавать ей определенную часть времени через sleep. Ну и ес-но не провоцировать прерывания - не жать на клавиши, не двигать мышами и т.п.
Ну, например, читать в цикле rdtc, вычислять разность с пред.значением, если больше определенного порога, то "списывать" на вмешательство ОС и суммировать, затем поделить на общее число тиков теста - получим относительные накладные расходы. (Разумеется как при любых более-менее точных тестах нужно учесть фишки с инициализацией страниц памяти, кэшированием и настройкой бранчей, т.е. предварительно прогнать пару холостых циклов с небольшим числом повторений)