Sítio do Piropo

B. Piropo

< Assunto >
Volte
17/11/2003

< Espancando as trevas da >
<
ignorância sobre DOS
>


P: Estou recorrendo a você, para que as trevas da minha ignorância sejam finalmente espancadas. Há alguns anos joguei um jogo para DOS chamado 11th Hour. Ao tentar fazê-lo recentemente não consegui e fui informado por um amigo que nunca mais poderia jogá-lo de novo porque não existe mais DOS “puro” e o prompt DOS no Windows não seria capaz de rodá-lo. Bem, esta coisa de prompt do DOS nunca ficou clara na minha cabeça. Se é para enganar os jogos DOS, porque não engana? Não é esta a sua função precípua? Qual seria então a real diferença entre o DOS e o prompt DOS? Isto acabou me levando a outro questionamento: algumas pessoas dizem que o Windows 95 não é um sistema operacional porque, na verdade, “roda” sobre o DOS. Outros já afirmam que o Win98 também não é pelo mesmo motivo e uns terceiros fazem a mesma assertiva para o WinMe. Parece que o único que escapa é o XP, pelo menos parece haver um certo consenso que este é um sistema operacional independente do DOS. Onde está a verdade?

Carlos Henrique  

R: Vamos ver se conseguimos espancar as trevas de sua (nossa) ignorância. Por partes, começando pelo começo, como convém: DOS é um sistema operacional concebido para rodar em um microprocessador bastante rudimentar para os dias de hoje: o 8086 da Intel. Quando foram lançados os modelos mais modernos e poderosos, como os 286, 386, 486 e Pentium, a Intel se preocupou em fazer que cada um deles fosse capaz de algumas proezas adicionais. Mas, para manter seu compromisso sagrado com a retrocompatibilidade (backward compatibility, ou seja, ser compatível com os modelos anteriores), todos eram capazes de funcionar no “modo real”. Nesse modo de operação o microprocessador emula um 8086 para poder rodar o DOS (mais ou menos como fazer uma Ferrari fingir que é um Fusca para atravessar uma favela em relativa segurança). Isso permite inicializar a máquina no “Modo MS-DOS”, carregar o DOS e fazê-la funcionar como se fosse um velho PC para jogar joguinhos. Mas não permite rodar outros programas simultaneamente, já que na verdade tudo se passa como se você estivesse operando um micro equipado com um 8086 e rodando DOS, o que não permite multitarefa. Para contornar isso, a Intel lançou o 386 com um modo de operação adicional, o “modo 8086 virtual”. Nesse modo, um ou mais trechos de memória de 1 Mb são reservados para que, apenas em seu interior, a CPU “emule” um 8086. Cada um desses trechos funciona como se fosse um micro independente, uma nova máquina, denominada “máquina virtual”. Assim, abrindo máquinas virtuais e carregando em cada uma delas o código do sistema operacional DOS, dá para rodar diversos programas DOS ao mesmo tempo (para o usuário, isso corresponde a abrir simultaneamente diversas “Janelas DOS” e carregar um programa DOS em cada uma). Note que, no caso da máquina virtual, para rodar o DOS não basta que a CPU seja capaz de emular um 8086: é preciso que o “outro” sistema operacional, aquele que foi carregado inicialmente e que gerencia todas as máquinas virtuais (no caso, o Windows), permita que uma cópia do DOS seja carregada no trecho de memória onde é criada a máquina virtual. Apelar para um recurso complicado como esse apenas para poder rodar programas DOS só era importante há alguns anos, quando ainda havia um bocado de programas DOS no mercado e muita gente interessada em rodá-los. Por isso, até Windows 98, a MS dava um suporte bem razoável ao DOS. Acontece que o DOS é um sistema “mal comportado”, frágil, que permite que seus programas acessem diretamente o hardware, o que hoje - por boas razões - é considerado um pecado mortal. Isso era feito principalmente por jogos (é por isso que muitos jogos não conseguem rodar nas máquinas virtuais, ou seja, nas janelas DOS: quando eles tentam acessar diretamente o hardware – geralmente o vídeo – o Windows bloqueia a tentativa). Hoje, quase ninguém está interessado em rodar programas DOS. Por isso, desde Windows Me, a MS decidiu remover aos poucos o suporte ao DOS, começando por eliminar a opção de inicialização no “modo MS-DOS”. Agora, de posse desses conhecimentos, tentemos dirimir suas dúvidas. O prompt do DOS não serve para “enganar” os jogos DOS mas sim para permitir rodar diversos programas DOS ao mesmo tempo sob Windows. Na verdade, ele corresponde a uma cópia inteira do DOS, carregada em uma “máquina virtual” (um trecho de memória protegido dos demais programas), sobre a qual é carregado o jogo. Portanto, o jogo não é enganado: ele efetivamente está rodando sob DOS. O problema é que isso é feito “dentro” de outro sistema operacional no qual a memória alocada a um programa deve ser totalmente protegida do alcance dos demais. Por isso surgem problemas eventuais, especialmente quando o programa que está rodando na máquina virtual tenta acessar o hardware. Quanto aos Windows 9x/Me: eles não “rodam sob DOS”. Eles simplesmente usam o DOS para dar a partida na máquina e carregar seu próprio código “em cima” do código do DOS e herdaram um bocado desse código (em contraposição, Win NT/2000/XP foi desenvolvido do zero - ou quase - e pouco ou nada têm a ver com o DOS). Por isso o suporte a programas DOS é tão frágil nos Windows 2000 e XP. Mas se você faz questão de jogar seu joguinho, sempre pode tentar inicializar sua máquina em “modo real”, carregar o DOS, carregar o jogo sob o DOS e jogá-lo à vontade – mas não poderá rodar nenhum outro programa enquanto faz isso. Tudo o que você precisa é um disco de inicialização (“disco de boot”) de uma versão recente do DOS para inicializar o micro com ele (há um sítio na Internet onde você pode obter “imagens” de discos de inicialização para quase todos os sistemas operacionais antigos; chama-se Bootdisk.Com e seu URL é <www.bootdisk.com/>). Deu para entender? As trevas de sua ignorância sentem-se espancadas? Se não, avise que a gente vai aí, cobre elas de porrada e fica tudo numa boa...

B. Piropo