- Aucun
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’interfacage 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:
- le chargement et le lancement des programmes
- la gestion des processeurs, de la mémoire, des périphériques
- la gestion des processus (programmes en cours d'exécution) et des fichiers
- la protection contre les erreurs et la détection des erreurs
- etc...
C'est donc une composante logicielle très importante.
Dans un ordinateur,les logiciels sont divisés en deux catégories:
- les programmes système qui font fonctionner l'ordinateur : le système d'exploitation et les utilitaires (compilateurs, éditeurs, interpréteurs de commandes, etc.)
- les programmes d'application qui résolvent les problèmes spécifiques des utilisateurs.
Découvrons en 3 minutes le rôle du système d'exploitation.
Voici quelques exemples de système d'exploitation:
- MS-DOS, Windows
- OS/2, Mac-OS
- Unix (AIX, Xenix, Ultrix, Solaris, etc.)
- Linux
- Android
- Mais il en existe d'autres comme Symbian développé par Nokia, Tizen par Samsung, ...
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
Les processus
Notion de contexte d'éxé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 coeurs. 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 quiteront cette dernière que si:
- Le processus s'arrête, losqu'il est terminé.
- Le processus demande à partir, il n'est pas terminé et demandera à revenir plus tard pour poursuivre son exécution. C'est par exemple le cas d'une tâche cyclique.
- Le processus est en attente. C'est par exemple le cas si il n'y a pas d'instance (exemplaire) disponible de la ressoure demandée par le processus, il est mis en attente pour libérer la place sur l'unité de calcul.
- Le système choisit d'arrêter le processus. C'est par exemple le cas lors de l'interblocage que nous verrons plus loin.
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 :
-
Le modèle FIFO: on affecte les processus dans l'ordre de leur apparition dans la file d'attente.
-
Le modèle SJF (Shortest Job First) : on affecte en premier le « plus court processus en premier » de la file d'attente à l'unité de calcul.
-
Le modèle Round Robin: (ou méthode du tourniquet) on effectue un bloc de chaque processus présent dans la file d'attente à tour de rôle, pendant un quantum de temps d'en général 20 à 30 ms. Si le processus n'est pas terminé, il repart en fin de liste d'attente.
-
Il existe d'autres algorithmes d'ordonnancement, comme par exemple le modèle Priorité, où chaque processus dispose d’une valeur de priorité et on choisit le processus de plus forte priorité à chaque fois (nous ne détaillerons pas cet algorithme).
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 d'attente et le temps d'execution moyen.
Pour illustrer les définitions qui suivent nous allons traiter un ordonnacement 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'ordonancement de ces processus sur le modèle SJF est le suivant :
Temps d'arrivée
Le temps d'arrivé 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 est 7. Celui de est 6.
durée du processus
La durée du processus P, ou durée d'exécution sur le coeur, correspond à la durée en quantum P nécessaire à l'execution du processus.
La durée du processus est 1. Celui de 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ée P
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 du temps d'arrivée de P et du temps de terminaison de P.
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 |
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 | 2 | 12-4=8 | 4 | 3-1=2 |
-
Exemple commenté pour l'algorithme FIFO :
-
Exemple commenté pour l'algorithme SJF :
-
Exemple commenté pour l'algorithme Round Robin :
Actuellement,la plupart des systèmes d’exploitation utilise une évolution du modèle priorité,reposant sur les principes suivants :
-
chaque processus possède une priorité de base.
-
cette priorité augmente quand le processus est inactif et diminue quand il est actif (le taux de changement dépend de la priorité de base).
-
le système choisit parmi les processus de plus forte priorité.
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 :
-
L’initialisation du système : au chargement du système il y a création automatique du processus racine père de tous les processus utilisateurs (id=0).
-
Un processus peut lancer un autre processus, celui-ci en devient le parent, tandis que l’autre sera désigné comme processus fils. processus père ne se termine que lorsque tous ses fils sont terminés. On a donc une structure arborescente de processus).
-
Une requête de l’utilisateur.
-
Initiation d’un travail en traitement par lot (on exécute le même travail sur plusieurs entités à la fois, c'est par exemple très utilisé en photographie où on applique la même action sur plusieurs clichés).
Lors de sa création, un numéro unique d'ientification 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) :
-
Le processus est en cours d’exécution par le processeur.
-
Si le processus épuise le temps qui lui est alloué par le système d'exploitation, il est remis en file d’attente des Prêts.
-
S'il a besoin d’une ressource non disponible (opérations sur les périphériques), il est mis en attente prolongée (Interruption : état bloqué) jusqu’à la libération de la ressource nécessaire.
-
Si le processus atteint son terme (se termine) il passe à l’état Zombie.
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 :
-
Arrêt normal : cet arrêt est volontaire et intervient lorsque le processus termine sa tâche.
-
Arrêt pour erreur : cet arrêt est volontaire, il fait suite à une erreur pour une instruction illégale.
-
Arrêt pour erreur fatale : cet arrêt est involontaire et intervient généralement lorsque les paramètres de l’exécution du processus sont mauvais.
-
Arrêt volontaire par un autre 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 tris étapes suivante:
Requête – Utilisation - Libération
-
La requête : le processus fait une demande pour utiliser la ressource. Si cette demande ne peut pas être satisfaite immédiatement, parce que la ressource n’est pas disponible, le processus demandeur se met en état attente jusqu’à ce que la ressource devienne libre.
-
Utilisation : Le processus peut exploiter le ressource.
-
Libération : Le processus libère la ressource qui devient disponible pour les autres processus éventuellement en attente.
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 uns situation d'attente interminable puisque le premier élève attend que la ressource feutre soit libre, et le second attent 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:
-
Exclusion mutuelle : Les ressources ne sont pas partageables, un seul processus à la fois peut utiliser la ressource.
-
Possession et attente : Les processus qui détiennent des ressources peuvent en demander d’autres.
-
Sans préemption : Les ressources ne sont pas préemptibles c'est-à-dire que les libérations sont faites volontairement par les processus. On ne peut pas forcer un processus à rendre une ressource.
-
Attente circulaire : Il doit exister un ensemble de processus P tel que Pi attend une ressource possédée par Pi+1.
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.
-
Parmi les commandes ci-dessous, laquelle permet d’afficher les processus en cours d’exécution ?
-
dir
-
ps
-
man
-
ls
-
-
Comment s’appelle la gestion du partage du processeur entre différents processus ?
-
L’interblocage.
-
L’ordonnancement.
-
La planification.
-
La priorisation.
-
-
PIX
-
SIG
-
PID
-
SID
-
stop
-
interrupt
-
end
-
kill
Quelle abréviation désigne l’identifiant d’un processus dans un système d’exploitation de type UNIX ?
Quelle commande permet d’interrompre un processus dans un système d’exploitation de type UNIX ?
Partie B :
-
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.
-
-
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énarii suivants, lequel provoque un interblocage ? Justifier.
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.
-
Les processus s'exécutent de manière concurrente.
Justifier qu'une situation d'interblocage peut se produire. -
Modifier l'ordre des instructions du programme 3 pour qu'une telle situation ne puisse pas se produire. Aucune justification n'est attendue.
-
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 :
-
élu
-
bloqué
-
prêt
-
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 :
-
UID : identifiant utilisateur effectif ;
-
PID : identifiant de processus ;
-
PPID : PID du processus parent ;
-
C : partie entière du pourcentage d'utilisation du processeur par rapport au temps de vie des processus ;
-
STIME : l'heure de lancement du processus ;
-
TTY : terminal de contrôle ;
-
TIME : temps d'exécution ;
-
CMD : nom de la commande du processus.
-
Parmi les quatre commandes suivantes, laquelle a permis cet affichage ?
-
ls -l
-
ps -ef
-
cd ..
-
chmod 741 processus.txt
-
-
Quel est l'identifiant du processus parent à l'origine de tous les processus concernant le navigateur Web (chromium-browser) ?
-
Quel est l'identifiant du processus dont le temps d'exécution est le plus long ?
Un système d’exploitation doit assurer la gestion des processus et des ressources.
-
Dans ce contexte, expliquer et illustrer par un exemple ce qu’est une situation d’interblocage (deadlock).
-
Citer des mécanismes permettant d’éviter ces situations.
Correction des exercices
Vous trouverez la correction des trois exercices sur le lien ci-contre : CORRECTION