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:
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:
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.
ex: imaginons l'execution de trois tâches (programme) en même temps. Dans ce cas, la tâche 2 devra attendre que la tâche 1 soit terminée et ainsi de suite.
Un système de monoprogrammation est très injuste vis à vis des petits programmes par rapport au temps d'attente.
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, 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, c'est à dire que l'OS exécutera une partie de P1 puis une partie de P2 puis une partie de p3 puis une partie de p1 etc... jusqu'à ce que toutes les tâches soient réalisées.
Relativement aux temps d’attente, un système de multiprogrammation rétablit une certaine justice entre petits et gros programmes.
A l'heure actuelle, tous les OS sont issus de la multiprogrammation. Par exemple, elle est apparue dans la famille Windows avec Win98
On appelle processus un programme en cours d'exécution. Attention, il ne faut pas confondre le code source du programme et un processus, qui lui correspond à l'exécution de ce programme par un ordinateur. Pour prendre une image assez classique, si une recette de cuisine correspond au code source du programme, le cuisinier en train de préparer cette recette dans sa cuisine correspond à un processus.
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:
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ésents 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 |
L'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 $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 coeur, correspond à la durée en quantum P 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é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 |
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. Pas besoin de vidéo 😜
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 RR. ici, il y aura peut être besoin d'une vidéo:
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 de P7.
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'ientification est attribué à chaque processus, c'est l'dentifiant 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 :
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
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.
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.
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.
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 tache pour la première fois, vous serez peut-être amené à cliquer sur "Plus de détails " en bas à Gauche de la fenètre.
Vous verez alors une fenètre avec six onglets
Dans l'onglet Processus, vous verez tous ceux s'executant 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 lorqu'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.
Reduiser la calculatrice dans la barre des tâches. Son PID a-t-il changé? son staut?
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 maniere 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 par application.
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.
A la différence de la partie précédente sous Windows, il faut travailler en ligne de commandes.
si ça vous intéresse, je vous invite à vous rendre sur pixees ici