Existe-t-il une bonne description de l’appel & # 8220; appel système & # 8221; mécanisme utilisé dans les systèmes d'exploitation? [fermé]

StackOverflow https://stackoverflow.com/questions/126976

Question

Je recherche une bonne introduction ou une bonne description technique du mécanisme Appel système utilisé par les systèmes d'exploitation pour passer de l'espace utilisateur au noyau afin d'appeler des fonctions telles que "open", " ; lire "," écrire ", etc ...

Existe-t-il autre chose que l'entrée Wikipedia ? Sites Web, fichiers PDF, livres, code source, tous sont les bienvenus:)

Était-ce utile?

La solution

Eh bien, pour le code source, il y a de nombreux noyaux open source dans lesquels plonger.

Pour les livres, le le livre de Robert Love sur le noyau Linux est très informatif.

Autres conseils

La méthode exacte dépend de l'architecture du processeur et des opérations définies pour le transfert en mode noyau. Une approche, et la traditionnelle sur x86, consistait à utiliser une interruption logicielle. Il s’avère que cela n’a pas été très rapide dans le cas général. Ainsi, plus tard, Intel a ajouté SYSCALL et AMD a ajouté SYSENTER . Windows XP et les versions ultérieures choisissent une technique d’appel système appropriée pour la plate-forme, au démarrage.

Vous pouvez choisir d'utiliser des numéros d'interruption logicielle spécifiques pour des fonctions spécifiques, mais le processeur ne dispose généralement pas d'assez d'interruptions pour couvrir toutes les fonctions système. Il est donc nécessaire de faire en sorte que l'un des registres contienne le numéro de fonction requis. Si vous le faites de toute façon, utiliser seulement la fonction d’appel système unique n’est pas très difficile.

Avant la version 6.0, Windows CE utilise un modèle d’adresse virtuelle de processus côte à côte qui permet aux processus de s’appeler directement. Les protections de page sont configurées de manière à ce que, lorsque cela est fait, une erreur de violation d'accès se produise: le noyau obtient le contrôle, corrige l'espace d'adressage du processus (déplacement du processus appelé dans l'emplacement 0), corrige les arguments basés sur l'emplacement 0 au processus appelant et retourne en mode utilisateur. Comme l'adresse de retour est dans un autre processus, lorsque l'appel de fonction est renvoyé, le processus inverse est exécuté. Malheureusement, ce modèle n'autorise que de très petits espaces d'adresses virtuels pour chaque processus (32 Mo) et un petit nombre de processus (32). Windows CE 6.0 revient donc à un modèle d'appels système plus traditionnel.

Vous voudrez peut-être jeter un coup d’œil sur le noyau minix. Il est open source, conçu pour être simple, et est utilisé dans de nombreux cours sur le système d’exploitation de niveau unique. Explorez le répertoire /usr/src/kernel/proc.c, en particulier la fonction sys_call et les fonctionnalités environnantes. N'oubliez pas que minix est un micro-noyau, de sorte que certaines choses peuvent être légèrement différentes de ce à quoi vous êtes habitué.

Si vous souhaitez acheter un livre extrêmement utile pour la programmation * nix. Je recommanderais "Programmation avancée dans l'environnement UNIX". par Stevens et Rago. Il contient des explications détaillées et des exemples de code.

Pour une bonne explication des appels système sous Linux, consultez les exemples de pilotes de périphérique dans les Pilotes de périphérique Linux .

Cela dépend de l'architecture et nécessite une compréhension de l'architecture de l'ordinateur. "Organisation informatique structurée" de Tanenbaum a un bon résumé des bases d'un appel système. Pour en savoir plus, lisez n’importe quel manuel sur la conception du système d’exploitation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top