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

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

Embed Size (px)

Citation preview

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

1

Formation Linux :exécutables et processus

SIM

21 octobre 2013

Page 2: 1 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 emacsl'emacs X11 dans une fenêtre avec des menus ....rien de spécial à savoirl'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

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

premiers pas en csyntaxe

toute instruction terminée par « ; » :instrucion1; instruction2; instruction3les 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 intdéclaration d'un fonction : type_retour fonction ( type1 arg1, type2 arg2...) { i/* instructtions*/ return; }

Syntaxe boucle forfor (i=0;i >4; i++) { instructions;}

testif (condition) {instructions} else {instructions}

portabilité des variables : locales à une fonction, globalesles 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èqueexemple de fonction simple printf, atoi … elles sont documentées dans man -s 3exemple de fonction "appel systeme" write, getpid …elles sont documentées dans man -s 2on les utilise mais on ne les réécrit pas .... ç'est le rôle de l'éditeur de lien d'aller chercher les fonctions manquantes

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

différence entre compilation et edition de lien

compilation.o : gcc -o fonction.o fonction.c

edition de lienl'executable dynamique

gcc -o fonctiondyn fonction.cl'executable statique

gcc -static -o foncstatique fonction.c

comparer les taillesls -l fonction*pourquoi?

rechercher mafonction et write dans fonction.o, fonctiondyn fonctionstatique avec objdump -t pour les 3 objetsremarquer en dyn les nims non résolus

précision sur le rôle de la compilation et celui de l'édition de liencompilation

transformer des instruction de haut niveau en instruction de bas niveauimplanter les variables les fonctions => définition d'adresses pour ces items chacun dans leur zone

édition de liensprendre 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

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

format executablesles sections d'un executable

fabriquer section.canalyser les sections .text .data .bss: recherche des variable "initialises" et "variable"

nmnm section.onm sectionstatiquenm -u sectiondyn

pour voir les undefinednm sectiondyn

objdumpobjdump -t sectiondyn|grep UND

pour voir les undefinedobjdump -t -j .data sectiondyn

pour voir la section .data et ses symbolesobjdump -t -j .text sectionstatiqueobjdump -t -j .bss sectionstatique

précisions sur les différentes sections d'un exécutable.text.data.bssstackle tasles 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

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

les scriptsinterpréteurs différents de compilateurInterpréteur analyse les instructions puis les exécute immédiatementsh

exempleshello.shexemple d'enchainement de commande

pwd; echo bonjour; lsmettre le resultat d'une commande dans une variable

h=`ls`; for i in $h; do echo $i ; doneargumentsune boucle en sh

façon d'invoquer sh nomchmod +x nom ....puis nom

perlexemples

hello.plune boucle en perlarguments

exemple de traitement de chaineuid.pl

façon d'invoquer

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

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

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

manipulation des processusps à fondtopcaractéristiques d'un process

executablesressources

espace mémoire (espace virtuel et espace réel)cpufichiers ou périphériques

pid et ppidutilisateuretat

vie d'un processusmode user mode kernel attente

foreground/backgroundcommande &

exemple avec emacsexemple avec boucle infiniejobs

^Zbgjobs

killSIGTERMSIGHUPGénération de fichiers core : boucleinfinie &; kill %1 ….refaire après ulimit –c unlimited Examiner avec gdb boucleinfinie core

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

les file descripteurs et les entrées sorties standard et redirectionsls puis ls >fichierwc <fichierls |wchello >fichierhello >>fichiertout processus possède stdin, stdout, stderr

ls /proc/pid/fd/echo bonjour >/proc/pid/fd/1

les pipesexemple de commande et explication

grep more wc tailsed et les expressions

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

l'arbre des processus, le processus initpstree

pstree -unotion de PID et PPID

exercice getpid getppidpourquoi il faut toujours un pere?exercice de création de processus

fork.cprocessus orphelins-> rôle de init

exercice orphelin.c

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

l'espace virtuelcat /proc/self/mapspgrep -u user -lpmap pid

pmap -d pidpour voir l'espace virtuel = implantation en mémoire

cat /proc/pid/maps avec la sortie précédente

man procpermet de voir des infos interessantes

/prod/pid/maps/proc/pid/environo/proc/self/

pour le process courant/proc/cpuinfo/proc/load