Files
TermNSI/Processus/README.md

185 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Gestion des processus et des ressources
### Le programme
![bo.png](assets/bo.png)
------
Nous le savons, un ordinateur possède une architecture de Von Neumann, il y a donc différents composants tels que la mémoire vive, la mémoire 'dure' (Disque dur, SSD...), un processeur...C'est cet élèment ci qui nous intéresse aujourd'hui.
Le processeur est le cerveau de l'ordinateur et c'est lui qui exécute les tâches de la machine.
Comment expliquer que notre processeur arrive à ouvrir un navigateur web, un lecteur de musique, télécharger un jeu ou encore envoyer des messages le tout simultanément. (Sans parler des tâches de fond de l'ordinateur)
Tout ces programmes sont en réalité des lignes immenses de code et le processeur lui agit seul. Il exécute une à une les instructions de chaque programme, mais donne la sensation de tout gérer en même temps.
> Les processeurs multi-cœurs fonctionnent de la même façon à l'exception près qu'il n'y a pas 1 cœur, mais 4 voir 8 cœurs. Mais au vu de la multitude de programmes tournant en même temps sur la machine, le nombre de cœurs est nettement inferieur.
## 1. Notion de processus
Lorsqu'un programme est exécuté, il créé plusieurs processus. En effet, un programme est composé de diverses instructions (lignes de code) qui elles mêmes forment diverses parties (processus) de celui-ci.
Ces processus sont donc stocker dans une file (tout cela est géré par l'OS [Rappel 1ère]) et sont exécuté un à un.
*Exemple de répartition de deux programmes par l'OS :*
<img src="assets/file.png" alt="File" style="width:50%;" />
Chaque processus possèdent différentes informations stockées en mémoire (dans le PCB (*Process Control Block*)) comme :
| Nom | Description |
| ---------- | ----------------------------------------------------- |
| PID | Process ID, identifiant du processus |
| Etat | Etat du processus |
| Registre | Valeur des registres lors de la dernière interruption |
| Mémoire | Emplacement mémoire, allouée par le processeur |
| Ressources | Ressources utilisées par le processus. |
## 2. Gestion des processus
Nous l'avons vu chaque processus possèdent plusieurs informations. **L'état** d'un processus permet de comprendre comment la file d'exécution est créée et comment celle-ci perdure.
Il existe 3 états différents :
- Prêt : Le processus attend d'être exécuté. Il est dans la file d'exécution.
- Elu : En cours d'exécution
- Bloqué/En attente : Le processus nécessite une ressource non disponible. Tel qu'un emplacement mémoire, une entré/sortie.
Lorsque la ressource sera disponible, le processus repassera en état prêt.
- On peut imaginer que le processus attend l'intervention de l'utilisateur, ou le chargement d'une ressources (donc d'autres processus), etc.
Il existe aussi deux autres états :
- Nouveau : le processus vient d'être crée, il n'est pas encore dans la file d'exécution
- Terminé : l'exécution du processus est finie.
<u>Voici un schéma des différents états :</u>
<img src="assets/etat.png" style="zoom:50%;" />
## 3. Interblocage :
L'interblocage intervient lorsque plusieurs processus sont bloqués les un aux autres.
Imaginons deux programme.
```
# Programme 1 :
Accès à la ressource A
Accès à la ressource B
....
Libération de ressource B
Libération de ressource A
```
```
# Programme 2 :
Accès à la ressource B
Accès à la ressource A
....
Libération de ressource A
Libération de ressource B
```
### 3. 1. Un exemple d'ordonnancement
```
# Programme 1 :
Accès à la ressource A
Accès à la ressource B
```
- Le processus 1 à commencé, via un premier processus. Afin de faire tourner tous les programmes 'en même temps' il repasse dans la file d'exécution
```
# Programme 2 :
Accès à la ressource B
....
```
- Ici l'accès ne peut se faire, le programme 2 passe donc en état **Bloqué**
```
# Programme 1 :
....
Libération de ressource B
Libération de ressource A
```
- Le programme 1 se termine et donc libère A et B
```
# Programme 2 :
Accès à la ressource B
Accès à la ressource A
....
Libération de ressource A
Libération de ressource B
```
- Le programme 2 peut donc s'exécuter normalement
### 3. 2. Mauvais ordonnancement :
```
# Programme 1 :
Accès à la ressource A
```
- Le programme 1 créer un premier processus, qui appelle la ressource A
```
# Programme 2 :
Accès à la ressource B
```
- le programme 2 créer un premier processus, qui appelle la ressource B
```
# Programme 1 :
Accès à la ressource B
```
- Le programme 1 attend la ressource B utilisée par le programme 2 et passe en état bloqué.
```
# Programme 2 :
Accès à la ressource A
```
- Le programme 2 attend la ressource A utilisée par le programme 1 et passe en état bloqué.
Ici les deux programmes sont en état bloqué car chacun attend la ressource de l'autre. Il y a interblocage et donc aucuns des programmes ne peut s'exécuter.
## 4. En pratique
### 4. 1. Windows
Sous windows il est possible de voir les processus en cours d'exécution grâce au **gestionnaire de tâche**. Celui-ci est accessible grâce aux touches Ctrl+ Maj+Echap.
Il suffit ensuite d'aller dans l'onglet détail et on obtient tous les processus.
<img src="assets/liste_processus_windows.png" style="width:60%;" />
Nous retrouvons bien, l'**état**, le **PID**, la **mémoire occupée**
### 4. 2. Linux
Sous linux, il suffit d'accéder au terminal. Et d'y écrire la commande **ps**, il est possible de voir les **PID** et **PPID** (processus parent)
![ps_aux](assets/ps_aux.webp)
### 4.3 MacOs
MacOs étant un système Unix, (dérivé de BSD ici) on retrouve les mêmes commandes que sous linux en grande partie.
Pour voir les processus, ici, on utilisera plutôt **TOP** (dispo sous linux également donc).
<img src="assets/top.png" alt="top" style="zoom:50%;" />
---------
Auteurs : Florian Mathieu, Timothée Decoster, Enzo Frémaux
Licence CC BY NC
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Licence Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a> <br />Ce cours est mis à disposition selon les termes de la <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International</a>.