mon diaporama

publicité
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
Téléchargement