Привет любителям DOSEMU !
Значение Hogthreshold можно изменять в файле DOSEMU.CONF. Это мера "аккуратности" DOSEmu. Иными словами, это попытка вернуться в линукс пока DOS простаивает, так чтобы эмулятор не пожирал все такты CPU ожидая на приглашении DOS.
Определение оптимального значения Hogthreshold включает немного магии (хотя и не так много). Один способ - пробовать разные значения и наблюдать за программой 'top' на другой консоли. Установка слишком низкого значения может умеренно снизить производительность Dosemu. Установка слишком высокого практически отключает код обработки простоя.
Можно сказать, что хорошее начальное значение это "половина Bogo-Mips". (Значение Bogo-Mips выводится при загрузке системы, это число, косвенно связанное с производительностью CPU.)
Установка значения в 0 полностью отключает обработку простоев. По умолчанию стоит 10.
Далее следует нечто вроде FAQ о том, как использовать значение 'HogThreshold' в файле конфигурации.
Если у вас есть еще вопросы - не стесняйтесь спрашивать ( <andi@andiunx.m.isar.de>).
Те из вас, кому нужно, чтобы dosemu работал с максимально возможной скоростью, просто ставят значение 0, тем же, кого заботит, что dosemu ест слишком много CPU, стоит поиграть с HogThreshold.
Причина в том, как в DOS и многих приложениях устроено "ожидание нажатия".
Чаще всего это делается примерно так :
wait_for_key:
; do something
mov ah,1
int 0x16 ; check key status
jz wait_for_key ; jump if no key
; found a key
mov ah,0
int 0x16 ; get key
Это значит, что задача занята, ожидая нажатия.
На 40 MHZ 486 начинайте с 10. Увеличивайте это число, если хотите, чтобы ваши DOS задачи работали быстрее, и уменьшайте, если считаете, что потребляется слишком много времени CPU.
Вам нужен как минимум dosemu0.53pl40.
Это замедлит работу DOS-задач. Хотя почему бы и нет, DOS и так медленный :-).
Просто запустите `top'. Он показывает загрузку cpu и памяти.
P.S. Если хотите изменить HogThreshold в процессе выполнения, вызовите
mov al,12h
mov bx,the_new_value
int e6h
Это то, что делает speed.com. Если это интересно, взгляните на
speed.c.
Примечание: если программа жестоко выполняет ожидание, вызывая цикл int16h fcn 1h без вызова прерывания простоя системы (int 28h), этот код не очень помогает. Если кто-нибудь столкнется с такой программой, дайте мне ( <scottb@eecs.nwu.edu> ) знать, и я перепишу кое-что в BIOS int16.