6
votes

Comment les OSES traitent-ils la commutation de contexte?

Comme je peux comprendre, chaque système d'exploitation doit avoir un mécanisme de vérification périodique s'il doit exécuter certaines tâches et suspendre les autres.

Un moyen serait une sorte de minuterie sur l'expiration de laquelle le système d'exploitation vérifiera s'il doit exécuter / suspendre une tâche.

Généralement, disons sur un système de bras qui serait probablement une sorte d'ISR.

Ma vraie question est que j'ai pu uniquement visualiser cela et ne pas le voir quelque part. Peut-on personnaliser un code RTOS gratuit / ouvert sur lequel je peux réellement voir le code qui gère la préemption / planification?


0 commentaires

3 Réponses :


1
votes

Vous pouvez regarder XV6 .
Ce n'est pas un RTO, il ne s'agit que d'un système d'exploitation squelette (basé sur V6 UNIX) destiné à un objectif académique.
Dans le XV6 Réserver Jetez un coup d'œil au chapitre 4, Il y a une explication avec le code de la manière dont la planification est effectuée sur un petit système d'exploitation comme xv6.xv6 met un processus à dormir lorsqu'il attend un disque ou une opération d'E / S, il existe également une minuterie interrupte chaque 100 msec pour changer de processus .
Il existe également des explications avec le code sur la manière dont la commutation de contexte a lieu, quelles informations sont enregistrées (cadre de contexte d'un processus), la manière dont le commutateur d'utilisateur au mode de noyau se produit lorsque le planificateur doit fonctionner.
La meilleure partie est que la quantité de lecture que vous devez faire pour comprendre ces concepts est très moins différente de ce livre de référence sur le système d'exploitation :) Le code est relativement petit, vous pouvez infuser Exécuter le XV6 sur les points d'arrêt de QEMU sur SCHAND, SWTCH et Autres fonctions et voir réellement les informations enregistrées lors d'un commutateur de contexte. (Comment exécuter Xv6 dans ce lien )
Vous n'avez pas à lire les chapitres précédents pour comprendre le chapitre4. Il n'ya pas beaucoup de dépendance, XV6 utilise Structure ProC pour identifier un processus, pTable pour tout le processus de fonctionnement actuel dans le système, procjour> Conext -Refers à l'état du processus (enregistrez la valeur, etc.), ceci est enregistré par le planificateur . Acclamations :)


0 commentaires

4
votes

freseros.org . L'ensemble du système d'exploitation est open source et là-bas pour que vous puissiez voir. Et il y a des dizaines de ports différents pour comparer et contraster. Pour le code de commutation de contexte, vous souhaitez consulter dans le répertoire des ports, dans l'un quelconque des nombreux fichiers appelés port.c, port.asm, etc. et oui, dans le cas de Freertos, tous les commutateurs contextuels sont effectués en interruptions (A Tirez la minuterie ISR ou toute autre interruption SYSCALL).

Un commutateur de contexte est très spécifique à un processeur, car la liste des registres à enregistrer et le code de montage pour les sauver varie entre les familles de processeur et parfois dans une famille donnée. En conséquence, chaque port a un fichier séparé pour ce code.

Le planificateur (sélection de la prochaine tâche à exécuter), d'autre part, est effectué dans un fichier appelé TâchesC.C , qui est commun à tous les ports et références du code spécifique au port.


0 commentaires

3
votes

Ce n'est pas le cas que d'un RTOS Simplement contexte change périodiquement - c'est ainsi que la plupart des logiciels de GPO fonctionnent. Dans un RTO, le planificateur est exécuté sur n'importe quel événement de planification. Celles-ci incluent la coche système, mais aussi un message de message, une gâchette d'événement, un sémaphore donner ou un déverrouillage mutex par exemple.

sur bras cortex-m the CMSIS 3.x comprend une API RTOS (destinée principalement aux développeurs RTOS plutôt que sur une RTO complète elle-même), la source de ceci inclura un mécanisme de commutation de contexte.

Si vous souhaitez une description détaillée pour un simple RTO, vous pouvez envisager de lire μC / OS-II: Le noyau en temps réel ou le μC / OS-III: Le noyau en temps réel .

Freertos est de plus en plus populaire, bien que peut-être un peu non conventionnel architectural. Un plus complet (en ce que ce n'est pas simplement un noyau de planification, mais un système d'exploitation plus complet) et une option très puissante est ECOS .


0 commentaires