Vous êtes sur la page 1sur 29

Rappels: Programmation Systèmes

Processus (introduction générale)

2019/2020
Plan

Processus (introduction générale)

o Les processus, à quoi ça sert?

o Définition

o Etats des processus

o Multiprogrammation

o Bloc de contrôle d’un processus

o Hiérarchie de processus

o Ressources d’un processus

o Fin d’un processus

o Linux/Unix: Commandes

Processus (Introduction générale) 2


Processus

Les processus, à quoi ça sert ?

« À faire plusieurs activités ”en même temps” »

 Attention!!! Ne pas confondre processus et processeur

 Processeur est un organe actif exécutant un processus

 Processus est un programme exécuté par la machine

Processus (Introduction générale) 3


Processus

Définition

Un processus est une entité dynamique qui matérialise un programme en cours d'exécution avec
ses propres ressources physiques (mémoire, processeur, entrée/sortie,…) et logiques (données,
variables, …).

Processus (Introduction générale) 4


Processus

Définition: Multiprogrammation

 En monoprogrammation: Un seul processus est exécuté à la fois (MS-DOS).

 Un processeur ne peut exécuter qu’une seule instruction à la fois.

 idée: Partager un (ou plusieurs) processeur entre différents processus.

 En multiprogrammation: Plusieurs processus sont exécutés (compiler tout en lisant son mail)

Processus (Introduction générale) 5


Processus

Définition: Multiprogrammation

 Point de vue conceptuel: chaque processus possède son processeur virtuel.

 Réalité: le processeur bascule constamment d’un processus à l’autre.

 Ce basculement (rapide) est appelé multiprogrammation.

Processus (Introduction générale) 6


Processus

Définition

Le système d’exploitation manipule deux types de processus :

 Processus utilisateur: lancé par un utilisateur (Compilation, éditeur, jeu, impression, …),
(Explorer,… sur «Windows»)

 Processus systèmes: lancés pour la gestion du système au démarrage de la machine


(Spooler d’impression, surveillance des terminaux tty,… sur Unix/Linux),

Processus (Introduction générale) 7


Processus

Etats des processus

Dans les systèmes mono programmés, un programme ne quitte pas l’unité centrale avant
de terminer son exécution. Pendant cette période, il dispose de toutes les ressources de la
machine. Par contre, ce n’est pas le cas dans les systèmes multiprogrammés, un processus
peut se trouver dans l’un des états suivants :

‐ Elu : si le processus est en cours d'exécution

- Bloqué : attente qu’un événement se produit ou bien une ressource pour pouvoir
continuer

- Prêt : si le processus dispose de toutes les ressources nécessaires à son exécution à


l'exception du processeur.

Processus (Introduction générale) 8


Processus

Etats des processus: sémantique des transitions

(1) : Allocation du processeur au processus sélectionné

(2) : Réquisition du processeur après expiration de la tranche du temps par exemple

(3) : Blocage du processus élu dans l’attente d’un événement (E/S ou autres)

(4) : Réveil du processus bloqué après disponibilité de l’événement bloquant (Fin E/S, …)

Processus (Introduction générale) 9


Processus

Etats des processus: sémantique des transitions

Notez bien que :

 Un seul processus peut être en exécution (élu) sur n’importe quel processeur à tout moment.

 Toutefois, plusieurs processus peuvent être prêts et en attente.

Processus (Introduction générale) 10


Processus

Bloc de contrôle d’un processus

Sauvegarde et chargement des contextes:

Commutation de contextes

Processus (Introduction générale) 11


Processus

Bloc de contrôle d’un processus

Lorsqu’un processus est temporairement suspendu, il faut qu’il puisse retrouver l’état où il se
trouvait au moment de suspension, il faut que toutes les informations (Contexte du processus)
dont il a besoin soient sauvegardées pendant sa mise en attente. D’où l’utilisation d’un bloc de
contrôle de processus (Process Control Block «PCB») qui contient toute information
nécessaire à la reprise d’un processus interrompu : Etat du processus (prêt, suspendu, ..),
quantité de mémoire, temps CPU (utilisé, restant), priorité, etc.

Processus (Introduction générale) 12


Processus

Bloc de contrôle d’un processus

 Les PCB sont rangés dans une table (table des processus) qui se trouve dans l’espace
mémoire du système.

 Cette table est gérée par le système d’exploitation.

 Le PCB permet la sauvegarde et la restauration du contexte mémoire et du contexte


processeur lors des opérations de commutations de contexte .

Processus (Introduction générale) 13


Processus

Bloc de contrôle d’un processus

Chaque PCB contient plusieurs informations concernant un processus spécifique, comme


par exemple:

 Le numéro du processus : un identificateur unique du processus (un entier) : le PID

 l'état courant du processus (élu, prêt, bloqué)

 le contexte processeur du processus : la valeur des registres du processeur

 le contexte mémoire: ce sont des informations mémoire qui permettent de trouver le code
et les données du processus en mémoire centrale

 des informations diverses de comptabilisation pour les statistiques sur les performances
système

 des informations liées à l' ordonnancement du processus.

Processus (Introduction générale) 14


Processus

Hiérarchie de processus

« Les processus se reproduisent: Création de processus fils »

« Un processus a un seul père et peut avoir 0 ou plusieurs fils »

Processus (Introduction générale) 15


Processus

Hiérarchie de processus

 Il existe des appels système permettant de créer un processus, charger son contexte et lancer
son exécution (fork, exec sous Unix).

 Un processus (père) peut créer d’autre processus (fils) qui hérite les descripteurs de son père.
Ce dernier à son tour peut créer d’autres processus.

 Les processus peuvent se terminer ou ils peuvent être éliminés par d’autres processus (la
primitive kill). A la destruction d’un processus, on libère toutes les ressources qu’il avait.

 Dans certains cas, la destruction d’un processus entraîne l’élimination de ces descendants;
cette opération n’affecte pas les processus qui peuvent continuer indépendamment de leur père
(processus orphelins).

 Un processus orphelin est adopté par le processus numéro 1 (init) et non par son grand-père.

 Processus Zombie: est un terme désignant un processus qui s'est achevé, mais qui dispose
toujours d'un PID et reste donc encore visible dans la table des processus, car son père n’est
pas au courant de sa mort. On parle aussi de processus défunt.

Processus (Introduction générale) 16


Processus

Hiérarchie de processus (Unix/Linux)

Processus (Introduction générale) 17


Processus

Hiérarchie de processus (Unix/Linux)

 Tous les systèmes UNIX reposent sur ce concept arborescent de processus

 Processus 0 (Swapper): est le premier processus de la machine

 Une fois créé, le processus 0 crée un deuxième processus, le processus 1 appelé également
processus INIT

 Le processus INIT va créer à son tour un certain nombre de processus : d'une part les
processus DEMONS responsable de fonctions système telles que la surveillance du réseau
(inetd), la gestion de l'imprimante (lpd)..., d'autre part des processus GETTY chargés de la
surveillance des terminaux (un processus par terminal). Le processus INIT trouve l'ensemble
des processus à créer dans le fichier /etc/inittab.

Processus (Introduction générale) 18


Processus

Hiérarchie de processus (Unix/Linux)

 Lorsqu'un utilisateur vient pour utiliser la machine, il se logue sur un terminal. Le processus
GETTY crée alors un nouveau processus (processus LOGIN).

 Le processus LOGIN est chargé de lire le login de l'utilisateur, son mot de passe et de vérifier
dans le fichier /etc/passwd que l'utilisateur est autorisé à se connecter à la machine.

 Si l'utilisateur est autorisé à se connecter à la machine, alors le processus LOGIN va créer à


son tour un nouveau processus, le processus SHELL, c'est-à-dire l'interpréteur de commande
pour le nouvel utilisateur.

 Cet interpréteur de commandes va prendre en charge les commandes tapées par l'utilisateur et
pour chacune d'elles il va crée un nouveau processus chargé d'exécuter la commande.

Processus (Introduction générale) 19


Processus

Hiérarchie de processus

Un processus fils hérite d’un certain nombre de ressources du processus père:

 Tables des fichiers ouverts

 Traitement des signaux

 Identificateur de l’utilisateur du processus et de son groupe.

Sous Unix les segments Piles et Données (variables) sont dupliqués, le segment code (code
du programme) est partagé.

Processus (Introduction générale) 20


Processus

Ressources d’un processus

Un processus dispose de différentes ressources pour s’exécuter. On parle de contexte


(sauvegardé ou restauré à chaque changement de processus):

Contexte utilisateur:

Ressources propres (code du programme, données «variables», pile d’exécution, tty associé
au processus, …).

Contexte système:

Ressources gérées par le SE: pid, ppid, uid, gid, table des fichiers

Contexte registre:

Etat des différents registres du processeur:

 Compteur Ordinal (CO): adresse de la prochaine instruction

 Registres d’état: PSW ou PSD

 Registres généraux (8086: AX, BX, CX,…)

Processus (Introduction générale) 21


Processus

Fin d’un processus

Un processus peut se terminer suite aux évènements suivants:

(a) Le processus a terminé sa tâche (exit sous Unix)

(b) Il s’est produit une erreur (division par zéro, accès à un fichier inexistant par ex.)

(c) Il est tué par un autre processus (kill sous Unix)

Sous Unix, dans tous les cas le processus est tué au final par son père (créateur ou auquel il
a été rattaché), dans le (a) c’est à la demande du fils, dans le (b) c’est à la demande du fils si
l’erreur a été prévue, à la demande du système d’exploitation sinon.

Processus (Introduction générale) 22


Processus

Linux/UNIX: Lister des informations sur les processus


La commande ps : visualise les processus qui tournent sur une machine.

Les options les plus intéressantes sont -e (affichage de tous les processus) et -f (affichage
détaillé).

La commande ps -ef donne :

La signification des différentes colonnes est la suivante:

UID nom de l'utilisateur qui a lancé le processus STIME correspond à l'heure de lancement du processus
PID correspond au numéro du processus TTY correspond au nom du terminal
PPID correspond au numéro du processus père TIME correspond à la durée de traitement du processus
C (facteur de priorité) : plus la valeur est grande, COMMAND correspond au programme qui a généré le
processus.
plus le processus est prioritaire

Processus (Introduction générale) 23


Processus

Linux/UNIX: Lister des informations sur les processus

Il existe une commande pstree qui permet d'afficher les processus sous forme d’arborescence,
c'est-à-dire en visualisant les liens de dépendance entre les processus.

La syntaxe de la commande est: pstree [options] [pid or username]

Processus (Introduction générale) 24


Processus

Linux/UNIX: Lister des informations sur les processus

La commande ps est intéressante, mais reste limitée, car elle n'affiche pas les informations en
temps réel => «solution: utilisation de la commande top »

La commande top est beaucoup plus complète que ps. Elle indique beaucoup d'informations très
intéressantes, et surtout lisibles.

Processus (Introduction générale) 25


Processus

Linux/UNIX: Lister des informations sur les processus

La commande top : l'option -o est utilisée avec un mot-clé (cpu, pid,…), on peut choisir
l'ordre d'affichage, c'est-à-dire croissant ou décroissant, en ajoutant un + ou un - devant le
mot-clé.

Par exemple: « top -o cpu + » pour classer la liste des processus affichés par utilisation du
processeur, avec un ordre d’affichage croissant.

Voici une liste des mots clés possibles:


• command Command name. • rshrd Resident shared address space size.
• cpu CPU usage. • rsize Resident memory size.
• pid Process ID (default). • th Number of threads.
• prt Number of Mach ports. • time Execution time.
• reg Number of memory regions. • vprvt Private address space size.
• rprvt Resident private address space size. • vsize Total memory size (virtual size).

Processus (Introduction générale) 26


Processus

Linux/UNIX: Lister des informations sur les processus

La commande top :

Une autre option bien utile qui sert à régler la fréquence des mises à jour est l'option -s, suivie du
nombre de secondes entre chaque mise à jour.

Par exemple: « top -s 5 »

On peut utiliser une combinaison de ces options, comme la commande suivante qui va donner les
processus rangés par utilisation du CPU, et mettra à jour l'affichage toutes les cinq secondes

Processus (Introduction générale) 27


Processus

Linux/UNIX: Changer la priorité d’un processus

Vous disposez de la commande nice pour modifier la priorité d'un processus.

La syntaxe est la suivante : nice -valeur commande

Plus le nombre est grand, plus la priorité est faible. Par exemple, la valeur 0 donne la priorité la
plus haute, et la valeur 20 donne la priorité la plus faible. La fourchette de valeur dépend du
système d’exploitation qu'on utilise.

Par exemple: nice -5 ps -ef

Généralement on utilise nice sur des commandes qui prennent du temps. Sur des commandes
courantes l'effet de nice est imperceptible. On l'utilisera par exemple pour compiler un
programme: nice -5 cc monprogramme.c

Processus (Introduction générale) 28


Processus

Linux/UNIX: Arrêter un processus

Vous disposez de la commande kill pour arrêter un processus.

Si vous voulez arrêter un processus, vous devez connaître son PID, puis vous tapez :

« kill -9 PID_Processus »

Un utilisateur ne peut arrêter que les processus qui lui appartient (qu'il a lancé).

Seul l'administrateur système a le droit d'arrêter un processus ne lui appartenant pas.

Pour un processus exécuté en avant-plan:

 Ctrl + C => Pour tuer le processus

 Ctrl + Z => Pour suspendre le processus (ne le tue pas, il l'arrête temporairement jusqu'à ce
que vous le relanciez)

« et pour relancer un processus suspendu ?»


Plus de détails dans le TP N°2
Processus (Introduction générale) 29

Vous aimerez peut-être aussi