2008-09-24 6 views
0

Je cherche une bonne amorce ou description technique du système appel système qui est utilisé par les systèmes d'exploitation pour passer de l'espace utilisateur au noyau pour invoquer des fonctions telles que "ouvrir", "lire", "écrire", etc ...Existe-t-il une bonne description du mécanisme "appel système" utilisé dans les systèmes d'exploitation?

Y a-t-il autre chose que l'entrée Wikipedia? Les sites Web, pdfs, livres, code source, tous sont les bienvenus :)

Répondre

1

Bien pour le code source, il y a beaucoup de noyaux open source pour y plonger.

En ce qui concerne les livres, Robert Love's book sur le noyau Linux est très instructif.

1

Vous voudrez peut-être jeter un coup d'œil au noyau minix. Il est open source, conçu pour être simple, et est utilisé dans de nombreux cours d'OS de niveau Uni. Avoir une fouille dans /usr/src/kernel/proc.c en particulier la fonction sys_call et les fonctionnalités environnantes. Gardez à l'esprit que minix est un micro-noyau, donc certaines choses peuvent être subtilement différentes de ce que vous êtes habitué.

1

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

2

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

Vous pouvez choisir d'utiliser des numéros d'interruption logicielle spécifiques pour des fonctions spécifiques, mais généralement le processeur ne dispose pas d'interruptions suffisantes pour couvrir toutes les fonctions du système, de sorte qu'un des registres contienne le numéro de fonction requis. Si vous le faites de toute façon, il n'est pas difficile de n'utiliser qu'une seule fonction d'appel système.

Windows CE, avant la version 6.0, utilise un modèle d'adresse virtuelle de processus côte à côte qui permet aux processus de s'appeler directement les uns aux autres. Les protections de page sont configurées pour que, une fois cette opération effectuée, une violation de violation d'accès se produise: le noyau obtient le contrôle, corrige l'espace d'adressage du processus (déplace le processus appelé dans l'emplacement 0), corrige les arguments au processus appelant, et retourne en mode utilisateur. Parce que l'adresse de retour est dans un autre processus, lorsque l'appel de fonction renvoie, le processus inverse se produit. Malheureusement, ce modèle n'autorise que de très petits espaces d'adressage virtuel pour chaque processus (32 Mo) et un nombre réduit de processus (32), de sorte que Windows CE 6.0 revient à un modèle d'appel système plus traditionnel.

0

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

0

Il dépend de l'architecture et nécessite une compréhension de l'architecture de l'ordinateur. "Structured Computer Organisation" 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.

Questions connexes