--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+ >
+<html xmlns="http://www.w3.org/1999/xhtml" >
+ <head>
+ <title>Programmation Internet</title>
+
+ <meta http-equiv="Content-Type"
+ content="text/html; charset=utf-8" />
+ <meta name="copyright"
+ content="Copyright © 2013 Kim Nguyễn" />
+
+ <!-- Load jQuery -->
+ <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
+ <!-- Load the library -->
+ <script src="../simpleWebSlides.js" type="text/javascript" ></script>
+
+ <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css" media="all" />
+ <!-- Load a custom Theme, the class-element marks this style-sheet
+ a "theme" that can be swtiched dynamicaly -->
+ <link class="sws-theme" rel="stylesheet" title="U-Psud style" href="../themes/uPsud.css" type="text/css" />
+
+ <!-- Customize some templates and initialize -->
+
+ <script type="text/javascript">
+ SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
+ SWS.Config['sws-object-deactivate'] = SWS.Effects.objectDeactivateFadeOut;
+ SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
+
+ //Ensures that we load SWS at the very end, after MathJax has
+ //been initialized
+
+ $(window).load(SWS.Presentation.init);
+ </script>
+ <style>
+ #svg2,#svg3 {
+ -webkit-transform: scale(1.8) translateX(40%);
+ transform: scale(1.8) translateX(40%);
+ }
+ </style>
+ </head>
+ <body>
+
+ <div class="sws-slide sws-cover sws-option-nofooter">
+ <h1>Programmation Internet</h1>
+ <h1>Cours 2</h1>
+ <a href="mailto:kn@lri.fr">kn@lri.fr</a><br/>
+ <a href="http://www.lri.fr/~kn/">http://www.lri.fr/~kn</a>
+ </div>
+
+ <div class="sws-slide" >
+ <h1> Plan </h1>
+ <ol >
+ <li> Systèmes d'exploitation ✔
+ <li class="hi"> Réseau et Internet
+ <ul class="empty">
+ <li class="hi"> 2.1 Principes des réseaux</li>
+ <li> 2.2 TCP/IP</li>
+ <li> 3
+ </ul>
+ </li>
+ </ol>
+ </div>
+
+ <div class="sws-slide">
+ <h1> Définitions </h1>
+ <table class="desc">
+ <tr>
+ <td style="width:6.5em;">Programme</td> <td>séquences d'instructions effectuant
+ une tâche sur un ordinateur</td>
+ </tr>
+ <tr>
+ <td>Exécutable</td> <td>fichier binaire contenant des
+ instructions machines interprétables par le
+ microprocesseur</td>
+ </tr>
+ <tr>
+ <td><i>Thread</i> </td>
+ <td>plus petite unité de traitement (≡
+ séquence d'instructions) pouvant être ordonnancée par
+ l'OS
+ </td>
+ </tr>
+ <tr>
+ <td>Processus</td>
+ <td> instance d'un programme (≡ « un
+ programme en cours d'exécution »). Un processus est constitué
+ de un ou plusieurs <i>threads</i>.</td>
+ </tr>
+ </table>
+ </div>
+
+ <div class="sws-slide">
+ <h1> Exemple: programme </h1>
+ <p>Dans un fichier « <code> counter.c </code> »
+ (<span style="color:red;">attention c'est du pseudo
+ C</span>)</p>
+ <div style="float:left;clear:both;vertical-align:top;width:45%;display:inline-block;border-right: 1pt solid #494948;">
+<code > int count = 0;
+ int exit = 0;
+ void <span style="color:green;">display()</span> {
+ while (exit == 0) {
+ sleep (3);
+ printf("%i\n", count);
+ }
+ }
+ void <span style="color:red;">listen()</span> {
+ while (exit == 0) {
+ wait_connect(80);
+ count++;
+ }
+ }</code>
+ </div> <div style="vertical-align:top;display:inline-block;width:45%;">
+<code> void <span style="color:blue;">main ()</span> {
+ run_function(display);
+ run_function(listen);
+ while (getc () != '\n') { };
+ exit = 1;
+ return;
+ }</code>
+ </div>
+ </div>
+ <div class="sws-slide">
+ <h1> Exemple: programme </h1>
+ <p>Compilation <br/>
+ <code>
+ gcc -o counter.exe counter.c
+ </code><br/>
+ Le <em>fichier</em> « <code>counter.exe</code> » est un
+ exécutable (fichier binaire contenant du code machine)<br/>
+ <code>
+ ./counter.exe <span style="margin-left:2em;font-size:smaller;color:red;"> ← il faut la permission +x sur le fichier</span>
+ </code>
+ <br/>
+ Le contenu de l'exécutable est copié en mémoire et le processeur
+ commence à exécuter la première instruction du programme.
+ </p>
+ </div>
+ <div class="sws-slide">
+ <h1> Exemple: <i>threads</i> </h1>
+ <ol>
+ <li class="sws-pause" ><span style="color:white;background:blue">main</span> </li>
+ <li class="sws-pause" ><span style="color:blue;">attente d'un évènement clavier
+ →</span><span style="color:red;">←changement de <i>thread</i></span>
+ </li>
+ <li class="sws-pause" ><span style="color:white;background:red">listen</span> </li>
+ <li class="sws-pause" ><span style="color:red;">attente de connexion →</span><span style="color:green;">←changement de <i>thread</i></span>
+ </li>
+ <li class="sws-pause" ><span style="color:white;background:green">display</span> (<span style="color:green;">affiche
+ 0 à l'écran)</span> </li>
+ <li class="sws-pause" ><span style="color:green;">attente pendant 3s →</span> (les
+ 3 <i>threads</i> attendent un évènement externe)<br/>
+ <span class="sws-pause" >nouvelle connexion sur le port 80</span> <span style="color:red;">←
+ réveil du <i>thread</i> <code style="color:red;">listen</code></span>
+ </li>
+ <li class="sws-pause" ><span style="color:white;background:red">listen</span>
+ (<span style="color:red;">incrémente <code style="color:red">count</code></span>)<br/>
+ <span style="color:red;">attente de connexion →</span><br/>
+ <span>… fin des 3s</span><br/>
+ <span style="color:green;">←
+ réveil du <i>thread</i> <code style="color:green;">display</code></span>
+ </li>
+ <li class="sws-pause" ><span style="color:white;background:green">display</span> (<span style="color:green;">affiche
+ 1 à l'écran)</span> </li>
+ </ol>
+ <p class="sws-pause" >Les <i>threads</i> partagent leur mémoire (variables communes)</p>
+ </div>
+ <div class="sws-slide">
+ <h1>Exemple: processus</h1>
+ <p>(différence: les processus
+ <em>ne partagent pas leur espace mémoire</em>)</p>
+ <ol>
+ <li>Exécution de <code><span style="color:blue;">coun</span><span style="color:red;">ter</span><span style="color:green;">.exe</span></code> pendant 50㎲
+ </li>
+ <li > Exécution
+ de <code><span style="color:orange;">firefox.exe</span></code>
+ pendant 50㎲ </li>
+ <li > Exécution du processus qui dessine le bureau pendant 50
+ ㎲<br/> … </li>
+
+ </ol>
+ <p>C'est le <em>gestionnaire de processus</em> qui décide quel
+ programme a la main et pour combien de temps (priorité aux
+ tâches critiques par exemple)<br/>
+ Le système d'exploitation stocke pour chaque processus un
+ ensemble d'informations, le PCB (<i>Process Control Block</i>).
+ </p>
+ </div>
+ <div class="sws-slide">
+ <h1>Proccess Control Block</h1>
+ <p>Le PCB contient:</p>
+ <ul>
+ <li>l'<em>identificateur du processus</em> (pid)</li>
+ <li>l'<em>l'état</em> du processus (en attente, en exécution,
+ bloqué, …)</li>
+ <li>le compteur d'instructions (<i>i.e.</i> où on en est dans
+ le programme)</li>
+ <li>le <em>contexte courant</em>(état des registres, …)</li>
+ <li>position dans <em>la file d'attente de priorité
+ globale</em></li>
+ <li>informations mémoire (zones allouées, zones accessibles,
+ zones partagées)</li>
+ <li>listes des fichiers ouverts (en lecture, en écriture),
+ liste des connexions ouvertes, … <br/> … </li>
+ </ul>
+ </div>
+ <div class="sws-slide">
+ <h1>Opérations sur les processus</h1>
+ <ul>
+ <li><em>création</em> et <em>destruction</em> de
+ processus</li>
+ <li><em>suspension</em> et <em>reprise</em></li>
+ <li><em>duplication</em> (<i>fork</i>)</li>
+ <li>modification de la <em>priorité</em></li>
+ <li>modification des <em>permissions </em></li>
+ </ul>
+ </div>
+ <div class="sws-slide">
+ <h1>États d'un processus</h1>
+ <p>Un processus change d'état au cours de son exécution</p>
+ <table class="desc">
+ <tr><td style="width:6em;">Nouveau</td> <td>le processus est en cours de création</td></tr>
+ <tr><td>Exécution</td> <td>le processus s'exécute</td></tr>
+ <tr><td>En attente</td> <td>le processus attend un évènement
+ particulier (saisie au clavier, écriture sur le disque,
+ …)</td></tr>
+ <tr><td>Prêt</td> <td>le processus est prêt à reprendre son
+ exécution et attend que l'OS lui rende la main</td></tr>
+ <tr><td>terminé</td> <td>le processus a fini son exécution</td></tr>
+ </table>
+ </div>
+ <div class="sws-slide">
+ <h1>États d'un processus</h1>
+ <p>L'OS détermine et modifie l'état d'un processus:</p>
+ <ul>
+ <li>En fonction d'évènements internes au processus:
+ <ul><li>lecture d'un fichier (si le contenu n'est pas
+ disponible, le processus passe de « prêt » à « en attente
+ »)</li>
+ <li>le processus attends volontairement pendant x
+ secondes<br/>…</li>
+ </ul>
+ </li>
+ <li>
+ En fonction d'évènements externes au processus:
+ <ul><li>un fichier devient disponible</li>
+ <li>un <i>timer</i> arrive à 0</li>
+ <li>le matériel déclenche une <em>interruption</em></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ <div class="sws-slide">
+ <h1>États d'un processus</h1>
+ <svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="340.10629"
+ height="207.70399"
+ viewBox="0 0 350 208"
+ id="svg2"
+ >
+ <defs
+ id="defs4">
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path3842"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ </defs>
+ <g
+ transform="translate(-43.8,-16.162183)"
+ id="layer1">
+ <g
+ transform="translate(2.8953552e-6,-2.2416992e-6)"
+ id="g4956">
+ <text
+ x="50"
+ y="32.362183"
+ id="text2985"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="50"
+ y="32.362183"
+ id="tspan2987">Nouveau</tspan></text>
+ <text
+ x="140"
+ y="102.36218"
+ id="text2989"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="140"
+ y="102.36218"
+ id="tspan2991">Prêt</tspan></text>
+ <text
+ x="255"
+ y="102.36218"
+ id="text2993"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="255"
+ y="102.36218"
+ id="tspan2995">En exécution</tspan></text>
+ <text
+ x="195"
+ y="187.36218"
+ id="text2997"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="195"
+ y="187.36218"
+ id="tspan2999">En attente</tspan></text>
+ <rect
+ width="65"
+ height="20"
+ rx="5"
+ ry="5.25"
+ x="45"
+ y="17.362183"
+ id="rect3007"
+ style="fill:none;stroke:#ffff05;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ width="45"
+ height="20"
+ rx="5"
+ ry="5.25"
+ x="130"
+ y="87.362183"
+ id="rect3007-2"
+ style="fill:none;stroke:#009eff;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ width="90"
+ height="20"
+ rx="5"
+ ry="5.25"
+ x="250"
+ y="87.362183"
+ id="rect3007-8"
+ style="fill:none;stroke:#5aff0b;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <rect
+ width="68"
+ height="19"
+ rx="5"
+ ry="5.25"
+ x="192"
+ y="173.36218"
+ id="rect3007-7"
+ style="fill:none;stroke:#ff7b00;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <path
+ d="m 70,42.362183 c 0,35 20,55 55,55"
+ id="path3809"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 150,82.362183 c 30,-30 120,-30 145,0"
+ id="path3809-2"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 295,112.36218 c -30,30 -121.15954,29.51126 -146.15954,-0.48874"
+ id="path3809-2-8"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 305,112.36218 c 0,35 -10,70 -45,70"
+ id="path3809-9"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 185,182.36218 c -35.00001,0 -45,-35 -45,-70"
+ id="path3809-9-6"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <text
+ x="325"
+ y="217.36218"
+ id="text2997-5"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="325"
+ y="217.36218"
+ id="tspan2999-3">Terminé</tspan></text>
+ <rect
+ width="58"
+ height="19"
+ rx="5"
+ ry="5.25"
+ x="322"
+ y="203.36218"
+ id="rect3007-7-6"
+ style="fill:none;stroke:#ff0000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ <path
+ d="m 315,112.36218 c 13.42024,11.32439 24.04764,43.74151 35,85"
+ id="path3809-9-6-7"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 225,197.36218 c 15,15 60,15 95,15"
+ id="path3809-9-6-2"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 1;stroke-dashoffset:0;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 135,112.36218 c 5,85 20,100 185,105"
+ id="path3809-8"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 1;stroke-dashoffset:0;marker-end:url(#Arrow2Mend)" />
+ <text
+ x="225"
+ y="37.362183"
+ id="text4821"
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="225"
+ y="37.362183"
+ id="tspan4823">mise en route</tspan><tspan
+ x="225"
+ y="48.612183"
+ id="tspan4825">par l'ordonnanceur</tspan></text>
+ <text
+ x="220"
+ y="117.36218"
+ id="text4821-3"
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="220"
+ y="112.36218"
+ id="tspan4823-1">interruption</tspan><tspan
+ x="220"
+ y="123.61218"
+ id="tspan4825-7">par l'ordonnanceur</tspan></text>
+ <text
+ x="300"
+ y="187.36218"
+ id="text4821-0"
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="300"
+ y="187.36218"
+ id="tspan4825-74">attente E/S</tspan><tspan
+ x="300"
+ y="198.61218"
+ id="tspan4864">interruption</tspan></text>
+ <text
+ x="180"
+ y="152.36218"
+ id="text4821-0-2"
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="180"
+ y="152.36218"
+ id="tspan4864-7">fin E/S</tspan><tspan
+ x="180"
+ y="163.61218"
+ id="tspan4892">int. traitée</tspan><tspan
+ x="180"
+ y="174.86218"
+ id="tspan4894">…</tspan></text>
+ <text
+ x="360"
+ y="147.36218"
+ id="text4821-0-29"
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="365"
+ y="147.36218"
+ id="tspan4864-1">terminaison</tspan><tspan
+ x="365"
+ y="158.61218"
+ id="tspan4909">normale</tspan></text>
+ <text
+ x="170"
+ y="212.36218"
+ id="text4821-0-7"
+ xml:space="preserve"
+ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="170"
+ y="212.36218"
+ id="tspan4864-75">terminaison</tspan><tspan
+ x="170"
+ y="223.61218"
+ id="tspan4935">anormale</tspan></text>
+ </g>
+ </g>
+ </svg>
+ </div>
+ <div class="sws-slide">
+ <h1>La commande <code><em>ps</em></code></h1>
+ <p>Permet d'avoir des informations sur les processus en cours
+ d'exécution (voir « <code>man ps</code> » pour les
+ options):<br/>
+ <code>$ ps -o user,pid,state,cmd x
+ USER PID S CMD
+ …
+ kim 27030 Z [chrome] <defunct>
+ kim 27072 S /opt/google/chrome/chrome --type=renderer
+ kim 29146 S bash
+ kim 29834 S evince
+ kim 29858 S emacs cours.xhtml
+ kim 29869 R ps -o user,pid,state,cmd x
+ </code><br/>
+ </p>
+
+ </div>
+ <div class="sws-slide">
+ <h1>États des processus (sous Linux)</h1>
+ <table class="desc">
+ <tr> <td>R</td> <td> <i>Running</i> (en cours d'exécution)</td> </tr>
+ <tr> <td>S</td> <td> <i>Interruptible sleep</i> (en attente,
+ interruptible) </td> </tr>
+ <tr> <td>D</td> <td> <i>Uninterruptible sleep</i> (en attente,
+ non-interruptible) </td> </tr>
+ <tr> <td>T</td> <td> <i>Stopped</i> (interrompu)</td></tr>
+ <tr> <td>Z</td> <td> <i>Zombie</i> (terminé mais toujours
+ listé par le système)</td> </tr>
+ </table>
+ </div>
+
+ <div class="sws-slide">
+ <h1>Signaux</h1>
+ <p>L'OS peut envoyer des <em>signaux</em> à un processus. Sur réception
+ d'un signal, un processus peut interrompre son comportement normal
+ et exécuter son <em>gestionnaire de signal</em>. Quelques signaux:
+ </p>
+ <table class="simple">
+ <tr><th>Nom</th> <th>Code</th> <th>Description</th> </tr>
+ <tr><td>HUP</td> <td>1</td> <td>demande au processus de
+ s'interrompre</td></tr>
+ <tr><td>INT</td> <td>2</td> <td>demande au processus de se
+ terminer</td></tr>
+ <tr><td>ABRT</td> <td>2</td> <td>interrompt le processus et produit
+ un <i>dump</i></td></tr>
+ <tr><td>KILL</td> <td>9</td> <td>interrompt le processus immédiatement
+ </td></tr>
+ <tr><td>SEGV</td> <td>11</td> <td>signale au processus une erreur mémoire
+ </td></tr>
+ <tr><td>STOP</td> <td>24</td> <td>suspend l'exécution du processus
+ </td></tr>
+ <tr><td>CONT</td> <td>28</td> <td>reprend l'exécution d'un processus suspendu
+ </td></tr>
+ </table>
+ </div>
+ <div class="sws-slide">
+ <h1>Processus et terminal</h1>
+ <p >Un processus est lié au <em>terminal</em> dans lequel il est
+ lancé. Si on exécute un programme dans un terminal et que le
+ processus ne rend pas la main, le terminal est bloqué
+<code >
+
+ $ gedit
+
+</code>
+ On peut envoyer au processus le signal <em>STOP</em> en
+ tapant <code>ctrl-Z</code> dans le terminal:
+<code>
+
+ $ gedit
+ ^Z
+ [1]+ Stopped gedit
+
+</code>
+ Le processus est suspendu, la fenêtre est gelée (ne répond plus).
+ </p>
+ </div>
+ <div class="sws-slide">
+ <h1>Processus et terminal</h1>
+ <p> <span>On peut reprendre l'exécution du programme de deux
+ manières:<br/>
+ <code> $ fg </code><br/>
+ Reprend l'exécution du processus et le remet en avant plan (terminal
+ bloqué)</span><br/>
+ <span class="sws-pause"><code> $ bg </code><br/>
+ Reprend l'exécution du processus et le remet en arrière plan (terminal
+libre)</span><br/>
+ <span class="sws-pause">On peut lancer un programme
+ directement en arrière plan en faisant:<br/>
+<code> $ gedit & </code><br/></span>
+ <span class="sws-pause">On peut envoyer un signal à un
+ processus avec la commande « <code>kill [-signal] pid</code> »<br/>
+<code> $ kill -9 2345 </code></span>
+ </p>
+ </div>
+ <div class="sws-slide">
+ <h1>Processus et entrées/sorties</h1>
+ <p>Le terminal et le processus sont liés par trois fichiers
+ spéciaux:</p>
+ <ol>
+ <li> L'entrée standard (<code><em>stdin</em></code>), reliée
+ au clavier</li>
+ <li> La sortie standard (<code><em>stdout</em></code>), reliée
+ à l'affichage</li>
+ <li> La sortie d'erreur (<code><em>stderr</em></code>), reliée
+ à l'affichage</li>
+ </ol>
+ <p>Dans le <i>shell</i>, on peut utiliser les
+ opérateurs <code><em><</em></code>, <code><em>></em></code>
+ et <code><em>2></em></code> pour récupérer le contenu
+ de <code><em>stdin</em></code>, <code><em>stdout</em></code>
+ et <code><em>stderr</em></code>:<br/>
+<code>
+$ sort < toto.txt
+$ ls -l > liste_fichiers.txt
+$ ls -l * 2> erreurs.txt
+</code>
+</p>
+</div>
+ <div class="sws-slide">
+ <h1>Processus et entrées/sorties</h1>
+ <p>Dans le <i>shell</i>, l'opérateur <em>|</em> permet
+ d'enchaîner la sortie d'un programme avec l'entrée d'un
+ autre:<br/>
+<code> $ <span style="color:green;">ls -l *.txt</span> | <span style="color:blue">sort -n -r -k 5</span> | <span style="color:orange">head -n 1</span></code>
+ </p>
+ <ol>
+ <li style="color:green;">affiche la liste détaillée des
+ fichiers textes</li>
+ <li style="color:blue;">trie (et affiche) l'entrée standard par ordre
+ numérique décroissant selon le 5ème champ</li>
+ <li style="color:orange;">affiche la première ligne de
+ l'entrée standard</li>
+ </ol>
+ <div style="height:5em;position:relative;margin:0 0;padding:0 0;">
+<code class="sws-onframe-1" style="position:absolute;color:green;"> -rw-rw-r 1 kim kim 471 Sep 14 16:25 bd.txt
+ -rw-rw-r 1 kim kim 234 Sep 15 17:46 foo.txt
+ -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt</code>
+<code class="sws-onframe-2" style="position:absolute;color:blue;"> -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt
+ -rw-rw-r 1 kim kim 471 Sep 14 16:25 bd.txt
+ -rw-rw-r 1 kim kim 234 Sep 15 17:46 foo.txt
+</code>
+<code class="sws-onframe-3" style="position:absolute;color:orange;"> -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt
+</code>
+ </div>
+
+ </div>
+<div class="sws-slide">
+ <h1>Processus de type <i>daemon</i></h1>
+<p>
+ Un <i>daemon</i> (prononcé démon) est un processus
+ qui <em>non-interactif</em> qui tourne en tâche de fond (pas
+ d'entrée/sortie sur le terminal, pas d'interface graphique, …). On
+ communique avec ce processus via des <em>signaux</em> ou en lisant
+ ou écrivant dans des fichiers ou connexions réseau. Le plus souvent,
+ leur but est de fournir un <em>service</em>
+</p>
+<p>Exemple de scénario: « <i> Les utilisateurs doivent interagir avec
+ le matériel. L'accès au matériel demande des droits
+ administrateur.</i> »
+</p>
+<ul class="empty">
+ <li>Solution 1 : tout le monde est administrateur (DOS, Win XP,
+ …)</li>
+ <li>Solution 2 : on crée un programme particulier qui a les
+ privilèges suffisants pour la tâche en question. Les utilisateurs
+ communiquent avec ce programme</li>
+</ul>
+</div>
+<div class="sws-slide">
+ <h1>Quelques <i>daemons</i> sous Linux</h1>
+<table class="simple">
+<tr><th>Nom</th> <th>Description</th> </tr>
+<tr><td>sshd</td> <td><i>shell</i> distant sécurisé</td> </tr>
+<tr><td>crond</td> <td>exécution périodique de programmes</td> </tr>
+<tr><td>cupsd</td> <td>serveur d'impressions</td> </tr>
+<tr><td>pulseaudio</td> <td>serveur de son (mixe les sons des
+ différentes applications)</td> </tr>
+<tr><td>udevd</td> <td>détection de matériel <i>hotplug</i></td></tr>
+<tr><td>nfsd</td> <td>serveur de fichier réseau</td></tr>
+<tr><td>smtpd</td> <td>livraison des e-mail</td></tr>
+<tr class="sws-pause"><td><em>httpd</em></td> <td>serveur de pages Web</td></tr>
+</table>
+</div>
+<div class="sws-slide">
+<h1>Architecture client-serveur</h1>
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.1"
+ width="256"
+ height="163.70399"
+ id="svg3">
+ <defs
+ id="defs3115">
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path3842"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="Arrow2Mend-9"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path3842-7"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="Arrow2Mend-2"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path3842-3"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="Arrow2Mend-1"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path3842-71"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="marker4143"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path4145"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="Arrow2Mend-11"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path3842-39"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="marker4143-8"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path4145-9"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="Arrow2Mend-6"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path3842-1"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="marker4245"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path4247"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="Arrow2Mend-7"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path3842-8"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="marker4353"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path4355"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="Arrow2Mend-8"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path3842-4"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ <marker
+ refX="0"
+ refY="0"
+ orient="auto"
+ id="marker4353-5"
+ style="overflow:visible">
+ <path
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ id="path4355-9"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" />
+ </marker>
+ </defs>
+ <g
+ transform="translate(-158.9,-91.262203)"
+ id="layer1">
+ <g
+ id="g3947">
+ <g
+ transform="translate(-1.1999969,-3.4960022)"
+ id="g4068">
+ <text
+ x="166.2"
+ y="180.85818"
+ id="text2985"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="166.2"
+ y="180.85818"
+ id="tspan2987">Client</tspan></text>
+ <rect
+ width="43.800003"
+ height="21.503998"
+ rx="5"
+ ry="5.25"
+ x="161.2"
+ y="165.85818"
+ id="rect3007"
+ style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ </g>
+ </g>
+ <g
+ transform="translate(-1.2000122,1.5039978)"
+ id="g3942">
+ <text
+ x="266.20001"
+ y="175.85818"
+ id="text2985-1"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="266.20001"
+ y="175.85818"
+ id="tspan3164">Serveur</tspan></text>
+ <rect
+ width="53.799988"
+ height="21.503998"
+ rx="5"
+ ry="5.25"
+ x="261.20001"
+ y="160.85818"
+ id="rect3007-8"
+ style="fill:none;stroke:#0000ff;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ </g>
+ <g
+ id="g4097">
+ <path
+ d="m 210,177.36218 c 15,10 30,10 45,0"
+ id="path3809"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
+ id="path3809-5"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ </g>
+ <g
+ transform="translate(210,0)"
+ id="g3947-5">
+ <g
+ transform="translate(-1.1999969,-3.4960022)"
+ id="g4068-3">
+ <text
+ x="166.2"
+ y="180.85818"
+ id="text2985-0"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="166.2"
+ y="180.85818"
+ id="tspan2987-3">Client</tspan></text>
+ <rect
+ width="43.800003"
+ height="21.503998"
+ rx="5"
+ ry="5.25"
+ x="161.2"
+ y="165.85818"
+ id="rect3007-5"
+ style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ </g>
+ </g>
+ <g
+ transform="translate(109.96827,1.0864348)"
+ id="g4097-7">
+ <path
+ d="m 210,177.36218 c 15,10 30,10 45,0"
+ id="path3809-3"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
+ id="path3809-5-7"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ </g>
+ <g
+ transform="matrix(0.56532555,0.82486788,-0.82486788,0.56532555,266.51188,-153.17986)"
+ id="g4097-0">
+ <path
+ d="m 210,177.36218 c 15,10 30,10 45,0"
+ id="path3809-2"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
+ id="path3809-5-5"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ </g>
+ <g
+ transform="translate(40,-70)"
+ id="g3947-3">
+ <g
+ transform="translate(-1.1999969,-3.4960022)"
+ id="g4068-36">
+ <text
+ x="166.2"
+ y="180.85818"
+ id="text2985-2"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="166.2"
+ y="180.85818"
+ id="tspan2987-4">Client</tspan></text>
+ <rect
+ width="43.800003"
+ height="21.503998"
+ rx="5"
+ ry="5.25"
+ x="161.2"
+ y="165.85818"
+ id="rect3007-7"
+ style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ </g>
+ </g>
+ <g
+ transform="translate(165,-70)"
+ id="g3947-1">
+ <g
+ transform="translate(-1.1999969,-3.4960022)"
+ id="g4068-1">
+ <text
+ x="166.2"
+ y="180.85818"
+ id="text2985-9"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="166.2"
+ y="180.85818"
+ id="tspan2987-6">Client</tspan></text>
+ <rect
+ width="43.800003"
+ height="21.503998"
+ rx="5"
+ ry="5.25"
+ x="161.2"
+ y="165.85818"
+ id="rect3007-6"
+ style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ </g>
+ </g>
+ <g
+ transform="matrix(-0.56532555,0.82486788,0.82486788,0.56532555,302.25486,-153.17986)"
+ id="g4097-0-8">
+ <path
+ d="m 210,177.36218 c 15,10 30,10 45,0"
+ id="path3809-2-9"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
+ id="path3809-5-5-7"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ </g>
+ <g
+ transform="translate(40,70)"
+ id="g3947-3-1">
+ <g
+ transform="translate(-1.1999969,-3.4960022)"
+ id="g4068-36-8">
+ <text
+ x="166.2"
+ y="180.85818"
+ id="text2985-2-8"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="166.2"
+ y="180.85818"
+ id="tspan2987-4-1">Client</tspan></text>
+ <rect
+ width="43.800003"
+ height="21.503998"
+ rx="5"
+ ry="5.25"
+ x="161.2"
+ y="165.85818"
+ id="rect3007-7-3"
+ style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ </g>
+ </g>
+ <g
+ transform="translate(160,70)"
+ id="g3947-1-7">
+ <g
+ transform="translate(-1.1999969,-3.4960022)"
+ id="g4068-1-2">
+ <text
+ x="166.2"
+ y="180.85818"
+ id="text2985-9-4"
+ xml:space="preserve"
+ style="font-size:12.5px;font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:DIN;-inkscape-font-specification:DIN Semi-Bold"><tspan
+ x="166.2"
+ y="180.85818"
+ id="tspan2987-6-0">Client</tspan></text>
+ <rect
+ width="43.800003"
+ height="21.503998"
+ rx="5"
+ ry="5.25"
+ x="161.2"
+ y="165.85818"
+ id="rect3007-6-4"
+ style="fill:none;stroke:#ff8305;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ </g>
+ </g>
+ <g
+ transform="matrix(0.56532555,0.82486788,-0.82486788,0.56532555,327.54691,-80.416181)"
+ id="g4097-0-2">
+ <path
+ d="m 210,177.36218 c 15,10 30,10 45,0"
+ id="path3809-2-3"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
+ id="path3809-5-5-5"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ </g>
+ <g
+ transform="matrix(-0.56532555,0.82486788,0.82486788,0.56532555,242.10224,-81.191343)"
+ id="g4097-0-3">
+ <path
+ d="m 210,177.36218 c 15,10 30,10 45,0"
+ id="path3809-2-7"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ <path
+ d="m 255.84443,171.31278 c -15,-10 -30,-10 -45,0"
+ id="path3809-5-5-9"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" />
+ </g>
+ </g>
+</svg>
+<p>
+ <br/><br/>
+ Des processus <span style="color:blue;">clients</span> communiquent
+ avec le <span style="color:orange;">serveur</span> à travers le
+ réseau. Les clients sont indépendant et ne communiquent pas entre
+ eux. <em>Attention</em> plusieurs clients peuvent se trouver su la
+ même machine physique!
+</p>
+</div>
+<div class="sws-slide">
+ <h1>Architecture client-serveur</h1>
+<ul>
+ <li>Le serveur attend des connexions entrantes</li>
+ <li>Les clients peuvent se connecter à tout moment</li>
+ <li>L'application client est généralement légère, envoie une
+ requête au serveur et attend un résultat</li>
+ <li>Le serveur est une application plus lourde qui:
+ <ul><li>effectue des calculs trop coûteux pour le client</li>
+ <li>gère l'accès à une ressource distante partagée<br/>…</li>
+ </ul>
+ </li>
+</ul>
+<p>Exemples: serveur de bases de données, serveur mail, serveur Web,
+ terminal de carte bancaire, …</p>
+</div>
+ </body>
+</html>