Formation Linux :exécutables et processus

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Rappels C.
Développement logiciel sur micro-contrôleurs PIC en C
Formation universitaire à .NET: Introduction à C#
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
Synchronisation des processus père - fils
Langages objet Définitions Traduction des méthodes en C++
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
C.
! 1 CREATION D'UNE MAQUETTE EXPORT / IMPORT
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
FLSI602 Génie Informatique et Réseaux
Système d’Exploitation
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,
Systèmes d'exploitations Les redirections d'entrées/sorties GRARI Mounir ESTO Année 2011.
Révision Avant lintra – Architecture de lordinateur, les composants, le fonctionnement, codage – Système dexploitation: organisation des données (fichier),
Common Gateway Interface
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Récursivité.
Système d’exploitation
TRAITEMENT DE STRUCTURES
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Démo I : INF3135 Construction et maintenance de logiciels Groupe : 10
FICHIERS : Définition : Algorithme général:
Perl, un langage de programmation pour les données textuelles
GPA435 – Lab #2 partie 2 Explications compl é mentaires GPA435 – révision 2013, Tony Wong, ing., Ph.D.
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
LAL Service Informatique Stage Informatique 1 Le système Unix l Multitâche, multi-utilisateur, partage des ressources l Universel : machines, portabilité.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Utilisation avancée de linux
Systèmes d'exploitations Processus
Le langage C Rappel Pointeurs & Allocation de mémoire.
Programmer en langage c
Programmation Système et Réseau (sous Linux)
LES PILES ET FILES.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
Les adresses des fonctions
ALGORITHMIQUE ET PROGRAMMATION C
Scripts shell intro Un script bash est un fichier contenant une suite de commandes shell, exécutables par l'interpréteur (ici le programme /bin/bash),
Argc et argv Utilisation des paramètres de la ligne de commande.
Autres éléments du langage
Créer des packages.
SYSTÈME D’EXPLOITATION I
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
 Syntaxe du langage PHP
Maria Malek - EISTI - CPI11 Présentation d’UNIX –1969, laboratoire Bell –Systèmes multi-tâches multi-utilisateurs –Architecture Le noyau –Gestion de la.
La programmation système
Programmation Système et Réseau
Finder => Application => Utilitaires => Terminal Editor:pico Touches –Finder=>Applic.=> Utili. => Touches –~: Alt+N –|: Shift+Alt+N –[: Shift+ Alt+5 –{:
Les types composés Les enregistrements.
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Initiation au JavaScript
Signaux Il s'agit de messages asynchrones envoyés à un processus
S. Domas Système d’Exploitation Make et la construction d’exécutables 1ère annéeIUT Belfort-Montbéliard.
Patricia Renault UPMC 2005/2006
Langage de programmation
1 PHP 5 Notions fondamentales (niveau 1 cours #3) Formation continue – Cégep de Sainte-Foy François G Couillard.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Informatique 2A Langage C 4ème séance
Transcription de la présentation:

Formation Linux :exécutables et processus SIM 21 octobre 2013

Des éditeurs: vi : l’éditeur de base nano: un emacs like emacs: puissant, adaptable manipulation d'un éditeur de texte (emacs) sur un texte libre différentes façons de lancer emacs l'emacs X11 dans une fenêtre avec des menus ....rien de spécial à savoir l'emacs -nw dans un xterm -> principales commandes (mnémoniques) Essayer: mode insertion/mode overwrire déplacements suppressions couper coller ouverture/enregistrement/quitter vérifier le résultat obtenu dans le fichier et rééditer le fichier

premiers pas en c syntaxe toute instruction terminée par     « ; » :instrucion1; instruction2; instruction3 les blocs encadrés par {} : {instruction1; instruction2;} variable doit etre declarée : types : int , char, pointeur, tableau lecture des types : int tab[100]; char buf[256]; int *p; tableau de pointeur sur entier : int *tab[100] lire *tab[x] est de type int donc tab[x] est de type pointeur sur int déclaration d'un fonction : type_retour fonction ( type1 arg1, type2 arg2...) { i/* instructtions*/ return; } Syntaxe boucle for for (i=0;i >4; i++) { instructions;} test if (condition) {instructions} else {instructions} portabilité des variables : locales à une fonction, globales les includes #include <stdio.h> integration de /usr/include/stdio.h #include "./toto.h" ntégration de ./toto.h les fonctions déjà définies (contenues dans une bibliothèque exemple de fonction simple printf, atoi … elles sont documentées dans man -s 3 exemple de fonction "appel systeme" write, getpid …elles sont documentées dans man -s 2 on les utilise mais on ne les réécrit pas .... ç'est le rôle de l'éditeur de lien d'aller chercher les fonctions manquantes

différence entre compilation et edition de lien .o : gcc -o fonction.o fonction.c edition de lien l'executable dynamique gcc -o fonctiondyn fonction.c l'executable statique gcc -static -o foncstatique fonction.c comparer les tailles ls -l fonction* pourquoi? rechercher mafonction et write dans fonction.o, fonctiondyn fonctionstatique avec objdump -t pour les 3 objets remarquer en dyn les nims non résolus précision sur le rôle de la compilation et celui de l'édition de lien transformer des instruction de haut niveau en instruction de bas niveau implanter les variables les fonctions => définition d'adresses pour ces items chacun dans leur zone édition de liens prendre tous les objets intermédaires (*.o) générés par les phases de compilation , ajouter les bibliothèques pour créer un executable autosuffisant assembler les différents "morceaux" en recalculant les adresses (translation d'adresse) dans le cas d'édition de lien dynamique le code d'une fonction ne sera ajouter qu'au lancement du programme=> dans l'executable on ne fait que noter les dépendances de noms manquants les bibliothèques rôle de LD_LIBRARY_PATH voir avec ldd : ldd fonctiondyn cp /lib/libc.so.6 . ; export LD_LIBRARY_PATH=. ldd fonctiondyn

format executables les sections d'un executable fabriquer section.c analyser les sections .text .data .bss: recherche des variable "initialises" et "variable" nm nm section.o nm sectionstatique nm -u sectiondyn pour voir les undefined nm sectiondyn objdump objdump -t sectiondyn|grep UND objdump -t -j .data sectiondyn pour voir la section .data et ses symboles objdump -t -j .text sectionstatique objdump -t -j .bss sectionstatique précisions sur les différentes sections d'un exécutable .text .data .bss stack le tas les nom de fonctions , de variables sont dans une table des symboles (c'estce que manipule ld, nm, objdump) readelf readelf -a sectiondyn utilisation de strip supprime la table des symboles

les scripts interpréteurs différents de compilateur Interpréteur analyse les instructions puis les exécute immédiatement sh exemples hello.sh exemple d'enchainement de commande pwd; echo bonjour; ls mettre le resultat d'une commande dans une variable h=`ls`; for i in $h; do echo $i ; done arguments une boucle en sh façon d'invoquer sh nom chmod +x nom ....puis nom perl hello.pl une boucle en perl exemple de traitement de chaine uid.pl

Notion de processus lien fichier -> processus=execution Plusieurs exécutions même simultanées d'un même exécutable -> plusieurs processus

manipulation des processus ps à fond top caractéristiques d'un process executables ressources espace mémoire (espace virtuel et espace réel) cpu fichiers ou périphériques pid et ppid utilisateur etat vie d'un processus mode user mode kernel attente foreground/background commande & exemple avec emacs exemple avec boucle infinie jobs ^Z bg kill SIGTERM SIGHUP Génération de fichiers core : boucleinfinie &; kill %1 ….refaire après ulimit –c unlimited Examiner avec gdb boucleinfinie core

les file descripteurs et les entrées sorties standard et redirections ls puis ls >fichier wc <fichier ls |wc hello >fichier hello >>fichier tout processus possède stdin, stdout, stderr ls /proc/pid/fd/ echo bonjour >/proc/pid/fd/1 les pipes exemple de commande et explication grep more wc tail sed et les expressions

l'arbre des processus, le processus init pstree pstree -u notion de PID et PPID exercice getpid getppid pourquoi il faut toujours un pere? exercice de création de processus fork.c processus orphelins-> rôle de init exercice orphelin.c

l'espace virtuel cat /proc/self/maps pgrep -u user -l pmap pid pmap -d pid pour voir l'espace virtuel = implantation en mémoire cat /proc/pid/maps avec la sortie précédente man proc permet de voir des infos interessantes /prod/pid/maps /proc/pid/environ o /proc/self/ pour le process courant /proc/cpuinfo /proc/load