Was bedeutet "Windows ist kein Echtzeitbetriebssystem"?

16923
Chad Harrison

Ich bin auf eine Anwendung namens LatencyMon gestoßen, die scheinbar Latenzüberwachung durchführt .

Ich habe immer verstanden, dass das System mit zunehmender Belastung des Prozessors weniger ansprechbar oder latenter wird. Im zweiten Abschnitt der LatencyMon-Seite heißt es jedoch im ersten Satz: "Windows ist kein Echtzeitbetriebssystem" (RTOS). Das hat mich zum Nachdenken gebracht. Ich meine, unterscheidet sich das von anderen Betriebssystemen wie Linux, Unix oder Mac OS X?

Gibt es "Echtzeit" -Betriebssysteme? Oder ist es nur ein Marketingprogramm, das Sie dazu bringt, ihr Produkt zu kaufen?

BEARBEITEN:

Gibt es auch ein paar Beispiele für RTOS?

19
QNX ist zum Beispiel Echtzeit. new123456 vor 12 Jahren 4

3 Antworten auf die Frage

20
Shinrai

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

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

Ein Schlüsselmerkmal eines Echtzeitbetriebssystems ist der Grad seiner Konsistenz hinsichtlich der Zeit, die es dauert, um die Aufgabe einer Anwendung anzunehmen und abzuschließen. Die Variabilität ist Jitter. Ein hartes Echtzeitbetriebssystem hat weniger Jitter als ein weiches Echtzeitbetriebssystem. Das Hauptziel des Designs ist nicht ein hoher Durchsatz, sondern eine Garantie für eine weiche oder harte Leistungskategorie. Ein Echtzeitbetriebssystem, das eine Frist normalerweise oder allgemein einhalten kann, ist ein weiches Echtzeitbetriebssystem, aber wenn es eine deterministische Frist einhalten kann, ist es ein hartes Echtzeitbetriebssystem.

Ein RTOS verfügt über einen erweiterten Algorithmus für die Planung. Die Scheduler-Flexibilität ermöglicht eine breitere Koordinierung der Prozessprioritäten auf dem Computersystem, ein Echtzeitbetriebssystem ist jedoch häufiger für einen engen Satz von Anwendungen vorgesehen. Schlüsselfaktoren in einem Echtzeitbetriebssystem sind eine minimale Interrupt-Latenz und eine minimale Thread-Switch-Latenz; Ein Echtzeitbetriebssystem wird eher für die Schnelligkeit oder die vorhersehbare Reaktion als für die Menge an Arbeit geschätzt, die es in einem bestimmten Zeitraum leisten kann.

Dies ist etwas, was nur wenige Betriebssysteme tatsächlich tun, weil es für viele Workloads einfach weniger effizient ist. Keines der wichtigsten Consumer-Betriebssysteme ist jetzt (oder war meines Wissens jemals) in Echtzeit. Leider bedeutet das manchmal, dass Dinge in einer Umgebung, die nicht in Echtzeit ist, auf andere Dinge warten müssen. Dies wird nur dann zu einem Problem, wenn etwas im Allgemeinen nicht in angemessener Zeit nachgibt.

Derzeit sind die bekanntesten und am weitesten verbreiteten Echtzeitbetriebssysteme:

LynxOS OSE QNX RTLinux VxWorks Windows CE 

In der Liste der Echtzeitbetriebssysteme finden Sie eine umfassende Liste.

Echtzeitbetriebssysteme werden normalerweise in sehr speziellen Rollen verwendet, beispielsweise in äußerst präzisen Steuerungssystemen, bei denen eine Entscheidung / Berechnung / etc in einem sehr genauen Zeitrahmen abgeschlossen werden muss. Lamar B vor 12 Jahren 6
Gibt es Beispiele für RTOS? Aktualisieren Sie die Frage in dieser Hinsicht. Chad Harrison vor 12 Jahren 0
http://en.wikipedia.org/wiki/Real-time_operating_system#Examples ta.speot.is vor 12 Jahren 0
Was @ ta.speot.is gesagt hat - es gibt einige, die in dem Artikel bereits verlinkt sind. Ich werde aber einiges bearbeiten. Shinrai vor 12 Jahren 0
Ich habe es nicht bis zum Ende der Wiki-Seite gemacht ... Entschuldigung, dass: / Chad Harrison vor 12 Jahren 0
@hydroparadise Was mir immer in den Sinn kommt, sind einige der Rovers, die auf dem Mars operieren, auf denen VxWorks läuft. Bodenständiger ist das kanonische Beispiel für die Antiblockierbremse (ABS) Ihres Autos. Beide offensichtlichen Problemregime, die deterministische Garantien erfordern, die letztendlich in Silizium / Firmware geerdet werden müssen. Glenn Slayden vor 7 Jahren 0
17
Scott C Wilson

Echtzeit-Betriebssysteme werden häufig für eingebettete Systeme verwendet, bei denen sie beispielsweise für die Steuerung oder Systemüberwachung verantwortlich sind. Das Wichtigste an einem Echtzeitsystem (und was unterscheidet es von einem Nicht-Echtzeitsystem) ist, dass in einem Echtzeitsystem eine verspätete Antwort falsch ist. Wie das funktioniert, können Sie leicht nachvollziehen, indem Sie eine Reihe von Zahlen in Excel zusammenfassen (bei verspäteter Operation gibt es keine wirklichen Auswirkungen), anstatt eine Bremse in einem Auto anzulegen (wo eine Verzögerung katastrophal sein könnte).

10
LawrenceC

Grundsätzlich kann ein RTOS garantieren, dass es einen IRQ (Interrupt Request) in einem bestimmten (normalerweise niedrigen) Zeitrahmen bedienen kann. Standardbetriebssysteme bieten keine solche Garantie.

In den meisten modernen Systemen können die meisten Geräte einen IRQ erzeugen. Dadurch stoppt die CPU ihre Arbeit und führt ein Interrupt-Service-Programm aus. Die Idee ist, dass dieses Serviceprogramm alles tut, was das Gerät benötigt, dh es werden Daten vom Gerät in den RAM geladen, dem Gerät mitgeteilt, was als nächstes zu tun ist usw.

Da unter x86 nur eine IRQ-Leitung in der CPU vorhanden ist, werden beim Unterbrechen eines Interrupts automatisch weitere Interrupts deaktiviert (mit Ausnahme von NMI, RESET und SMI), bis die CPU die Interruptquelle bestätigt und sie wieder aktiviert. Gute Gerätetreiber unter Standard i386 / amd64 Windows werden in diesem Zustand nur minimale Verarbeitungsvorgänge ausführen, sodass Interrupts wieder aktiviert werden können und die vollständige Verarbeitung des Interrupts dann auf einen späteren Zeitpunkt verschoben werden kann (da das System technisch nur 1 Interrupt pro CPU verarbeiten kann Kern zu einer Zeit). Ich bin nicht sicher, aber ich glaube, dass Linux dasselbe tut. Trotzdem kann keine feste Garantie dafür gegeben werden, zu welcher Zeit der Interrupt gewartet wird.

Bei den meisten PC-Geräten (z. B. Festplatten, Tastaturen, NICs) kann es bei einer geringfügigen Verzögerung bei der Ausführung ihres IRQ zu nichts anderem als einem Leistungsverlust kommen. 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 mithalten muss.

Könnten Sie erklären, was Sie mit "x86 hat nur eine IRQ-Leitung" meinen? Das letzte Mal, als ich einen 80186-Computer (freilich vor Jahrzehnten) mit Draht umwickelt hatte, erinnere ich mich offenbar daran, 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 vor 7 Jahren 0
Sie benötigen den PIC genau deshalb, weil der x86 nur eine IRQ-Leitung hat. Wenn x86-Interrupts deaktiviert sind, kann der PIC nur warten, bis die CPU sie wieder aktiviert, und IIRC macht genau das. Andere IIRC-CPUs wie der 68000 hatten drei Interrupt-Pins und erwarteten eine codierte Prioritätsstufe 0-7 direkt auf der CPU selbst. Obwohl ich jetzt darüber nachdenke, deaktiviert der 68000 möglicherweise auch alle Interrupts, wenn ein IRQ empfangen wird. Ich habe den 68000 nie programmiert. LawrenceC vor 7 Jahren 0
Ah ja, jetzt erinnere ich mich. Und IIRC, der vorrangige Aspekt des 8259-Chip-Designs - durch die Möglichkeit der Verschachtelung von IRQs - sollte das Betriebssystem dazu anregen, Interrupts so wenig wie möglich oder gar nicht zu deaktivieren, aber die PC-Interrupt-Leitungen wurden willkürlich zugewiesen, um dies zu verhindern Ansatz? So oder so, sicherlich unter CLI eine beträchtliche Menge Code aufrufen ... STI war nie die Absicht. Glenn Slayden vor 7 Jahren 0