X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;ds=sidebyside;f=prog_internet%2Fprog_internet_02.xhtml;fp=prog_internet%2Fprog_internet_02.xhtml;h=33002195e40b64578ef6145326a7fb8b9ce235a3;hb=7cce5c3a37a866072108aedf85ee3b06272dac81;hp=0000000000000000000000000000000000000000;hpb=9262e1c26fe53f5c68167eadbda074c5ddbb2658;p=hacks%2FsimpleWebSlides.git diff --git a/prog_internet/prog_internet_02.xhtml b/prog_internet/prog_internet_02.xhtml new file mode 100644 index 0000000..3300219 --- /dev/null +++ b/prog_internet/prog_internet_02.xhtml @@ -0,0 +1,1119 @@ + + + +
+Programme | séquences d'instructions effectuant + une tâche sur un ordinateur | +
Exécutable | fichier binaire contenant des + instructions machines interprétables par le + microprocesseur | +
Thread | +plus petite unité de traitement (⡠+ séquence d'instructions) pouvant être ordonnancée par + l'OS + | +
Processus | +instance d'un programme (⡠« un + programme en cours d'exécution »). Un processus est constitué + de un ou plusieurs threads. | +
Dans un fichier « counter.c
»
+ (attention c'est du pseudo
+ C)
int count = 0;
+ int exit = 0;
+ void display() {
+ while (exit == 0) {
+ sleep (3);
+ printf("%i\n", count);
+ }
+ }
+ void listen() {
+ while (exit == 0) {
+ wait_connect(80);
+ count++;
+ }
+ }
+ void main () {
+ run_function(display);
+ run_function(listen);
+ while (getc () != '\n') { };
+ exit = 1;
+ return;
+ }
+ Compilation
+
+ gcc -o counter.exe counter.c
+
+ Le fichier « counter.exe
» est un
+ exécutable (fichier binaire contenant du code machine)
+
+ ./counter.exe â il faut la permission +x sur le fichier
+
+
+ Le contenu de l'exécutable est copié en mémoire et le processeur
+ commence à exécuter la première instruction du programme.
+
listen
+ count
)display
+ Les threads partagent leur mémoire (variables communes)
+(différence: les processus + ne partagent pas leur espace mémoire)
+counter.exe
pendant 50ã²
+ firefox.exe
+ pendant 50㲠C'est le gestionnaire de processus qui décide quel
+ programme a la main et pour combien de temps (priorité aux
+ tâches critiques par exemple)
+ Le système d'exploitation stocke pour chaque processus un
+ ensemble d'informations, le PCB (Process Control Block).
+
Le PCB contient:
+Un processus change d'état au cours de son exécution
+Nouveau | le processus est en cours de création |
Exécution | le processus s'exécute |
En attente | le processus attend un évènement + particulier (saisie au clavier, écriture sur le disque, + â¦) |
Prêt | le processus est prêt à reprendre son + exécution et attend que l'OS lui rende la main |
terminé | le processus a fini son exécution |
L'OS détermine et modifie l'état d'un processus:
+ps
Permet d'avoir des informations sur les processus en cours
+ d'exécution (voir « man ps
» pour les
+ options):
+ $ 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
+
+
R | Running (en cours d'exécution) |
S | Interruptible sleep (en attente, + interruptible) |
D | Uninterruptible sleep (en attente, + non-interruptible) |
T | Stopped (interrompu) |
Z | Zombie (terminé mais toujours + listé par le système) |
L'OS peut envoyer des signaux à un processus. Sur réception + d'un signal, un processus peut interrompre son comportement normal + et exécuter son gestionnaire de signal. Quelques signaux: +
+Nom | Code | Description |
---|---|---|
HUP | 1 | demande au processus de + s'interrompre |
INT | 2 | demande au processus de se + terminer |
ABRT | 2 | interrompt le processus et produit + un dump |
KILL | 9 | interrompt le processus immédiatement + |
SEGV | 11 | signale au processus une erreur mémoire + |
STOP | 24 | suspend l'exécution du processus + |
CONT | 28 | reprend l'exécution d'un processus suspendu + |
Un processus est lié au terminal 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é
+
+
+ $ gedit
+
+
+ On peut envoyer au processus le signal STOP en
+ tapant ctrl-Z
dans le terminal:
+
+
+ $ gedit
+ ^Z
+ [1]+ Stopped gedit
+
+
+ Le processus est suspendu, la fenêtre est gelée (ne répond plus).
+
On peut reprendre l'exécution du programme de deux
+ manières:
+ $ fg
+ Reprend l'exécution du processus et le remet en avant plan (terminal
+ bloqué)
+ $ bg
+ Reprend l'exécution du processus et le remet en arrière plan (terminal
+libre)
+ On peut lancer un programme
+ directement en arrière plan en faisant:
+ $ gedit &
+ On peut envoyer un signal à un
+ processus avec la commande « kill [-signal] pid
»
+ $ kill -9 2345
+
Le terminal et le processus sont liés par trois fichiers + spéciaux:
+stdin
), reliée
+ au clavierstdout
), reliée
+ Ã l'affichagestderr
), reliée
+ Ã l'affichageDans le shell, on peut utiliser les
+ opérateurs <
, >
+ et 2>
pour récupérer le contenu
+ de stdin
, stdout
+ et stderr
:
+
+$ sort < toto.txt
+$ ls -l > liste_fichiers.txt
+$ ls -l * 2> erreurs.txt
+
+
Dans le shell, l'opérateur | permet
+ d'enchaîner la sortie d'un programme avec l'entrée d'un
+ autre:
+ $ ls -l *.txt | sort -n -r -k 5 | head -n 1
+
-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
+ -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
+
+ -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt
+
+ + Un daemon (prononcé démon) est un processus + qui non-interactif 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 signaux ou en lisant + ou écrivant dans des fichiers ou connexions réseau. Le plus souvent, + leur but est de fournir un service +
+Exemple de scénario: « Les utilisateurs doivent interagir avec + le matériel. L'accès au matériel demande des droits + administrateur. » +
+Nom | Description |
---|---|
sshd | shell distant sécurisé |
crond | exécution périodique de programmes |
cupsd | serveur d'impressions |
pulseaudio | serveur de son (mixe les sons des + différentes applications) |
udevd | détection de matériel hotplug |
nfsd | serveur de fichier réseau |
smtpd | livraison des e-mail |
httpd | serveur de pages Web |
+
+ Des processus clients communiquent
+ avec le serveur à travers le
+ réseau. Les clients sont indépendant et ne communiquent pas entre
+ eux. Attention plusieurs clients peuvent se trouver su la
+ même machine physique!
+
Exemples: serveur de bases de données, serveur mail, serveur Web, + terminal de carte bancaire, â¦
+