SPECIFICITES DU TEMPS REEL DANS LES SYSTEMES D’EXPLOITATION • RAPPEL: Les systèmes d'exploitation comportent plusieurs couches • Niveau machine: les fonctions du micro-processeur sont cablées. Le mode utilisateur est accessible aux programmes de l'application, alors que le mode superviseur ne l'est pas. • Noyau: Ce niveau rassemble des extensions logicielles du niveau machine, et gère les interruptions et les tâches. • Exécutif: Ce niveau rassemble les logiciels nécessaires à l'exécution des programmes tel l'allocation de la mémoire, la gestion des fichiers et le pilotage des périphériques. • Application: ce sont les programmes spécifiques à une application • Les niveaux machine et noyau n'ont pas de spécificité temps réel car ces niveaux gèrent les interruptions et les tâches. • Ce sont donc les niveaux supérieurs qui vont offrir ou non les outils permettant de créer des applications multi-tâche et temps réel. • Les services d’un OS sont: – la communication entre tâches – la synchronisation entre tâches – la gestion des tâches (commencer, arrêter, suspendre,...) – ordonnancer les tâches (allouer la CPU à une tâche) (*) – gestion de la mémoire – gestion des interruptions et des E/S physiques (*) • Les services d’un OS sont: – gestion des E/S logiques et gestion des périphériques – gestion des fichiers – traitement des erreurs et exceptions – gestion du temps • Sur certains calculateurs spécialisés (appelés calculateur temps réel), certains services sont directement cablés sur les processeurs pour augmenter leurs performances. • IV- GESTION DES TÂCHES • Il existe deux classes de tâches: • les tâches IMMÉDIATES (extérieures, hard, routine d'interruption) • et les tâches DIFFÉRÉES (intérieurs, soft). • Une tâche immédiate (TI) s'exécute lors de l'arrivée d'une interruption sur le processeur. Ces tâches sont toujours plus prioritaires que les tâches différées. Ces tâches sont en général liées aux entrées sorties et doivent être les plus rapides possible. • Les tâches différées (TD) contiennent les traitements spécifiques à une application. Elles s'exécutent par l'intermédiaire d'instructions spécifiques. • Les tâches immédiates sont toujours plus prioritaires que les tâches différées. • La CPU est allouée en priorité aux tâches Immédiates • c'est le SYSTÈME D'INTERRUPTION qui s'en charge • - puis la CPU est allouée aux tâches différées qui sont gérées par L'ORDONNANCEUR. SYSTÈME D'INTERRUPTION • Une interruption est un signal physique qui est cablé sur le processeur (ou micro-processeur). • Un changement d'état de ce signal provoque une rupture de séquence du processeur, c'est-à-dire une mise en attente de la tâche différée en cours de traitement par la CPU au profit de la tâche immédiate associée à l'interruption. • Selon les processeurs, il peut exister plusieurs niveaux d'interruptions (classés en niveau de priorité), auxquels correspondent de façon bijective des tâches immédiates. • Une interruption de niveau supérieur peut interrompre une tâche immédiate de niveau inférieur. • La majorité des interruptions peuvent être masquées de façon globale ou sélective sur les différents niveaux existants. • Lorsque qu'une interruption parvient au processeur et qu'elle n'est pas masquée, la tâche immédiate correspondante est exécutée. • Il existe deux catégories d'interruption: les interruptions EXTERNES et les interruptions INTERNES. • Les interruptions externes sont issues des périphériques et sont donc liées à la gestion des entrées/sorties. • Les interruptions sont générées, soit parce que le périphérique est prêt (ex: travail demandé réalisé), soit sur des événements particuliers • Les interruptions internes proviennent du calculateur même et non des périphériques. • IT Horloge: une horloge est un dispositif matériel émettant une interruption systématique toutes les n secondes (ex: 10 me). Cette interruption permet de gérer le temps. • Elle permet la modification de l'ordonnancement des tâches différées, démarrage d'une tâche à une heure précise ou toutes les n secondes, datation des informations issues de l'extérieur. • L'horloge permet la modification de l'ordonnancement des tâches différées, démarrage d'une tâche à une heure précise ou toutes les n secondes, datation des informations issues de l'extérieur. • IT sur erreur (aussi appelée TRAP): • dépassement des capacités du processeur • division par zéro • instruction machine non conforme (après un mauvais branchement sur une portion de données par exemple) • IT logicielle (TRAP) qui correspond à l'appel d'un sous-programme qui sera exécuté en mode superviseur (appel à une routine système) • Mécanismes d'Interruption • Que se passe t-il lorsqu'une interruption non masquée parvient au processeur ? • La logique du processeur teste de façon cyclique les différents signaux, et ce uniquement entre chaque instruction. • les points d'interruptibilité ne sont présents qu'entre les instructions.. • Si dans la majorité des cas une interruption met en attente une tâche différée, il peut arriver qu'une interruption arrive pendant le traitement d'une tâche immédiate. Les règles suivantes sont appliquées: • 1) une tâche immédiate de niveau n en cours d'exécution ne sera jamais relancée si une nouvelle interruption de même niveau apparaît. Par contre, à la fin de son exécution, cette tâche immédiate sera de nouveau réexécutée. • 2) Si une tâche immédiate de niveau n est en cours d'exécution et qu'une interruption de niveau inférieur apparaît, la tâche immédiate associée ne sera exécutée qu'à la fin de la première. • Pour ne rater aucune interruption, un registre spécialisé non accessible par le programmeur les mémorise • Lors de l'arrivée d'une interruption, la CPU est affectée à la tâche immédiate associée. • Le processeur recopie dans certains de ses registres, et ce de façon automatique, des données placées en mémoire. Cette zone s'appelle "contexte de la tâche". Contexte d'une tâche • l'adresse en mémoire de la première instruction de la tâche immédiate, valeur recopiée dans le registre "compteur ordinal" (program counter). • la valeur du registre d'état de la tâche, valeur recopiée dans le registre d'état du processeur. • l'adresse de la pile de la tâche, valeur recopiée dans la pile du calculateur. • Quand le processeur a réalisé ces copies, l'unité d'exécution est relancée et donc la prochaine instruction exécutée est bien celle de la tâche immédiate. • Les contextes des tâches immédiates sont rassemblés dans un zone mémoire spécialisée appelée aussi mémoire débanalisée. Selon les constructeurs, cette zone est soit fixée une fois pour toute (en "haut" ou en "bas" de la mémoire), soit ne l'est pas et le programmeur place les contextes où il le souhaite. • Contexte étendu d'une tâche • Sur certains calculateurs, d'autres registres peuvent faire partie du contexte, notamment un registre d'accumulateur (les tâches immédiates étant associées aux entrées/sorties), il est en général nécessaire d'utiliser un accumulateur pour réaliser un transfert d'information. • Lors du traitement de la tâche immédiate, il est absolument nécessaire d'acquitter l'interruption, c'est-à-dire qu'il faut au minimum reconnaître quelle est la source de l'interruption et demander au périphérique qui l'a généré de faire retomber cette interruption. • Si cela n'est pas réalisé, à la fin de son traitement, la tâche immédiate se verrait de nouveau ré-exécutée. • Quand une tâche immédiate a terminé son traitement, elle exécute une instruction particulière (RTE ou RTI, ...) qui va permettre de relancer la tâche interrompue (tâche immédiate ou différée). • Pour faire cela, le système doit, avant d'interrompre une tâche,sauvegarder son contexte • V.4 Identification de la source d'une interruption externe • Pour traiter une interruption, il est nécessaire de déterminer quel est le périphérique qui l'a générée. Les méthodes utilisées dépendent des constructeurs et peuvent être classées en deux méthodes principales: l'identification directe et la scrutation (polling). • Identification directe: • Chaque coupleur (contrôleur du périphérique) est directement cablé à un niveau d'interruption du processeur. Comme chaque niveau d'interruption est associé à une seule tâche immédiate, le programmeur sait à l'avance que l'exécution d'une tâche est activée par un périphérique particulier. • L'avantage de cette méthode est la très grande rapidité de reconnaissance du périphérique générateur de l'interruption. • L'inconvénient réside dans le fait que le nombre de périphérique ne peut pas dépasser le nombre de niveaux d'interruption du processeur. • Scrutation (POLLING) • Le principe de cette méthode vise à dépasser le nombre limité d'interruptions du processeur en associant sur chaque niveau d'interruption plusieurs coupleurs. • La reconnaissance du périphérique se fait alors soit par logiciel, soit directement par le processeur. • Par logiciel, la tâche immédiate doit interroger successivement le registre d'état de chaque coupleur associé au niveau d'interruption pour connaître celui qui a levé l'interruption et la traiter. • Le programme impose de ce fait une priorité entre les différents coupleurs d'un même niveau. • Si deux coupleurs lèvent une interruption au même moment, la tâche immédiate associée sera exécutée deux fois. • Cette méthode, si elle est simple à mettre en œuvre, a le désavantage d'être relativement lente si le nombre de coupleurs est important. • Pour accélérer la scrutation, certains processeurs interrogent en même temps tous les coupleurs d'un même niveau, et ce par les bus d'adresse et par un signal spécialisé. • Celui qui a levé l'interruption s'identifie alors, sur le bus de données par exemple. Il est nécessaire qu'un circuit logique crée une priorité entre les périphériques pour éviter que la reconnaissance échoue si deux coupleurs d'un même niveau lèvent une interruption en même temps. • certains processeurs comme le 68.000, interrogent les périphériques qui leur renvoient un numéro de vecteur par le bus de données que le processeur interprète comme une adresse, cette dernière contenant l'adresse de la tâche immédiate (ou routine d'interruption). • Pour le 68.000, il existe 7 niveaux d'interruptions qui sont codés sur les pins IPLO, IPL1 et IPL2. Quand un coupleur lève une interruption, le processeur termine l'instruction en cours, réalise la sauvegarde dans la pile système du compteur ordinal et de la pile utilisateur, modifie le registre d'état (passage en mode superviseur et masquage des interruption de niveaux inférieurs), et place sur les pins A1, A2 et A3 (bus d'adresse) le niveau d'interruption qu'il a reconnu. • En réponse, le coupleur qui a levé l'interruption place sur le bus de données (DO à D7), un numéro de vecteur qui donne pour le microprocesseur l'adresse de la routine d'interruption. • L'acquittement d'une interruption consiste à indiquer au coupleur que le processeur a pris en compte le signal, et que ce dernier ne doit plus être généré (sinon, la tâche immédiate serait de nouveau exécutée). • En général, le processeur réalise cet acquittement, soit en lisant la donnée dans un des registres du coupleur, soit en envoyant une information dans un registre spécialisé du coupleur. • VI- GESTION DES TÂCHES DIFFEREES • la gestion des tâches immédiates : tâches dont l'exécution est liée essentiellement aux interruptions et donc aux entrées-sorties. • la gestion des tâches différées (TD), c'est-à-dire les tâches contenant les traitements de l'application. • Dans tous les cas, une tâche immédiate est prioritaire par rapport à une tâche différée. • VI.1- Etats des tâches différées • Chaque tâche différée est caractérisée par un état particulier. • La gestion de ces états est assurée par l'ordonnanceur (scheduler) qui assure la mise à jour de paramètres internes à l'exécutif. • Cet ordonnanceur assure aussi la gestion et la commutation des contextes associés à chacune des tâches différées. • une seule tâche différée peut être exécutée à la fois. • Si, pour différentes raisons, une tâche différée doit libérer la CPU au profit d'une autre, l'ordonnanceur assure la sauvegarde du contexte de la première (contexte qui cette fois contient l'ensemble des registres du processeur hormis les registres système tels que la 'pile système'), puis la restauration du contexte de la seconde.