Code de déblocage du chapitre :

Les systèmes d'exploitation (Operating System)

Généralité

Le système d’exploitation d’un ordinateur est chargé d’assurer les fonctionnalités de communication et d’interfaçage avec l’utilisateur. Un OS est un logiciel dont le principal domaine d’intervention est la gestion de toutes les ressources de l’ordinateur comme :

C'est donc une composante logicielle très importante.

Dans un ordinateur, les logiciels sont divisés en deux catégories :

Découvrons en 3 minutes le rôle du système d'exploitation.

Voici quelques exemples de système d'exploitation :

Principaux types de système d'exploitation

Un OS est dit de "monoprogrammation" lorsqu'un seul utilisateur est présent et a accès à toutes les ressources de la machine pendant tout le temps que dure son travail. Si cet utilisateur exécute plusieurs programmes, ils le seront les uns à la suite des autres.

À titre d’exemple, supposons que sur un tel système 4 utilisateurs exécutent chacun un programme : P1, P2, P3 et P4. L’OS ne permet le passage des programmes que un à un :

.

Ici le programme P2 ne pourra s'exécuter que lorsque le programme P1 sera terminé, et ainsi de suite.

Relativement aux temps d’attente, un système de monoprogrammation est très injuste vis à vis des petits programmes.

Un OS est dit de "multiprogrammation" lorsque plusieurs utilisateurs peuvent être présents en " même temps " dans la machine et se partagent les ressources de la machine pendant tout leur temps d’exécution.

La multiprogrammation est la capacité d'un système d'exécuter à la suite plusieurs activités sans l'intervention de l'utilisateur. Elle apparue dans les années 1960.

En reprenant l’exemple, P1, P2, P3, P4, sont exécutés cycliquement par l’OS qui leur alloue les ressources nécessaires (disque, mémoire, fichier, ...) pendant leur tranche de temps d’exécution.

.

Ici les programmes vont s'exécuter de façon cyclique.

Relativement aux temps d’attente, un système de multiprogrammation rétablit une certaine justice entre petits et gros programmes.

À l'heure actuelle, tous les OS sont issus de la multiprogrammation.
Par exemple, elle est apparue dans la famille Windows avec Win98.

Question :
Quel est le rôle du système d’exploitation ?
Réponses :
Allumer le disque dur.
Compiler et exécuter un programme.
Partager la machine physique entre les différents programmes et bâtir une IHM accessible à l’utilisateur.
Gérer les accès du disque dur.

Les processus

Notion de contexte d'exécution d'un programme

Lorsqu'un programme qui a été traduit en instructions machines s'exécute, le processeur central lui fournit toutes ses ressources (registres internes, place en mémoire centrale, données, code, …), on appelle cet ensemble de ressources mises à disposition d'un programme "son contexte d'exécution".

Processus et ordonnancement

Un processus est l'image en mémoire centrale d'un programme s'exécutant avec son contexte d'exécution.

Un ordinateur possède un ou plusieurs processeurs, qui sont eux-même constitués de plusieurs unités de calcul, les cœurs. C'est le système d'exploitation qui va donner à un processus l'accès à une unité de calcul, cela s'appelle l'ordonnancement. Les processus ne quitteront cette dernière que si :

Lorsqu'une unité de calcul est libre, c'est le système d'exploitation qui va déterminer un nouveau processus à affecter à l'unité de calcul. Pour cela il existe plusieurs algorithmes d'ordonnancement :

Afin de savoir si un algorithme est préférable pour un ensemble de processus, nous devons connaître quelques définitions.

Représentation de l'ordonnancement

Réaliser l'ordonnancement d'une succession de processus c'est compléter un tableau de ce processus :

Processus P1 P2 P3 ...
Durée en quantum ... ... ... ...
Date d'arrivée ... ... ... ...
Temps de terminaison (optionnel) ... ... ... ...
Temps d'execution ... ... ... ...
Temps d'attente ... ... ... ...

On détermine aussi le temps d'attente moyen et le temps d'execution moyen.

Pour illustrer les définitions qui suivent nous allons traiter un ordonnancement avec le modèle SJF

Processus P1 P2 P3 P4 P5
Durée en quantum 3 6 4 2 1
Date d'arrivée 0 1 4 6 7
Temps de terminaison (optionnel)
Temps d'execution
Temps d'attente

Le schéma d'ordonnancement de ces processus sur le modèle SJF est le suivant :

l'image arrive prochainement

Temps d'arrivée

Le temps d'arrivée d'un processus, ou temps de soumission, correspond au moment où le processus arrive dans la file d'attente.

Le temps d'arrivée du processus $P_5$ est 7. Celui de $P_4$ est 6.

Durée du processus

La durée du processus $P$, ou durée d'exécution sur le cœur, correspond à la durée en quantum nécessaire à l'execution du processus.

La durée du processus $P_5$ est 1. Celui de $P_4$ est 2.

Temps de terminaison.

Le temps de terminaison d'un processus $P$ est la durée écoulée entre le temps 0 et le temps où le processus est terminé.

D'après le schéma d'ordonnancement précédent, on peut compléter le tableau avec les temps de terminaison de chaque processus :

Processus P1 P2 P3 P4 P5
Durée en quantum 3 6 4 2 1
Date d'arrivée 0 1 4 6 7
Temps de terminaison (optionnel) 3 9 16 12 10
Temps d'execution
Temps d'attente

Temps d'exécution ou temps de séjour

Le temps d'exécution du processus $P$, ou temps de séjour, correspond à la différence entre le temps de terminaison de $P$ et le temps d'arrivée de $P$.

On peut compléter par soustractions la ligne des temps d'exécution.

Processus P1 P2 P3 P4 P5
Durée en quantum 3 6 4 2 1
Date d'arrivée 0 1 4 6 7
Temps de terminaison (optionnel) 3 9 16 12 10
Temps d'execution/Temps de Séjour $3-0=3$ $9-1=8$ $16-4=12$ $12-6=6$ $10-7=3$
Temps d'attente

Temps d'attente

Le temps d'attente d'un processus $P$ ou durée d'attente du processus $P$ correspond à la différence entre le temps de séjour(=temps d'execution) et la durée du processus.

Processus P1 P2 P3 P4 P5
Durée en quantum 3 6 4 2 1
Date d'arrivée 0 1 4 6 7
Temps de terminaison (optionnel) 3 9 16 12 10
Temps d'execution/Temps de Séjour 3 8 12 6 3
Temps d'attente $3-3=0$ $8-6=2$ $12-4=8$ $6-2=4$ $3-1=2$

Actuellement,la plupart des systèmes d’exploitation utilise une évolution du modèle priorité,reposant sur les principes suivants :

Processus P1 P2 P3
Durée en quantum 8 5 9
Date d'arrivée 8 3 0

Représenter l'ordonnancement des processus ci-dessus à l'aide du modèle FIFO.

Code de déblocage de la correction :

Processus P1 P2 P3 P4
Durée en quantum 8 5 9 2
Date d'arrivée 4 0 3 7

Représenter l'ordonnancement des processus ci-dessus à l'aide du modèle SJF.

Code de déblocage de la correction :

Processus P1 P2 P3
Durée en quantum 8 5 9
Date d'arrivée 1 0 3

Représenter l'ordonnancement des processus ci-dessus à l'aide du modèle RR.

Code de déblocage de la correction :

Processus P1 P2 P3 P4 P5 P6 P7
Durée en quantum 8 5 9 2 6 8 4
Date d'arrivée 1 0 2 3 4 6 5
Temps de terminaison (optionnel)
Temps d'execution/Temps de Séjour
Temps d'attente

Représenter l'ordonnancement des processus ci-dessus à l'aide du modèle Round Robin.

Code de déblocage de la correction :

Processus P1 P2 P3 P4 P5 P6 P7
Durée en quantum 8 5 9 2 6 8 4
Date d'arrivée 1 0 2 3 4 6 5

On considère les processus ci-dessus. Quel algorithme, parmi les trois que l'on a étudié, permet l'exécution la plus rapide.

Code de déblocage de la correction :

Processus : état et fonctionnement

Processus : état

Un processus peut-être dans les états suivants :

L'état nouveau (ou création) : chargement des instructions, allocation de mémoires et des ressources (statiquement), il passe directement à l’état prêt. Il existe 4 événements pour créer un processus :

Lors de sa création, un numéro unique d'identification est attribué à chaque processus, c'est l'identifiant de processus ou PID (Process IDentifier).
Grâce à cet identifiant, nous pourrons appliquer différentes commandes sur le processus.

L’état prêt : le processus est prêt à être exécuté. Il est mis en attente jusqu’à ce qu’on lui libère le processeur (dispatch de l’Ordonnanceur), il passera alors à l’état Actif.

L’état actif (ou élu) :

L’état attente (ou bloqué) : le processus est en attente d’une ressource pour terminer. Dès sa libération il repasse à l’état Prêt.

L’état zombie : le processus a terminé son exécution et il ne peut plus évoluer mais les ressources qu’il a allouées ne sont pas libérées

L’état destruction : lors de la destruction le processus libère les ressources allouées. Il y a quatre causes possibles de la destruction d’un processus :

Processus : fonctionnement

Un processus va trouver à sa disposition un grand nombre de ressources, comme la RAM, les disques durs, les supports amovibles (clés USB, ...), les fichiers, ...

Lorsqu'un processus est dans l'état actif (ou élu), dans des conditions normales de fonctionnement, il ne peut utiliser une ressource qu’en suivant la séquence de trois étapes suivantes :
Requête – Utilisation - Libération

Lorsqu'un processus a fait une requête et que la ressource n'est pas disponible pour le moment, il va passer de l'état actif à l'état d'attente, le temps que la ressource se libère. Quand la ressource sera disponible, il devra attendre que le processus qui l'a remplacé soit terminé pour poursuivre son exécution.

Notion d'interblocage

Il est assez facile d'illustrer le phénomène d'interblocage en classe. Nous allons demander à deux élèves de tracer un cercle au tableau. On donne le compas au premier et le feutre au second. Les deux élèves vont se trouver dans une situation d'attente interminable puisque le premier élève attend que la ressource feutre soit libre, et le second attend que la ressource tableau soit libre.

Dans un ordinateur le même phénomène peut se produire entre plusieurs processus, c'est l'interblocage.

Un ensemble de processus est dans une situation d’interblocage si chaque processus de l’ensemble attend un événement qui ne peut être produit que par un autre processus de l’ensemble.

Un système possède une instance unique et libre de chacun des deux types de ressources R1 et R2. Un processus P1 détient l’instance de la ressource R1 et un autre processus P2 détient l’instance de la ressource R2. Pour suivre son exécution, P1 a besoin de l’instance de la ressource R2, et inversement P2 a besoin de l’instance de la ressource R1. Une telle situation est une situation d’interblocage.

Dans un interblocage, les processus ne terminent jamais leur exécution et les ressources du système sont immobilisés, empêchant ainsi d’autres travaux de commencer.

Lorsqu'un processus attend indéfiniment une ressource on dit qu'il est dans une situation de famine.

Quatre conditions sont nécessaires à l'interblocage :

Les processus avec Windows

Microsoft Windows est architecturé en services (processus) fonctionnant en arrière-plan. Il est possible d'afficher facilement la liste des processus en cours dans le gestionnaire des tâches en appuyant simultanément sur CTRL+SHIFT+ESC, ou en executant directement taskmgr.exe dans la barre de recherche.

Si vous lancez le gestionnaire de tâches pour la première fois, vous serez peut-être amené à cliquer sur "Plus de détails " en bas à Gauche de la fenêtre.

Vous verrez alors une fenêtre avec six onglets.

Dans l'onglet Processus, vous verrez tous ceux s'exécutant sur votre machine, ainsi que les ressources qu'ils consomment. On distingue trois catégories :

Par un simple clic droit sur son nom, suivi de fin de tâche on peut facilement tuer un processus, c'est très pratique lorsqu'un programme ne répond plus.

Dans l'onglet Performance, nous pouvons voir graphiquement les resources utilisées :

Dans l'onglet Historique des applications, nous pouvons voir les resources utilisées par application :

Dans l'onglet Démarrage, nous pouvons voir toutes les applications qui se lancent au démarrage de Windows :

Dans l'onglet Utilisateur, nous pouvons voir tous les utilisateurs connectés sur la machine, par un simple clic droit sur son nom on peut le déconnecter :

Dans l'onglet Détails, nous pouvons voir le PID des processus et leurs statuts :

Lancer la calculatrice Windows, relever son PID et son statut.

Réduire la calculatrice dans la barre des tâches. Son PID a-t-il changé ? Son statut ?

Code de déblocage de la correction :

Dans l'onglet Services, nous pouvons voir tous les services et leurs statuts (un service est un processus qui est démarré par le système d'exploitation et qui s'exécute dans une session distincte.
Un service est un processus sans interface utilisateur.

Parmi ces processus un grand nombre sont des processus système faisant partie intégrante de Windows et certains correspondent à des applications tierces. Ainsi lorsque le système d'exploitation semble "ramer" il peut être intéressant de déterminer quel est le processus consommant le plus de ressources.

D'autre part la présence de vers, virus, chevaux de Troie, spywares, et AdWares sur le système est généralement trahie par la présence de processus suspects, c'est la raison pour laquelle ils prennent souvent un nom proche d'un processus système réel afin de passer inaperçu (par exemple system32.exe au lieu de system32.dll, isass.exe au lieu de lsass.exe).

Cependant Microsoft fournit des outils plus complets pour l'étude des processus Windows comme Process Explorer et Process Monitor

Pour télécharger Process Explorer c'est ici.

Pour télécharger Process Monitor c'est ici.

Process Explorer est un gestionnaire de tâches évolué qui permet de faire beaucoup de choses. La fonction première est d'afficher et lister les processus en cours d'exécution. Mais on peut aussi les terminer ou les suspendre.

Process Explorer va encore plus loin car il donne accès aux handles (un handle est un ID identifiant de manière unique un objet windows), DLL (bibliothèque qui contient du code et des données pouvant être utilisés simultanément par plusieurs processus) chargées/ouvertes par chaque processus. Enfin l'outil peut aussi aider à visualiser l'utilisation CPU, mémoire, GPU et disque globale et ce par application.

Les processus avec Linux

Sous Linux, les deux principales commandes pour visualiser les processus sont top et ps, la différence étant que l'on utilise top dans un terminal et ps dans un script où il est combiné à d'autres commandes.

À la différence de la partie précédente sous Windows, nous allons travailler en ligne de commandes.

La première étape est de reprendre votre machine virtuelle ou WSL et de relire le cours de l'an dernier sur les commandes Linux. Voici le lien

Suivant ce que vous avez fait en première :

La commande top

La commande top (pour Table Of Processes) affiche une vue dynamique en temps réel du système en cours d’exécution.
Elle peut afficher un résumé des informations du système aussi bien qu’une liste de tâches gérées sur le moment par le noyau Linux.

La commande top est l'équivalent du gestionnaire de tâches de Windows.
Elle apporte donc des renseignements sur la consommation mémoire, CPU, tous les processus en cours,...
Elle apporte des statistiques de consommation en temps réel, une mise à jour est effectuée toutes les 5 secondes environ.

Dans un terminal, saisir la commande top.

Voici quelques commandes que vous pouvez exécuter directement au clavier lorsque la commande top est lancée :

Ajouter la colonne qui donne le PPID (Parent Process ID).

Code de déblocage de la correction :

Remplacer la colonne Time+ par la colonne Time.

Code de déblocage de la correction :

Si vous travaillez sur une machine virtuelle, lancer Firefox puis relevez son PID et le nom de COMMAND qui lui est associé

Si vous travaillez sur WSL, ouvrez en parallèle deux sessions Ubuntu en ligne de commande :

Relevez le PID et le nom de COMMAND qui est associé à nano

Code de déblocage de la correction :

La commande pidof

La commande pidof cherche les PID (Process IDentifier) des processus portant l'un des noms de programme indiqués.

Il suffit de saisir pidof suivi du nom de COMMAND du processus.

Dans le cas de l'utilisation d'une machine virtuelle, chercher les PID de Firefox.

Dans le cas de l'utilisation de WSL, chercher les PID de nano.

Code de déblocage de la correction :

La commande kill

La commande kill permet d'arrêter un processus.

Il suffit de saisir kill suivi du PID du processus que l'on veut arrêter.

À partir desPID de Firefox ou de celui de nano, exécutez la commande kill sur chaque PID, et vérifier à chaque fois si Firefox ou nano est toujours lancé.

Code de déblocage de la correction :

Une variante pour arrêter un processus est d'utiliser la commande pkill.

Faites une recherche pour utiliser pkill, puis vérifiez en utilisant Firefox.

Code de déblocage de la correction :

La commande ps

Vous avez jusqu'à présent utiliser la commande top pour visualiser l'ensemble des processus en exécution à un moment donné.

La commande ps (pour Processes Status) permet aussi d'afficher l'ensemble des processus en cours d'exécution.

  1. Exécutez la commande ps en ligne de commande.

  2. Comparez avec le résultat obtenu avec top.
    Que remarquez-vous quant aux processus affichés ?

  3. Il est possible de rajouter différentes options à ps.
    Par exemple, exécuter les commandes ps aux ou ps -ef.
    Que permettent d'obtenir ces deux commandes ?

Code de déblocage de la correction :

  1. Les options aux de la commande ps signifient respectivement :

    • a : on veut les processus de tous les utilisateurs (a pour "all"),

    • u : on veut voir apparaître le propriétaire de tous les processus (u pour "user"),

    • x : on veut les processus même ceux non rattachés au terminal (x comme "xterieur" ?).

  2. Comme la liste obtenue avec ps peut vite être illisible, il est possible de filtrer avec l'option grep.
    Par exemple, pour obtenir la liste détaillée des processus en cours en lien avec Firefox, il suffit de saisir ps aux | grep firefox-esr. Par exemple, pour obtenir la liste détaillée des processus en cours en lien avec nano, il suffit de saisir ps aux | grep nano.

  3. La commande ps prend un cliché figé à un instant donné des processus en cours.

  4. La commande top permet d'obtenir un tableau qui s'actualise automatiquement des processus en cours, ces processus étant classés par ordre décroissant de leur utilisation de la CPU (Central Processeur Unit = unité de traitement d'un processeur).

Exercices

Cet exercice porte sur la gestion des processus par les systèmes d’exploitation.

Partie A :

Cette partie est un questionnaire à choix multiples (QCM).
Pour chacune des questions, une seule des quatre réponses est exacte.
Aucune justification n’est demandée. Une réponse fausse ou une absence de réponse n’enlève aucun point.

  1. Parmi les commandes ci-dessous, laquelle permet d’afficher les processus en cours d’exécution ?

    1. dir

    2. ps

    3. man

    4. ls

  2. Comment s’appelle la gestion du partage du processeur entre différents processus ?

    1. L’interblocage.

    2. L’ordonnancement.

    3. La planification.

    4. La priorisation.

  3. Quelle abréviation désigne l’identifiant d’un processus dans un système d’exploitation de type UNIX ?

    1. PIX

    2. SIG

    3. PID

    4. SID

    Quelle commande permet d’interrompre un processus dans un système d’exploitation de type UNIX ?

    1. stop

    2. interrupt

    3. end

    4. kill

Partie B :

  1. Un processeur choisit à chaque cycle d’exécution le processus qui doit être exécuté. Le tableau ci-dessous donne pour trois processus P1, P2, P3 :

    • la durée d’exécution (en nombre de cycles),

    • l’instant d’arrivée sur le processeur (exprimé en nombre de cycles à partir de 0),

    • le numéro de priorité.

    Le numéro de priorité est d’autant plus petit que la priorité est grande.
    On suppose qu’à chaque instant, c’est le processus qui a le plus petit numéro de priorité qui est exécuté, ce qui peut provoquer la suspension d’un autre processus, lequel reprendra lorsqu’il sera le plus prioritaire.

    Reproduire le tableau ci-dessous et indiquer dans chacune des cases le processus exécuté à chaque cycle.

  2. On suppose maintenant que les trois processus précédents s’exécutent et utilisent une ou plusieurs ressources parmi R1, R2 et R3.
    Parmi les scenarii suivants, lequel provoque un interblocage ? Justifier.

Code de déblocage de la correction :

Cet exercice porte sur les systèmes d’exploitation : gestion des processus et des ressources.

Les parties A et B peuvent être traitées indépendamment.

Partie A :

Dans un bureau d’architectes, on dispose de certaines ressources qui ne peuvent être utilisées simultanément par plus d’un processus, comme l’imprimante, la table traçante, le modem. Chaque programme, lorsqu’il s’exécute, demande l’allocation des ressources qui lui sont nécessaires. Lorsqu’il a fini de s’exécuter, il libère ses ressources.

On appelle p1, p2 et p3 les processus associés respectivement aux programmes 1, 2 et 3.

  1. Les processus s'exécutent de manière concurrente.
    Justifier qu'une situation d'interblocage peut se produire.

  2. Modifier l'ordre des instructions du programme 3 pour qu'une telle situation ne puisse pas se produire. Aucune justification n'est attendue.

  3. Supposons que le processus p1 demande la table traçante alors qu'elle est en cours d'utilisation par le processus p3. Parmi les états suivants, quel sera l'état du processus p1 tant que la table traçante n'est pas disponible :

    1. élu

    2. bloqué

    3. prêt

    4. terminé

Partie B :

Avec une ligne de commande dans un terminal sous Linux, on obtient l'affichage suivant :

La documentation Linux donne la signification des différents champs :

  1. Parmi les quatre commandes suivantes, laquelle a permis cet affichage ?

    1. ls -l

    2. ps -ef

    3. cd ..

    4. chmod 741 processus.txt

  2. Quel est l'identifiant du processus parent à l'origine de tous les processus concernant le navigateur Web (chromium-browser) ?

  3. Quel est l'identifiant du processus dont le temps d'exécution est le plus long ?

Code de déblocage de la correction :

Un système d’exploitation doit assurer la gestion des processus et des ressources.

  1. Dans ce contexte, expliquer et illustrer par un exemple ce qu’est une situation d’interblocage (deadlock).

  2. Citer des mécanismes permettant d’éviter ces situations.

Code de déblocage de la correction :

Voici un extrait d'un exercice d'un sujet de baccalauréat :

Code de déblocage de la correction :

Licence Creative Commons
Les différents auteurs mettent l'ensemble du site à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International