Système d'exploitation

I/ Processus

1) Définition

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

2) Création 👶

Pour créer un nouveau processus, le système d'exploitation

Une fois créé, le processus est placé dans l'état sleeping (en veille).

3) Observation

La commande

♟️ top

affiche la liste des processus, et leur état. Par exemple

Tasks: 161 total,   1 running, 160 sleeping,   0 stopped,   0 zombie

II/ Ordonnancement

L'ordonnancement des processus par le système d'exploitation permet de simuler le fonctionnement simultané même si le CPU n'a qu'un seul cœur. Cela se fait en ne mettant qu'un seul processus à la fois dans l'état running. Chaque processus a donc plusieurs états possibles.

1) En veille 😴

On a vu que lors de sa création, un processus est mis dans l'état sleeping (prêt, ou en veille). Cela veut dire qu'il ne fait rien.

2) En cours 🏃

Les processus peuvent être placés dans une file, et régulièrement, le système d'exploitation défile un processus pour l'exécuter pendant quelque temps : il est alors dans l'état running (en cours, ou en exécution).

Après un instant d'exécution, le processus est remis dans l'état sleeping et remis dans la file. Mais il peut également être mis dans l'état terminé ⚰️ (ou zombie 🧟) et cesser d'exister : un processus a une durée de vie finie.

3) Arrêté 🛑

Si un processus attend une ressource, il est inutile de le remettre dans l'état sleeping : quand il sera en tête de file, il sera automatiquement remis en queue de file, sans passer par l'état running. Dans ce cas il est dans l'état stopped (arrêté, ou en attente).

%3 👶 👶 😴 😴 👶->😴 🏃 🏃 😴->🏃 🏃->😴 🛑 🛑 🏃->🛑 🧟 🧟 🏃->🧟 ⚰️ ⚰️ 🏃->⚰️ 🛑->😴 🛑->⚰️ 🧟->⚰️

III/ Interblocage

Alice 👧 et Bob 👦 jouent à un jeu sur le graphe ci-dessous : chacun son tour lance le dé 🎲 puis déplace le pion ♟️ selon le résultat du lancer. Le premier qui mène le pion à l'arrivée (sommet vert) gagne le jeu.

%3 i0 e0 i0--e0 ⚂⚃ i1 i0--i1 ⚀⚁ e1 e0--e1 ⚀⚁ i1--e1 ⚄⚅ i2 i1--i2 ⚂⚃ e2 ♟️ e1--e2 ⚂⚃ i2--i0 ⚄⚅ i2--e2 ⚀⚁ e2--e0 ⚄⚅

On représente les processus par des sommets ronds, et les ressources par des sommets rectangulaires.

1) Utilisation

Un arc allant de la ressource 🎲 vers le processus 👧 signifie qu'Alice utilise le dé.

%3 R 🎲 P 👧 R->P

On suppose que les ressources sont exclusives, c'est-à-dire qu'un seul processus à la fois peut en utiliser une. Cela signifie qu'un seul arc peut partir d'un sommet rectangulaire, au maximum.

2) Besoin

Un arc allant du processus 👧 vers la ressource 🎲 signifie qu'Alice a besoin du dé et est dans l'état stopped jusqu'à ce que le dé soit disponible.

%3 R 🎲 P 👧 P->R

3) Blocage

Alice veut jouer, elle a besoin du dé et du pion. Le pion est dans la main de Bob.

%3 a 👧 d 🎲 a->d p ♟️ a->p b 👦 p->b

Lorsque Bob quitte l'état running pour entrer dans l'état sleeping, il libère le pion et Alice peut alors utiliser le pion :

%3 a 👧 d 🎲 a->d b 👦 p ♟️ p->a

Ceci permet à Alice d'entrer dans l'état running :

%3 a 👧 d 🎲 d->a b 👦 p ♟️ p->a

4) Interblocage

Lorsque le graphe ressources-processus comporte un cycle, on dit qu'il y a interblocage (deadlock en anglais).

Par exemple, si Alice et Bob veulent jouer en même temps (triche !) et que Bob a pris le pion en main, et Alice a pris le dé en main, alors

%3 a 👧 p ♟️ a->p d 🎲 d->a b 👦 b->d p->b