Information Technology Reference
In-Depth Information
ment de mode d'exécution. Par ailleurs, elle se rapproche du traitement des interrup-
tions car l'appel à la fonction du système se traduit en fait par la levée d'une
interruption logicielle particulière, entraînant le changement de mode et le branche-
ment à l'adresse de la fonction. On pourrait finalement dire que l'invocation d'une
fonction système est une levée d'interruption avec passage de paramètres et de
résultat entre les deux modes d'exécution du processeur.
Plus précisément, l'ensemble des appels système disponibles est regroupé dans
une ou plusieurs bibliothèques, avec lesquelles l'éditeur de liens fait la liaison
comme nous l'avons vu au chapitre 3. Chaque fonction de la bibliothèque comprend
une instruction permettant le changement de mode d'exécution, puis des instructions
assurant le passage des paramètres depuis le mode utilisateur vers le mode supervi-
seur. Souvent, des registres généraux prédéfinis du processeur servent à ce transfert
de paramètres (par exemple, les registres R0, R1 et R2). Enfin, de manière similaire
à ce qui est fait pour une exception, la fonction lève une trappe en passant au
système un numéro spécifique à la routine appelée. Le système cherche dans une
table, l'adresse de la routine identifiée par le numéro et se branche sur son code. À la
fin de l'exécution de la routine, la fonction de la bibliothèque retourne les résultats
de l'exécution via les registres réservés à cet effet, puis restaure le contexte du
programme utilisateur.
Réalisation d'un appel système sous Linux
Lorsqu'un processus exécute un appel système, il appelle la fonction corres-
pondante dans une bibliothèque C. Cette fonction traite les paramètres
d'appels et fait passer le processus en mode superviseur. Plus précisément,
sur une architecture de type x86, les paramètres de l'appel système sont
passés via les registres eax, ebx, ecx et edx du processeur, puis une trappe est
déclenchée en activant l'interruption 0x80. Cette trappe provoque le passage
du processus en mode superviseur et l'exécution de la fonction system_call.
Cette fonction utilise le numéro de l'appel système (par exemple 12 pour
_chdir) passé via le registre eax pour appeler la fonction correspondant à
l'appel système.
Exemple : les interruptions sur le système IBM 370
Les différents types d'interruptions
Sur l'architecture IBM 370, six sortes d'interruptions sont répertoriées :
- les interruptions matérielles liées à la gestion des entrées-sorties ;
- les interruptions matérielles liées à la signalisation d'un mauvais fonctionnement
de l'ordinateur (problème d'alimentation électrique ou problème de refroidis-
sement, etc.);
 
 
Search WWH ::




Custom Search