X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=prog_internet%2Fprog_internet_03.xhtml;fp=prog_internet%2Fprog_internet_03.xhtml;h=b3dd77157542555e8dcbeeedad58ac105762b927;hb=1a01baf63e59f5359c4af5cf2159b1e30f47ee74;hp=fa93d63f9fa0c277c9aa10758f02c75ae4b6588d;hpb=0bd2fb253ff8486acc783de47465ea223e54d952;p=hacks%2FsimpleWebSlides.git diff --git a/prog_internet/prog_internet_03.xhtml b/prog_internet/prog_internet_03.xhtml index fa93d63..b3dd771 100644 --- a/prog_internet/prog_internet_03.xhtml +++ b/prog_internet/prog_internet_03.xhtml @@ -4,7 +4,7 @@ >
-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, â¦
-