CONCEPTION D'UN OS - ETAPE 2 Segmentation et Interruptions Configurer le processeur pour qu'il interagisse proprement avec la mémoire et les périphériques. IR3 par Brice Fournier Segmentation – Principes – Fonctionnement Interruptions – Principes – Types – Les Contrôleurs – IDT – Fonctionnement d'une routine Pratique Exemple PLAN SEGMENTATION 1/5 BUT : Adresser la totalité de l'espace mémoire physique possible 0-4 Go sans souci. Principes : Isolation des programmes les uns des autres. ➢ Définition de niveaux de privilèges pour certaines opérations. ➢ SEGMENTATION 2/5 Différents types d'adresses : Logiques ➢Linéaires ➢Physiques ➢ SEGMENTATION 3/5 MMU : Unité de Gestion de la mémoire chargée de la traduction des adresses ➔ Le processeur ne voit que les adresses logiques La segmentation permet de définir des segments personnalisés en terme de taille, de positionnement ou de droits d'accès. Tables de traduction d'adresses : GDT : Global Descriptor Table -> globale à tout le système (Obligatoire) LDT : Local Descriptor Table -> Propres à chaque tâche SEGMENTATION 4/5 Adresse = segment : offset Segment : 16 bits 2 bits : Requested Privilege Level 1 bit : Localisation du descripteur GDT(0) ou LDT(1) 13 bits : Index du descripteur de segment Offset : 32 bits SEGMENTATION 5/5 Comment trouver ces tables? Registres gdtr et ldtr INTERRUPTIONS 1/7 A quoi ça sert ? Évènements qui interrompent le flot d'exécution du processeur. ➢ Permettent d'exécuter des routines associées à chaque interruption ➢ INTERRUPTIONS 2/7 3 types d'interruption : Exceptions ex : division par zéro, ... ➢ IRQ : Interruptions matérielles ex : touche clavier, ... ➢ Interruptions logicielles ex : appels systèmes, ... ➢ ● Maximum : 256 interruptions ● Routines implantées par le développeur du système d'exploitation INTERRUPTIONS 3/7 Comment le processeur est prévenu pour une IRQ? Les contrôleurs d'interruption... PIC : Programmable Interrupt Controllers ➢ ➢ ➢ Liste des interruptions : Priorité des IRQ INTERRUPTIONS 4/7 Possibilité d'activer/désactiver toutes les IRQ Bit IF du registre eflags du processeur Instructions : ➢sti, reSTore Interrupts : active ➢cli, Clear Interrupts : désactive INTERRUPTIONS 5/7 Le vecteur d'interruptions : IDT (Interruption Descriptor Table) ● Contient l'adresse de toutes les routines Chaque entrée correspond à l'adresse de la routine associée à l'interruption du numéro de l'entrée ● 3 types d'entrées : ➢Trap gate ➢Interrupt gate ➢Task gate ● Registre important : ➢idtr (48 bits) lidt et sidt : charge / stocke le registre idtr INTERRUPTIONS 6/7 ● Fonctionnement d'une routine 1. Sauvegarde des registres cs, eip et eflags (Assembleur) 2. Traitement effectif de l'interruption (langage C) 3. Restauration de tous les registres sauf eflags (Assembleur) 4. Retour à l'instruction interrompue, dépile eflags (à l'aide de iret) INTERRUPTIONS 7/7 Problème d'interruptibilité des IRQ ?? Possibilité de découper en 2 parties : 1. Top half : partie non-interruptible Prise en compte de l'information signalée par l'interruption 2. Bottom half : partie interruptible Traitement gourmand en processeur Mise en oeuvre CONCLUSION Pour configurer les interruptions, il faut : Configurer l'IDT avec la gestion des entrées Traiter les interruptions et exceptions Gérer les contrôleurs d'interruptions matérielles