Académique Documents
Professionnel Documents
Culture Documents
Plan de travail
Qu'est-ce qu'un processus ?
concept, identification
Création de processus
Description d'un processus
Environnement d’un processus
Terminaison d’un processus
Information sur un processus (état…)
Chargement d’un processus
1
Version Octobre 2012 N°186
Instruction = indécomposable
p et indivisible
Processeur = ...
Processus = suite temporelle d'exécutions d'instructions
Processus = exécution d'un programme (instructions +
données)
Processus = entité dynamique
(création --> disparition)
2
Version Octobre 2012 N°188
3
Version Octobre 2012 N°190
4
Version Octobre 2012 N°192
Rép. racine
x 10K
rw 20K
données p ée
privée
code partagée
pile privée
Table Régions
5
Version Octobre 2012 N°194
6
Version Octobre 2012 N°196
Zone Utilisateur
P
Processus 1
Fich. ouverts
Rép.courant
Rép. racine
…
Données 1
Code 1
Processus 2 Pile 1
…
Processus 1 Données 2
…
Table des Régions
Table des Processus (TdP)
Pages Mémoires
7
Version Octobre 2012 N°198
Rép.courant
Rép. racine
Pile Utilisateur
Transfert
f Transfert
6 8
Endormi (hors memoire) Creation
Manque de memoire
Reveil (swapping ?)
5
Pret a s'executer (hors memoire)
8
Version Octobre 2012 N°201
Processus en attente:
Etats: endormi-en-mémoire,
endormi-en-mémoire endormi-transféré
Réveil (changement d'état): par interruption
Préemption:
Mode utilisateur: oui
Mode noyau: Oui si se termine
Exécution d
d'une
une interruption:
passage en mode noyau
Prêt à s'exécuter en mémoire
Ordonnanceur / horloge
Gestion des priorités
9
Version Octobre 2012 N°203
En pratique
Programme interactif: plus prioritaire
U.C. récemment utilisé: moins prioritaire
Utilisateurs et groupes
effectifs/réels
Le bit SETUID
Structure p processus: utilisateur effectif/réel
l'utilisateur associé au login (réel)
avec les droits d'un utilisateur donné (effectif)
chmod : chmod u+s fichier (fichier exécutable)
exemple: commande passwd
Æ idem pour le groupe
Utili ti d
Utilisation des groupes secondaires
d i
groupe primaire/standard vs groupes
secondaires
newgrp : prend le groupe passé en paramètre
Vérification des droits (groupe secondaire ?)
Fichier /etc/group
10
Version Octobre 2012 N°206
Norme POSIX
Routine Description
pid = fork () Création fils
e = waitpid (pid,&etat,opts) Attendre fils
e = execve (nom,argv,envp) Remp. image
exit (etat) Term. process.
e = sigaction (sig,&act,&oact) Spécif. action
e = kill (pid, sig) Envoi signal
residuel = alarm (seconde) Prog. SIG...
pause() Susp. process.
Processus et Windows
(sous-système POSIX)
Norme POSIX 1 :
• Contrôle de processus
• Communication inter-processus
• Entrées/sorties « caractères »
•… Services Windows
pour UNIX
Ne contient pas : • 2000 fonctions
• création
é i de d processus léger,
lé • 300 utilitaires
• création de fenêtre
• « RPC » et « sockets » Pas d’accès aux
•… fonctions de Windows
11
Version Octobre 2012 N°209
Partage :
code
mém. read_only
Duplication :
information
données
0 PID: 5309
main()
{
34 …
“jean” res: 5309 res=fork()
…
}
34
res: 0
“jean”
12
Version Octobre 2012 N°211
Informations dupliquées
Table des descripteurs
Buffers
Curseur d'exécution
Variables globales
...
État : N° inode :
0 Nombre : Nb. copies :
1 I d Infos
Inode I f …
…
2
…
Position :
3 État :
O_RDWR
1
4 Nombre : 1
2 /.bashrc
5
…
N° inode :
… Nb. copies :
Position :
État : O_WRONLY Inode Infos …
Nombre : 12
Processus filss
0
1
2
3
4
5
…
Espace utilisateur Table fichiers Table inodes
13
Version Octobre 2012 N°213
Rép.courant
Rép. racine
Pile Utilisateur
Pile Noyau
PROC. FILS
Rép. racine
Pile Utilisateur
14
Version Octobre 2012 N°215
15
Version Octobre 2012 N°217
stdout associé :
terminal
fic. disque
Moment de la
Synchronisation?
Processus P
Autre N° groupe
16
Version Octobre 2012 N°219
PID du processus
PID du père
Propriétaire du processus
Groupe du processus
Réel ou effectif
17
Version Octobre 2012 N°221
U
User:E
E
Group:E
main
i { main
i {
… P … Si non ignorée
P
exit(int) abort()
Ou return
} }
implicite?
18
Version Octobre 2012 N°223
Processus p …
1 2 16
19
Version Octobre 2012 N°225
Pour
recevoir
l’état
Quel fils ?
20
Version Octobre 2012 N°227
#include <signal.h>
int main () {
int pid, res, etat;
if ( (pid = fork()) == 0) {
...
exit (1)
}
else
res = wait (&etat);
...
}
Etat du processus
< -1
1 : processus de ce groupe
= -1 : ∀ processus fils
= 0 : processus du groupe
rien: blocage normal
= > 0 : ce processus
WNOHANG: pas de blocage
WUNTRACED : processus
stoppés non interrogés
21
Version Octobre 2012 N°229
#include <signal.h>
int main () {
int pid, res, etat;
if ( (pid = fork()) == 0) {
...
exit (1)
}
else
if (waitpid(pid, &etat, WNOHANG) == -1)
printf(« le processus fils n’est pas terminé »);
...
}
9 temps
9 mémoire
9 nb swap
9 nb signaux
9 …
22
Version Octobre 2012 N°231
Programme
vs
Appels syst.
l ti
cumulation
23
Version Octobre 2012 N°233
Nb puls. / sec
34
“jean” err:
Table des Régions
PID: 5300
Pile (Après)
main()
{ Données (Avant)
…
… Code (Avant)
…
} Données (Après)
0 Pile (Avant)
34 Code (Après)
“jean” argv:
24
Version Octobre 2012 N°235
L’exécutable
Arguments
effectifs
Variables
d’environnement
envp[i] = nom=valeur\0
chemin relatif ou absolu
chaque argument termine par \0
Dernier élément des tableaux est NULL
Rappel: argv[0] = nom point d’entrée
Principales
P i i l actions
ti
Sauvegarde paramètres de exec
Désallocation des régions
Chargement éventuel de l'inode et du contenu
Allocation des nouvelles régions
25
Version Octobre 2012 N°237
0 Pile (Av)
x
34 Code (Ap)
“jean” argv:
/dev/sda1
tampon /bin/ls
: Instant t+1
26
Version Octobre 2012 N°239
27
Version Octobre 2012 N°241
Fonctionnement du shell
Interprétation d'une commande
Analyse syntaxique
Substitutions Variables d’environnement
Exécution: et exportation :
Création d'un shell fils . commande = modif. possib.
commande = ¬ modification
Processus fils:
Redirections et aboutements
Application de exec
Processus père:
Arrière plan vs premier plan
Attente d'un signal (wait)
Fonctionnement du shell
#include <sys/types.h>
int main () {
int pid, tmp, status;
...
if ( (pid = fork ()) < 0) erreur;
if (pid == 0)
/* Traitement fils */
execve (commande analysée, argv, envp)
else {
/* Traitement père */ WEXITSTATUS(status)
res = wait (&status) code de retour exit()
/* traitement de status */
}…}
Î Exécution en premier plan
Î Et en arrière plan ?
28
Version Octobre 2012 N°243
ROOT
PID = 1 INIT
fork
fork fork
PID = 1 INIT
fork
fork fork
exec
LOGIN
29
Version Octobre 2012 N°245
fork
fork fork
exec
LOGIN
exec
/BIN/KSH
/BIN/KSH
PPID = 1 PID : login
Ligne de
commande
30
Version Octobre 2012 N°247
trop de fork
Pas de traitement
des signaux
31
Version Octobre 2012 N°249
Communication inter-processus
Des solutions adaptées
Partie Système
Mécanisme de redirection (dup)
Comunication par tubes (dup, pipe)
envoi/traitement de signaux (signal, kill)
Partie Réseau
Bibliothèque IPC* (même machine)
Mémoire partagée
partagée, Sémaphores
Files de messages
Bibliothèque des sockets (tout le réseau)
32