Bachelorarbeit, 2013
101 Seiten, Note: 70
1. Introduction
1.1 Motivations
2. Notions Théorique
2.1 Ecosystèmes
2.1.1 Définition d'un OS - Système d'exploitation
2.1.2 GNU/Linux
2.1.3 GNU
2.1.4 Linux
2.1.5 Les licences « Open Source »
2.2 Architecture d'un ordinateur
2.2.1 Modèle de von Neumann
2.2.2 Architecture CPU
2.2.3 Organisation CPU
2.2.3.1 Les registres
2.2.3.2 L'unité Arithmétique et Logique
2.2.3.3 Unité de Contrôle
2.2.4 Quelques extensions CPU
2.2.5 Mémoire sous GNU/Linux
2.2.5.1 Mémoire virtuelle
2.2.5.2 Processus en mémoire
2.3 Le noyau
2.3.1 Le système de fichier virtuel proc
2.3.2 L'organisation des processus
2.3.2.1 Les différents états d'un processus
2.4 Définition d'un appel système
2.4.1 Interruption
2.4.1.1 Trappe ou interruption logiciel
2.4.2 Gestionnaire d'interruptions
2.4.2.1 La table des appels systèmes
2.4.2.2 L'IDT ou la Table de Descripteurs d'Interruptions
2.4.3 Mécanismes d'invocation d'un appel système
2.4.4 La glibc
3. Méthodes et outils utilisés
3.1 Méthodes d'analyse
3.1.1 Traçage de l'application
3.1.2 Débogage
3.1.3 Code source
3.2 Les outils et langages de programmation utilisés
3.2.1 strace
3.2.2 Débogueur
3.2.3 Langage Python
3.2.4 Langage Bash
3.2.5 Langage C
3.2.6 Langage Assembleur
4. Etudes pratiques
4.1 Analyse du fonctionnement d'un éditeur de texte
4.2 Analyse de fonctionnalités d'un serveur FTP
5. Mise en pratique, implémentation
5.1 Effectuer un appel système en assembleur
6. Conclusion
Ce travail académique a pour but d'apporter une compréhension approfondie du fonctionnement des appels système dans l'environnement GNU/Linux, en articulant les aspects théoriques de l'architecture matérielle avec une approche appliquée de traçage et de débogage.
2.4 Définition d'un appel système
L'objectif d'un appel système peut être résumé en quelques mots : il est un canal/moyen de communication entre les programmes en espace utilisateur et le noyau. Son rôle est de fournir au programmeur des fonctionnalités spécifiques en lui épargnant la « complexité » qui est derrière. Ils sont implémentés au niveau du noyau Linux. Un appel système est un point d'entrée dans le noyau, il permet au processus de formuler une requête au noyau pour que celui-ci accomplisse cette tâche pour lui[15]. (étant donné qu'une application en ring 3 ne peut exécuter directement du code en ring 0.).
Le noyau fournit une série de services aux programmes via l'API (Application Programming Interface) des appels systèmes. Il y a environ 300 appels systèmes.
1. Introduction: Ce chapitre d'introduction pose le cadre du travail, justifie le choix du sujet sur les appels système sous GNU/Linux et présente la méthodologie composée d'une approche théorique suivie d'une phase pratique.
2. Notions Théorique: Cette section détaille les fondamentaux de l'écosystème GNU/Linux, l'architecture des ordinateurs (modèle de von Neumann), la gestion de la mémoire, ainsi que le fonctionnement interne du noyau et les mécanismes complexes des appels système.
3. Méthodes et outils utilisés: Ce chapitre présente les outils d'analyse et de développement sélectionnés pour l'étude, incluant strace, GDB, Python, Bash, le langage C et l'assembleur.
4. Etudes pratiques: Une mise en application concrète est réalisée ici à travers deux cas d'études : l'observation des appels système d'un éditeur de texte (nano) et l'analyse du comportement d'un serveur FTP (ProFTPD).
5. Mise en pratique, implémentation: Cette partie est consacrée à la pratique pure avec l'implémentation directe d'appels système en langage assembleur, illustrant concrètement le lien avec les registres CPU.
6. Conclusion: Le dernier chapitre synthétise les apprentissages tirés de l'étude, confirmant la complexité des mécanismes explorés et l'intérêt de la démarche expérimentale entreprise.
GNU/Linux, Appels système, Noyau, Architecture ordinateur, CPU, Interruption, Trappe, strace, GDB, Debugging, Assembleur, Processus, Mémoire virtuelle, ProFTPD, Identification
Ce travail porte sur la compréhension et l'analyse du fonctionnement des appels système dans l'environnement GNU/Linux, abordée sous des angles à la fois théoriques et pratiques.
Les principaux domaines incluent l'architecture informatique, le fonctionnement du noyau Linux (interruption, gestion des processus, mémoire) et les méthodologies de traçage et de débogage logiciel.
L'objectif était de rendre le fonctionnement des appels système plus transparent afin de mieux comprendre le lien entre la couche logicielle et la couche matérielle.
L'approche est hybride : elle combine une partie théorique (architecture, systèmes d'exploitation) et une partie pratique (utilisation d'outils comme strace et GDB, et programmation assembleur).
Le corps du travail traite des mécanismes sous-jacents aux appels système, de l'IDT et la table des appels systèmes, jusqu'aux travaux pratiques consistant à analyser des logiciels tiers ou à coder ses propres appels en assembleur.
Les termes essentiels sont GNU/Linux, Appels système, Noyau, strace, Débogage et Assembleur.
L'analyse repose sur l'utilisation du logiciel de traçage 'strace' combiné à un débogueur comme GDB, permettant d'intercepter les appels système en temps réel durant l'exécution de la commande au sein d'un serveur FTP.
L'assembleur est utilisé pour illustrer, par l'implémentation directe (ex. syscall exit, write, creat), comment un programme interagit précisément avec les registres du processeur pour solliciter les services du noyau.
Der GRIN Verlag hat sich seit 1998 auf die Veröffentlichung akademischer eBooks und Bücher spezialisiert. Der GRIN Verlag steht damit als erstes Unternehmen für User Generated Quality Content. Die Verlagsseiten GRIN.com, Hausarbeiten.de und Diplomarbeiten24 bieten für Hochschullehrer, Absolventen und Studenten die ideale Plattform, wissenschaftliche Texte wie Hausarbeiten, Referate, Bachelorarbeiten, Masterarbeiten, Diplomarbeiten, Dissertationen und wissenschaftliche Aufsätze einem breiten Publikum zu präsentieren.
Kostenfreie Veröffentlichung: Hausarbeit, Bachelorarbeit, Diplomarbeit, Dissertation, Masterarbeit, Interpretation oder Referat jetzt veröffentlichen!

