Ich bin auf eine Anwendung namens LatencyMon gestoßen , die anscheinend die Latenzüberwachung durchführt .
Ich habe immer verstanden, dass das System umso weniger reagiert oder latenter wird, je mehr Sie den Prozessor belasten. Im zweiten Abschnitt der LatencyMon-Seite steht jedoch im ersten Satz: "Windows ist kein Echtzeitbetriebssystem" (RTOS). Das hat mich zum Nachdenken gebracht. Unterscheidet sich das von anderen Betriebssystemen wie Linux, Unix oder Mac OS X?
Gibt es Echtzeitbetriebssysteme? Oder ist es nur ein Marketingprogramm, das Sie zum Kauf ihres Produkts veranlasst?
BEARBEITEN:
Gibt es auch Beispiele für RTOS?
Antworten:
Wikipedia hat hier tatsächlich eine überraschende Fülle an Informationen.
Dies ist etwas, was sehr wenige Betriebssysteme tatsächlich tun, da es für viele Workloads einfach weniger effizient ist. Keines der wichtigsten Consumer-Betriebssysteme ist jetzt (oder meines Wissens nach jemals) in Echtzeit verfügbar. Leider bedeutet dies, dass Dinge in einer Nicht-Echtzeit-Umgebung manchmal herumstehen und auf andere Dinge warten müssen. Dies wird nur dann zu einem Problem, wenn sich etwas im Allgemeinen nicht in angemessener Zeit rentiert.
quelle
Echtzeitbetriebssysteme werden häufig für eingebettete Systeme verwendet, bei denen sie möglicherweise für eine Anleitung oder eine Systemüberwachung verantwortlich sind. Das Wichtigste an einem Echtzeitsystem (und was es von einem Nicht-Echtzeitsystem unterscheidet) ist, dass es in einem Echtzeitsystem falsch ist, wenn eine Antwort zu spät kommt . Sie können leicht erkennen, wie dies funktioniert, indem Sie eine Reihe von Zahlen in Excel addieren (wenn der Vorgang verzögert wird, hat dies keine wirklichen Auswirkungen) und eine Bremse in einem Auto anziehen (wenn eine Verzögerung katastrophal sein könnte).
quelle
Grundsätzlich kann ein RTOS garantieren, dass es einen IRQ (Interrupt Request) in einem bestimmten (normalerweise niedrigen) Zeitraum bedienen kann. Standardbetriebssysteme haben keine solche Garantie.
In den meisten modernen Systemen können die meisten Geräte einen IRQ generieren. Dies bewirkt, dass die CPU anhält (dh unterbrochen wird), was sie tut, und ein Unterbrechungsdienstprogramm ausführt. Die Idee ist, dass dieses Serviceprogramm alles tut, was das Gerät benötigt, dh Daten vom Gerät in den Arbeitsspeicher holt, dem Gerät mitteilt, was als nächstes zu tun ist usw.
Bei x86 werden weitere Interrupts automatisch deaktiviert (mit Ausnahme von NMI, RESET und SMI), bis die CPU die Interruptquelle bestätigt und sie wieder aktiviert, da sie nur über eine IRQ-Leitung auf der CPU verfügt, wenn sie einen Interrupt empfängt. Gute Gerätetreiber unter Standard-i386 / amd64-Windows führen in diesem Zustand nur eine minimale Verarbeitung durch, sodass Interrupts wieder aktiviert werden können, und verschieben dann die vollständige Verarbeitung des Interrupts bis zu einem späteren Zeitpunkt (da das System technisch nur 1 Interrupt pro CPU bedienen kann Kern zu einer Zeit). Ich bin mir nicht sicher, aber ich glaube, dass Linux dasselbe tut. Trotzdem gibt es keine Garantie dafür, dass der Interrupt innerhalb der festgelegten Zeit bearbeitet wird.
Bei den meisten PC-Geräten, wie z. B. Festplatten, Tastaturen und Netzwerkkarten, tritt nur ein Leistungsverlust auf, wenn die Wartung des IRQ geringfügig verzögert wird. Dies kann ein größeres Problem für Geräte wie Audio- und Videoeingänge sein, bei denen das Gerät nichts puffert und der PC wirklich mit dem eingehenden Datenstrom Schritt halten muss.
quelle