Czytałem kolejne pytanie o Memtest i zacząłem się zastanawiać: jak działa Memtest86 przy złej pamięci RAM?
Pomyśl o tym: Memtest86 musi przechowywać informacje o tym, jak duża jest pamięć RAM, co umieściła w pamięci RAM, aby porównać później, gdzie zaktualizować ekran i wiele innych informacji. Czynność użycia zmiennej wymaga poprawnego działania pamięci RAM. Ale w jaki sposób można uzyskać wiarygodne wyniki, gdy program działa na prawdopodobnie uszkodzonej pamięci RAM?
Analogią do tego jest uruchomienie programu sprawdzającego dysk twardy z dysku twardego, który sprawdzasz. Nigdy byś tego nie zrobił, zły blok może wpłynąć na program na wiele nieoczekiwanych sposobów
Jak działa Memtest86 przy złej pamięci RAM?
memtest86+
memtest
TheLQ
źródło
źródło
Odpowiedzi:
Głównie dlatego, że ilość pamięci RAM potrzebnej do załadowania memtesta jest bardzo mała. Jeśli program działa, prawdopodobnie pamięć w tym jednym obszarze jest w porządku.
Szansa, że-
Jest bardzo prawdopodobne.
źródło
Memtest jest dość trwały, ponieważ tak naprawdę nie zależy od testowanej pamięci RAM.
Na przykład test 0 używa algorytmu kroczącego , a do tego testu wystarczy tylko jeden wskaźnik (prawdopodobnie buforowany), ponieważ porównuje on tylko dwa kolejne adresy pamięci.
Więc jeśli mamy 3-bitową pamięć RAM, Memtest ładuje ją z tym:
A jeśli pierwszy adres jest uszkodzony, porówna dwie losowe lokalizacje:
I nadal zawiedzie, nawet jeśli zmienne memtest są uszkodzone.
źródło
Memtest absolutnie musi przyjąć co najmniej jedno założenie, że przynajmniej pamięć, do której jest załadowana, jest dobra. Następnie jest w stanie przeskanować i przetestować resztę pamięci w całości.
Możliwe, że nadal jest w stanie odczytać i wykryć błędy we własnej pamięci, ponieważ jako jedyny załadowany program powinien mieć dostęp do praktycznie całej pamięci w systemie, a zatem być w stanie odczytać i porównać tę pamięć z „znana dobra” próbka.
źródło
Będąc małym. Jeśli jakaś pamięć RAM jest zła, im mniejszy jest program, tym mniejsze jest prawdopodobieństwo, że część programu znajdzie się w jednym z gorszych punktów. Biorąc pod uwagę, że uruchomienie wystarczająco daleko, aby załadować test pamięci, będzie wymagało użycia kodu oprogramowania układowego za pomocą pamięci RAM, istnieje prawdopodobieństwo, że jeśli uda ci się dostać tak daleko, niskie obszary pamięci RAM działają wystarczająco dobrze, aby memtest mógł z nich uruchomić.
źródło
Cóż, właśnie to robi Memtest - zapisuje różne (znane) wzorce w pamięci RAM, odczytuje je z powrotem i porównuje. W przypadku niezgodności pamięć RAM musi zostać uszkodzona.
Chociaż jest to prawda, w niektórych przypadkach nie masz wyboru. Tak długo, jak można pomyślnie załadować program, powinien on być w stanie wykonywać swoje zadania diagnostyczne (nawet jeśli działa na jakimś uszkodzonym nośniku).
Cóż, najpierw musi się załadować do pamięci. W większości przypadków ta pamięć będzie nadal dobra. W przypadku, gdy jest to nie , Memtest najprawdopodobniej ustalić, że sam program jest uszkodzony porównując kilka zmiennych w miejscu z sumą kontrolną. W przypadku, gdy się nie zgadzają, od razu wiadomo, że albo pamięć RAM jest zła, albo pobrana kopia jest uszkodzona (i ustalenie, czy ta ostatnia jest przyczyną, czy nie, byłoby trywialnym zadaniem).
TL, DR: Memtest86 + działa tylko przy założeniu, że pierwszy megabajt pamięci RAM jest nadal w porządku (miejsce, w którym najprawdopodobniej zostanie załadowany). Zakładając, że ten obszar jest uszkodzony, sam Memtest86 + po prostu nie działałby (co jest dość szybkim wskaźnikiem, że twoja pamięć RAM jest zła, nawet bez uruchomienia testów).
źródło
Jeśli pamięć RAM, w której aplikacja zapisuje zmienne, jest zła, wówczas większość testów zakończy się niepowodzeniem.
Algorytm zapisuje różnego rodzaju wzorce, a następnie sprawdza, czy są dobrze napisane, czytając je ponownie, jeśli zapis lub odczyt nie poszły poprawnie, spowoduje to, że test nie powiedzie się. Uruchamiając większość testów i pozwalając na działanie przez kilka godzin, możesz następnie sprawdzić, jak stabilna jest twoja pamięć RAM ...
źródło