Aller au contenu

Processus

I. Le systĂšme d'exploitation⚓

OS

Le systĂšme d’exploitation, souvent appelĂ© OS ( Operating System ) est un ensemble de programmes qui permet d’utiliser les composants physiques d’un ordinateur pour exĂ©cuter toutes les applications dont l’utilisateur aura besoin.

Toute machine est dotĂ©e d’un systĂšme d’exploitation qui a pour fonction de charger les programmes depuis la mĂ©moire de masse et de lancer leur exĂ©cution en leur crĂ©ant des processus, de gĂ©rer l’ensemble des ressources, de traiter les interruptions ainsi que les entrĂ©es-sorties et enfin d’assurer la sĂ©curitĂ© globale du systĂšme.

Exemples

Windows, Mac OS, Ubuntu Mate sont des systùmes d’exploitation.

Attention, Linux n’est pas Ă  proprement parlĂ© un OS , c’est en fait le noyau de nombreux OS que l’on appelle des distributions Linux comme par exemple Gentoo, Debian, Linux Mint, Ubuntu, Fedora, RedHat 


OS en bref

Les systÚme d'exploitation font le Lien entre monde applicatif (les applications) et monde matériel (les composants)

Le monde matériel
  • la mĂ©moire
  • les processeurs (cerveaux, font des calculs)
  • pĂ©ripĂ©hriques E/S (imprimantes, Ă©cran, clavier, souris, internet...)
Le monde applicatif
  • C'est l'ensemble des programmes qui sont en activitĂ© Ă  un instant donnĂ©.
  • Dans un ordinateur, on a plusieurs applications qui s'exĂ©cutent simultanĂ©ment. chacune exĂ©cute une tache.
  • Les applications n'accĂšdent pas aux Ă©lĂ©ments de l'ordinateur, elles communiquent seulement avec l'OS.

Les tĂąches de l'OS

Le systĂšme d'exploitation doit allouer Ă  chacun des processus les ressources dont il a besoin en termes de mĂ©moire, entrĂ©es-sorties ou temps processeur, et de s'assurer que les processus ne se gĂȘnent pas les uns les autres.

Gestion de la mémoire

La mĂ©moire peut ĂȘtre vue comme un grand tableau disposant de “mots” repĂ©rĂ©s par des adresses. Si les applications Ă©crivaient directement dans la mĂ©moire, comme elles ne peuvent pas communiquer entre elles, voilĂ  ce qui pourrait arriver :

Une application Ă©crit toto au mot 1
Une seconde application Ă©crit NSI au mĂȘme endroit

😱 La seconde application a modifiĂ© une donnĂ©e dont l'application 1 a besoin....

La mémoire virtuelle à la rescousse

Au démarrage d'une application, L'OS crée un espace de mémoire virtuelle dédié à cette application.

L'application Ă©crit dans la mĂ©moire virtuelle. L'OS transfĂšre ensuite dans la vraie mĂ©moire et il mĂ©morise l'information : si l'application demande l'information Ă©crite au mot 1 de sa mĂ©moire virtuelle il sait oĂč trouver l'information dans la vraie mĂ©moire.

Ordonanceur

Le systÚme d'exploitation va attribuer les ressources, notamment l'accÚs au CPU. Si une application est bloquée (attente d'une donnée sur disque dur par exemple) l'OS attribue le CPU à une autre application.

AccĂšs aux ressources :

  • Les applications demandent Ă  l'OS lorsqu'elle a besoin d'accĂ©der Ă  une les ressources (Ă©cran, CPU, fichier, etc...)

  • L'OS vĂ©rifie que l'application a les droits (voir, droits d'accĂšs aux fichiers par exemple) et attribue l'accĂšs ensuite. Cet accĂšs peut ĂȘtre de deux types :

    • PrivĂ© : la ressource est attribuĂ©e et bloquĂ©e pour les autres applications, par exemple c'est le cas d'un accĂšs en Ă©criture dans un fichier.
    • Libre : la ressource est attribuĂ©e mais reste disponible pour les autres applications, par exemple c'est le cas d'un accĂšs en lecture dans un fichier.

A retenir : les trois rĂŽles de l'OS sont :

  • gĂ©rer la mĂ©moire
  • ordonnanceur
  • accĂšs aux ressources

II. Les processus⚓

Qu'est-ce qu'un processus ?

Un processus est une instance (tache) de programme en cours d'exécution sur un ordinateur. Il est caractérisé par :

  • un ensemble d'instructions Ă  exĂ©cuter - souvent stockĂ©es dans un fichier sur lequel on clique pour lancer un programme (par exemple firefox.exe)
  • un espace mĂ©moire dĂ©diĂ© Ă  ce processus pour lui permettre de travailler sur des donnĂ©es et des ressources qui lui sont propres : si vous lancez deux instances de firefox, chacune travaillera indĂ©pendamment l'une de l'autre.
  • des ressources matĂ©rielles : processeur, entrĂ©es-sorties (accĂšs Ă  internet en utilisant la connexion Wifi).

En résumé

Un processus est un "programme" en cours d’exĂ©cution.

Attention

Il y a une diffĂ©rence entre programme et processus : le mĂȘme programme peut ĂȘtre lancĂ© plusieurs fois et donner naissances Ă  des processus distincts.

Analogie avec le domaine de la musique

Programme ~ Partition

Processus ~ Musicien

Processeur ~ Instrument

Comment voir les processus sur son OS?⚓

Sur chaque OS, il y a des utilitaires en mode graphique (GUI) ou en mode console ( CLI ) pour observer les processus en cours d’exĂ©cution.

Exemples d’interfaces graphiques ( GUI = Graphical User Interface )⚓

  • Sous Windows 10, il y a le bien connu gestionnaire de tĂąches ( raccourci : CRTL+MAJ+ECHAP )

  • Sous Ubuntu Mate, une distribution Linux, il y a par exemple Moniteur SystĂšme. (cf MENU puis Outils SystĂšme )

  • Sous Kubuntu, une autre distribution Linux, il y a par exemple KsysGuard.

Exemples avec la console sous Linux (CLI= Command Line Interface)⚓

La commande top permet d'afficher la liste des processus de maniĂšre dynamique ( la liste est rafraĂźchie toutes les 3 secondes)

top

Vie et mort des processus⚓

Différentes situations peuvent générer des processus :

  • Double cliquer pour lancer un programme
  • Ouvrir un onglet dans un navigateur
  • ExĂ©cuter une commande dans une console

Ces processus vont devoir s’exĂ©cuter Ă  tours de rĂŽle, pour gĂ©rer l’ordre d’exĂ©cution le systĂšme d’exploitation va attribuer des Ă©tats aux processus.

Les Ă©tats d'un processus

Un processus peut donc se trouver dans différents états :

  • nouveau (initialisation) : le processus vient d'ĂȘtre crĂ©Ă© mais n'existe pas encore qu'Ă  l'Ă©tat de requĂȘte de processus en attendant d'ĂȘtre admis en tant que processus activable
  • prĂȘt (en attente): le processus attend son tour pour prendre la main
  • Ă©lu (en exĂ©cution) : le processus a accĂšs au processeur pour exĂ©cuter ses instructions
  • bloquĂ© (endormi) : le processus attend qu'un Ă©vĂ©nement se produise (saisie clavier, rĂ©ception d'une donnĂ©e par le rĂ©seau ou le disque dur ...)
  • terminĂ© : le processus est dĂ©sormais inactif car il a achevĂ© sa tĂąche. Il sera dĂ©truit prochainement par le systĂšme d'exploitation pour libĂ©rer de la place en mĂ©moire. Il est parfois conservĂ© pendant un temps Ă  l'Ă©tat terminĂ© en attendant qu'une entrĂ©e/sortie s'achĂšve ou que les donnĂ©es de ce processus soient exploitĂ©es par un autre. On parle alors de processus " zombie".

Ordonnancement des processus par l'OS⚓

L'ordonnanceur

Dans un systĂšme multitĂąches, plusieurs processus sont actifs simultanĂ©ment, mais un processeur simple coeur ne peut exĂ©cuter qu’une instruction Ă  la fois. Il va donc falloir partager le temps de processeur disponible entre tous les processus : c'est le travail de l'ordonnanceur (ou scheduler en anglais). Ce dernier a pour tĂąche de sĂ©lectionner le processus suivant Ă  exĂ©cuter parmi ceux qui sont prĂȘts.

images

Un processus peut donc se trouver dans différents états :

Les chiffres 1, 2, 3 et 4 font référence à la figure ci-dessus.

1 : L'ordonnanceur choisit ce processus qui passe alors en mode élu ou exécution
2 : L'ordonnanceur passe la main Ă  un autre processus. Le processus en cours s'arrĂȘte et passe en mode prĂȘt ou en attente
3 : AprÚs le 1. (et pas le 2) : le processus en cours attend un événement : saisie clavier, réception d'une donnée par le réseau ou le disque dur, clic de souris... Il passe alors en mode bloqué ou endormi
4 : L'Ă©vĂ©nement attendu par le processus s'est produit. Le processus repasse en mode prĂȘt ou en attente, en attendant que l'ordonnanceur lui permette de s'exĂ©cuter.

đŸŒ”âš ïžđŸŒ”

Il y a "attendre" ... et ... "attendre"

  • Un processus qui "attend" un Ă©vĂ©nement passe de l'Ă©tat "Ă©lu" Ă  l'Ă©tat "bloquĂ©".
  • Un processus qui "attend" que l'ordonnanceur lui permette de s'exĂ©cuter est dans l'Ă©tat "prĂȘt" ou "en attente"

III. QCM⚓

Un processus est :
  • un programme exĂ©cutable
  • un logiciel
  • une instance d'exĂ©cution d'un programme
  • ❌
  • ❌
  • ✅ une instance d'exĂ©cution d'un programme
Un processus prĂȘt :
  • est exĂ©cutĂ©
  • a Ă©tĂ© exĂ©cutĂ© dans le processeur
  • attend d'obtenir le processeur
  • ❌
  • ❌
  • ✅ attend d'obtenir le processeur
Un processus en cours d'exécution est dit :
  • Ă©lu
  • bloquĂ©
  • prĂȘt
  • actif
  • ✅ Ă©lu
  • ❌
  • ❌
  • ❌
Un processus bloqué :
  • ne peut pas s'exĂ©cuter
  • a Ă©tĂ© exĂ©cutĂ© dans le processeur
  • attend d'obtenir le processeur
  • ✅
  • ✅ a Ă©tĂ© exĂ©cutĂ© dans le processeur avant d'ĂȘtre bloquĂ©
  • ❌ attend d'ĂȘtre dĂ©bloquĂ© par un Ă©vĂ©nement
Un programme peut ĂȘtre exĂ©cutĂ© :
  • plusieurs fois Ă  la suite par un mĂȘme processus
  • plusieurs fois en mĂȘme temps par un mĂȘme processus
  • par plusieurs processus diffĂ©rents
  • ❌
  • ❌
  • ✅ par plusieurs processus diffĂ©rents
A un instant donné un processeur exécute :
  • tous les processus prĂȘts
  • le processus Ă©lu
  • tous les processus d'un utilisateurs
  • ❌
  • ✅ le processus Ă©lu
  • ❌