Vous êtes sur la page 1sur 6

SPÉCIALITÉ NSI TERMINALE

PARTIE 3 : ARCHITECTURES MATÉRIELLES, OS, RÉSEAUX

CHAPITRE 8 : GESTION DES PROCESSUS ET RESSOURCES

Lorsqu'on travaille sur un ordinateur on utilise souvent plusieurs logiciels ou fenêtre de navigation
simultanément. Chacune de ces applications n'est autre qu'un programme qui est exécuté par la machine.
Un programme n'est autre qu'une suite d'instructions écrites, in fine, en langage machine et exécutées une à une
par un processeur.
On a vu qu'un ordinateur, même de nos jours, ne possède qu'un nombre limité de processeurs (un par cœur soit
entre 1 et 8 en 2020).
Pourtant, les systèmes d'exploitation moderne permettent une exécution simultanée (ou concurrente) des
programmes. On parle de système d'exploitation multitâches.

Comment l'ordinateur fait-il alors pour exécuter "en même temps" les instructions des différents programmes
?

I- SYSTÈME D'EXPLOITATION ET ORDONNANCEUR

1) Système d'exploitation (OS)

C'est un ensemble de programmes (Windows,MacOS, GNU/Linux) qui permet la


communication entre l'utilisateur et la machine.
Pour cela il gère les ressources, les fichiers, la mémoire les périphériques, assure
le traitement des entrées-sorties et la sécurisation du système.

2) Exécution d'un programme et processus

Un processus est un programme en cours d'exécution par une machine.


Un processus a une durée de vie, de sa création à sa destruction, alors qu'un programme existe de façon
permanente dans la machine (enregistré dans une mémoire non volatile).

Exécution d'un programme et interruption :


En cliquant sur l'icône d'un fichier exécutable (fichier binaire contenant les instructions machines directement
exécutables par le processeur) ou en renseignant son chemin dans un terminal, l'OS effectue les actions
suivantes :
1- Le fichier contenant le programme (l'exécutable) est copié dans la mémoire RAM, à une certaine adresse
"A" ;
2- Le système d'exploitation écrit la valeur "A" dans le registre IP (Instruction Pointer).

Au prochain cycle de son horloge le processeur va lire l'instruction se trouvant à l'adresse "A" et l'exécuter.
Une fois cela fait, il exécutera ensuite la seconde instruction et ainsi de suite.
(On rappelle que l'exécution d'une instruction se décompose elle-même en plusieurs sous-étapes effectuées au
sein du processeur : le chargement (récupérer l'instruction en mémoire), le décodage (déterminer dans la suite
d'octets chargés quelle instruction ils encodent) et l'exécution proprement dite).

En réalité, l'exécution va être interrompue pour permettre au processeur d'exécuter d'autres programmes.
Cette interruption est la clé pour avoir une exécution concurrente des programmes.

À l'interruption du programme, le processeur exécute un programme spécial appelé gestionnaire


d'interruption.

MRS DALUT ET ITIER


1
LYCÉE THÉOPHILE ROUSSEL (SAINT-CHÉLY D’APCHER)
SPÉCIALITÉ NSI TERMINALE
PARTIE 3 : ARCHITECTURES MATÉRIELLES, OS, RÉSEAUX
Historiquement, sur les processeurs Intel il y avait une interruption toutes les 55 ms (18 fois par seconde).
Aujourd'hui, avec les horloges de précisions dont disposent les processeurs c'est toutes les 100 ns que le
gestionnaire d'interruption est appelé.

Un processus peut créer d'autres processus, c’est-à-dire démarrer l'exécution d'autres programmes. On
parle de processus père et de processus fils.
À la création d'un processus, différents identifiants lui sont associés :
- Un numéro de processus, le PID (Process Identification) ;
- Le numéro du processus père, le PPID ;
- L'identifiant de l'utilisateur qui a démarré le processus noté UID ;
- L'identifiant du groupe de l'utilisateur qui a démarré le processus noté GID ;

3) États d'un processus et ordonnancement des processus

Au cours de son existence, un processus peut-être :


- Bloqué, en attente d'un évènement ou de données (exemple de l'input en python). Il peut ensuite soit
passer à l'état prêt, soit être détruit.
- Prêt, ou passif, les données sont disponibles. Il peut ensuite devenir actif et n'attend plus que le
processeur.
- Actif, ou élu. Il est en cours d'exécution et peut soit terminer son exécution, soit passer à l'état
bloqué si des données ne sont plus disponibles, soit repasser à l'état prêt s'il est désactivé par le
système.
Au moment de sa création, un processus est placé dans l'état prêt.

Transition 1 : Le processus passe d’élu à bloqué, faute de données pour l'alimenter ou en attendant une
opération d'entrée/sortie.
Transition 2 : Le processus est interrompu soit parce que la tranche de temps qui lui est impartie est achevée
soit parce qu'un processus de plus haute priorité réquisitionne le processeur. Dans ce cas il passe à l’état Prêt.
Transition 3 : Le processus est prêt, il peut alors devenir Élu si processeur est disponible.
Transition 4 : Lorsqu’un processus est bloqué il faut qu’il redevienne prêt pour espérer être ensuite élu.

Soient deux processus A et B qui doivent chacun exécuter une tâche puis attendre le résultat d'entrée ou sortie
et ensuite exécuter une deuxième tâche.
PA-E1 signifie que A Exécute une première tâche et PA-A1 que A est en attente avant de pouvoir exécuter la
2ème tâche.
Il y plusieurs manières de gérer les attentes :

MRS DALUT ET ITIER


2
LYCÉE THÉOPHILE ROUSSEL (SAINT-CHÉLY D’APCHER)
SPÉCIALITÉ NSI TERMINALE
PARTIE 3 : ARCHITECTURES MATÉRIELLES, OS, RÉSEAUX
PA-E1 PA-A1 PA-E2 PA-A2 PA-E3
Exécution Attente Exécution Attente Exécution
PB-E1 PB-A1 PB-E2
Exécution Attente Exécution

Ici un processus (le B) doit attendre la fin d'un processus qui est placé devant lui dans la file ("premier arrivé,
premier servi"). Ce n'est pas avantageux pour les processus court situé plus loin dans la file.

PA-E1 PA-A1 PA-E2 PA-A2 PA-E3


Exécution Attente Exécution Attente Exécution
PB-E1 PB-A1 PB-E2
Exécution Attente Exécution

Ici c'est différent, il est nécessaire d'établir un ordre pour faire de la gestion multitâche.

Il peut y avoir plusieurs files de processus en attente de ressources. Lorsqu'une ressource est libérée et
disponible, c'est l'OS par l'intermédiaire de l'ordonnanceur qui décide l'ordre d'accès à la ressource et active
un processus qui utilise la ressource.
Ce processus est ensuite désactivé pour le replacer dans l'état prêt ou se retrouve dans l'état bloqué s'il a besoin
d'une ressource non disponible (dans ce cas, il rejoint la file d'attente).

L'ordonnanceur gère l'ordre suivant lequel les processus ont accès au processeur etassure la terminaison
du plus grand nombre de processus par unité de temps.
Cet ordonnancement se fait à intervalles de temps régulier grâce au gestionnaire d'interruption.
Le fait pour un processus d’être interrompu s’appelle une commutation de contexte.

Prenons l'exemple suivant. Une personne tape un rapport à l'aide d'un logiciel de traitement de texte. Son
navigateur web est aussi ouvert avec divers onglets pointant vers différents sites.

L'ordonnanceur fonctionnera de la façon suivante :


1-Le programme « traitement de texte » est en cours d'exécution (l'utilisateur saisit du texte qui est affiché
à l'écran, sauvegarde dans un fichier, etc.).
2- Une interruption d'horloge se déclenche.
3- Le code du gestionnaire d'interruption est appelé. Il reçoit en argument les valeurs qu'ont tous les registres
avant le déclenchement de l'interruption (donc tout l'état « interne » du traitement de texte).
4- Le gestionnaire d'interruption sauvegarde ces registres à un endroit particulier de la mémoire.
5- Il choisit dans la liste des processus un autre processus, par exemple celui correspondant au navigateur
web.
6- Il restaure les valeurs de tous les registres du processeur qu'il a sauvegardées la dernière fois qu'il a
interrompu le navigateur web. Parmi ces registres sauvegardés, il y a notamment l'IP, l'adresse de la pro-
chaine instruction à exécuter. Elle pointait alors vers une instruction du programme « navigateur web ».
7- Le gestionnaire d'interruption rend la main. La prochaine instruction à exécuter est celle du processus
navigateur web, qui reprend son exécution, jusqu'à ce qu'il soit mis en pause par la prochaine interruption
d'horloge.

Afin de pouvoir choisir parmi tous les processus lequel exécuter lors de la prochaine interruption, l'OS
conserve pour chaque processus une structure de données nommée PCB (pour l'anglais Process Control Bloc
ou bloc de contrôle du processus). Le PCB est simplement une zone mémoire dans laquelle sont stockées di-
verses informations sur le processus (état du processus, informations sur la mémoire, le temps de CPU, les
fichiers utilisés, l'identité de l'utilisateur ...).

MRS DALUT ET ITIER


3
LYCÉE THÉOPHILE ROUSSEL (SAINT-CHÉLY D’APCHER)
SPÉCIALITÉ NSI TERMINALE
PARTIE 3 : ARCHITECTURES MATÉRIELLES, OS, RÉSEAUX
4) Thread et multithreading

Un processus est constitué d'une suite d'instructions traitées par le processeur. Ces instructions sont
regroupées en petites séquences appelées "thread" (ou tâche). Un thread est donc une partie du processus qui
s'exécute indépendamment des autres parties.
Chaque cœur ne peut exécuter qu'un seul thread à la fois.
Un processeur peut partager le travail entre deux cœurs logiques qui sont créés à partir d'un seul cœur
physique. Chaque cœur logique va alors traiter séparément un thread ce qui permet au cœur physique de
traiter parallèlement deux threads. C'est ce qu'on appelle le multithreading ou hyperthreading.

II- GESTION DES PROCESSUS

Dans les systèmes POSIX, la commande "ps" (process status ou état du processus) permet d'obtenir des
informations sur les processus en cours d'exécution. En tapant "ps --help" on obtient les informations sur la
commande ps.

- "man nom-de-la-commande" affiche le manuel de la commande passée en argument (man pour


manuel) ;
- "ps -a" affiche tous les processus (et pas seulement ceux de l'utilisateur qui lance la commande) (ps –ef
fonctionne aussi mais est moins complet que ps –a) ;
- "ps -u" afficher le nom des utilisateurs (plutôt que leur identifiant numérique) ;
- "ps -x" compte les processus n'ayant pas été lancés depuis un terminal (comme les processus ou
ensemble de processus qui s'exécute en arrière-plan plutôt que sous le contrôle direct d'un utilisateur
appelés "daemon" ou comme ceux lancés depuis une interface graphique).
- "ps -W" ou "ps –windows" pour voir les processus Windows avec le terminal Cygwin. C'est l'équivalent
du gestionnaire de tâche sous Windows (accessible avec Ctrl+Alt+Suppr).

- "top" permet d'afficher en temps réel les informations similaires à celle de ps. Elle ne fonctionne pas ici
avec cygwin. On utilisera la commande "wmic process".
- "kill n°PID" permet d'interrompre un processus.

- "wmic process"est une commande windows mais qui fonctionne avec le terminal cygwin et qui permet
d'afficher toutes les informations possibles sur les processus windows.
On peut ainsi choisir de ne faire afficher que certaines informations en ajoutant get : "wmic process get
item1,item2 …". En ajoutant /EVERY:1 on peut afficher les informations en temps réel (les temps sont
exprimés en 1/10 000 000 de seconde).

Pour les commandes d'UNIX (norme POSIX) voir :


http://perso.univ-lyon1.fr/thierry.excoffier/COURS/COURS/UNIX2/unix.html

III- GESTION DES RESSOURCES ET INTERBLOCAGE

Plusieurs types de ressources sont à la disposition d'un processus : la mémoire RAM, les disques et clés
USB, les fichiers, les périphériques d'entrées et sorties.

Certaines ressources ne peuvent pas être retirées à un processus pendant qu'il les utilise, comme une
imprimante. Alors que d'autres, comme le processeur, peuvent être allouées à un autre processus pendant un
certain temps puis à nouveau allouées au premier processus.

MRS DALUT ET ITIER


4
LYCÉE THÉOPHILE ROUSSEL (SAINT-CHÉLY D’APCHER)
SPÉCIALITÉ NSI TERMINALE
PARTIE 3 : ARCHITECTURES MATÉRIELLES, OS, RÉSEAUX
L'utilisation d'une ressource par un processus passe par trois étapes :
- La demande d'accès qui est mise en attente si la ressource n'est pas disponible ;
- L’utilisation proprement dite de la ressource ;
- La libération de la ressource à la fin de l'utilisation, ce qui permet à cette ressource de pouvoir être
allouée à un autre processus si cela est nécessaire.

L'accès à une ressource peut être soit partagé entre plusieurs processus, soit exclusif.
Si un processus demande un accès exclusif, il est obligé d'attendre que la ressource soit libérée si elle est
déjà allouée.
Supposons deux processus ayant des accès exclusifs sur les ressources.
Si le premier processus attend une ressource mobilisée par le second qui attend une ressource mobilisée
par le premier, alors il y a un blocage définitif. Ce phénomène s’appelle l’interblocage ou deadlock en
anglais.
Exemple concret
Illustrons ce phénomène avec les deux programmes suivant :
- enregistrer_micro : acquiert la carte son en accès exclusif (pour accéder au micro) et écrit les sons
enregistrés sous un certain format (mp3 ou wav) sur sa sortie standard et s'arrête lorsqu'il al'équivalent
de 10 secondes de son.
- jouer_son : acquiert la carte son en accès exclusif (pour accéder au haut-parleur) et joue le contenu qu'il
reçoit sur son entrée standard.

Les cartes son sont typiquement des périphériques ne pouvant être utilisés que par au plus un processus.

Ces deux programmes peuvent être exécutés séquentiellement de la façon suivante :

$ enregistrer_micro > message.mp3


$ cat message.mp3 I jouer_son

La première ligne de commande appelle le programme enregistrer_micro et enregistre (au moyen d'une
redirection) les octets émis sur sa sortie standard dans le fichier message.mp3.
La deuxième commande utilise l'utilitaire cat pour afficher le contenu du fichier message. mp3 sur la sortie
standard puis redirige cette dernière au moyen de l'opérateur « | » sur l'entrée standard de la commande
jouer_son.

Que se passe-t-il maintenant si on enchaîne directement les deux commandes ?


$ enregistrer_micro | jouer_son

Le premier programme ouvre la carte son. Il commence ensuite à envoyer des données sur sa sortie standard.
Le second programme tente alors d'ouvrir la carte son et se retrouve bloqué. Il ne peut continuer son exé-
cution tant que la carte son n'est pas disponible. Comme le programme jouer_son est bloqué, il ne lit aucun
octet sur son entrée standard. Comme il ne lit aucun octet, le premier programme se retrouve lui aussi bloqué
lorsqu'il tente d'écrire sur sa sortie standard (puisque personne ne lit, les octets s'accumulent dans une zone
mémoire tampon et le programme est bloqué quand cette dernière est pleine). Les deux processus
correspondant à ces deux programmes sont en interblocage :

 le processus de jouer_son attend que la carte son soit libre pour progresser et lire son entrée
standard ;

MRS DALUT ET ITIER


5
LYCÉE THÉOPHILE ROUSSEL (SAINT-CHÉLY D’APCHER)
SPÉCIALITÉ NSI TERMINALE
PARTIE 3 : ARCHITECTURES MATÉRIELLES, OS, RÉSEAUX
 le processus d'enregistrer_micro attend que quelqu'un consomme son entrée standard pour
progresser et libérer la carte son.

MRS DALUT ET ITIER


6
LYCÉE THÉOPHILE ROUSSEL (SAINT-CHÉLY D’APCHER)

Vous aimerez peut-être aussi