Programmation Systèmes - Intro

download Programmation Systèmes - Intro

of 58

Transcript of Programmation Systèmes - Intro

  • 7/26/2019 Programmation Systmes - Intro

    1/58

    Programmation Systmes etRseaux

    UNIVERSITE HASSAN 1ERECOLE NATIONALE DES SCIENCES APPLIQUESKHOURIBGA

  • 7/26/2019 Programmation Systmes - Intro

    2/58

    Objectifs du cours

    Maitrise des modes et du fonctionnement dun systmedexploitation.

    Maitrise de la programmation systme ( UNIX) Comment programmer des applications qui communiquent aec le !" (appels

    !ystmes)

    #pprendre la programmation aec le systme Comment cr$er des applications qui communiquent aec l%! ou aec dautres applications& en se sync'ronisant correctement

    Comprendre les principes du fonctionnement dunsystme. ue se passetil quand on tape par exemple ls& CtrlC& Ctrl! ou Ctrl* + Comment sont g$r$s les processus& sont stoc,$es les donn$es sur disque+ -es algorit'mes et la programmation du systme pour plus tard.

    Comprendre des pro/lmes typiques pos$s par le partagede ressources. Comment garantir quun fic'ier nest $crit que par un processus 0 la fois +

  • 7/26/2019 Programmation Systmes - Intro

    3/58

    Plan de cours:

    Elment: programmation systme

    Concepts de /ase -a gestion des processus

    Notion de processus

    -organisation m$moire dun processus -a cr$ation de processus !ync'ronisation pre1fils 2rimities de recourement

    -es entr$essorties 3$n$ralit$s sur les entr$essorties Unix les primities de /ase -e contr4le des entr$essorties -es entr$essorties sur r$pertoires

  • 7/26/2019 Programmation Systmes - Intro

    4/58

    Plan de cours:

    Elment: programmation systme

    -a gestion des signaux Notion de signal -identification des signaux -enoi des signaux -e comportement 0 la prise en compte -e /locage des signaux -a manipulation des 'andlers -attente dun signal

    uelques signaux particuliers -a communication par tu/es

    -es caract$ristiques dun tu/e -es tu/es ordinaires

    -es tu/es nomm$s

  • 7/26/2019 Programmation Systmes - Intro

    5/58

    Plan de cours:

    Elment: programmation rseau

    2rogrammation r$seau 5$seaux et couc'es de communication 2rotocoles %rdre des octets !erices et num$ro de ports Manipulation des adresses I2 Noms d'4tes et noms de r$seaux

    Utilisation des soc,ets Concept de soc,et Cr$ation dune soc,et Mode connect$ et mode non connect$ 5eceoir ou enoyer des donn$es

    2rogrammation dun d$mon ou utilisation de inetd

  • 7/26/2019 Programmation Systmes - Intro

    6/58

    Plan de cours:

    Organisation

    Cours& 67162Modalit$s d$aluation pour c'aque

    $l$ment de module 8 contr4les $crits contr4les inopin$s

    contr4le 62 minipro9et assiduit$

  • 7/26/2019 Programmation Systmes - Intro

    7/58

    Concepts et outils

  • 7/26/2019 Programmation Systmes - Intro

    8/58

    Plan de sance:

    Concepts et outils de base Introduction 2r$sentation dun !" 6ype des !" 3$n$ralit$s sur le d$eloppement sous -inux %utils de d$eloppement 62 : ex$cution et compilation de programme C

    sous -inux

  • 7/26/2019 Programmation Systmes - Intro

    9/58

    1. Introduction 1!

    -a programmation systme ise led$eloppement de programmes qui font partie du!" ou qui en r$alisent les fonctions&

    "lle se distingue de la programmation desapplications "lle ne sint$resse pas au traitement des donn$es& mais

    aux interfaces& aux protocoles et 0 la gestion des ressources&telles que le temps et lespace.

    "lle inclut& laccs aux fic'iers& la programmationdes p$rip'$riques (claier& $cran& modems;)& laprogrammation r$seau& la gestion de m$moire

    ie et des processeurs.

  • 7/26/2019 Programmation Systmes - Intro

    10/58

    1. Introduction "!

    -a programmation systme adopte les langagestels que assem/leur

    "t un langage de /as nieau (ex langage C)&

    Exemple:

    !" de type UNIX (-inux& ? @ du code est $crit en C& :? @ est en assem/leur suiant les arc'itectures ci/les (xAB&

    !2#5C;).

  • 7/26/2019 Programmation Systmes - Intro

    11/58

    ". Prsentation d#un SE

    Un utilisateur interagit aec le !" directement oupar une application

    Il utilise -a cr$ation de processus& les suspend& les termine& Cr$e& modifie& efface des fic'iers& Imprime& communique aec sa e/cam& etc.

    -e systme cr$e les processus de lutilisateur& et

    leur alloue de la m$moire le systme interrompt et reprend les processus&

    pour fournir lillusionque plusieurs processustournent en parallle (mDme en monoprocesseur)

  • 7/26/2019 Programmation Systmes - Intro

    12/58

    $. %ype des SE 1!

    Il existe plusieurs types de !" qui diffrentselon -e type MultitEc'e& UnitEc'e et multiutilisateur

    monoutilisateur -es fonctionnalit$s ladministration des tac'es&

    int$grations des solutions. InterfaFage aec lesutilisateurs et gestion des ressources

  • 7/26/2019 Programmation Systmes - Intro

    13/58

    $. %ype des SE "!

    -es systmes les plus r$pondus pour les sereurs et lesstations de traails sont M!7%!& Hindos !olution payante de Microsoft qui

    compte une diJaine de ersions& orient$e grand pu/lic&aec des fonctionnalit$ r$duites.

    Unix, Linux la solution la plus performante pour lessereurs. "lles comportent des fonctionnalit$s dans laplus part sous une licence li/re. "lle ise le pu/licexp$riment$e (les premires solutions).

    Mac !" destin$ pour larc'itecture M#C. 6rsperformante pour le traitement des multim$dias et desimages.

  • 7/26/2019 Programmation Systmes - Intro

    14/58

    $. %ype des SE $!

    2ourquoi un cours /as$ sur Unix et non Hindos+ code disponi/le principes g$n$raux identiques

    Normalisation 2%I!IX. 7$finit les comportements dune collection defonctions permettant laccs au systme.

    2ossi/ilit$ dimpl$mentation soit par un appel systme& soit par un appel de /i/liot'que.

  • 7/26/2019 Programmation Systmes - Intro

    15/58

    &. 'nralits sur le d(eloppement sous )inuxa. *rc+itecture de base de )inux

  • 7/26/2019 Programmation Systmes - Intro

    16/58

    &. 'nralits sur le d(eloppement sous )inuxb. ,odes d#excution et appels systme

    -e processeur possde deux modes defonctionnement. Mode utilisateur (ou user, ou protg) : accs au

    matriel impossible, accs interdit 0 certaines Jonesm$moires et certaines instructions.

    Mode noyau (ou kernel, ou moniteur, ou privilgi).

  • 7/26/2019 Programmation Systmes - Intro

    17/58

    &. 'nralits sur le d(eloppement sous )inuxb. ,odes d#excution et appels systme

    -e noyau fournit des points dentr$e&KappelssystmeL& que le programmeurinoque comme des sousroutines offrant

    des serices ari$s.Exemple :

    lappel systme rite() permet d$crire desdonn$es dans un fic'ier.

  • 7/26/2019 Programmation Systmes - Intro

    18/58

    &. 'nralits sur le d(eloppement sous )inuxb. ,odes d#excution et appels systme

    -es interruptions prooquent le passage en mode noyau& #u retour de linterruption& retour au mode utilisateur. -es appels systme prooquent une interruption et font

    ainsi passer en mode noyau. %n r$alise donc des op$rations priil$gi$es en faisant un

    appel systme. Cest la seule faFon de r$aliser des op$rations

    priil$gi$es. Cette interface /ien d$finie permet au systme de ne

    /asculer en mode noyau que de faFon contr4l$e.

  • 7/26/2019 Programmation Systmes - Intro

    19/58

    &. 'nralits sur le d(eloppement sous )inuxb. ,odes d#excution et appels systme

    Il existe une centaine dappelssystmesous -inux. #llocation m$moire

    3estions des entr$essorties directes sur unp$rip'$rique&

    3estion du systme de fic'iers& -ancement dapplications Communication r$seau.

  • 7/26/2019 Programmation Systmes - Intro

    20/58

    &. 'nralits sur le d(eloppement sous )inuxc. -ibliot+ue 'libC

    -a /i/liot'que C regroupe des fonctionnalit$scompl$mentaires de celles qui sont assur$es parle noyau

    "lle encapsule les appelssystme dans des

    routines de plus 'aut nieau& qui sont donc plusais$ment porta/les dune mac'ine 0 lautre.

    partir de la ersion 8.? du noyau -inux& lepro9et 3NU produit la /i/liot'que 3li/C -a 3li/C 8..8 est la ersion la plus utilis$e -es fonctions de 3li/C sont trs limit$s en termes dinterface

    utilisateur

  • 7/26/2019 Programmation Systmes - Intro

    21/58

    &. 'nralits sur le d(eloppement sous )inuxc. -ibliot+ue 'libC

    Nous utiliserons deux types de fonctions& les appels systme& impl$ment$s par le noyau etoffrant un accs de /as nieau aux fonctionnalit$s dusystme&

    op$ration asseJ coOteuse les routines de /i/liot'ques& qui compltent les

    possi/ilit$s du noyau& et lencadrent pour le rendreplus simple et plus porta/le.

    m$canisme l$ger& $quialent 0 lappel dune sousroutine du programme

  • 7/26/2019 Programmation Systmes - Intro

    22/58

    /. Outils de d(eloppement

    -e d$eloppement en C sous -inux met enPure plusieurs types dutilitaires "diteur de texte& Compilateur&

    "diteur de liens& 7$/ogueur& %utils de documentation automatique;

  • 7/26/2019 Programmation Systmes - Intro

    23/58

    /. Outils de d(eloppementa. 0diteurs de texte

    "macs

    Gi

    Nedit

  • 7/26/2019 Programmation Systmes - Intro

    24/58

    /. Outils de d(eloppementb. Compilateur diteur de liens

    -e compilateur C utilis$ sous -inux est gcc (3nuCompiler Collection). %n peut $galement linoquer sous le nom cc& ou gQQ

    si on compile du code CQQ ll existe aussi une ersion nomm$e egcs

  • 7/26/2019 Programmation Systmes - Intro

    25/58

    /. Outils de d(eloppementb. Compilateur diteur de liens

    gcc sutilise aec les arguments

    noms des fic'iers C 0 compiler ou fic'iers o/9et 0 lier

    Rentuellement des d$finitions de macros pour le pr$processeur&pr$c$d$es de loption S7.

    S7TX%2"NT!%U5C"V?? est $quialent 0 une directieWdefine TX%2"NT!%U5C" V??

    Rentuellement le c'emin de rec'erc'e des fic'iers dentDte&pr$c$d$ de loption SI

    Rentuellement le c'emin de rec'erc'e des /i/liot'quessuppl$mentaires& pr$c$d$ de loption Sl

    nom dune /i/liot'que suppl$mentaire 0 utiliser lors de l$ditiondes liens& pr$c$d$ du pr$fixe l

    nom du fic'ier ex$cuta/le& pr$c$d$ de loption So

  • 7/26/2019 Programmation Systmes - Intro

    26/58

    Question

    Interpr$ter les commandes suiantes gcc SHall Spedantic Sg fic'ier:.c Sc

    gcc SHall Spedantic Sg fic'ier8.c Sc

    /. Outils de d(eloppementb. Compilateur diteur de liens

  • 7/26/2019 Programmation Systmes - Intro

    27/58

    %n peut lier les fic'iers o/9ets produit ia gcc gcc fic'ier:.o fic'ier8.o So resultat

    -a compilation et l$dition de liens peuentse faire sur une mDme commande

    gcc SHall Spedantic Sg fic'ier:.c fic'ier8.c Soresultat

    /. Outils de d(eloppementb. Compilateur diteur de liens

  • 7/26/2019 Programmation Systmes - Intro

    28/58

    /. Outils de d(eloppementc. 2bogueur

    !i une application a $t$ compil$e aecloption Sg& il est possi/le de lex$cutersous le contr4le dun d$/ogueur. gd/ (3nu 7e/ugger) utilitaire fonctionnant en ligne de

    commande& ddd (7ata 7isplay 7e/ugger)& plus agr$a/le

    isuellement.

  • 7/26/2019 Programmation Systmes - Intro

    29/58

    /. Outils de d(eloppementc. 2bogueur

  • 7/26/2019 Programmation Systmes - Intro

    30/58

    /. Outils de d(eloppementc. 2bogueur

    !i une application a $t$ compil$e aecloption Sg& il est possi/le de lex$cutersous le contr4le dun d$/ogueur. gd/ (3nu 7e/ugger) utilitaire fonctionnant en ligne de

    commande& ddd (7ata 7isplay 7e/ugger)& plus agr$a/le

    isuellement.

  • 7/26/2019 Programmation Systmes - Intro

    31/58

    /. Outils de d(eloppementc. 2bogueur

    gd/ affic'e un message de pr$sentation&puis passe en attente de commande aecun message dinite (gd/).

    -es commandes les plus courantes sont

  • 7/26/2019 Programmation Systmes - Intro

    32/58

    /. Outils de d(eloppementc. 2bogueur

    Exemple:

    !oit un exemple de code C nomm$KexempleagrL

    lappel gd/ exempleTarg produit

  • 7/26/2019 Programmation Systmes - Intro

    33/58

    /. Outils de d(eloppementc. 2bogueur

    Exemple:

    Commencer par demander un aperFu dulisting du programme

  • 7/26/2019 Programmation Systmes - Intro

    34/58

    /. Outils de d(eloppementc. 2bogueur

    Exemple: 2lacer un point darrDt sur la ligne :8

    Indiquer les arguments en ligne de commande& puisd$marrer le programme

  • 7/26/2019 Programmation Systmes - Intro

    35/58

    /. Outils de d(eloppementc. 2bogueur

    Exemple: -e programme s$tant arrDt$& on peut examiner ses

    aria/les

    !upprimons le point darrDt actuel& et placer un noueausur la ligne suiante& aant de demander au programmede continuer son ex$cution

  • 7/26/2019 Programmation Systmes - Intro

    36/58

    /. Outils de d(eloppementc. 2bogueur

    Exemple:

    !upprimer le point darrDt actuel& et placer un noueausur la ligne suiante& aant de demander au programmede continuer son ex$cution

  • 7/26/2019 Programmation Systmes - Intro

    37/58

    /. Outils de d(eloppementc. 2bogueur

    Exemple: -e programme est arri$ sur le noueau point darrDt&

    nous pouons le continuer en pas 0 pas

    uitter 0 pr$sent gd/

  • 7/26/2019 Programmation Systmes - Intro

    38/58

    /. Outils de d(eloppementc. 2bogueur 3 Pro4ileur

    -e profileur o/sere le d$roulement de lapplication& etenregistre dans un fic'ier les temps de pr$sence dansc'aque routine du programme.

  • 7/26/2019 Programmation Systmes - Intro

    39/58

    /. Outils de d(eloppementc. 2bogueur 3 Pro4ileur

    Exemple

    %n compile donc le programme 0 profiler ainsi cc SHall Spg programme.c So programme

    %n lex$cute alors normalement .1programme Un fic'ier gmon.out est alors cr$$& que lon examine 0

    laide de la commande gprof

    gprof programme gmon.out Y less il est conseill$ de rediriger sa sortie standard ers un

    programme de pagination comme more ou less

  • 7/26/2019 Programmation Systmes - Intro

    40/58

    /. Outils de d(eloppementc. 2bogueur 3 strace

    %util de suii du programme

    7$tecter et m$moriser tous les appelssystme inoqu$spar un processus.

    %n lutilise simplement en linoquant aec le nom duprogramme 0 lancer en argument.

    strace .1programme

    -es r$sultats sont pr$sent$s sur la sortie derreur& (quelon peut rediriger dans un fic'ier).

  • 7/26/2019 Programmation Systmes - Intro

    41/58

    /. Outils de d(eloppementd. %raitement du code source

    Il existe toute une classe doutils qui permettent desinterentions sur le fic'ier source. G$rificateur ou analyseur de code& les outils de mise en forme ou de statistiques& sans ou/lier les applications de manipulation de

    fic'iers de texte&

    / Outils de d(eloppement

  • 7/26/2019 Programmation Systmes - Intro

    42/58

    /. Outils de d(eloppementd. %raitement du code source3

    5ri4icateur de code -outil -intest un grand classique de la

    programmation sous Unix& et son impl$mentationsous -inux se nomme lclint.

    analyser un code source C qui se compilecorrectement& rec'erc'er d$entuelles erreurs s$mantiques -appel de lclint peut donc Dtre u comme une sorte

    dextension aux options SHall et Spedantic de gcc.

  • 7/26/2019 Programmation Systmes - Intro

    43/58

    /. Outils de d(eloppementd. %raitement du code source3 ,ise en 4orme

    Il existe un outil nomm$ indent& dont uneersion 3nu est disponi/le sous -inux.

    un en9olieur de code. 5emettre en forme un fic'ier source C&

    automatiquement en fonction de certaines conentionspr$cis$es par des options.

  • 7/26/2019 Programmation Systmes - Intro

    44/58

    /. Outils de d(eloppementd. %raitement du code source3 ,ise en 4orme

    Exemple !oit le code suiant

  • 7/26/2019 Programmation Systmes - Intro

    45/58

    /. Outils de d(eloppementd. %raitement du code source3 ,ise en 4orme

    Exemple Nous demandons une mise en forme dans le style 3nu

  • 7/26/2019 Programmation Systmes - Intro

    46/58

    /. Outils de d(eloppementd. %raitement du code source3 ,ise en 4orme

    Exemple Nous demandons une mise en forme dans le style 3nu

  • 7/26/2019 Programmation Systmes - Intro

    47/58

    /. Outils de d(eloppementd. %raitement du code source3 ,ise en 4orme

    Exemple la conersion en style ernig'an et 5itc'ie nous donne

    / O il d d l

  • 7/26/2019 Programmation Systmes - Intro

    48/58

    /. Outils de d(eloppementd. %raitement du code source3 ,ise en 4orme

    Exemple la conersion en style =er,eley original nous donne

    / O il d d l

  • 7/26/2019 Programmation Systmes - Intro

    49/58

    /. Outils de d(eloppementd. %raitement du code source3 6tilitaires

    di(ers 3rep car il permet de rec'erc'er une c'aZne decaractres dans un ensem/le de fic'iers.

    pour retrouer une c'aZne de caractres danstoute une ar/orescence& il faut le

    coupler 0 lutilitaire find& en employant lacommande xargspour les relier.

    /. Outils de d(eloppement

  • 7/26/2019 Programmation Systmes - Intro

    50/58

    /. Outils de d(eloppementd. %raitement du code source3

    6tilitaires di(ersExemple: rec'erc'er une constante sym/olique

    (ICM2GBT"C[%T5"U"!6) dans tous les fic'ierssource du noyau -inux

    find rec'erc'e tous les fic'iers r$guliers (type f)r$cursiement 0 partir du r$pertoire en cours (.)& et enoieles r$sultats 0 xargs.

    Xargs les regroupe en une liste darguments quiltransmet 0 grep pour y rec'erc'er la c'aZne demand$e.

    /. Outils de d(eloppement

  • 7/26/2019 Programmation Systmes - Intro

    51/58

    -utilitaire diffcompare deux fic'iers et indique lesportions modifi$es entre les deux.

    Exemple Comparons les programmes 'ello..c (ersion ernig'an

    et 5itc'ie) et 'ello.\.c (ersion =er,eley)

    /. Outils de d(eloppementd. %raitement du code source3

    6tilitaires di(ers

    /. Outils de d(eloppement

  • 7/26/2019 Programmation Systmes - Intro

    52/58

    /. Outils de d(eloppemente. Construction d#application si une application comporte plusieurs modules (fic'ier

    source C) c'aque fic'ier C est compil$ en fic'ier o/9et .o

    ind$pendamment des autres loption Sc de gcc

    regroupee tous les fic'iers o/9et ensem/le lors del$dition des liens (assur$e par gcc).

    lutilitaire ma,epermet de ne pas recompiler unprogramme source non modifi$. Il compare les dates de modification des fic'iers Il est aid$ en cela par un fic'ier de configuration

    nomm$ Ma,efile(ou ma,efile& oire 3NUma,efile)&quon consere dans le mDme r$pertoire que les

    fic'iers source.

    /. Outils de d(eloppement

  • 7/26/2019 Programmation Systmes - Intro

    53/58

    Ma,efileest constitu$ par une s$rie de rgles du type

    ci/le d$pendances commandes -a ci/le indique le /ut d$sir$& par exemple le nom du

    fic'ier ex$cuta/le. -es d$pendances mentionnent tous les fic'iers dont la

    rgle a /esoin pour sex$cuter& -es commandes pr$cisent comment o/tenir la ci/le 0 partir

    des d$pendances.

    Exemple& monTprogramme interface.o calcul.o centre.o cc So monTprogramme interface.o c calcul.o centre.o 2our o/tenir des d$tails sur les Ma,efile& consulter la

    documentation 3nu.

    /. Outils de d(eloppemente. Construction d#application

    /. Outils de d(eloppement

  • 7/26/2019 Programmation Systmes - Intro

    54/58

    /. Outils de d(eloppement4. *rc+i(e classiue lutilitaire tar(6ape #rc'ier) regroupe plusieurs fic'iers

    en un seul paquet. cd ]1src

    tar Scf monTappli.tar monTappli1 -e fic'ier monTappli.tar contient alors toute larc'ie.

    2our le d$compresser& on peut effectuer cp monTappli.tar ]1tmp

    cd ]1tmp

    tar Sxf monTappli.tar

    ls

    monTappli.tar

    monTappli1

    /. Outils de d(eloppement

  • 7/26/2019 Programmation Systmes - Intro

    55/58

    /. Outils de d(eloppementg. En(ironnements de d(eloppement intgr

    %ffrent une interface grap'ique de

    d$eloppement emploient aussi les outils 3nu pour les

    compilations& d$/ogage& etc.

    grent les d$pendances entre les modules facilitent la compilation s$par$e des fic'iers.

    !implification par rapport 0 lutilisation dun fic'ier Ma,efile.

    -es plus connu et qui sont li/res sont 7eelop& issu du pro9et 7". "clipse& fourni sous licence %pen !ource.

    -e plus connus parmis les comerciaux

    Code Harrior de Metroer,s

    /. Outils de d(eloppement

  • 7/26/2019 Programmation Systmes - Intro

    56/58

    /. Outils de d(eloppement+. Contr7le de (ersion loutil 5C!(5eision Control !ystem) simplifie la mise au

    point dune application& principalement lorsque lesmodifications sont espac$es dans le temps

    5C! est l$quialent 0 lutilitaire !CC! (!ource CodeControl !ystem) quon troue sur les Unix commerciaux.

    Il errouille indiiduellement c'aque fic'ier source duneapplication.

    #ant de modifier un fic'ier& le programmeur derademander son extraction de la /ase aec la commande

    co (C'ec, %ut) aprs l$dition& il inoquera ci (C'ec, In) pour rendre le

    fic'ier au systme.

    /. Outils de d(eloppement

  • 7/26/2019 Programmation Systmes - Intro

    57/58

    5C! impose quune copie seulement puisse Dtre extraite pour

    Dtre modifi$e. 2lusieurs personnes peuent r$clamer une copie en lecture

    seule du mDme fic'ier& !i le nom/re de d$eloppeurs est plus important& on utilise un

    autre m$canisme de suii& CG!(Concurrent Gersion !ystem). CG! consere une copie centralis$e de lar/orescence des

    sources& et c'aque d$eloppeur peut disposer de sa proprecopie locale.

    2rincipe !i des modifications ont $t$ apport$es 0 des fic'iers source locaux& le

    programmeur peut alors pu/lier ses c'angements. CG! assure une mise 0 9our des sources maZtresses& aprs aoir $rifi$ que les

    fic'iers nont pas $t$ modifi$s entretemps par un autre utilisateur. 7iffution automatique par email des modifications

    /. Outils de d(eloppement+. Contr7le de (ersion

    /. Outils de d(eloppement

  • 7/26/2019 Programmation Systmes - Intro

    58/58

    O ppi. -ibliot+ues supplmentaires

    3nu 5eadline& facilite la saisie de texte correction& compl$tion& 'istorique des lignes saisies;

    ncurses& affic'e les r$sultats dunprogramme en mode texte positionnement du curseur& laccs aux couleurs& les

    manipulations de fenDtres& de panneaux& de menus;

    ;