Chapitre 10 : Gestion des processus.

🕐 Historique:

  • Les premières générations d'ordinateurs, dans les années 1945 à 1955, ne comportaient pas de système d'exploitation.
  • Dans les années 1960, avec l'arrivée des circuits électroniques à semi-conducteurs, la puissance de calcul des processeurs a augmenté de manière significative18. Cela a permis la réalisation de systèmes d'exploitation rudimentaires .
  • Dès 1980, les circuits électroniques à transistor ont été remplacés par des circuits intégrés, plus petits, ce qui a permis de réaliser des appareils plus compacts et moins coûteux et lancé le marché des ordinateurs personnels. De nombreux concepteurs de système d'exploitation qui se sont lancés sur ce marché n'avaient pas d'expérience, ce qui a donné de nouveaux produits, fondés sur des nouvelles idées, sans héritage ou influence de ce qui se faisait jusqu'alors.
  • En 1980, IBM prend contact avec Bill Gates, cofondateur de la société Microsoft, pour l'adaptation du langage BASIC à son nouveau micro-ordinateur : le Personal Computer (abrégé PC). IBM est également à la recherche d'un système d'exploitation, et Bill Gates leur conseille de se tourner vers CP/M. Mais Gary Kildall refuse de signer le contrat avec IBM. Bill Gates saute sur l'occasion : il rachète QDOS — un système d'exploitation quick-and-dirty pour les processeurs Intel 8086 — pour proposer à IBM le package DOS/BASIC. Après quelques modifications effectuées à la demande d'IBM, le système est baptisé MS-DOS.
  • En 1983, Richard Stallman du Massachusetts Institute of Technology lance l'idée d'un système d'exploitation sous licence libre : GNU23. Il développe des outils de programmation, des logiciels utilitaires, et crée la GNU General Public License — un contrat de licence autorisant une utilisation sans restrictions ainsi que la publication du code source, sa modification, et sa redistribution. Le succès est immédiat, mais le système ne possède toujours pas, en 1990, de noyau libre, et les tentatives pour en développer un sont loin d'être abouties.
  • En 1991, Linus Torvalds, étudiant à l'université d'Helsinki, inspiré par les travaux de Tanenbaum, sort la toute première version (0.0.1) de son propre noyau : Linux, qui est au départ une réécriture de Minix[réf. nécessaire]. Linux passe sous licence GNU en 1992 et il faut attendre 1994 pour voir la version 1.0, donnant ainsi naissance à la distribution d'un système d'exploitation entièrement libre, GNU/Linux.

Source : wikipedia

Prérequis :

Il peut être judicieux de se reporter au cours sur les systèmes d'exploitation de 1ère NSI, notamment pour les commandes.

Deux fois, dans une épreuve de type bac sur ce chapitre, des questions se rapportaient aussi à ce chapitre de 1ère.

1. Quelques définitions :

2. Les problèmes commencent :

Contrairement à ce que l'expérience utilisateur laisse penser, un microprocesseur ne peut exécuter qu'un seul processus à la fois. Y compris le système d'exploitation lui même.

Si le système d'exploitation laissait un processus se terminer pour passer au suivant, l'expérience utilisateur serait dégradé.

3. L'ordonnancement (scheduling) :

A copier dans le cahier.

N'importe quel système d'exploitation moderne comporte donc un ordonnanceur (scheduler) qui organise les processus afin qu'ils aient accès au microprocesseur dans un ordre bien déterminé et afin qu'un processus ne bloque pas le système par une présence trop importante. Le but est de donner l'illusion que les processus sont actifs simultanément.

4. Quantum de temps :

Le quantum de temps est une unité de temps permettant de mesurer le temps attribué à un processus pour accéder au microprocesseur. Il est régulé par le système d'exploitation.

5. Les trois états d'un processus :

A copier dans le cahier.

Un processus peut être :

6. PID et PPID:

A copier dans le cahier.

Chaque processus possède un PID ( Process IDenditification ) qui correspond à son identifiant au niveau du système d'exploitation.

Le PPID est le Parent Process IDentification. Il permet de connaître le parent d'un processus (celui qui l'a lancé).

7. Exercice:

A faire dans le cahier.

Cet exercice est extrait d'un sujet de type bac.

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 :

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.

8. Interblocage (deadlock) :

On considère deux processus : processus1 et processus2.

Imaginons qu'ils ont besoin chacun des deux mêmes ressources : ressource1 et ressource2.

Le système d'exploitation ne permet pas que deux processus distincts aient accès à la même ressource dans le même temps : un seul accès en lecture/écriture.

Il peut donc y avoir une problème d'interblocage:

La situation est complètement bloqué. Une fois arrivé à cette situation, il est difficile pour le système d'exploitation de s'en sortir. Une des solutions est de "tuer" les deux processus.

L'un des rôles d'un système d'exploitation est donc de prévenir ce genre de situation.

9. Exercice:

A faire dans le cahier.

On peut considérer cet exercice comme la suite du précédent.

Pour rappel:

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 :

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.

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 scénarios suivants, lequel provoque un interblocage ? Justifier.

10. Exercice type épreuve écrite du baccalauréat:

A faire dans le cahier.

Cet exercice porte sur les systèmes d’exploitation, les commandes UNIX, les structures de données (de type LIFO et FIFO) et les processus.

“Linux ou GNU/Linux est une famille de systèmes d’exploitation open source de type Unix fondée sur le noyau Linux, créé en 1991 par Linus Torvalds. De nombreuses distributions Linux ont depuis vu le jour et constituent un important vecteur de popularisation du mouvement du logiciel libre.”

Source : Wikipédia, extrait de l’article consacré à GNU/Linux.

“Windows est au départ une interface graphique unifiée produite par Microsoft, qui est devenue ensuite une gamme de systèmes d’exploitation à part entière, principalement destinés aux ordinateurs compatibles PC. Windows est un système d’exploitation propriétaire.

Source : Wikipédia, extrait de l’article consacré à Windows.”

  1. Expliquer succinctement les différences entre les logiciels libres et les logiciels propriétaires.

  2. Expliquer le rôle d’un système d’exploitation.

On donne ci-dessous une arborescence de fichiers sur un système GNU/Linux (les noms encadrés représentent des répertoires, les noms non encadrés représentent des fichiers, / correspond à la racine du système de fichiers) :

  1. Indiquer le chemin absolu du fichier rapport.odt.

  2. On suppose que le répertoire courant est elsa. Indiquer le chemin relatif du fichier photo_1.jpg.

L'utilisatrice Elsa ouvre une console (aussi parfois appelé terminal), le répertoire courant étant toujours le répertoire elsa. On fournit ci-dessous un extrait du manuel de la commande UNIX cp:

NOM
        cp - copie un fichier
UTILISATION 
    cp fichier_source fichier_destination
    
  1. Déterminer le contenu du répertoire documents et du répertoire boulot après avoir exécuté la commande suivante dans la console :

    cp documents/fiche.ods documents/boulot

Un système d’exploitation est multitâche (en anglais : multitasking) s’il permet d’exécuter, de façon apparemment simultanée, plusieurs programmes informatiques. GNU/Linux, comme tous les systèmes d’exploitation modernes, gère le multitâche.”

“Dans le cas de l’utilisation d’un monoprocesseur, la simultanéité apparente est le résultat de l’alternance rapide d’exécution des processus présents en mémoire.”

Source : Wikipédia, extraits de l’article consacré au Multitâche.

Dans la suite de l’exercice, on s’intéresse aux processus. On considère qu’un monoprocesseur est utilisé. On rappelle qu’un processus est un programme en cours d’exécution. Un processus est soit élu, soit bloqué, soit prêt.

  1. Recopier et compléter le schéma ci-dessous avec les termes suivants:

    élu, bloqué, prêt, élection, blocage, déblocage.

  2. Donner l’exemple d’une situation qui contraint un processus à passer de l’état élu à l’état bloqué.

Dans les systèmes d’exploitation, l’ordonnanceur est le composant du noyau du système d’exploitation choisissant l’ordre d’exécution des processus sur le processeur d’un ordinateur.”

Source: Wikipédia, extrait de l’article consacré à l’ordonnancement.

L’ordonnanceur peut utiliser plusieurs types d’algorithmes pour gérer les processus.

L’algorithme d’ordonnancement par “ordre de soumission” est un algorithme de type FIFO (First In First Out), il utilise donc une file.

  1. Nommer une structure de données linéaire de type LIFO (Last In First Out).

À chaque processus, on associe un instant d’arrivée (instant où le processus demande l’accès au processeur pour la première fois) et une durée d’exécution (durée d’accès au processeur nécessaire pour que le processus s’exécute entièrement).

Par exemple, l’exécution d’un processus P4 qui a un instant d’arrivée égal à 7 et une durée d’exécution égale à 2 peut être représentée par le schéma suivant :

L’ordonnanceur place les processus qui ont besoin d’un accès au processeur dans une file, en respectant leur ordre d’arrivée (le premier arrivé étant placé en tête de file). Dès qu’un processus a terminé son exécution, l’ordonnanceur donne l’accès au processus suivant dans la file.

Le tableau suivant présente les instants d’arrivées et les durées d’exécution de cinq processus :

5 processus
Processus instant d’arrivée durée d’exécution
P1 0 3
P2 1 6
P3 4 4
P4 6 2
P5 7 1
  1. Recopier et compléter le schéma ci-dessous avec les processus P1 à P5 en utilisant les informations présentes dans le tableau ci-dessus et l’algorithme d’ordonnancement “par ordre de soumission”.

On utilise maintenant un autre algorithme d’ordonnancement : l’algorithme d’ordonnancement “par tourniquet”. Dans cet algorithme, la durée d’exécution d’un processus ne peut pas dépasser une durée Q appelée quantum et fixée à l’avance. Si ce processus a besoin de plus de temps pour terminer son exécution, il doit retourner dans la file et attendre son tour pour poursuivre son exécution.

Par exemple, si un processus P1 a une durée d’exécution de 3 et que la valeur de Q a été fixée à 2, P1 s’exécutera pendant deux unités de temps avant de retourner à la fin de la file pour attendre son tour ; une fois à nouveau élu, il pourra terminer de s’exécuter pendant sa troisième et dernière unité de temps d’exécution.

  1. Recopier et compléter le schéma ci-dessous, en utilisant l’algorithme d’ordonnancement “par tourniquet” et les mêmes données que pour la question 9, en supposant que le quantum Q est fixé 2.

On considère deux processus P1 et P2, et deux ressources R1 et R2.

  1. Décrire une situation qui conduit les deux processus P1 et P2 en situation d’interblocage.