Systèmes d`exploitation

Transcription

Systèmes d`exploitation
2014-12-04
Systèmes d’exploitation Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Plan
• Introduction aux systèmes d'exploitation embarqués
– comparaison avec les systèmes d'exploitation de bureau
– caractéristiques des systèmes d'exploitation embarqués
• Introduction aux SE en temps réel
– exigences pour un SE d'être en temps réel – Classification des SETR (RTOS) • Introduction à MQX, SYS/BIOS et exemples de code
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
1
2014-12-04
Système d’exploitation
• Ensemble de logiciels pour gérer les ressources matérielles d’un système ordiné
• Forme une interface entre les applications et le matériel
– Pilotes des périphériques
– Fonctions de service pour les applications • Consiste en un noyau entouré de modules optionnels
– Les versions de bureautique incluent minimalement des fonctions de gestion du clavier, de l’écran et d’un système de fichiers sur disque
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Composants d’un SE
 on distingue principalement : • Le noyau (kernel) représentant les fonctions fondamentales du SE telles la gestion de la mémoire, des processus, des fichiers, des entrées‐sorties principales, et des fonctionnalités de communication. • L'interpréteur de commande (shell) pour communiquer avec le noyau via un langage de commande prédéfini
– Une version à ligne de commande alphanumérique coexiste souvent avec une version à interface graphique (GUI)
• Le système de fichiers (file system ou FS) permettant l’enregistrement de fichiers dans une arborescence.
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
2
2014-12-04
Topologie générale d’un SE
• Comprend trois couches logicielles entre les applications et le matériel
Applications
Plate-forme
Professionnelle
Biblio
Programmes
Base
Données
Services
Gestion
fichiers
Gestion
Horloge
Messagerie
Gestion
mémoire
Interface
HM
Noyau
Ordonnanceur
Gestion IT
Sémaphores
Matériel
Gestion
Objets
Gestion
MV
Pilotes
Gestion
Tâches
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Types de SE • Monoprocesseur, monotâche
– Le SE alloue le CPU (Central Processing Unit) à un seul programme à la fois. Tant que celui‐ci est en exécution, aucune autre application ne peut s’exécuter (MS‐DOS).
• Monoprocesseur, multitâche
– Le SE répartit le temps de CPU entre plusieurs tâches, en utilisant un mécanisme de préemption (WINDOWS, Unix, Mac OS). • Multiprocesseur, multitâche
– Le SE répartit l’exécution de tâches multiples sur plusieurs CPUs et assure leur synchronisation pour le partage des ressources (SE de type UNIX ou exécutifs à temps réel)
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
3
2014-12-04
Application, tâche et état
• Un programme (application) consiste en tâches qui travaillent de concert pour réaliser l’objectif visé • Le noyau place chaque tâche dans un de 4 états d’exécution possibles.
– Active : est en cours d’exécution (1 seule à la fois)
– Prête : en attente de temps CPU (il peut y avoir plusieurs)
– Suspendue : en attente d’un évènement pour passer à l’état prêt (il peut y en avoir plusieurs)
– Inactive: ne participe plus à l’activité du système (il peut y en avoir plusieurs)
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Dynamique des états
• Évolue suivant un automate logiciel à états finis
active
Terminer
inactive
Condition
d’attente
sélection
attente
préemption
Démarrer
tâche
Condition de
libération
Arrêter
tâche
Prêt
• L’information pertinente est sauvée dans des structures de contexte logicielles
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
4
2014-12-04
Contexte de tâche
• Structure comprenant les états des registres du CPU et des pointeurs de programme, données et pile, nom, priorité, droits d’accès, et état d’exécution courant • L’environnement d’exécution comprend : Task Control Block
Stack
Stack pointer
Registers
Task Priority
Rest of stack
Task state
Other task data
• Une zone de programme accessible en mode lecture
• Une zone de données accessible en mode lecture/écriture
• Une zone de pile pour stocker les informations temporaires,
accessible en mode lecture/écriture)
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Ordonnancement des tâches
• Une des fonctions majeures du noyau
• Fait par une entité logicielle qui intervient à chaque fois qu’une modification d’état doit avoir lieu – Alloue le CPU à une tâche parmi celles admissibles
– Gère le déblocage de tâches en attente et la commutation de tâches actives
• Mécanismes
– Préemption de la tâche active suite à un évènement
– Allocation de temps de CPU égalitaire aux tâches (round robin)
– Commutation de contexte programmée
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
5
2014-12-04
Le répartiteur (dispatcher)
• Réalise l’élection de la tâche active et le changement de contexte associé
Ordonnanceur
Processeur
Tâche élue
Répartiteur
File d’attente des
tâches suspendues
File d’attente des
tâches admissibles
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Commutation de tâche et commutation de contexte
• Commutation des tâches
– Arrêt du traitement de la tâche en cours au profit d’une autre
– Provoquée par • demande explicite de la tâche en cours (attente,..)
• décision de l’ordonnanceur (tâche plus prioritaire active)
• réponse prioritaire à un phénomène externe • Commutation de contexte
– Sauvegarde de l’état des registres du processus courant et restauration de l’état des registres d’un nouveau processus
– Effectuée lors d’un appel au noyau ou lors de l’occurrence d’une interruption
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
6
2014-12-04
Commutation de tâche et de contexte
•
Modèle préemptif
Recherche de la tâche en
attente de plus haute priorité
Restauration
Contexte tâche 2
Sauvegarde
Contexte tâche 1
tâche 2
tâche 1
Évènement
préemptif
Priorité
de tâche
temps
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Commutation de tâche et de contexte
•
Modèle non-préemptif
Recherche de la tâche en
attente de plus haute priorité
Changement d’état
de tâche 2 à prête
tâche 2
tâche 1
Évènement
non préemptif
Commutation de
contexte
Priorité
de tâche
temps
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
7
2014-12-04
Les critères de sélection
• L’ordonnanceur utilise une politique de sélection à contraintes :
–
–
–
–
Garantie à chaque tâche d’un temps de CPU donné
Respect de l’ordre de priorité entre tâche
Respect d’un temps de réponse donné
Préemption d’une tâche qui monopolise le processeur
• Généralement, l’invocation de l’ordonnanceur s’effectue sur :
– Mise en attente ou réveil d’une tâche
– Changement de priorité d’une tâche
– Réquisition du CPU au profit d’une tâche plus prioritaire
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Ordonnancement
• La manière de gérer les files de processus à une grande incidence sur les performances d’un système.
• LIFO (pile) ou FIFO (liste, file, queue)
– Les tâches actives sont organisées en files doublement chaînées par l’intermédiaire de leur descripteurs
Processus
en cours
Ordonnanceur
File des processus prêts
Tableau pointeur
vers les différentes
files
File des processus en
attente d’événements
File des processus en attente
sur sémaphore (mutex)
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
8
2014-12-04
Système
Codage
DOS
16 bits X
Windows3.1
16/32 bits X
non préemptif
X
coopératif
Windows95/98/
32 bits Me
Mono‐utilisateur Multi‐utilisateur Mono‐tâche
Multitâche
X
WindowsNT/200
32 bits
0
X
préemptif
WindowsXP
32/64 bits
X
préemptif
Windows7
32/64 bits
X
préemptif
Unix / Linux
32/64 bits
X
préemptif
MAC/OS X
32 bits
X
préemptif
VMS
32 bits
X
préemptif
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Système d’exploitation embarqué
• L’application de l’usager et le SE sont fusionnés en un seul logiciel • Caractéristiques :
– Le code du SE et celui de l’application résident dans de la mémoire non volatile
– La gestion des ressources est spécifique à celles présentes
– Moins de surcharge de traitement (overhead)
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
9
2014-12-04
SE de bureau vs. SE embarqué
• SE de bureau : l’application est compilée/assemblée séparément du SE
• SE embarqué : l’application est compilée/ assemblée et liée de concert avec le SE
– Au démarrage du système, l’application est lancée en premier; elle part le SE ensuite
– Seuls les composants du SE (services, routines, ou fonctions) requis par l’application sont ajoutés au code de l’application par l’éditeur de lien
(Dr Jimmy To, EIE, POLYU)
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Caractéristiques des SE embarqués
• Configurabilité nécessaire – Pas de SE pour tous, configurabilité nécessaire pour éviter les surcharges dues à du code non utilisé
• Techniques pour implémenter la configurabilité
– Forme triviale : ne pas inclure les fonctions non utilisées (fait par l’éditeur de liens)
– Compilation/assemblage conditionnel (directives #if et #ifdef)
– Évaluation et optimisation au moment de la compilation/assemblage
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
10
2014-12-04
Caractéristiques des SE embarqués
• Les pilotes de périphériques sont typiquement non inclus dans le noyau et laissés au développeur
– Les systèmes embarqués étant souvent dédiés à des applications spécifiques  les pilotes sont sous la responsabilité du développeur
• Dans le cas des SE du bureau, des dispositifs standards sont supposes toujours présents (disques, Ethernet, audio, etc.)  les pilotes font partie de la dernière couche basse du SE
Embedded OS
Standard OS
kernel
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Caractéristiques des SE embarqués
• Protection pas toujours obligatoire – Dû aux applications dédiées, les programmes non testés sont rares et le logiciel est considéré fiable
– Donc, pas besoin d’accès privilégiés aux d’E/S et les tâches s’en occupent
Par exemple, l’accès à une adresse d’e/s switch est fait par l’instruction mov register,switch
au lieu d’utiliser un appel au SE
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
11
2014-12-04
Caractéristiques des SE embarqués
• Les interruptions ne sont pas restreintes au seul SE
– Les programmes embarqués sont supposés être testés  pas besoin de protection contre les mauvais usages
– De plus, le contrôle efficace des ressources est requis  on peut démarrer et arrêter des tâches par interruptions  commutation de tâches plus efficace que des appels de service au SE
• Dans les SE standard, serait une source de non‐fiabilité
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Caractéristiques des SE embarqués
• Fonctionnement en temps réel typique
– Plusieurs systèmes embarqués opèrent en temps réel ‐> Le SE permet des temps de réponse déterministes (SETR ou RTOS)
• Caractéristiques générales d’un SETR:
–
–
–
–
–
Gestion de l’exécution de tâches multiples
Ordonnancement de tâches priorisé
Synchronisation des accès au matériel Déterminisme temporel
Gestion des interruptions
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
12
2014-12-04
Plan
• Introduction aux systèmes d'exploitation embarqués
– comparaison avec les systèmes d'exploitation de bureau
– caractéristiques des systèmes d'exploitation embarqués
• Introduction aux SE en temps réel (RTOS)
– exigences pour un SE d'être en temps réel – Classification des RTOS • Introduction à MQX et exemple de code
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Système à temps réel
• Système ordiné comprenant des tâches avec des contraintes temporelles.
• Garantit des réponses avec des échéances fixées (contraintes strictes) ou des temps de réponse bornés (contraintes relatives) • Exemples
▪
▪
▪
▪
Systèmes de contrôle de procédé : usines, centrales électriques;
Systèmes aéronautiques : guidage missiles, avions, satellites;
Équipements industriels : machines/outils, robots de production ;
Systèmes multimédia mobiles : webcam, réalité virtuelle
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
13
2014-12-04
Exécution déterministe • Comportement du SE prévisible et borné dans le temps
• Limite supérieure pour le temps d’exécution des services offerts
• Périodes de blocage des interruptions courtes (pour garantir le traitement à temps d’évènement critiques)
• Fourniture de services de durée prédéterminée et synchronisable
• Important si la synchronisation doit être maintenue avec une horloge externe
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Pour garantir le respect de limites temporelles: • les différents traitements ne dépassent pas leurs limites temporelles  vérifié à l'aide d’un test d'acceptabilité
• Une tâche est généralement caractérisée par un temps de calcul Ci, et par une période d’exécution Ti. • Pour tout système de n tâches : • Une valeur > 1 signifie un temps d'exécution > à ce que le uP
peut fournir.
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
14
2014-12-04
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Modèle de système en temps réel
Modèle de tâches périodiques
Les paramètres sont connus à priori
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
15
2014-12-04
Modèle en temps réel (suite)
Modèle temporel
le plus utilisé
Efficace
Plus d’espace temporel
ex. exécution cyclique
0
3
6
0
3
6
Modèle par priorité
Priorité dynamique
ex. “earliest deadline first” Priorité statique
ex. “rate monotonic”
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Monjy Rabemanantsoa
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
32
16
2014-12-04
I/O Perils
Task 1
“Hi There”
Terminal
Task 2
“HHio wTdhyere”
“Howdy”
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Fonctions du noyau RTOS
• Gestion de :
– CPU
Resources
– Mémoire
– Horloges de temporisation
– Exécution des tâches (lancement, suspension, arrêt, reprise, etc.)
– Communication et synchronisation inter tâches
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
17
2014-12-04
Pourquoi utiliser un RTOS?
• Concentration sur l’application, et non sur l’exécution de tâches – Gestion automatique du temps de CPU entre unités d’exécution (threads), suivant un critère de sélection prédéfini (priorité ou autre)
– Synchronisation de l’accès aux ressources
• Ajout/retrait de modules fonctionnels sans modifier l’application existante
• Services aux périphériques quand disponibles, incluant des protocoles de communication: – TCP/IP, USB, serveurs Web, WI‐FI, communication CAN, etc.
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Classification des RTOS
• RTOS à noyau RT
– Généralement conçu pour la rapidité de réponse.
– Peut être inadapté aux systèmes complexes, car priorisation de la rapidité sur la prédictibilité
– En général propriétaire : QNX, PDOS, VCOS, VTRX32, VxWORKS
• SE standard à noyau non‐RT modifié
– Extension RT gère l’exécution des tâches et considère le noyau standard comme l’une d’elles pour les réponses en temps réel
• Interface de programmation d’applications (API) standard versus dédiés
– p. ex. POSIX extension‐RT d’Unix, ITRON, OSEK
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
18
2014-12-04
Ex.: RT‐Linux
Init
Bash
Mozilla
• RT‐tasks
ne peuvent pas utiliser d’appels SE standard (www.fsmlabs.com)
scheduler
Linux-Kernel
RT-Task
RT-Task
driver
interrupts
I/O
RT-Linux
RT-Scheduler
interrupts
interrupts
Hardware
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Ex.: Posix RT‐extensions à Linux
• Le céduleur POSIX remplace le céduleur standard pour implémenter des priorités d’exécution en temps réel
RT-Task
RT-Task
Init
Bash
Mozilla

POSIX 1.b scheduler
Linux-Kernel
driver

Appels au SE temps réel
et standard disponibles
Programmation facile,
mais sans garantie de
respect absolu des délais
I/O, interrupts
Hardware
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
19
2014-12-04
Plan
• Introduction aux systèmes d'exploitation embarqués
– comparaison avec les systèmes d'exploitation de bureau
– caractéristiques des systèmes d'exploitation embarqués
• Introduction aux SE en temps réel
– exigences pour un SE d'être en temps réel – Classification des SETR (RTOS) • Introduction à MQX, SYS/BIOS et exemples de code
39
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
MQX
• RTOS à temps réel de Freescale
• Gestion d’unités d’exécution multiples (threads)
organisées par priorité – Ordonnancement des tâches et gestion des états
– Gestion des interruptions
– Synchronisation des tâches par mutex, sémaphores, évènements, messages
– Gestion de la mémoire
– Services d’e/s
– Journal des activités
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
20
2014-12-04
Facilités offerte par MQX Requis
Optionnel
Les différent composants
forment un ensemble de
fichiers en c qui forment une
librairie liée à l’application de
l’usager et compilée dans le
même espace mémoire.
Seules les fonctions utilisées
sont incluses dans le code
exécutable
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Mutex « mutual exclusion »
Concept d’éviter que deux tâches concurrentes utilisent les ressources du système simultanément Mise en oeuvre par directive
•
•
Acquire_mutex;
Access_device;
Release_mutex;
•
Peut mener à la c’reation de goulots d’etranglement et de blocages de tâches si mal utilisé
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
21
2014-12-04
Sémaphores
•
Permettent la synchronisation de tâches
AtoD_Read (uint16 *result)
{
start ADC conversion
wait for semaphore
Read A/D
return result
}
ADC_ISR (void)
{
release semaphore
clear interrupt
}
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Files de messages
ISR Rx
File de messages
Port sériel
Tâche Rx
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
22
2014-12-04
Tâches dans MQX • Les applications sont organisées en tâches qui tournent à tout de rôle, avec une seule active (exécutée par le CPU) à tout moment
– MQX gère les commutations de contexte qui partagent le temps de CPU entre les tâches
• Contexte de tâche
– Structure logicielle définie pour chaque tâche et mémorisant ses registres, pointeur de pile, état et ressources propres lorsque la tâche n’est pas active
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Création de tâches
void main (void)
{
OSInit();
/* Kernel initialization */
OSTaskCreate(...); /* Task creation
OSTaskCreate(...);
OSStart();
*/
/* Start multitasking */
}
Syntaxe de micrim
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
23
2014-12-04
Hello World
#include <mqx.h>
#include <bsp.h>
#include <fio.h>
/* Task IDs */
#define HELLO_TASK 5
extern void hello_task(uint_32);
const TASK_TEMPLATE_STRUCT MQX_template_list[] = {
/* Task Index, Function, Stack, Priority, Name, Attributes, Parameters,
Time Slice */
{ HELLO_TASK, hello_task, 1500, 8, "hello",
MQX_AUTO_START_TASK, 0, 0 },
{ 0 }
};
void hello_task(uint_32 initial_data){
printf("Hello World\n");
_task_block();
}
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Hello World 2 (1/2)
#include <mqx.h>
#include <bsp.h>
#include <fio.h>
/* Task IDs */
#define HELLO_TASK
#define WORLD_TASK
5
6
extern void hello_task(uint_32);
extern void world_task(uint_32);
const TASK_TEMPLATE_STRUCT MQX_template_list[] = {
/* Task Index, Function, Stack, Priority, Name, Attributes, Parameters,
Time Slice */
{WORLD_TASK, world_task, 1000, 9, "world",
MQX_AUTO_START_TASK, 0, 0},
{HELLO_TASK, hello_task, 1000, 8, "hello", 0,0,0},
{ 0 }
};
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
24
2014-12-04
Hello World 2 on MQX (2/2)
/* world_task: create hello_task & print " World " */
void world_task(uint_32 initial_data) {
_task_id hello_task_id;
hello_task_id = _task_create(0, HELLO_TASK, 0);
if (hello_task_id == MQX_NULL_TASK_ID) {
printf ("\n Could not create hello_task\n");
} else {
printf(" World \n");
}
_task_block();
}
void hello_task(uint_32 initial_data) {
printf("\n Hello\n");
_task_block();
}
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
SYS/BIOS
• Exécutif de Texas Instruments (TI) pour les applications nécessitant un ordonnancement et synchronisation de tâches en temps‐réel
• Noyau échelonnable permettant la gestion d’unités d’exécution multiples avec commutation préemptive
• Abstraction du matériel
• Suivi de l’exécution en temps réel
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
25
2014-12-04
SYS‐BIOS
TI‐RTOS Kernel (ou SYS/BIOS) : librairie de services de TI que l’usager peut ajouter à son applicationpour gérer l’execution
de tâches multiples en temps réel




Gestion de la mémoire (stack, heap, cache)
Analyse en temps réel (logs, graphes, charges)
Ordonnancement (différent types de threads)
Synchronization (ex. sémaphores, évènements)
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Le noyau TI‐RTOS

Ordonnancement préemptif avec possibilité de changement dynamiques de priorités de tâches 
Opération pilotée par évènements : toute source d’interruption peut invoquer l’ordonnanceur.

Les méthodes du noyau sont orienté‐objet pour un couplage faible et une cohésion élevée.

L’orientation objet permet à la plupart des appels au noyau d’être déterministes quant au temps de réponse. 
Fonctions d’analyse en temps réel (ex. Logs) petites et rapides – permettant de les garder dans le code final
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
26
2014-12-04
Mode d’exécution avec TI ‐SYS/BIOS
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Exemple d’application
Audio
(100KHz)
Une application comprend deux tâches indépendantes à exécuter
KeyPad
(10 Hz)
TI MCU

Existe‐il des conflits possibles ?

Comment ordonnancer les deux tâches?

Existe‐il une priorité d’exécution?
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
27
2014-12-04
Solution 1 : super boucle
main()
{
while(1)
{
On met les deux tâches à l’intérieur d’une boucle infinie dans main()

Audio
Qu’en est‐il des deux contraintes de temps différentes ?
• Audio – 100kHz (10μs)
}
KeyPad
}
• KeyPad – 10Hz (100ms)

Que se passe‐il si une des tâches “affame” l’autre ou retarde sa réponse? Utiliser un temporisateur pour déclencher chaque tâche par interruption!
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Solution 2 – Interruptions
Chaque tâche est déclenché par un temporisteur dédié
TimerA_ISR()
{
read sample;
Audio
}
TimerB_ISR()
{
read keypad;
KeyPad
}
Audio
Keypad

Period
10μS
100ms
Compute
5μS
1ms
Usage
50%
1%
51%
Une interruption peut bloquer l’autre!
main()
{
while(1);
}
Interruption ratée
Comment prévenir cela?
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
28
2014-12-04
Solution 3 – IRQs emboitables
TimerA_ISR()
{
read sample;
Audio
}
TimerB_ISR()
{
read keypad;
KeyPad
}
main()
{
while(1);
}
Permettre des interruptions emboitables
(nested) pour la préemption
A
B

Les périphériques ont généralement des priorités préétablies, à moins d’utiliser un contrôleur spécialisé

Les routine d’IRQ de basse priorité doivent céder la place dans le code – difficile à suivre pour le débogage ou la validation
L’emboitage des irq est motivé par l’exécution
des tâches dans les routines de service
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Solution 4 ? – Processus et ISR séparés
TimerA_ISR()
{
read sample;
Audio
}
TimerB_ISR()
{
read keypad;
KeyPad
}
main()
{
while(1);
}

Même avec l’emboitage des IRQ, on peut
toujours rater des irq quand la tâche de plus haute priorité est executée
Hard
C/S Real
Nest? Time
(Read)
Process Data
C/R
Global ints disabled

On peut mitiger le problème est séparant la partie utile de la routine de service du reste
Hard
C/S Real Post
C/R
Nest? Time Swi
(Read)
Global ints disabled
Process Data
(in Software Interrupt)
rather than all this time
This is what the BIOS Scheduler is all about…
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
29
2014-12-04
Solution 4 – Ordonnancement par SYS/BIOS
Audio_ISR()
{
read sample;
post_Audio;
}
Keypad_ISR()
{
read keypad;
post_KeyPad;
}
main()
{
init_stuff;
while(1);
BIOS_start();
}
Hwi – Hardware INT
HI
• Context save/restore (done by BIOS)
Si on découple le traitement du déclencheur (Hwi):
• Hard real‐time “read”

• Post Swi for follow‐up
Swi – Software INT

• Posted by software
• PROCESS data

• User can select priority

Idle – Background
• Runs multiple fxns inside
of a while(1) loop
LO
La routine de service devient très courte (plus besoin d’emboitement) La priorité des tâches est fixée par logiciel On peut lancer autant de tâches que l’on veut Le code de chaque tâche demeure indépendant des autres
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
Création de tâche dans SYS/BIOS

Users can create threads (BIOS resources or “objects”):
• Statically (via the GUI or .cfg script)
• Dynamically (via C code) – more details in the “memory mgmt” chapter
• BIOS doesn’t care – but you might…
Dynamic (C Code)
Static (GUI or Script)
#include <ti/sysbios/knl/Swi.h>
Swi_Params swiParams;
app.c
Swi_Params_init(&swiParams);
swiParams.priority = 2;
Swi_create(ledToggle, &swiParams, NULL);
var Swi = xdc.useModule('ti.sysbios.knl.Swi');
var swi0Params = new Swi.Params();
app.cfg
swi0Params.instance.name = "MyNewSwi";
swi0Params.priority = 2;
Program.global.MyNewSwi = Swi.create("&ledToggle", swi0Params);
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
30
2014-12-04
Communications entre les tâches
Traduit et/ou adapté de matériel recueilli sur Internet, dont les notes de Chung-Ta King
31

Documents pareils