programmation systèmes - intro
TRANSCRIPT
-
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;
;