Was sind die Vorteile eines nicht präventiven Betriebssystems im Vergleich zu hausgemachtem Code mit Hintergrundschleife und Timer-Interrupt-Architektur? Welche dieser Vorteile sind attraktiv genug für ein Projekt, um ein nicht präventives Betriebssystem einzuführen, anstatt selbst erstellten Code mit Hintergrundschleifenarchitektur zu verwenden?
.
Erklärung zur Frage:
Ich schätze es wirklich, dass alle meine Fragen beantwortet haben. Ich habe das Gefühl, die Antwort ist fast da. Ich füge diese Erklärung meiner Frage hier hinzu, die meine eigene Überlegung zeigt und dazu beitragen kann, die Frage einzugrenzen oder genauer zu machen.
Ich versuche zu verstehen, wie man das am besten geeignete RTOS für ein Projekt im Allgemeinen auswählt.
Um dies zu erreichen, hilft ein besseres Verständnis der Grundkonzepte und der attraktivsten Vorteile der verschiedenen RTOS-Arten und des entsprechenden Preises, da es nicht für alle Anwendungen das beste RTOS gibt.
Ich habe vor ein paar Jahren Bücher über OS gelesen, aber ich habe sie nicht mehr dabei. Ich habe im Internet gesucht, bevor ich meine Frage hier gepostet und festgestellt habe, dass diese Informationen am hilfreichsten sind: http://www.ustudy.in/node/5456 .
Es gibt viele andere hilfreiche Informationen wie die Einführungen in die Website verschiedener RTOS, Artikel zum Vergleich von vorbeugender Planung und nicht vorbeugender Planung usw.
Ich habe jedoch kein Thema gefunden, in dem erwähnt wurde, wann ein nicht präemptives RTOS ausgewählt werden soll, und wann es besser ist, einfach mit Timer-Interrupt und Hintergrundschleife eigenen Code zu schreiben.
Ich habe zwar meine eigenen Antworten, bin aber damit nicht zufrieden genug.
Ich würde wirklich gerne die Antwort oder Meinung von erfahreneren Leuten erfahren, insbesondere in der Industriepraxis.
Mein bisheriges Verständnis ist:
Unabhängig von der Verwendung oder Nichtverwendung eines Betriebssystems sind bestimmte Planungscodes immer erforderlich, auch in Form von Code wie:
in the timer interrupt which occurs every 10ms
if(it's 10ms)
{
call function A / execute task A;
}
if(it's 50ms)
{
call function B / execute task B;
}
Vorteil 1:
Ein nicht präemptives Betriebssystem legt den Weg / Programmierstil für den Planungscode fest, sodass Ingenieure dieselbe Ansicht verwenden können, auch wenn sie sich zuvor nicht in demselben Projekt befanden. Mit der gleichen Sicht auf die Konzeptaufgabe können Ingenieure dann verschiedene Aufgaben bearbeiten und testen und sie so weit wie möglich unabhängig voneinander profilieren.
Aber wie viel können wir wirklich davon profitieren? Wenn Ingenieure im selben Projekt arbeiten, können sie die gleiche Ansicht auch ohne ein nicht präemptives Betriebssystem verwenden.
Wenn ein Ingenieur aus einem anderen Projekt oder Unternehmen stammt, hat er den Vorteil, dass er das Betriebssystem bereits kannte. Aber wenn er es nicht getan hat, scheint es keinen großen Unterschied für ihn zu machen, ein neues Betriebssystem oder einen neuen Code zu erlernen.
Vorteil 2:
Wenn der Betriebssystemcode gut getestet wurde, spart dies Zeit beim Debuggen. Das ist wirklich ein guter Vorteil.
Aber wenn die Anwendung nur ungefähr 5 Aufgaben hat, ist es meiner Meinung nach nicht sehr umständlich, eigenen Code mit Timer-Interrupt und Hintergrundschleife zu schreiben.
Ein nicht präemptives Betriebssystem wird hier als kommerzielles / freies / Legacy-Betriebssystem mit einem nicht präemptiven Scheduler bezeichnet.
Bei der Beantwortung dieser Frage denke ich hauptsächlich an bestimmte Betriebssysteme wie:
(1) KISS Kernel (Ein kleines RTOS ohne Prävention - behauptet von seiner Website)
http://www.frontiernet.net/~rhode/kisskern.html
(2) uSmartX (Leichtgewichtiges RTOS - wird von seiner Website beansprucht)
(3) FreeRTOS (Es ist ein präemptives RTOS, aber
meines Wissens kann es auch als nicht präemptives RTOS konfiguriert werden.) (4) uC / OS (ähnlich wie FreeRTOS)
(5 ) Legacy-OS / Scheduler-Code in einigen Unternehmen (normalerweise von der Firma selbst erstellt und verwaltet)
(Weitere Links können nicht hinzugefügt werden, da das neue StackOverflow-Konto eingeschränkt ist.)
Soweit ich weiß, ist ein nicht präemptives Betriebssystem eine Sammlung dieser Codes:
(1) ein Scheduler, der eine nicht präemptive Strategie verwendet.
(2) Einrichtungen für Kommunikation zwischen Aufgaben, Mutex, Synchronisation und Zeitsteuerung.
(3) Speicherverwaltung.
(4) Andere hilfreiche Funktionen / Bibliotheken wie Dateisystem, Netzwerkstapel, GUI usw. (FreeRTOS und uC / OS stellen diese zur Verfügung, aber ich bin mir nicht sicher, ob sie noch funktionieren, wenn der Scheduler als nicht präemptiv konfiguriert ist.)
Einige von Sie sind nicht immer da. Aber der Scheduler ist ein Muss.