web-dev-qa-db-de.com

Unterschied zwischen Embedded-Betriebssystem und Desktop-Betriebssystem

  1. Was ist der Unterschied zwischen einem eingebetteten Betriebssystem und einem Desktop-Betriebssystem?

  2. Ist es möglich, eine in Desktop Operating System erstellte Anwendung in Embedded Operating System zu laden?

  3. Angenommen, ich erstelle eine Anwendung in vc ++ und C # für die Bildverarbeitung mit Visual Studio und WindowXp Pro. Ist es möglich, die Anwendung in ein eingebettetes Betriebssystem zu laden?

40
subbu

Ein Desktop-Betriebssystem ist eine Software-Exekutive sowie üblicherweise Benutzer-Tools, mit denen beliebige Software ausgeführt werden kann, die in der Regel interaktiv sind (wenn auch nicht immer). Es neigt daz (wichtiges Wort, das), eine starke Ressourcennutzung, starke Schutzmechanismen (sowohl in Bezug auf die Sicherheit als auch in Bezug auf schlecht geschriebene Anwendungen, die andere Anwendungen und/oder das System nicht in den Papierkorb werfen) und einige davon mit sich zu bringen Form der Standardisierung für die Benutzeroberfläche.

Ein eingebettetes Betriebssystem führt das Spektrum aus. Bei großen, schwergewichtigen eingebetteten Systemen kann der Kern ein tatsächliches Desktopsystem sein (wie beispielsweise eingebettete Linux-Systeme). Die meisten eingebetteten Betriebssysteme sind jedoch kleiner, verwenden viel weniger Ressourcen, verfügen möglicherweise über weniger (oder gar keine) Schutzmechanismen und stellen in vielen (den meisten?) Fällen keine besonderen Anforderungen an Benutzeroberflächen.

Diese letzteren Arten von "Betriebssystemen" werden häufig stattdessen als "Executive" (wie in "Echtzeit-Multitasking-Executive" oder RMX) bezeichnet, da sie häufig nur das sind, was in Desktopsystemen als Kernel bezeichnet wird, und nur die Funktionen aktiviert haben, die Sie benötigen für den normalerweise festgelegten Satz von Anwendungen, die Sie im eingebetteten System ausführen. Sie liefern das Task-Switching, die Interrupt-Verarbeitung und die Prioritätsschemata und nicht viel mehr. Der Rest wird von einer festen Gruppe von Anwendungen bereitgestellt, die die eigentlichen Aufgaben der Problemdomäne ausführen.

Ob Sie für ein Desktop-Betriebssystem erstellte Software auf einem eingebetteten Betriebssystem ausführen können, hängt von mehreren Faktoren ab. Wenn das eingebettete Zielsystem dasselbe Betriebssystem ist, auf dem Sie entwickelt haben, und alle Funktionen aktiviert sind, die Ihre Anwendung verwendet (z. B. die CLR anhand Ihres C # -Beispiels), ist es möglicherweise möglich, Ihre Anwendung nativ auszuführen . Aber es ist nicht sehr wahrscheinlich.

Was ist der Unterschied zwischen einem eingebetteten Betriebssystem und einem Desktop-Betriebssystem?

Während es möglich ist, ein Allzweck-Betriebssystem wie Linux oder Windows 7 Embedded einzubetten, wird auf eingebetteten Systemen in der Regel ein Echtzeit-Betriebssystem (RTOS) ausgeführt. Diese unterstützen in erster Linie die Echtzeitreaktion und -planung. Sie sind in der Regel sehr viel kleiner oder zumindest sehr viel skalierbarer.

Meistens (wenn auch nicht immer) ist ein eingebettetes Betriebssystem eine Bibliothek, die statisch mit dem Anwendungscode verknüpft ist, um ein monolithisches Anwendungsimage zu erstellen. Dies unterscheidet sich von einem Desktop-Betriebssystem, das beliebigen Anwendungscode, der aus einem Dateisystem geladen wird, dynamisch laden und ausführen kann. Offensichtlich fallen Embedded Linux oder Windows Embedded nicht in diese Kategorie.

Ein typischer RTOS Kernel bietet nur Zeitplanungs-, Synchronisations- und prozessübergreifende Kommunikationsdienste. Alles andere muss von der Anwendung oder von optionalen oder zusätzlichen Bibliotheken und Treibern von Drittanbietern bereitgestellt werden.


Ist es möglich, eine in Desktop Operating System erstellte Anwendung in Embedded Operating System zu laden?

In der Regel werden Anwendungen für eingebettete Systeme auf einem Desktop-System durch einen Prozess erstellt, der als Cross-Compilation bezeichnet wird. Solche Anwendungen werden nicht auf dem Entwicklungshost ausgeführt. In ähnlicher Weise können Anwendungen, die auf einem Desktop-System ausgeführt werden sollen, nur auf einem eingebetteten System ausgeführt werden, auf dem dasselbe Betriebssystem und dieselbe Mikroprozessorarchitektur ausgeführt werden. Das heißt, eine Windows 7-Desktopanwendung kann unter Windows 7 Embedded ausgeführt werden, wenn das Zielsystem über die entsprechenden Ressourcen verfügt (z. B. wird eine GUI-Anwendung in einem System ohne Anzeige oder Zeigegerät nicht häufig verwendet).

In den meisten Fällen sind der Entwicklungshost und das eingebettete Ziel entweder durch das Betriebssystem oder die Hardwarearchitektur und normalerweise beide nicht kompatibel.


Angenommen, ich erstelle eine Anwendung in vc ++ und C # für die Bildverarbeitung mit Visual Studio und WindowXp Pro. Ist es möglich, die Anwendung in ein eingebettetes Betriebssystem zu laden?

Wenn auf dem Ziel Windows XP Embedded oder Windows 7 Embedded ausgeführt wird, ja, andernfalls nein.

Sie können auch mit VC++ oder C # WindowsCE und C # für .NET Micro für einen begrenzten Bereich von Nicht-x86-Zielen entwickeln. In diesen Fällen wird die ausführbare Zieldatei jedoch nur als Gerätesimulation auf dem Entwicklungshost ausgeführt.


Was ist der Vor- und Nachteil dieser beiden Betriebssysteme?

Embedded OS:

  • Skalierbarkeit
  • Echtzeitleistung (im Fall eines RTOS)
  • Breite Architekturunterstützung
  • Funktionen wie Dateisysteme, Netzwerke, GUI, USB, WiFi usw. werden normalerweise über Add-On-Optionen oder Bibliotheken von Drittanbietern bereitgestellt und sind möglicherweise nicht für alle Systeme verfügbar oder müssen vom Entwickler implementiert oder portiert werden.
  • Viele verschiedene und weitgehend inkompatible Systeme.

Desktop-Betriebssystem

  • Weniger skalierbar
  • Nicht echtzeitfähig oder nur eingeschränkt echtzeitfähig.
  • Umfassende Anwendungsunterstützung
  • Eine große Anzahl von Entwicklern
  • Nur drei Hauptakteure, von denen nur zwei einbettbar sind.
  • Große Auswahl an Entwicklungssprachen und Tools
  • Umfangreiche Unterstützung für Standard-Peripheriegeräte, Dateisysteme und Kommunikation.
  • Entwicklungshost und Zielumgebung können identisch sein.
19
Clifford

Embedded-Betriebssysteme sind für andere Zwecke konzipiert und steuern häufig bestimmte Geräte oder Prozesse (die keine Computer sind). Einige eingebettete Systeme haben spezielle Anforderungen, wie die Unterstützung von Echtzeitverarbeitung. Normalerweise erstellen Sie Anwendungen für eingebettete Systeme auf einem Desktop-Computer. Sie müssen jedoch Tools verwenden, die auf das eingebettete Betriebssystem/die eingebettete Hardware abzielen (häufig Cross-Compiler usw.).

4
dbrank0

Embedded ist in der Regel einfacher, da es nur die Software enthält, die für die Ausführung der Aufgabe erforderlich ist. Die Aufgabe ist normalerweise gut definiert, obwohl sich bei Telefonen und herunterladbaren Apps die Regeln ändern. Embedded muss zuverlässiger sein, Leute dulden ein Neustarten oder Ersetzen eines abgestürzten Computers, aber nicht ein Neustarten oder Ersetzen ihres Autocomputers oder Flugsteuerungssystems für einen Passagierjet.

Desktop ist super generisch, muss aktuelle Apps sowie Treiber und Apps ausführen, die noch geschrieben werden müssen. Aufgrund der breiteren Funktionen usw. sind sie sperriger und weniger zuverlässig.

Eingebettete Systeme verfügen in der Regel über begrenztere und statischere Ressourcen, während Desktops über wesentlich mehr Ressourcen verfügen und dynamisch sind. Sie können Festplatten, Speicher und Videos nach Belieben hinzufügen oder ändern, und Sie gehen davon aus, dass sie weiterhin funktionieren. Mit Embedded kontrolliert der Hersteller normalerweise alles und ein Teil der Zuverlässigkeit und Leistung ergibt sich aus der Beschränkung des Software-Supports auf genau einen Grafiktreiber oder eine kleine Anzahl von Geräten in einer Produktlinie (im Gegensatz zum Desktop muss alles von den 1980ern bis zur Gegenwart unterstützt werden) ).

Es ist durchaus möglich, Anwendungen zu schreiben, die in beiden Umgebungen funktionieren, ob Desktop-Linux oder Embedded-Linux oder Desktop-Windows oder Embedded-Windows. Normalerweise sollten Sie diese Portabilität einplanen und sich auf Funktionen beschränken, die für beide Plattformen gelten. Wenn Sie eine alte Desktop-App nehmen und versuchen, sie auf einer ähnlichen eingebetteten Plattform auszuführen, würde ich nicht erwarten, dass sie immer funktioniert. Ich würde einige Optimierungen und in einigen Fällen ein erneutes Schreiben erwarten.

4
old_timer

Ein Desktop-Betriebssystem ist ein Betriebssystem, das auf einem Desktop-Computer ausgeführt werden kann. Es verfügt über Treiber, Optimierungen und Schnittstellen (APIs und Benutzeroberflächen) für die Desktop-Nutzung.

Ein eingebettetes Betriebssystem ist dasselbe, jedoch für ein eingebettetes Gerät vorgesehen.

Abhängig von der Anwendung, dem Betriebssystem, der Hardware, den verwendeten Entwicklungstools und möglicherweise anderen Faktoren kann eine auf einem Desktop-Betriebssystem erstellte Anwendung möglicherweise auf ein eingebettetes Betriebssystem geladen werden. Aber es ist wahrscheinlich nicht, wenn die App entwickelt wurde, um den Unterschied zu bewältigen.

Der Vorteil eines Desktop-Betriebssystems besteht darin, dass es gut auf Desktop-Hardware ausgeführt werden kann. Der Vorteil eines eingebetteten Betriebssystems besteht darin, dass es auf eingebetteter Hardware gut läuft. Der Nachteil von beiden ist, dass sie möglicherweise nicht auf andere Hardware skaliert werden können.

2
Fred Foo