Ce travail de fin de cycle introduit les appels systèmes sous l'environnement GNU/Linux. L'objectif est de rendre le fonctionnement de ces appels plus transparent à l'intéressé. Le sujet est abordé tant de manière théorique que pratique.
La partie théorique permet d'identifier et comprendre les différents acteurs qui entrent en jeu lors d'un appel système. On part de l'architecture de l'ordinateur pour remonter jusqu'au système d'exploitation. Plus précisément, on démarre du niveau matériel pour atteindre la couche logicielle, ceci en abordant à chaque étape les éléments concernant un appel système.
La partie pratique présente dans un premier temps, les outils pouvant être utilisés pour l'analyse d'appels systèmes et ensuite, l'analyse de deux applications.
L'étude des applications aborde également la manière d'analyser des programmes en général, et ce notamment par l'utilisation d'un debugger.
Finalement, il est fait quelques implémentations d'appels systèmes en langage assembleur. Cela permet d'observer le lien entre la couche matérielle et logicielle via l'utilisation des registres CPU. Si l'on parle d'introduction au sujet, c'est que celui-ci est sufisamment complexe et prétendre couvrir l'entièreté du domaine serait illusoire.
Inhaltsverzeichnis
- 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'Inter- ruptions.
- 2.4.3 Mécanismes d'invocation d'un appel système
- 2.4.4 La glibc
- 2.4.1 Interruption.
- 2.1 Ecosystèmes.
- 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 [34]
- 3.2.2 Débogueur.
- 3.2.3 Langage Python [39].
- 3.2.4 Langage Bash[40]
- 3.2.5 Langage C .
- 3.2.6 Langage Assembleur
- 3.1 Méthodes d'analyse .
- 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.
Zielsetzung und Themenschwerpunkte
Diese Arbeit bietet eine Einführung in die Funktionsweise von Systemaufrufen unter dem GNU/Linux-Betriebssystem. Der Fokus liegt auf dem Verständnis der zugrundeliegenden Konzepte, der Architektur von Computern und der Interaktion zwischen Programmen und dem Betriebssystem auf niedriger Ebene. Die Arbeit soll dem Leser ein grundlegendes Verständnis vermitteln, wie Anwendungen mit dem Betriebssystem kommunizieren und wie Systemaufrufe für verschiedene Aufgaben verwendet werden können.
- Die Architektur von Computern und die Funktionsweise von CPUs.
- Die Organisation des GNU/Linux-Betriebssystems, einschließlich des Kernels, der Prozesse und der Speicherverwaltung.
- Die Definition und Bedeutung von Systemaufrufen.
- Methoden zur Analyse und zum Debuggen von Programmen.
- Praktische Beispiele und Übungen zur Anwendung von Systemaufrufen.
Zusammenfassung der Kapitel
Das erste Kapitel führt in die Motivation und den Hintergrund der Arbeit ein. Kapitel 2 bietet eine theoretische Grundlage mit einer Erklärung von Betriebssystemen, dem GNU/Linux-Ökosystem, der Architektur von Computern und dem Konzept von Systemaufrufen. Die Methoden und Werkzeuge, die für die Analyse und Implementierung von Systemaufrufen verwendet werden, werden in Kapitel 3 beschrieben. Kapitel 4 befasst sich mit praktischen Studien, die die Funktionsweise eines Texteditors und eines FTP-Servers untersuchen. In Kapitel 5 wird die praktische Anwendung von Systemaufrufen in Assembler demonstriert.
Schlüsselwörter
GNU/Linux, Betriebssystem, Systemaufrufe, Kernel, Architektur, CPU, Prozess, Speicher, Interruption, Assembler, Debuggen, Analyse, strace.
- Citation du texte
- Tolga Topal (Auteur), 2013, Introduction aux appels systèmes sous GNU/Linux, Munich, GRIN Verlag, https://www.grin.com/document/1441075