programa DOS tem 8 segundo atraso na inicialização no Win 7

3

Meu programa DOS herdado (instant-Office) suporta um atraso de 8 segundos ao iniciar no Windows 7 - todas as vezes.

Depois de executar o programa idêntico milhares de vezes no DOS e no Win-XP, ele é inicializado instantaneamente; literalmente sub-segundo.

As unidades estão quase vazias, a carga da CPU está abaixo de 5%, toneladas de memória disponíveis. Computador autônomo com lacunas de ar; não há rede. Não há vírus.

O CMD.exe é iniciado instantaneamente.

Eu limitei o atraso depois que a janela é aberta com o PIF exibido na parte superior.

O problema não é o PIF, pois eu posso ir para o diretório (rodando sob o CMD) e o arquivo .exe bruto tem os mesmos 8 segundos. atraso.

Eu percebo que ele está sendo executado em um emulador (máquina virtual), mas com 8 segundos?!?

Isto parece ser um atraso aplicado (para nos tirar dos programas DOS?).

Alguma idéia do que está causando isso?

Alguma idéia de como diagnosticar isso?

Alguma idéia de como superar esse atraso artificial?

Obrigado.

PS Esta caixa de perguntas aqui não me permite marcar esta pergunta com "DOS". Mas esse é um problema bobo diferente.

    
por Old-fashioned 22.07.2015 / 18:57

6 respostas

2

Robert, onde a sua sugestão faz algum sentido é que o problema começou a aparecer com os chipsets LGA 1155. Foi bastante óbvio.

Então, sim, talvez tenha algo a ver com a GPU da Intel, que agora está incorporada nos processadores da nova geração. Por que não ...

No entanto, não estamos falando de aplicativos em tela cheia aqui, pelo simples motivo de o modo de tela inteira ter sido pura e simplesmente removido do Windows 7 !!!

Assim, todos os programas do DOS agora precisam ser executados no modo de janela, ponto final.

Isso significa que o pequeno atraso (nem mesmo um segundo de duração, na verdade) que poderia ocorrer quando a mudança de resolução de tela simplesmente não existe mais, porque é simplesmente impossível ocorrer.

Não, estamos falando de exibição pura do Windows aqui.

Por favor, faça uma tentativa simples. Você encontrará muitos aplicativos DOS na pasta \ Windows \ System32: basta clicar em edit.com (por exemplo) e ver por si mesmo. :)

Edit: estou realmente usando placas de vídeo caras, pelo menos no meu PC em casa.

Isso não muda nada para o fenômeno, e o atraso tem uma duração fixa e perfeitamente previsível.

Agora você está me fazendo pensar sobre isso, a velocidade do processador muda alguma coisa: é mais curto em um i5 do que em um antigo Pentium 4 ...

Portanto, provavelmente há algum tratamento de dados envolvido em algum lugar, provavelmente quando o NTVDM é executado.

Outra funcionalidade que você pode verificar facilmente é que o atraso ocorre apenas uma vez.

Estou explicando:

  • Inicie o shell: sem atraso
  • Execute qualquer programa do DOS: lag
  • Saia do programa e execute-o novamente (ou qualquer outro): sem atraso algum.

Isso significa que absolutamente não está relacionado à exibição, mas à invocação do NTVDM pela primeira vez (e provavelmente a configuração de um ambiente de trabalho).

A única diferença com os novos chipsets é onde ela foi instantânea antes, de repente levou vários segundos.

Na verdade, estou me perguntando se não é uma tentativa deliberada de tirar as pessoas do uso de aplicativos de 16 bits, mas é bastante complicado aqui, porque só acontece com o Windows 7 ou posterior, e não com o Vista, XP pode encontrar os drivers, que geralmente podem ser feitos para a única exceção de gráficos e, por vezes, drivers de rede, se eles são Intel e não Realtek ou outras marcas) e, claro, não com o Linux ...

... Portanto, não podemos realmente acusar a Intel, mas sim a maneira como a Microsoft está usando o hardware com o NTVDM em versões recentes do Windows (incluindo o Windows 10 de 32 bits, que apresenta o mesmo atraso).

    
por 30.09.2016 / 11:07
2

Eu tive o mesmo problema e encontrei recentemente a solução em este site (%código%). Isso funciona perfeitamente para mim.

Versão resumida:

A patch that fixes a glitch in the BIOS of some Intel VGA onboard graphics adapters (i.e. 4010U, 4340 i3 and 4200U i5, 4600...) that cause NTVDM startup to be delayed for 5-10 seconds and also causes slow text output and other INT10h operations (1char / second) in fullscreen mode.

Versão longa:

Whom to blame for this mess. Intel or Microsoft?

Interestingly, they are both to blame in a certain way, but a problem with NTVDM suprisingly is even benifical for solving the Intel video BIOS bug. Sounds a bit confusing? You can read more in the technical details below. Microsoft's fault is to not implement IN/OUT on 32bit Ports in NTVDM. But even if that had been implemented, Intel's BIOS wouldn't work properly, it would even cause more problems. Intel on the other hand expects MMIO ports to be accessinble which isn't the cause in a V86 environment like the NTVDM. Therefore it runs in a 1 second timeout on every operation, even though it seems to work fine without using these MMIO-Ports. So their fault is to try MMIO access for 1 second each time instead of just skipping over it if it fails for unknown reasons. The problem in fact can be solved by jumping over the check routine, which is just 1 byte to patch in the Video BIOS. Fortunately the NTVDM mapping of the BIOS address space can be patched in memory via a NTVDM extension DLL, so that you don't need to reflash your VGA BIOS.

    
por 20.04.2017 / 15:10
1

Você está assumindo coisas erradas. Estou surpreso que ninguém apenas tentou ver por si mesmo.

Aqui está como funciona, então talvez algo seja dito com mais precisão:

  • Está obviamente em uma versão de 32 bits. Uma versão de 64 bits simplesmente não pode iniciar nenhum programa de 16 bits de qualquer maneira, já que o NTVDM foi removido de todas as versões do Windows de 64 bits.

  • Não há absolutamente nenhum atraso ao usar um emulador. Não tem nada a ver com o programa em si, é apenas um atraso arbitrário e bastante incompreensível ao iniciá-lo a partir do Windows, ou a partir do shell, ou o que quer que seja.

  • Você pode verificar facilmente por yourslef, iniciando qualquer aplicativo da Microsoft fornecido com o próprio Windows, como edição!

A propósito, assim que você iniciar qualquer programa DOS, você também perderá a localização do seu teclado!

Faça apenas este teste simples:

  • Inicie o prompt de comando

  • digite edit - > maldito atraso de 5 segundos (ou mais), então o editor de texto DOS clássico abre

  • digite qualquer coisa - > seu teclado está agora no layout dos EUA.

Sobre isso, adicionando o lh kb16 no autoexec.nt resolve o problema, exceto que a tecla AltGr está desabilitada, então você não pode digitar "\", "@", etc. Você precisa usar o código ALT + ASCII. Observe que funcionou corretamente no Windows Vista (e não foi necessário no XP). No Windows 7, o MS forneceu uma tabela de teclado com defeito e nunca a corrigiu.

Voltar para nossa preocupação:

  • Não tem nada a ver com resolução de tela, frequência ou qualquer outra coisa, por uma razão muito simples: o modo de tela cheia não existe mais. Você definitivamente não pode iniciar qualquer programa DOS em tela cheia, ponto final. Eles sempre têm que ser janelas. Então, obviamente, nada muda na tela do desktop do Windows (isso também é fácil de verificar antes de escrever!)

  • No entanto, a ideia sobre gráficos baseados em Intel pode ser uma dica séria.

Na verdade, funcionou até as placas-mãe LGA 775 e o lag apareceu pela primeira vez com os chipsets LGA 1055. Eu podia ver claramente (sim, meus clientes estão usando programas escritos no Clipper. E depois? Eles fazem o trabalho perfeitamente).

Então, ele está conectado ao processamento de vídeo integrado nos chipsets e processadores Intel mais recentes?

Posso confirmar que se comporta exatamente da mesma maneira com qualquer processador (do mais fraco Celeron ao mais rápido i7), e que o atraso está ausente em qualquer placa-mãe usando um chipset LGA 775 ou mais antigo, seja qual for o processador e com ou sem um placa de vídeo adicional.

Pelo menos, esses são os fatos.

Agora, sobre a cura ... ainda estou investigando. : p

Por enquanto, a solução mais satisfatória que encontrei é o emulador vDos. Ao contrário do DosBox, ele gerencia corretamente o compartilhamento de arquivos para aplicativos multiusuários (embora, neste caso, não seja gratuito). O WMWare também funciona muito bem, embora seja mais pesado de instalar (o vDos não precisa de quase nenhuma instalação. Na verdade, ele é muito mais rápido e fácil de usar do que o DosBox).

Como eu disse acima, o lançamento de um programa DOS através do vDos é imediato: não há atraso algum. Obviamente, ele é voltado principalmente para o Windows de 64 bits, mas faz com que o uso do programa DOS em 32 bits do Windows seja mais conveniente, porque ele remove o atraso para começar.

No lado prático, nossos clientes multiusuários realmente trabalham através do PuTTY conectado em ssh a servidores Linux que executam o Dosemu. Pelo menos, não temos nenhum teclado nem problemas de exibição nesta configuração (sobre problemas de exibição, a Microsoft vem adicionando o CHCP no Windows, embora não tenha sentido nenhum, já que todos os programas DOS sempre utilizaram a página de código padrão 437 Como resultado, alguns caracteres semi-gráficos exibem caracteres acentuados exóticos em vez disso).

É claro que ser capaz de lançar programas DOS sob o Windows nativo sem o atraso estranho seria mais satisfatório. Este e o maldito bug de tradução de teclado ... Funcionou bem no Vista, então estou pensando se os arquivos do Vista poderiam ser inseridos nas versões mais recentes do Windows ... Eu ainda tenho que identificá-los.

    
por 16.12.2015 / 12:16
0

Em geral, o suporte foi gradualmente reduzido desde o XP (ele não executa um pequeno número de programas que funcionaram em 98). Que você foi capaz de iniciá-los no Windows 7 já é um pequeno milagre. Com isso em mente, não seria uma surpresa se o DOSBox rodasse esses programas mais rápido que a "emulação" nativa do Windows.

    
por 30.09.2016 / 11:13
0

Na verdade Prusswan, DosBox executa esses programas muito mais devagar.

Quando meus clientes pedem que um PC execute esses programas como independentes, eu instalo um sistema operacional de 32 bits neles, isso é tudo.

A única desvantagem é o driver de teclado localizado (você precisa adicionar o kb16 no autoexec.ini) que está desarrumado, pois desativa a tecla Alt Gr, para que os caracteres estendidos fiquem indisponíveis (ou seja, sem acesso a "@", " \ "," # ", etc. em francês, por exemplo, para que os usuários tenham que segurar a tecla Alt e digitar seus códigos ASCII!)

Além disso, você obtém a experiência mais rápida ao executar esses programas no Windows nativo (é necessário reativar o NTVDM no Windows 10, há uma configuração para isso).

O vDos é uma alternativa muito boa, no entanto.

Eu concordo que usar o XPMode estava diminuindo um pouco as coisas, mas foi muito gratificante também, e infelizmente me arrependi de tê-lo removido do Windows 10.

Não se tratava apenas de aplicativos DOS, mas também de aplicativos Windows de 16 bits em geral. Eu tenho usado o Graphic Works 4 por décadas (eu comprei a licença, caso você esteja se perguntando) e eu não posso mais usá-lo em casa porque eu estupidamente instalei o Windows 7 em 64 bits para obter o i7 + 16 GB RAM + 10 Gbps SSD poder total, e eu ainda mais estupidamente atualizou para o Windows 10 ... Então não há mais simples esboços técnicos em casa agora. : (

De qualquer forma, a melhor solução agora para aplicativos DOS em 64 bits do Windows (e 32 bits do Windows se o atraso realmente incomodar você) é provavelmente vDos.

No entanto, a questão permanece em aberto sobre o motivo, e esperemos que a cura, sobre este estranho atraso ...

    
por 30.09.2016 / 11:35
-2

Está relacionado à sua placa de vídeo. Estou apostando que você está usando um processador de núcleo Intel com o processador integrado Intel HD Graphics 4400.

O atraso não é de 8 segundos em todos os sistemas. Em alguns sistemas, é mais longo. Eu tenho um sistema que sempre tem um atraso de 5 segundos.

Nem todas as placas de vídeo são compatíveis com todos os modos de vídeo. Por exemplo, algumas placas de vídeo não suportam o modo DOS de tela inteira. Ou seja, texto de 80 colunas de largura e 25 linhas de altura. Algumas placas de vídeo suportam apenas programas DOS em janelas.

Pela minha experiência, o processador integrado Intel HD Graphics 4400 sempre causa um atraso de vários segundos na inicialização de programas de 16 bits.

Talvez você possa comprar uma placa de vídeo barata e colocá-la em seu computador e parar de usar o VGA ou DVI integrado na placa-mãe.

Talvez a Intel consiga consertar isso no driver do vídeo integrado do chip 4400.

Até então, você experimentará o atraso TODAS AS VEZES, você inicia seu programa de 16 bits. Mesmo se você estiver em uma janela de prompt de comando "preto" já. Você pensaria que o driver já entrou no modo de suporte para o programa DOS. Mas você experimentará o atraso quando você digitar o nome do programa de 16 bits e apertar enter.

    
por 30.09.2015 / 19:13