2014-09-16 9 views
25

RTOS und Embedded Linux werden für Embedded Systems Programmierung verwendet. Ist Embedded Linux selbst ein RTOS? Kann jemand bitte den Vergleich oder den Unterschied auflisten?Was ist der Unterschied zwischen RTOS und Embedded Linux?

+1

Ein RTOS (Echtzeitbetriebssystem) ist eine Software mit deterministischem Verhalten. Ereignisse werden innerhalb einer Zeitbeschränkung behandelt. Embedded Linux ist kein RTOS, da Ereignisse/Interrupts typischerweise von verzögerten Prozeduren oder "bottom half" -Code behandelt werden, die keine Latenz garantieren können. Es gab jedoch RTOS-Implementierungen von Linux für Embedded Linux. Ich denke, Wind River (Intel) liefert eine Version davon. –

+0

http://unix.stackexchange.com/questions/41133/what-are-the-main-differences-between-those-linux-distro-vs-general-daily-linux –

+0

"Echtzeit-Linux-Kernel wird verwendet. Kernel Antwort ist in Echtzeit oder ist deterministisch. " http://embeddedcraft.org/embedlinuxdesktoplinux.html – thePiGrepper

Antwort

38

Linux ist ein Allzweck-Betriebssystem (GPOS); Die Anwendung auf eingebettete Systeme wird in der Regel durch die Verfügbarkeit von Geräteunterstützung, Dateisystemen, Netzwerkkonnektivität und UI-Unterstützung motiviert. All diese Dinge können in einem RTOS verfügbar sein, aber oft mit weniger breiter Unterstützung oder mit zusätzlichen Kosten oder Integrationsaufwand.

Viele RTOS sind nicht volles Betriebssystem im Sinne von Linux, da sie aus einer statischen Link-Bibliothek bestehen, die nur Aufgabenplanung, IPC, Synchronisationstiming und Interrupt-Dienste und wenig mehr bietet - im Wesentlichen nur den Scheduling-Kernel. Eine solche Bibliothek ist mit Ihrem Anwendungscode verknüpft, um eine einzelne ausführbare Datei zu erzeugen, die Ihr System direkt (oder über einen Bootloader) startet. Die meisten RTOS unterstützen nicht direkt das dynamische Laden und Entladen von Code aus einem Dateisystem, wie dies bei Linux der Fall wäre - es ist alles beim Start und läuft bis zum Ausschalten.

Kritisch Linux ist nicht echtzeitfähig. Ein RTOS bietet Planungsgarantien, um deterministisches Verhalten und zeitnahe Reaktionsereignisse und Interrupts sicherzustellen. In den meisten Fällen geschieht dies durch einen Prioritäts-basierten Präventiv-Scheduling-Algorithmus, wobei die Task mit der höchsten Priorität immer sofort ausgeführt wird und jede Aufgabe mit niedrigerer Priorität vorwegnimmt, ohne eine bestimmte Ausbeute oder das Aufgeben der CPU oder den Abschluss einer Zeit -Scheibe.

Linux hat eine Reihe von Planungsoptionen, einschließlich eines Echtzeit-Schedulers, aber dies ist bestenfalls "weiche" Echtzeit - ein Begriff, den ich nicht mag, da er schlecht definiert ist und im Wesentlichen Echtzeit bedeutet der Zeit, aber manchmal nicht. Wenn Ihre Anwendung keine "harte" Echtzeit benötigt, ist das in Ordnung, aber typische Latenzzeiten in Echtzeit-Linux werden in der Größenordnung von einigen zehn oder hundert Mikrosekunden liegen, während ein typischer RTOS-Echtzeitkernel aus Latenzen von erreichen kann null bis einige Mikrosekunden. Ein weiteres Problem mit Embedded Linux ist, dass es erhebliche CPU-Ressourcen benötigt, vielleicht> 200MIPS, 32bit Prozessor, idealerweise mit einer MMU, 4MB ROM und 16MB RAM zum Booten (was einige Sekunden dauern kann). Ein RTOS kann auf Mikrocontrollern ab 8 Bit in Millisekunden in weniger als 10 Kb laufen. Dies kann einen erheblichen Einfluss auf die Systemkosten für die Massenproduktion haben, obwohl sie scheinbar "frei" ist.

Es gibt größere RTOS-Produkte, die einige Eigenschaften eines GPOS aufweisen, wie dynamisches Laden, Dateisysteme, Netzwerk, GUI (z. B. in QNX), und viele RTOS bieten eine POSIX-API (normalerweise sekundär zu ihrem nativen Real) -time API), zum Beispiel VxWorks und QNX, so dass sehr viel für Linux und Unix entwickelter Code relativ einfach portiert werden kann. Diese größeren, umfassenderen RTOS-Produkte bleiben skalierbar, sodass nicht benötigte Funktionen nicht enthalten sind. Im Vergleich dazu hat Linux eine weitaus begrenztere Skalierbarkeit.