Kann ein fehlerhaftes SATA-Datenkabel auf einem DVD-Laufwerk Probleme mit Programmen verursachen, die in Windows 8.1 nicht auf das Laufwerk zugreifen?

0

Ich hatte ein sehr seltsames Problem und eine Lösung auf einer unserer Windows 8.1-Workstations, und ich kann nicht herausfinden, wie meine Lösung das Problem behoben hätte.

Dies ist die Workstation:

  • Windows 8.1 x64
  • AMD Athlon x64 x2 5200+ 2,7 GHz
  • 4 GB DDR2-RAM
  • NG1DB-M25 Biostar-Motherboard
  • 1 TB Western Digital HDD
  • DVD-Laufwerk (nicht sicher, Marke)

Wie Sie sehen, handelt es sich um ziemlich alte Hardware, mit Ausnahme der Festplatte und des DVD-Laufwerks (wahrscheinlich alt, aber bis vor kurzem nicht verwendet, habe ich sie nur eingelegt).

Nachdem etwas passiert ist, das ich anhand der Beschreibung meiner Benutzer nicht ganz verstehen kann (angeblich im Schlafmodus), ist die Workstation in eine Reparaturschleife eingetreten, in der ich sie nicht einmal im abgesicherten Modus starten konnte, wenn sie nur geladen würde und versuchen, sich selbst zu reparieren.

Ich war den ganzen Tag mit Dingen mit höherer Priorität beschäftigt, also ließ ich sie einfach laufen und am nächsten Tag lief sie einwandfrei an. Als ich dann versuchte, das Windows-Update zu öffnen, öffneten sich die Fenster, aber keine der Informationen wurden geladen und es würde hängen, bis ich den Explorer neu startete. Es gab auch ein Problem in einem anderen Programm, bei dem das Programm hängen blieb.

Ich habe es zuerst versucht DISM.exe /Online /Cleanup-image /Restorehealthund dann SFC. Keiner von beiden hat funktioniert, also habe ich mich entschlossen, die Formatierung fortzusetzen. Ich habe die DVD eingelegt und als ich versuchte, sie zu starten, hat Windows gerade einen Fehlerbildschirm angezeigt (ich kann mich an keinen Code oder den genauen Wortlaut erinnern), der auf ein Problem aufgrund des abnehmbaren Speichers zurückzuführen war. Da es keine USB-Laufwerke gibt, habe ich mir gedacht, dass sie mit dem DVD-Laufwerk zusammenhängen müssen. Ich habe das SATA-Datenkabel herausgeschaltet und jetzt funktioniert die Workstation einwandfrei, es ist keine Neuformatierung oder ähnliches erforderlich.

Ich kann nicht zusammenfassen, wie das das Problem behoben hat. Bis zum Ende konnte keines der Probleme an den DVD-Laufwerken liegen, da auf sie nie zugegriffen wurde. Kennt jemand einen Grund, warum das Ersetzen des SATA-Kabels all dies beheben würde, oder ist es ein Zufall und etwas anderes ist möglicherweise auch passiert?

JRAH
quelle
Es hört sich so an, als ob es nur eine schlechte Verbindung war. Windows macht eine Menge Dinge, ohne Zweifel ist eines dieser Dinge, Geräte wie das DVD-Laufwerk zu entdecken und zu erkennen. Wenn Sie nicht bereit sind, zum alten Laufwerk zurückzukehren, überprüfen Sie, ob das Verhalten wiederholt wird. Was genau ist die Frage?
Ramhound
Ich habe in letzter Zeit mehrere Systeme mit fehlerhaften SATA-Datenkabeln gesehen. Bei jedem Kabel waren die Enden mit Metallklammern versehen, und ich habe sie durch solche ohne Klammern ersetzt. Hast du noch das schlechte Kabel? War es die Art mit Clips? Es sieht für mich so aus, als ob die Federkraft des Clips die Kontakte voneinander wegdrückt. Im Laufe der Zeit kann es bei Hitze zu zeitweiligen Unterbrechungen kommen.
boot13

Antworten:

0

Wenn Hardware ausfällt, kann dies zu einer Reihe von Symptomen führen. Am wahrscheinlichsten ist ein Bluescreen des Todes, aber geringere Symptome können genauso leicht auftreten. Betrachten Sie das Betriebssystemmodell, um eine bessere Vorstellung davon zu erhalten, wie sich die Hardware auf scheinbar nicht verwandte Programme auswirken kann:

Anwendersoftware> Kernel> Hardware Abstraction Layer> Hardware

Jedes Programm, das mit buchstäblich jeder Ressource, auch der CPU oder dem RAM, interagieren möchte, muss mit dem Kernel zusammenarbeiten, was wiederum von der HAL abhängt, um die verschiedenen physikalischen Signale von und zur Hardware in logische Signale von und zum Kernel zu übersetzen .

Der Kernel verfügt über bestimmte Einschränkungen, um die Stabilität zu "gewährleisten", z. B. die eingeschränkte Wiedereintrittsfähigkeit, Threadsicherheit, Ressourcenbeschränkungen usw. Insbesondere hat die meiste Hardware nicht das Konzept, gemeinsam genutzt zu werden. Dies wird auf einer höheren Ebene durch die HAL- oder Kerneltreiber abstrahiert.

Wenn Sie sich an die Tage der Modems erinnern, kann immer nur ein Programm das Modem verwenden, z. B. der Dialer. Das Internet hat dies umgangen, indem es einen gemeinsamen Stapel erstellt hat - alle Programme, die auf das Internet zugreifen wollten, haben dies über einen gemeinsamen Stapel getan, und dieser eine Stapel hatte die ausschließliche Kontrolle über die Hardware. Der Stapel erzeugte Multiplexing, um diese eine Ressource zu teilen.

Soundkarten, Festplatten, Grafikkarten usw. können auch heute noch nicht physisch gemeinsam genutzt werden. Die Signale würden sich verwirren und Chaos auslösen. Die HAL macht einen ziemlich guten Job, indem sie die Benutzer dazu verleitet, zu denken, dass tatsächlich mehr als eine Sache gleichzeitig vor sich geht. Es gibt immer noch einen physischen Engpass, aber wir bemerken ihn normalerweise nicht, wenn die Hardware so funktioniert, wie es beabsichtigt ist.

Um jedoch den Kern des Problems herauszufinden: Wenn die HAL Probleme bei der Kommunikation mit einem Gerät hat, kann sie blockiert werden, während sie versucht, die Daten erneut zu senden oder erneut zu lesen. Die HAL ist in der Regel auch kein Multithread-System, sodass nur jeweils eine Anforderung (pro Treiberkette) verarbeitet werden kann.

Wenn der Festplattentreiber blockiert ist, versuchen Sie beispielsweise, ein fehlerhaftes Laufwerk zu lesen. Jedes andere Programm, das versucht, einen ähnlichen API-Aufruf durchzuführen, befindet sich in der Warteschlange hinter dem blockierten Aufruf, was dazu führen kann, dass das Programm hängen bleibt. Multi-Thread-Programme hätten dieses Problem nicht, da die Benutzeroberfläche reagieren könnte, während das Laufwerk gesperrt ist. Leider sind die meisten Programme nicht Multithread-fähig.

Viele Programme in Windows laufen im Grunde genommen in einer Schleife ab:

while(GetMessage(&msg, hWnd, NULL, NULL)) {
    DispatchMessage(&msg);
}

Wie Sie sich vorstellen können, gibt es nur einen Thread. Sobald versucht wird, von einem Laufwerk zu lesen, das nicht mehr reagiert, kann es nicht wiederhergestellt werden, bis das Laufwerk eine Zeitüberschreitung aufweist. Ist dies nicht der Fall, ist das Programm der API des Betriebssystems ausgeliefert. Selbst wenn es sich um einen Multithread-Thread handeln würde, würde der Laufwerk-Lese-Thread gesperrt, obwohl der UI-Thread dies erkennen und wiederherstellen / abbrechen könnte.

Um das Problem zu beheben, blockieren viele API-Aufrufe, z. B. die, die Speicher zuweisen, Laufwerke oder Dateien öffnen usw., alle Aufrufe. Sie bewirken, dass der aktuelle Thread auf unbestimmte Zeit wartet (es sei denn, er fordert einen bestimmten Zeitüberschreitungswert an), bis das Betriebssystem die Anforderung abschließen oder aufgrund einer Zeitüberschreitung abbrechen kann. Die meisten Programme gehen nicht davon aus, dass das Betriebssystem sehr lange dauert, und geben daher niemals eine Zeitüberschreitung an. Diese Programme werden niemals wiederhergestellt, wenn das Laufwerk nicht reagiert.

Bei einem Programm, das "nie auf das fehlerhafte Laufwerk zugreift", muss dies nicht unbedingt der Fall sein. Sie müssen lediglich eine Funktion aufrufen, die derzeit von dem fehlerhaften Laufwerk blockiert wird. Wenn beispielsweise OpenFile auf dem fehlerhaften DVD-Laufwerk aufgerufen wurde, bleiben andere Dateianforderungen möglicherweise hängen, bis das Zeitlimit des DVD-Laufwerks abgelaufen ist, auch wenn sie nur vom Systemlaufwerk gelesen wurden.

Möglicherweise ruft das Programm GetOpenFileName auf, das einen vom Betriebssystem gerenderten Dialog anzeigt, der die Steuerung des Threads übernimmt, bis er zurückkehrt. In diesem Fenster werden alle Laufwerke im System aufgelistet, indem die Liste der Laufwerke aufgelistet wird. Wenn die API auf einem fehlerhaften Laufwerk hängt, ist das Endergebnis dasselbe: Das Dialogfeld wird eingefroren, die gesamte Anwendung wird eingefroren, und es wird darauf gewartet, dass dieses Laufwerk verfügbar / frei wird.

Phyrfox
quelle