3

Моя устаревшая DOS-программа (Instant-Office) выдерживает 8-секундную задержку при запуске под Windows 7 - каждый раз.

Запустив одну и ту же программу тысячи раз под DOS и Win-XP, она запускается мгновенно; буквально за секунду.

Диски почти пусты, загрузка ЦП составляет менее 5 процентов, тонны памяти доступны. Автономный компьютер с воздушным зазором; нет сети. Нет вирусов.

CMD.exe запускается мгновенно.

Я рассчитал задержку после того, как откроется окно с PIF, показывающим вверху.

Проблема не в PIF, так как я могу перейти в каталог (работающий под CMD), а raw .exe имеет те же 8 секунд. задержка.

Я понимаю, что он работает под эмулятором (виртуальной машиной), но 8 секунд?!?

Это похоже на необоснованно вынужденную задержку (чтобы вывести нас из DOS-программ?).

Есть идеи, что вызывает это?

Любые идеи о том, как диагностировать это?

Есть идеи как прыгнуть вокруг этой искусственной задержки?

Спасибо.

PS Этот вопрос здесь не позволит мне пометить этот вопрос с "DOS". Но это другая глупая проблема.

6 ответов6

2

У меня была такая же проблема и нашли недавно решение на этом сайте intelvidfix.zip‎ Это прекрасно работает для меня.


Укороченная версия:

Патч, исправляющий сбой в BIOS некоторых встроенных графических адаптеров Intel VGA (например, 4010U, 4340 i3 и 4200U i5, 4600 ...), который вызывает задержку запуска NTVDM на 5-10 секунд, а также вызывает медленный вывод текста и другие операции INT10h (1 ч / с) в полноэкранном режиме.

Длинная версия:

Кого винить в этом беспорядке. Intel или Microsoft?

Интересно, что оба они в чем-то виноваты, но проблема с NTVDM удивительно даже полезна для решения ошибки видео BIOS Intel. Звучит немного запутанно? Вы можете прочитать больше в технических деталях ниже. Microsoft виновата в том, что не внедрила IN/OUT на 32-битных портах в NTVDM. Но даже если бы это было реализовано, BIOS Intel не будет работать должным образом, это даже вызовет больше проблем. Intel, с другой стороны, ожидает, что порты MMIO будут доступны, что не является причиной в среде V86, такой как NTVDM. Поэтому он запускается с интервалом в 1 секунду для каждой операции, даже если кажется, что он работает без использования этих портов MMIO. Поэтому их ошибка заключается в том, чтобы каждый раз пытаться получить доступ к MMIO в течение 1 секунды, а не просто пропускать его, если по неизвестным причинам произошел сбой. Фактически проблему можно решить, перепрыгнув через процедуру проверки, которая составляет всего 1 байт для исправления в Video BIOS. К счастью, отображение NTVDM адресного пространства BIOS может быть исправлено в памяти через библиотеку расширения NTVDM, так что вам не нужно перепрошивать VGA BIOS.

2

Роберт, где, как вы предполагаете, действительно есть смысл, проблема начала появляться с чипсетами LGA 1155. Это было совершенно очевидно.

Так что да, возможно, это как-то связано с графическим процессором Intel, который теперь встроен в процессоры нового поколения. Почему бы и нет...

Однако здесь мы не говорим о полноэкранных приложениях, по той простой причине, что полноэкранный режим был просто и просто удален из Windows 7 !!!

Таким образом, все программы DOS теперь должны работать в оконном режиме, точка.

Это означает, что небольшая (даже не одна секунда) задержка, которая может возникнуть при изменении разрешения экрана, просто больше не существует, потому что это просто невозможно.

Нет, мы говорим о чистом дисплее Windows здесь.

Пожалуйста, попробуйте. В папке \Windows \System32 вы найдете множество приложений для DOS: просто нажмите на edit.com (например) и убедитесь сами. :)

Изменить: я на самом деле использую дорогие видеокарты, по крайней мере, на моем домашнем ПК.

Это ничего не меняет в этом явлении, и задержка имеет фиксированную и совершенно предсказуемую продолжительность.

Теперь вы заставляете меня задуматься, скорость процессора что-то там меняет: на i5 он короче, чем на старом Pentium 4 ...

Так что, возможно, где-то используется обработка данных, скорее всего, при работе с NTVDM.

Еще одна особенность, которую вы можете легко проверить самостоятельно, заключается в том, что задержка происходит только один раз.

Я объясняю:

  • Запустите оболочку: никаких задержек
  • Запустите любую программу DOS: лаг
  • Выйдите из программы и запустите ее снова (или любой другой): никакой задержки нет.

Это означает, что это абсолютно не связано с дисплеем, а с первым вызовом NTVDM (и, возможно, с настройкой рабочей среды).

Единственная разница с новыми чипсетами заключается в том, что это было мгновенно, а вдруг это заняло несколько секунд.

Мне действительно интересно, не является ли это преднамеренной попыткой заставить людей отказаться от использования 16-битных приложений, но здесь это довольно сложно, потому что это происходит только с Windows 7 или более поздней версией, а не с Vista, XP (если вы можете найти драйверы, которые обычно могут быть сделаны за исключением графических, а иногда и сетевых драйверов, если они Intel, а не Realtek или других производителей), и, конечно, не с Linux ...

... Таким образом, мы не можем обвинять там Intel, а то, как Microsoft использует аппаратное обеспечение с NTVDM в последних версиях Windows (включая 32-разрядную Windows 10 с такой же задержкой).

1

Вы предполагаете неправильные вещи. Я удивлен, что никто не попробовал увидеть это сам.

Вот как это работает, так что, возможно, вещь будет изложена более точно:

  • Это очевидно на 32-битной версии. 64-разрядная версия просто не может запустить любую 16-разрядную программу, так как NTVDM был удален из всех 64-разрядных версий Windows.

  • Там нет абсолютно никакой задержки при использовании эмулятора. Это не имеет ничего общего с самой программой, это всего лишь произвольная и совершенно непонятная задержка при запуске ее из Windows, из оболочки или чего-то еще.

  • Вы можете легко проверить это самостоятельно, запустив любое приложение Microsoft, поставляемое с самой Windows, например, edit!

Кстати, как только вы запускаете любую DOS-программу, вы также теряете локализацию клавиатуры!

Просто сделайте этот простой тест:

  • Запустите командную строку

  • введите edit -> чертовски задержка в 5 секунд (или около того), затем откроется классический текстовый редактор DOS

  • напечатайте что угодно -> ваша клавиатура теперь в американском раскладке.

О том, что добавление lh kb16 в autoexec.nt решает проблему, за исключением того, что ключ AltGr отключен, поэтому вы не можете вводить "\", "@" и т.д. Вы должны выбрать ALT + ASCII-код ... Обратите внимание, что он работал правильно в Windows Vista (и не требовался в XP). Начиная с Windows 7, MS предоставляла неисправную клавиатуру и никогда не исправляла ее.

Вернемся к нашей заботе:

  • Он не имеет ничего общего с разрешением экрана, частотой или чем-то еще по очень простой причине: полноэкранного режима больше не существует. Вы определенно не можете запускать любую DOS-программу в полноэкранном режиме. Они всегда должны быть в окнах. Очевидно, что на рабочем столе Windows ничего не меняется (это тоже легко проверить перед записью!)

  • Однако идея графики на базе Intel может стать серьезным намеком.

На самом деле, она работала с легкостью до материнских плат LGA 775, и отставание впервые появилось с чипсетами LGA 1055. Я ясно видел это (да, мои клиенты используют программы, написанные на Clipper. Тогда что ? Они делают работу отлично).

Так связано ли это с интегрированной обработкой видео в новейших чипсетах материнских плат и процессорах Intel?

Я могу подтвердить, что он ведет себя точно так же с любым процессором (от самого слабого Celeron до самого быстрого i7), и что отставание отсутствует на любой материнской плате, использующей чипсет LGA 775 или более старый, независимо от процессора и с надстройкой или без видеокарта.

По крайней мере, это факты.

Теперь о лечении ... Я все еще расследую. :п

На данный момент наиболее удовлетворительным решением, которое я смог найти, является эмулятор vDos. В отличие от DosBox, он правильно управляет совместным использованием файлов для многопользовательских приложений (хотя в этом случае это не бесплатно). WMWare также работает на одном дыхании, хотя и тяжелее в установке (vDos практически не требует установки. Это на самом деле намного быстрее и проще в использовании, чем DosBox).

Как я уже говорил выше, запуск DOS-программы через vDos происходит мгновенно: никакой задержки нет. Конечно, он в основном предназначен для 64-битной Windows, но он делает использование программы DOS под 32-битной Windows более удобным, потому что он убирает чертову задержку для начала.

С практической точки зрения наши многопользовательские клиенты на самом деле работают через PuTTY, подключенную в ssh к серверам Linux, работающим под управлением Dosemu. По крайней мере, в этой настройке у нас нет проблем с клавиатурой и дисплеем (из-за проблем с дисплеем Microsoft добавила CHCP в Windows, хотя это не имело никакого смысла, поскольку все программы для DOS всегда использовали стандартную кодовую страницу 437). , В результате некоторые полуграфические символы вместо этого отображают причудливые экзотические акцентированные символы).

Конечно, возможность запускать программы DOS под собственной Windows без странной задержки была бы более удовлетворительной. Это и чертова ошибка перевода клавиатуры ... В Vista все работало нормально, поэтому мне интересно, можно ли вставлять файлы Vista в последних версиях Windows ... Я все еще должен идентифицировать их.

0

В общем, начиная с XP XP поддержка DOS постепенно сокращалась (в ней не запускается небольшое количество программ, которые работали в 98). То, что вы смогли запустить их на Windows 7, уже маленькое чудо. Учитывая это, неудивительно, что даже DOSBox сможет запускать эти программы быстрее, чем встроенная "эмуляция" Windows.

0

На самом деле Пруссван, DosBox запускает эти программы очень медленно.

Когда мои клиенты просят ПК для запуска этих программ в автономном режиме, я устанавливаю на них 32-битную ОС, вот и все.

Единственный недостаток - это локализованный драйвер клавиатуры (вы должны добавить kb16 в autoexec.ini), который запутался, поскольку он отключает клавишу Alt Gr, поэтому расширенные символы становятся недоступными (что означает отсутствие доступа к "@", "\", Например, «#» и т. д. на французском языке, поэтому пользователи должны удерживать клавишу Alt и вводить свои коды ASCII!)

Помимо этого, вы получаете самый быстрый опыт при запуске этих программ под родной Windows (вам нужно повторно включить NTVDM в Windows 10, есть настройка для этого).

VDOS - очень хорошая альтернатива.

Я согласен с тем, что использование XPMode немного замедляло работу, но это было очень приятно, и я с сожалением сожалею, что они удалили его из Windows 10.

Речь шла не только о приложениях DOS, но и о 16-битных приложениях Windows в целом. Я использую Graphic Works 4 в течение десятилетий (я купил лицензию, если вам интересно) и больше не могу использовать ее дома, потому что тупо установил Windows 7 в 64-битной версии, чтобы получить i7 + 16 ГБ ОЗУ + 10 Гбит / с SSD на полную мощность, и я еще тупее обновил его до Windows 10 ... Так что теперь нет простых технических зарисовок в домашних условиях. :(

В любом случае, лучшим решением для приложений под DOS под 64-битной Windows (и 32-битной Windows, если задержка действительно вас расстраивает), вероятно, является vDos.

Тем не менее, остается открытым вопрос о причине, и, надеюсь, излечении, об этом странном отставании ...

-2

Это связано с вашей видеокартой. Держу пари, вы используете процессор Intel Core с интегрированным процессором Intel HD Graphics 4400.

Задержка не составляет 8 секунд в каждой системе. На некоторых системах это длиннее. У меня есть система, которая всегда имеет 5-секундную задержку.

Не каждая видеокарта поддерживает каждый видео режим. Например, некоторые видеокарты не поддерживают полноэкранный режим DOS. То есть текст шириной 80 столбцов и высотой 25 строк. Некоторые видеокарты поддерживают только программы DOS в Windows.

По моему опыту, интегрированный процессор Intel HD Graphics 4400 всегда вызывает многократную задержку запуска 16-битных программ.

Может быть, вы можете купить недорогую видеокарту и вставить ее в свой компьютер и перестать использовать встроенную VGA или DVI на материнской плате.

Возможно, Intel сможет исправить это в драйвере для интегрированного видео с чипом 4400.

До тех пор вы будете испытывать задержку КАЖДЫЙ РАЗ, когда вы запускаете свою 16-битную программу. Даже если вы уже находитесь в "черном" окне командной строки. Вы могли бы подумать, что драйвер уже вошел в режим поддержки для программы DOS. Но вы почувствуете задержку, когда вы введете название 16-битной программы и нажмете клавишу ввода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .