Como o Memtest86 funciona com RAM ruim?

17

Eu estava lendo outra pergunta sobre o Memtest e comecei a pensar: Como o Memtest86 funciona com RAM ruim?

Pense nisso: o Memtest86 precisa armazenar informações sobre o tamanho da RAM, o que ela coloca na RAM para comparar mais tarde, onde atualizar a tela e muito mais informações. O ato de usar uma variável requer que a RAM funcione corretamente. Mas como você pode obter resultados confiáveis ao executar o programa em RAM possivelmente defeituosa?

Uma analogia para isso é executar um programa de verificação do disco rígido do disco rígido que está sendo verificado. Você nunca faria isso, um bloqueio ruim poderia afetar o programa de várias maneiras inesperadas

Como o Memtest86 funciona com RAM ruim?

    
por TheLQ 24.08.2011 / 20:13

6 respostas

9

Principalmente porque a quantidade de memória RAM necessária para carregar o memtest é extremamente pequena. Se o programa for executado, é provável que a memória nesta área esteja correta.

A chance de que -

  1. A pequena seção de memória memtest foi carregada é ruim.
  2. Ainda era bom o suficiente para que ele pudesse concluir todos os testes com sucesso sem problemas visíveis.

É altamente improvável.

    
por 24.08.2011 / 20:44
7

O Memtest é bastante durável, pois não depende realmente da RAM que está sendo testada.

Por exemplo, o teste 0 usa um algoritmo de caminhada , e tudo o que é necessário para esse teste é um único ponteiro (provavelmente em cache), porque é apenas comparando dois endereços de memória consecutivos.

Então, se temos um stick de RAM de 3-bit, o memtest o carrega com isto:

<pointer location> 00000001 00000010 00000100 00001000 00010000 00100000 01000000

E se o primeiro endereço estiver corrompido, ele comparará dois locais aleatórios:

00000001 00100000

E ainda vai falhar, mesmo que as variáveis do memtest estejam corrompidas.

    
por 24.08.2011 / 20:25
3

Memtest absolutamente tem que fazer pelo menos uma suposição, que pelo menos a memória em si é carregada é boa. Depois disso, é capaz de digitalizar e testar o resto da memória em sua totalidade.

Pode ser que ainda seja capaz de ler e detectar erros em sua própria memória, já que, sendo o único programa carregado, deveria ter acesso a praticamente toda a memória do sistema e assim poder ler e comparar isso. memória para uma amostra "boa".

    
por 24.08.2011 / 20:20
1

Por ser pequeno. Se alguma RAM estiver ruim, quanto menor o programa, menor a probabilidade de que parte do programa esteja em um dos pontos ruins. Considerando que a inicialização longe o suficiente para carregar o teste de memória envolverá algum código de firmware usando RAM, as probabilidades são de que se você conseguir chegar tão longe, as áreas baixas de RAM estão funcionando bem o suficiente para que o memtest possa executá-las. >     

por 25.08.2011 / 04:15
1

Think about it: Memtest86 needs to store information about how large the RAM is, what it put in RAM to compare later, where to update the screen, and a lot more information. The act of using a variable requires RAM to be functioning properly. But how can you get reliable results when your running the program on possibly defective RAM?

Bem, isso é o que o Memtest faz - ele grava vários padrões (conhecidos) na sua RAM, lê e compara. Se houver uma correspondência incorreta, sua RAM deve estar corrompida.

An analogy to this is running a hard drive checking program from the hard drive that your checking. You would never do that, a bad block could affect the program in lots of unexpected ways

Embora isso seja verdade, há alguns casos em que você não tem escolha. Contanto que você possa carregar o programa com sucesso, ele deve ser capaz de executar suas tarefas de diagnóstico (mesmo se estiver sendo executado em algum tipo de mídia defeituoso).

How does Memtest86 function with bad RAM?

Bem, ele precisa se carregar primeiro na memória. Na maioria dos casos, essa memória ainda será boa. Caso não seja , o Memtest provavelmente determinará que o próprio programa está corrompido, comparando algumas variáveis no local com uma soma de verificação. No caso de não coincidirem, você saberia instantaneamente que sua RAM está ruim ou que a cópia baixada está corrompida (e seria uma tarefa trivial determinar se a última é a causa ou não).

TL, DR: O Memtest86 + funciona apenas supondo que o primeiro megabyte da sua RAM ainda esteja bem (o local onde seria mais provável o carregamento). Assumindo que esta área está corrompida, o próprio Memtest86 + simplesmente não funcionaria (o que é um indicador bastante rápido de que sua RAM está ruim, mesmo sem ter executado os testes).

    
por 24.08.2011 / 20:32
0

Se a RAM que o aplicativo está salvando as variáveis estiver ruim, a maioria dos testes falhará.

O algoritmo escreve todos os tipos de padrões diferentes e, em seguida, verifica se eles estão bem escritos, lendo-os novamente, se uma gravação ou leitura não foi feita corretamente, fará com que o teste em questão falhe. Ao executar a maioria dos testes e deixá-lo rodar por várias horas, você pode ver como sua RAM está estável ...

    
por 24.08.2011 / 20:20