Was bedeutet "Windows ist kein Echtzeitbetriebssystem"?

19

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?

Chad Harrison
quelle
4
QNX ist zum Beispiel Echtzeit.
new123456

Antworten:

21

Wikipedia hat hier tatsächlich eine überraschende Fülle an Informationen.

Ein Echtzeitbetriebssystem (RTOS) ist ein Betriebssystem (OS), das Echtzeitanwendungsanforderungen bedienen soll.

Ein Schlüsselmerkmal eines RTOS ist die Konsistenz in Bezug auf die Zeit, die erforderlich ist, um die Aufgabe einer Anwendung zu akzeptieren und abzuschließen. Die Variabilität ist Jitter. Ein hartes Echtzeitbetriebssystem weist weniger Jitter auf als ein weiches Echtzeitbetriebssystem. Das Hauptziel des Designs ist nicht der hohe Durchsatz, sondern die Garantie für eine weiche oder harte Leistungsklasse. Ein Echtzeitbetriebssystem, das normalerweise oder allgemein eine Frist einhalten kann, ist ein Soft-Echtzeitbetriebssystem. Wenn es jedoch eine Frist deterministisch einhalten kann, ist es ein Hard-Echtzeitbetriebssystem.

Ein RTOS verfügt über einen erweiterten Algorithmus für die Zeitplanung. Die Flexibilität des Schedulers ermöglicht eine umfassendere Orchestrierung der Prozessprioritäten durch das Computersystem. Ein Echtzeitbetriebssystem ist jedoch häufiger für eine begrenzte Anzahl von Anwendungen vorgesehen. Schlüsselfaktoren in einem Echtzeitbetriebssystem sind eine minimale Interrupt-Latenz und eine minimale Thread-Umschalt-Latenz. Ein Echtzeitbetriebssystem wird mehr dafür geschätzt, wie schnell oder vorhersehbar es reagieren kann, als dafür, wie viel Arbeit es in einem bestimmten Zeitraum leisten kann.

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.

Derzeit sind die bekanntesten und am weitesten verbreiteten Echtzeitbetriebssysteme:

LynxOS
OSE
QNX
RTLinux
VxWorks
Windows CE

Eine umfassende Liste finden Sie in der Liste der Echtzeitbetriebssysteme .

Shinrai
quelle
6
Echtzeit-Betriebssysteme werden normalerweise in sehr speziellen Rollen verwendet, beispielsweise in äußerst präzisen Steuerungssystemen, bei denen eine Entscheidung / Berechnung / usw. in einem sehr genauen Zeitrahmen abgeschlossen werden muss.
Lamar B
Gibt es Beispiele für RTOS? Aktualisierung der Frage in dieser Hinsicht.
Chad Harrison
Was @ ta.speot.es sagte - es gibt einige in dem Artikel bereits verlinkt. Ich bearbeite jedoch einige davon.
Shinrai
Ich habe es nicht bis zum Ende der Wiki-Seite geschafft ... Entschuldigung, dass: /
Chad Harrison
19

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).

Scott C Wilson
quelle
10

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.

LawrenceC
quelle
Könnten Sie erklären, was Sie mit "x86 hat nur 1 IRQ-Leitung" meinen? Als ich das letzte Mal (zugegebenermaßen vor Jahrzehnten) einen 80186-Computer verkabelt habe, erinnere ich mich, dass der 8259-PIC 8 Kanäle hat und der nominale PC zu diesem Zeitpunkt einen zweiten kaskadiert hatte, für insgesamt 15 Kanäle, ohne den NMI?
Glenn Slayden
Sie benötigen den PIC genau deshalb, weil der x86 nur eine IRQ-Leitung hat. Wenn jedoch x86-Interrupts deaktiviert sind, kann der PIC nur warten, bis die CPU sie wieder aktiviert, und IIRC tut genau das. IIRC andere CPUs wie die 68000 hatten 3 Interrupt-Pins und erwarteten eine codierte Prioritätsstufe 0-7 direkt auf der CPU. Obwohl ich es jetzt tatsächlich in Betracht ziehe, deaktiviert der 68000 möglicherweise alle Interrupts, sobald er einen IRQ empfängt - ich habe den 68000 nie programmiert.
LawrenceC
Ah ja, jetzt erinnere ich mich. Und IIRC, der „Prioritätsaspekt“ des 8259-Chip-Designs, sollte das Betriebssystem dazu ermutigen, Interrupts so wenig wie möglich oder überhaupt nicht zu deaktivieren, aber die PC-Interrupt-Leitungen wurden willkürlich zugewiesen, um dies zu verhindern Ansatz? Auf jeden Fall war es niemals beabsichtigt, unter CLI ... STI eine erhebliche Menge an Code aufzurufen.
Glenn Slayden