Vous avez raison, l'affirmation selon laquelle Unix ne convient pas aux applications en temps réel car un processus exécuté en mode noyau peut ne pas être préempté est partiellement vrai mais a besoin de clarification . Décomposons pourquoi:
Comprendre le problème
* Applications en temps réel: Les systèmes en temps réel nécessitent des garanties de synchronisation strictes. Une tâche doit se terminer dans un délai spécifique, quels que soient les autres processus exécutés sur le système.
* Mode du noyau: Lorsqu'un processus s'exécute en mode noyau, il a un accès direct au matériel et aux ressources du système. Ceci est nécessaire pour les tâches comme la gestion des interruptions ou la gestion des dispositifs d'E / S.
* Préemption: La préemption est la capacité du système d'exploitation à interrompre un processus en cours et à passer à une autre. Dans un système en temps réel, la préemption est cruciale pour garantir que les tâches de grande priorité ne sont pas retardées par les tâches de priorité plus faible.
Pourquoi l'instruction est partiellement vraie
La déclaration se concentre sur un problème critique dans les systèmes traditionnels de type UNIX. Le noyau, bien que responsable de la planification, n'est pas toujours préemptable. Cela signifie que:
1. DÉTENDES DE CODE DE VIEL: Si une fonction du noyau, même une priorité faible, prend trop de temps à exécuter, elle peut bloquer d'autres tâches, y compris les tâches en temps réel de grande priorité.
2. Da échéances manquées: Si une tâche en temps réel doit s'exécuter mais qu'une fonction de noyau le bloque, la date limite pour cette tâche pourrait être manquée.
pourquoi il est trop simplifié
* Tous les systèmes Unix ne sont pas les mêmes: Il existe des variations dans la façon dont les différents systèmes de type UNIX gèrent la préemption du noyau. Certains noyaux plus récents, comme Linux, ont introduit des techniques pour améliorer la préemption, ce qui les rend plus adaptés aux scénarios en temps réel.
* Extensions en temps réel: De nombreux systèmes de type UNIX ont des extensions en temps réel (comme POSIX en temps réel) qui traitent de cette limitation. Ces extensions fournissent:
* Planification basée sur la priorité: Les tâches en temps réel peuvent se voir attribuer des priorités plus élevées que les processus normaux.
* temporisateurs et délais: Les tâches en temps réel peuvent être associées à des délais et à des minuteries, permettant au système d'appliquer les contraintes de temps.
* grains préemptifs: Certaines extensions en temps réel incluent les noyaux préventifs pour garantir que les tâches de grande priorité ne sont pas retardées.
Conclusion
S'il est vrai que le manque de code du noyau préemptable dans certaines implémentations traditionnels de l'UNIX était un obstacle important pour les applications en temps réel, ce n'est pas une déclaration complète de la situation. Les systèmes modernes de type UNIX, en particulier avec les extensions en temps réel, ont apporté des améliorations significatives dans la résolution de ce problème. Cependant, pour les applications avec des exigences strictes en temps réel, le choix d'un système avec un noyau préventif et des extensions en temps réel est crucial.
|