Qual é a maior causa dos GPF's???
O texto original é do Ricardo AG, pelo tamanho, usuários de versões "TD", obsoletas, do OLX vão perder a metade final desta mensagem.
O maior problema da atual versão do Windows é o DOS, um programa "mal comportado". Se a gente considerar que o Windows não deixa de ser um Sistema Operacional que usa o DOS apenas para implementar o método de acesso aos arquivos em disco (todos os demais procedimentos são controlados pelo Windows), poderíamos admitir que, para o Windows, o DOS não passa de um programa servidor de dados, executando sob seu controle.
Só que enquanto todas as aplicações Windows executam em modo protegido, com o Windows efetuando o controle necessário (e até as aplicações nativas do DOS executam em um modo especial, onde o próprio processador efetua a proteção), o "servidor de arquivos DOS" exige ser executado em modo real, onde não é possível nenhum tipo de proteção.
E por que, mesmo operando em modo protegido, uma aplicação pode "derrubar" o Windows? Pelo mesmo motivo pelo qual o DOS não utiliza o modo protegido: em nome da compatibilidade com as versões anteriores. Apesar de operar em modo protegido, uma aplicação escrita para as versões anteriores ainda utiliza funções da época em que o Windows era apenas uma interface gráfica em modo real. A expectativa era que os produtores de software passassem a utilizar apenas as funções de modo protegido à medida em que fossem lançando novas versões de seus produtos, e o modo real morreria com o tempo.
O problema é que essa atualização não ocorreu com a velocidade esperada. Muitos programas continuam usando, até hoje, funções "perigosas" do Windows (as que exigem a passagem da CPU para modo real) para ter acesso direto à memória do primeiro megabyte, onde reside o DOS. E, pior ainda, como estas funções continuam disponíveis, muitos programadores continuam desenvolvendo novos aplicativos que fazem uso destas funções.
Esse problema não ocorre com os novos sistemas operacionais, desenvolvidos desde o início para operar em modo protegido, como o OS/2, o NT e o Chicago, que não permitem executar operações perigosas. Mesmo no caso da compatibilidade parcial destes sistemas com o Windows 3.1, algumas funções "perigosas" foram deixadas ao encargo de um "simulador" de DOS incorporado ao sistema operacional; as demais foram sumariamente banidas.
Os GPFs (General Protection Faults) no Windows ocorrem basicamente por culpa dos aplicativos, por:
- Tentativa, pela aplicação, de acessar memória fora da área determinada pelo sistema operacional;
- Tentativa de execução de dados, ao invés de código (programa);
- Tentativa de acesso indevido ao hardware;
Um GPF é um evento de hardware, causado pela própria CPU. Qualquer sistema operacional que empregue a plataforma Intel 80x86
A combinação Windows+DOS+GPF é explosiva. Sempre que ocorre um GPF durante uma chamada ao DOS, o Windows é prejudicado. Como vimos anteriormente, o DOS só opera em modo real, e o Windows o utiliza como método de acesso a arquivos. Mais ainda, muitas aplicações "mal comportadas" fazem acesso direto ao DOS em modo real, ludibriando a vigilância do Windows, e podem, inadvertidamente, corromper o código do DOS, ou o próprio código do Windows que fica presente no primeiro megabyte junto com ele.
Sempre que ocorre uma violação deste tipo, o Windows não pode fazer muita coisa, a não ser cancelar a aplicação, e sugerir que você tente salvar seu trabalho nas demais aplicações ativas, porque possivelmente o código do DOS foi deturpado pela aplicação infratora. Mas, dependendo do estrago que tenha sido feito, isto pode não ser mais possível. E o DOS não pode ser cancelado juntamente com a aplicação defeituosa, pois as demais dependem dele para acesso aos seus dados em arquivos.
Mas não é só durante o acesso ao DOS que um GPF prejudica o Windows. Sempre que uma aplicação utiliza uma função "perigosa" (aquelas oriundas da versão 1.0 ou 2.0, que exigem a operação em modo real), mesmo que não esteja acessando o DOS, ela pode causar a adulteração do código ou dos dados internos do Windows. Quando isso ocorre num trecho de código, o Windows pode tentar carregar ime diatamente uma nova cópia deste trecho ofendido a partir do disco. Se o código ofendido não foi o que realiza esta operação, tudo bem. Mas quando isso ocorre numa área de dados, não há mais nada a fazer. Nesse caso, normalmente o sistema cai.
Conclusão:
Sempre que o Windows cair após um GPF, não se pode culpá-lo exclusivamente; merece parte dos "elogios" o autor do software de aplicação que fez o estrago. Se ele houvesse utilizado apenas as funções recomendadas do Windows, o GPF seria inofensivo para as demais aplicações. O Windows 95 deverá tornar-se mais rígido no controle destas infrações, ao preço de se tornar incompatível com parte do atual software. A esperança é que se torne interessante para as softhouses fazer a migração de suas aplicações.