Comment faire des appels système de travail?

Je comprends qu'un utilisateur peut posséder un processus et chaque processus dispose d'un espace d'adressage (qui contient valide emplacements de mémoire, ce processus peut de référence). Je sais que d'un processus d'appel d'un appel système et de passer des paramètres à elle, comme toute autre fonction de la bibliothèque. Cela semble suggérer que tous les appels système sont dans un espace d'adressage du processus par le partage de la mémoire, etc. Mais peut-être, ce n'est qu'une illusion créée par le fait que dans le langage de programmation de haut niveau, des appels système ressemble à aucun autre fonction, lorsqu'un processus appelle.

Mais, maintenant permettez-moi de prendre un pas plus loin et d'analyser de plus près sur ce qui se passe sous le capot. Comment compilateur compiler un appel système? Il pousse peut-être le système d'appel le nom et les paramètres fournis par le processus dans une pile, puis mettre l'instruction d'assemblage dire "PIÈGE" ou quelque chose -- en gros l'assemblée instruction d'appeler une interruption logicielle.

Ce PIÈGE de l'assemblée instruction est exécutée par le matériel en premier pour faire basculer le mode de bits d'utilisateur à noyau, puis le réglage du code pointeur-à-dire au début de l'interruption de service de routine. À partir de ce point, le rapport de recherche internationale s'exécute en mode noyau, qui reprend les paramètres de la pile (c'est possible, parce que le noyau a accès à un emplacement de mémoire, même ceux possédés par des processus utilisateur) et exécute l'appel système et à la fin, elle abandonne le CPU, ce qui permet de basculer le mode de bits et le processus utilisateur commence à partir de là où il l'avait laissé.

Est ma compréhension correcte?

Joint est rude schéma de ma compréhension:
Comment faire des appels système de travail?

InformationsquelleAutor xyz | 2011-06-05