Memtest86 kötü RAM ile nasıl çalışır?


17

Memtest hakkında başka bir soru okuyordum ve merak etmeye başladım: Memtest86 kötü RAM ile nasıl çalışıyor?

Bir düşünün: Memtest86, RAM'in ne kadar büyük olduğu, daha sonra karşılaştırmak için RAM'e ne koyduğu, ekranın nerede güncelleneceği ve çok daha fazla bilgi hakkında bilgi depolamalıdır. Değişken kullanma eylemi RAM'in düzgün çalışmasını gerektirir. Ancak, programı muhtemelen bozuk RAM'de çalıştırırken nasıl güvenilir sonuçlar elde edebilirsiniz?

Buna bir benzetme, kontrolünüzdeki sabit sürücüden bir sabit sürücü kontrol programı çalıştırmaktır. Bunu asla yapmazsınız, kötü bir blok programı beklenmedik şekillerde etkileyebilir

Memtest86 kötü RAM ile nasıl çalışır?


2
Bilginize, CPU tarafından yapılan tüm işler RAM'de yapılır. Bir program yürütüldüğünde, RAM'de yapılır, değişkenlerle ilgisi yoktur. Kesinlikle hiçbir şey yapmayan ve hiçbir zaman değişken kullanmayan bir program yazabilirsiniz, ancak bu program bellekte bulunur. Çok ilginç bir soru olsa.
Keltari

2
Tüm (önemsiz olmayan) programlar değişken kullandığından, bellek testi / egzersiz yapanların hilesi değişkenlerini bellek yerine kayıtlarda saklamaktır. Bu aynı zamanda yığın yok demektir! Bazı bellek programları ROM dışında yürütülür (örn. Harvard mimarisi) veya test edilen RAM'de bulunuyorsa, her geçişten sonra kodu yeniden konumlandırın. Test programını çeşitli RAM konumlarında yürütme başarısı veya başarısızlığı, egzersiz yapan kişinin bir parçasıydı. Tabii ki sıradan bir program gibi test edilen RAM'i kullanan muhtemelen kötü yazılmış hafıza testçileri var
talaş

@Keltari teknik olarak, BIOS'un parçaları doğrudan NOR flaşının dışında çalışıyor ....
rackandboneman

Yanıtlar:


9

Çoğunlukla memtest yüklemek için gereken koç miktarı son derece azdır. Program çalışıyorsa, bu alandaki belleğin iyi olması muhtemeldir.

Şans

  1. Bellek belleğinin yüklendiği küçük bölüm kötü.
  2. Hâlâ dikkate değer bir sorun yaşamadan tüm testleri başarıyla tamamlayabilecek kadar iyiydi.

-Yüksek- olası değildir.


7

Memtest, test ettiği RAM'e gerçekten bağlı olmaması nedeniyle oldukça dayanıklıdır.

Örneğin, test 0 yürüyen bir algoritma kullanır ve bu test için gereken tek şey tek bir işaretleyicidir (muhtemelen önbelleğe alınır), çünkü yalnızca iki ardışık bellek adresini karşılaştırır.

Yani 3 bitlik bir RAM çubuğumuz varsa, memtest bunu yükler:

<pointer location> 00000001 00000010 00000100 00001000 00010000 00100000 01000000

İlk adres bozulursa, iki rasgele konum karşılaştırılır:

00000001 00100000

Ve memtest değişkenleri bozuk olsa bile yine de başarısız olacaktır.


3

Memtest kesinlikle en az bir varsayımda bulunmalıdır, en azından içine yüklendiği belleğin iyi olduğu varsayılır. Bundan sonra kalan hafızayı tamamen tarayabilir ve test edebilir.

Kendi belleğindeki hataları hala okuyabilir ve algılayabilir, çünkü yüklü tek program olduğu için, sistemdeki neredeyse tüm belleğe erişebilmesi ve böylece bu belleği bir "bilinen iyi" örnek.


Esasen kötü RAM'in yapabileceği davranışlardaki değişiklikleri düşünüyordum. Kötü koç mantığı değiştirdiyse, tüm testler her zaman doğru çıktı.
TheLQ

Test ederken tek bir bit flip'in yanlış olarak doğru bir okuma yapabileceğini söyleyebilirim, ancak ters çevrilen bitin çok daha kritik bir şeyde olması daha olasıdır, Memtest'te gerçek koşu boyutunu beklerim kod "test durumlarda" daha büyük olması ve bu yüzden biraz hata başarısız yerine yerine bir geçiş tespit önce programın korkunç çökmesine neden olacağını beklenir. Yine de bir olasılık olduğunu itiraf ediyorum.
Mokubai

1

Küçük olarak. Bazı RAM'ler kötü ise, program ne kadar küçükse, programın bir kısmının kötü noktalardan birinde olması daha az olasıdır. Bellek testini yüklemek için yeterince önyüklemenin RAM kullanarak bazı bellenim kodunu içereceği göz önüne alındığında, olasılıklar o kadar uzağa gidebilirseniz, RAM'in düşük alanlarının memtestin onlardan çalışabileceği kadar iyi çalıştığıdır.


1

Bir düşünün: Memtest86, RAM'in ne kadar büyük olduğu, daha sonra karşılaştırmak için RAM'e ne koyduğu, ekranın nerede güncelleneceği ve çok daha fazla bilgi hakkında bilgi depolamalıdır. Değişken kullanma eylemi RAM'in düzgün çalışmasını gerektirir. Ancak, programı muhtemelen bozuk RAM'de çalıştırırken nasıl güvenilir sonuçlar elde edebilirsiniz?

Memtest'in yaptığı şey budur - RAM'inize çeşitli (bilinen) desenler yazar, geri okur ve karşılaştırır. Yanlış eşleşme varsa, RAM'iniz bozuk olmalıdır.

Buna bir benzetme, kontrolünüzdeki sabit sürücüden bir sabit sürücü kontrol programı çalıştırmaktır. Bunu asla yapmazsınız, kötü bir blok programı beklenmedik şekillerde etkileyebilir

Bu doğru olsa da, başka seçeneğiniz olmayan bazı durumlar vardır. Programı başarılı bir şekilde yükleyebildiğiniz sürece, tanılama görevlerini gerçekleştirebilmelidir (bir tür hatalı medyada çalışıyor olsa bile).

Memtest86 kötü RAM ile nasıl çalışır?

Önce kendini belleğe yüklemesi gerekiyor. Çoğu durumda, bu bellek hala iyi olacaktır. Öyle olması durumunda değil , Memtest büyük olasılıkla programın kendisi bir sağlama toplamı ile bazı in-yer değişkenleri karşılaştırarak bozuk olduğunu belirleyecektir. Eşleşmedikleri takdirde, RAM'inizin kötü olduğunu veya indirdiğiniz kopyanın bozuk olduğunu hemen anlarsınız (ve ikincisinin neden olup olmadığını belirlemek önemsiz bir görev olacaktır).


TL, DR: Memtest86 + yalnızca RAM'inizin ilk megabaytının hala iyi olduğunu varsayar (büyük olasılıkla yükleneceği yer). Bu alanın bozuk olduğu varsayılarak, Memtest86 + sadece işlev görmez (ki bu, RAM'lerin testleri bile yürütmeden kötü olduğunu gösteren oldukça hızlı bir göstergedir).


0

Uygulama değişkenleri kaydedilen RAM kötü ise, testlerin çoğu başarısız olur.

Algoritma her türlü farklı kalıbı yazar ve sonra tekrar okuyarak iyi yazılmış olup olmadıklarını kontrol eder, bir yazma veya okuma doğru gitmezse söz konusu testin başarısız olmasını sağlar. Çoğu testi çalıştırarak ve birkaç saat çalışmasına izin vererek, RAM'inizin ne kadar kararlı olduğunu görebilirsiniz ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.