Pour un microcontrôleur métallique nu, par rapport au code maison avec boucle d'arrière-plan et architecture d'interruption du minuteur, quels sont les avantages d'un système d'exploitation non préemptif? Quels sont ces avantages suffisamment intéressants pour qu'un projet adopte un système d'exploitation non préemptif, plutôt que d'utiliser du code maison avec une architecture de boucle d'arrière-plan?
.
Explication de la question:
J'apprécie vraiment tous ceux qui ont répondu à ma question. Je sens que la réponse est presque là. J'ajoute cette explication à ma question ici qui montre ma propre considération et peut aider à affiner la question ou à la rendre plus précise.
Ce que j'essaie de faire, c'est de comprendre comment choisir le RTOS le plus approprié pour un projet en général.
Pour y parvenir, une meilleure compréhension des concepts de base et des avantages les plus attractifs des différents types de RTOS et du prix correspondant aidera, car il n'y a pas de meilleur RTOS pour toutes les applications.
J'ai lu des livres sur OS il y a quelques années mais je ne les ai plus avec moi. J'ai cherché sur Internet avant de poster ma question ici et j'ai trouvé cette information très utile: http://www.ustudy.in/node/5456 .
Il existe de nombreuses autres informations utiles telles que les introductions sur le site Web de différents RTOS, des articles comparant la planification préventive et la planification non préemptive, etc.
Mais je n'ai trouvé aucun sujet mentionné quand choisir un RTOS non préemptif et quand il est préférable d'écrire votre propre code en utilisant une interruption de minuterie et une boucle d'arrière-plan.
J'ai certaines réponses, mais je n'en suis pas assez satisfait.
J'aimerais vraiment connaître la réponse ou le point de vue de personnes plus expérimentées, en particulier dans la pratique de l'industrie.
Jusqu'à présent, ma compréhension est la suivante:
peu importe que vous utilisiez ou non un système d'exploitation, certains types de codes de planification sont toujours nécessaires, même sous forme de code comme:
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;
}
Avantage 1:
un système d'exploitation non préemptif désigne le chemin / style de programmation pour le code de planification, afin que les ingénieurs puissent partager la même vue même s'ils n'étaient pas dans le même projet auparavant. Ensuite, avec la même vue sur la tâche conceptuelle, les ingénieurs peuvent travailler sur différentes tâches et les tester, les profiler de manière indépendante autant que possible.
Mais combien pouvons-nous vraiment gagner de cela? Si les ingénieurs travaillent dans le même projet, ils peuvent trouver un moyen de bien partager la même vue sans utiliser un système d'exploitation non préemptif.
Si un ingénieur appartient à un autre projet ou entreprise, il en bénéficiera s'il connaissait le système d'exploitation auparavant. Mais s'il ne l'a pas fait, encore une fois, cela ne semble pas faire une grande différence pour lui d'apprendre un nouveau système d'exploitation ou un nouveau morceau de code.
Avantage 2:
si le code du système d'exploitation a été bien testé, cela permet de gagner du temps du débogage. C'est vraiment un bon avantage.
Mais si l'application n'a que 5 tâches, je pense que ce n'est pas vraiment compliqué d'écrire votre propre code en utilisant une interruption de minuterie et une boucle d'arrière-plan.
Un système d'exploitation non préemptif est ici référencé à un système d'exploitation commercial / gratuit / hérité avec un planificateur non préemptif.
Lorsque j'ai posté cette question, je pense principalement à certains systèmes d'exploitation comme:
(1) KISS Kernel (A Small NonPreemptive RTOS - revendiqué par son site Web)
http://www.frontiernet.net/~rhode/kisskern.html
(2) uSmartX (RTOS léger - revendiqué par son site Web)
(3) FreeRTOS (C'est un RTOS préemptif, mais si je comprends bien, il peut également être configuré comme un RTOS non préemptif)
(4) uC / OS (similaire à FreeRTOS)
(5 ) code OS / planificateur hérité dans certaines entreprises (généralement créé et géré par l'entreprise en interne)
(Impossible d'ajouter plus de liens en raison de la limitation du nouveau compte StackOverflow)
Si je comprends bien, un système d'exploitation non préemptif est une collection de ces codes:
(1) un planificateur utilisant une stratégie non préemptive.
(2) des installations pour la communication entre les tâches, le mutex, la synchronisation et le contrôle du temps.
(3) gestion de la mémoire.
(4) autres installations / bibliothèques utiles comme système de fichiers, la pile réseau, l' interface graphique et etc. (FreeRTOS et uC / OS offre ces, mais je ne sais pas s'ils encore du travail lorsque le planificateur est configuré comme non préemptif)
Certains ils ne sont pas toujours là. Mais l'ordonnanceur est un incontournable.