Version 4 (modified by 4 years ago) (diff) | ,
---|
retour au descriptif des séances "système"? |
Application simple en mode utilisateur
Les applications de l'utilisateur s'exécute en mode user. Dans la séance précédente, nous avons vu que les registres de commande des contrôleurs de périphérique sont placés dans l'espace d'adressage du processeur. Et bien, les adresses de ces registres ont été choisies dans la partie de l'espace d'adressage interdite en mode user. Ainsi, une application n'a pas un accès directe aux contrôleur de périphériques, elle doit utiliser des appels système (avec l'instructions syscall) pour demander au noyau du système d'exploitation Dans cette séance, nous allons découper le code en 4 couches : (1) le code de boot (utilisé seulement au démarrage), (2) le noyau du système d'exploitation (contenant, entre autres, la fonction d'initialisation init() et le code des appels systèmes syscall), (3) la bibliothèque de fonctions standards (libc) et Dans cette séance, afin d'exécuter une application, nous allons sortir du mode kernel, utilisé par le MIPS au démarrage, pour passer en mode user. Quand le MIPS est en mode user, le code s'exécute dans un environnement restreint dans lequel il n'a pas droit à certaines instructions et il n'a pas accès à tout l'espace d'adressage. En particulier, il n'a pas accès aux adresses où ont été placés les registres de commandes des contrôleurs de périphériques. C'est dans ce mode que s'exécute les applications de l'utilisateur. Pour interagir avec les périphériques, une application doit utiliser les appels systèmes, et donc elle doit utiliser l'instruction syscall qui provoque le passage du processeur en mode kernel et l'exécution d'un code du noyau du système d'exploitation. Ce mode permet, entre autres, de garantir le bon usage des périphériques.