Académique Documents
Professionnel Documents
Culture Documents
CHAPITRE II
Un processus est une tache attribuée au processeur. C’est une entité dynamique
correspondant à l’exécution d’une suite d’instructions. Par exemple, un programme en cours
d’exécution sur un ordinateur est un processus.
Le système d’exploitation identifie chaque processus par son identifiant PID (Process
Identifier) : un nombre entier attribué automatiquement et réside en mémoire tant que le
processus est en mémoire.
Exercice :
1) Démarrer un terminal ;
2) Taper les commandes suivantes :
$ ps
$ ps -ef
$ ps -eh
M. Sabbane : 2020-2021 1
Système d’Exploitation I : Chapitre II / SMI3
Chaque processus possède son PID, attribué automatiquement par le système d’exploitation.
Le système d’exploitation garde en mémoire tous les identifiants d’un processus tant que
celui-ci en état de fonctionnement. Lorsqu’un processus se bloque ou termine sa mission, il
est automatiquement élémine de la mémoire et son identifiant est perdu. Les
caractéristiques
Ce sont les caractéristiques qui ne varient pas au cours du temps de séjour en mémoire
comme :
La priorité,
L’environnement d’exécution...
Un processus est toujours créé par un autre processus appelé processus parent. Ainsi tout
processus est issu d’un processus parent sauf le premier. Ce premier processus est appelé
init et son identifiant est égal à 1 (PID = 1).
Lorsqu’un processus père crée un autre processus fils, les deux processus continuent d’être
associés. Le processus enfant peut lui même créer plusieurs processus, formant une
hiérarchie de processus. Un processus a un seul parent et peut avoir 0 ou plusieurs fils.
Les processus utilisateurs : ce sont les processus déclenchés par l’utilisateur de l’ordinateur,
comme par exemple, les applications en cours d’exécution … tous ces processus sont issus
du Shell de connexion.
M. Sabbane : 2020-2021 2
Système d’Exploitation I : Chapitre II / SMI3
Les processus daemon (démon) : ce sont les processus qui assurent des services et
s’exécutent en arrière-plan plutôt que sous le contrôle direct d'un utilisateur. Ces processus
sont démarrés automatiquement par le système lors de son démarrage. Par exemple, les
processus utiles au fonctionnement système ou les processus utilisateurs mais qui restent
actifs durant l’ouverture d’une session (antivirus, le moteur d’un SGBD …)
Le traitement par lot (Batch) créé des processus (imbriqué ou répété) selon
l’architecture du traitement.
Un processus nouvellement créé se trouve sur un état. Il existe trois principaux états : Prêt, Elu,
Bloqué. De même, il existe quatre types transitions entre ces états.
M. Sabbane : 2020-2021 3
Système d’Exploitation I : Chapitre II / SMI3
L’état Prêt : Le processus est prêt à être exécuté. Il est mis en attente jusqu’à ce que
le système lui libère le processeur (dispatch de l’Ordonnanceur), il passera alors à
l’état Actif.
– Si le processus épuise le temps qui lui est alloué par le SE, il est remis en file
d’attente des processus à l’état Prêt.
L’état bloqué : Le processus est en attente d’une ressource pour terminer. Dès sa
libération il repasse à l’état Prêt.
M. Sabbane : 2020-2021 4
Système d’Exploitation I : Chapitre II / SMI3
Le changement d’état d’un processus se fait par transition de l’état de départ à l’état
d’arrivé. Dans ce sens, nous pouvons distinguer les quatre principaux types de transition :
Elu → Bloqué : cette transition arrive quand le processus ne peut plus continuer faute
de données manquante ou de ressources de façons générale. Le processus passe donc à
l’état Bloqué, puis à l’état Prêt en attendant le système de lui allouer les ressources
nécessaires à son fonctionnement.
Les transitions les plus fréquentes et sont l’élection (Prêt → Elu ) et la suspension (Elu → Prêt ).
La permutation entre ces deux transitions est due à plusieurs causes. Parmi lesquelles, la gestion du
temps de calcul et les ressources par le système d’exploitation. En effet, les systèmes d’exploitation
actuels sont multitâches et multisessions. Cependant, le temps de calcul du processeur ainsi que
l’usage des ressources est distribués d’une manière optimale par le système afin d’assurer un partage
optimal des ressources entre les différents processus. Ceci apparait à l’utilisateur comme une
simultanéité des processus.
Pour une meilleure gestion des ressources, le système utilise un ordonnanceur (scheduler). Celui-ci
partage le temps entre tous les différents processus présents en mémoire. C’est l’ordonnanceur qui
décide quel processus tourne sur le processeur, qui « donne le tour » à chaque processus.
Comme il a été évoqué plus haut, le processeur n’exécute qu’un seul processus à la fois.
L’ordonnanceur répartit à tour de rôle la tâche des processeurs sur les différents processus.
Cependant, même si un processus n’est pas terminé, il est suspendu et revient à son état Prêt pour
passer au processus suivant.
Le contexte est représenté par le Bloc de Contrôle de Processus BCP ou (PCB : Process Control
Block). C’est une structure de données du noyau d'un système d'exploitation et représentant l'état
d'un processus donné. Un BCP contient en général les données suivantes :
M. Sabbane : 2020-2021 5
Système d’Exploitation I : Chapitre II / SMI3
– L'ID du processus (PID), l'ID du processus parent (PPID) et l'ID de l'utilisateur du processus
(UID) ;
– Les valeurs des registres correspondant au processus (l'état courant du processus, selon qu'il
est élu, prêt ou bloqué) ;
– Le compteur ordinal du processus ;
– Le pointeur de pile : indique la position du prochain emplacement disponible dans la pile
mémoire ;
– L'espace d'adressage du processus ;
– La liste des descripteurs de fichiers ;
– La liste de gestion des signaux ;
– D'autres informations telles que le temps CPU accumulé par le processus, etc.
N.B : La commutation de contexte est une opération relativement coûteuse en temps de calcul. Il
existe cependant du matériel qui permet d’accélérer la commutation.
M. Sabbane : 2020-2021 6
Système d’Exploitation I : Chapitre II / SMI3
On dit qu'une ressource est en mode d'accès exclusif si elle ne peut être allouée qu’à un seul
processus à la fois. Sinon, on parle de mode d'accès partagé. Un processus possédant une
ressource peut dans certains cas en modifier le mode d'accès.
Exemple : un disque de stockage est une ressource à accès exclusif (un seul accès simultané),
une zone mémoire peut être à accès partagé.
M. Sabbane : 2020-2021 7
Système d’Exploitation I : Chapitre II / SMI3
Le rôle de l’ordonnanceur est de choisir, parmi tous les processus à l’état prêt, lequel va
devenir élu, c’est-à-dire, passer à l’état d’exécution. Le choix n’est pas aléatoire. Autre,
l’ordre d’emplacement des processus prêt dans la pile, l’ordonnanceur applique une
politique d’ordonnancement pour atteindre des objectifs. Parmi lesquels, nous pouvons
citer :
La liste suivante passe en revue les critères d’ordonnancement les plus utilisés :
Le temps de réponse : le temps moyen mit par système pour répondre aux entrées
de l’utilisateur.
L’équité et égalité: le degré qui mesure les chances d’exécution des processus.
M. Sabbane : 2020-2021 8
Système d’Exploitation I : Chapitre II / SMI3
Comme son nom l’indique, le premier arrivé est le premier sorti ou servi. L'ordonnancement
est fait dans l'ordre d'arrivée en gérant une file unique des processus sans priorité ni
réquisition. Chaque processus s’exécute jusqu’à son terme ; le processus élu est celui qui est
en tête de liste des Prêts : le premier arrivé. Cet algorithme est facile à utiliser, mais il est
loin d'optimiser le temps de traitement moyen.
Dans ce type d’ordonnancement, les processus qui nécessitent moins de temps de calcul
sont élus les premiers. C’est une façon d’organiser le travail du processeur selon la lourdeur
des tâches. Les processus légers sont traité les premiers. Cet algorithme possède
l’inconvénient de la nécessité de connaissance du temps de service à priori et le risque de
blocage des tâches les plus longues.
M. Sabbane : 2020-2021 9
Système d’Exploitation I : Chapitre II / SMI3
Selon cet algorithme, le processeur gère une liste circulaire de processus. Chaque processus
dispose d'un quantum de temps de traitement par le processeur. Si le processus en cours de
traitement (Elu) se bloque ou s'achève avant la fin de son quantum, le processeur est
immédiatement alloué au processus suivant. Si le quantum s'achève avant la fin du
processus, le processeur est alloué au processus suivant et le processus interrompu se
positionne en queue de liste.
La faiblesse de cet algorithme réside dans le choix du quantum. Un quantum trop petit
provoque trop de commutations de processus et abaisse l'efficacité du processeur. Un
quantum trop grand augmente le temps de réponse en mode interactif.
Le modèle HPF suppose que tous les processus soient d’importance égale. Ce concept n’est
pas réel. L'attribution de priorité à chaque processus devient nécessaire. L'ordonnanceur élu
le processus à l’état Prêt dont la priorité est la plus élevée. En cas de priorités égales,
l’ordonnanceur utilise l’algorithme FIFO. De même, l’ordonnancement des processus être
forcé ou non.
Le propriétaire du processus, les coûts d’utilisation (Le temps de calcul pour les
tâches de priorité supérieure),
Certains mécanismes produisent des priorités qui varient de manière dynamique : volume
du temps d’exécution ; alors que d’autre sont statiques (la priorité associée à un utilisateur).
Si un processus i est bloqué avant d’avoir utilisé la totalité de sa tranche de temps Ti,
il passe à la file de niveau supérieur Ti+1.
Le processus sélectionné par cet algorithme est le prochain processus de la file la plus
élevée contenant des processus.
M. Sabbane : 2020-2021 10
Système d’Exploitation I : Chapitre II / SMI3
Le système d’exploitation a tout prévus pour que les processus communiquent entre eux et
synchronisent leurs actions.
M. Sabbane : 2020-2021 11
Système d’Exploitation I : Chapitre II / SMI3
Les files FIFO sont similaires aux tubes excepté que des processus sans lien peuvent
communiquer car le tube reçoit un nom dans le système de fichiers.
Les sockets permettent la communication entre des processus sans lien, pouvant se
trouver sur des machines distinctes. Ces types d'IPC diffèrent selon les critères
suivants:
Pour une meilleure utilisation des ressources, les processus communiquent et échangent des
données entre eux. Ceci évite à l’ordonnanceurs d’attendre fréquemment les interruptions.
L’un des meilleurs exemples de partage d’information par les processus est le cas des
fichiers. Le contenu d’un fichier écrit par un processus peut être lu par un autre processus.
Seulement, il faut penser à l’ouverture/fermeture du fichier par chaque processus.
M. Sabbane : 2020-2021 12
Système d’Exploitation I : Chapitre II / SMI3
En conclusion, les processus communiquent entre eux par l’identification des signaux par un
identifiant unique.
A quel genre d’objets est envoyé un message ? Il peut s’agir d’un processus, d’une boîte aux
lettres ou d’un tampon de communication ; l’objet peut être identifié par un nom ou un
numéro d’identification.
Comment les processus sont-ils associés aux objets du message ? Le système d’exploitation
peut exiger que toute communication soit précédée d’une primitive qui établit une
connexion avec l’objet de destination. Tout processus peut être autorisé à communiquer
avec l’objet de destination, mais il est possible de mettre en places certaines restrictions. Si
l’objet de destination est une boîte aux lettres ou un tampon de communication, les objets
peuvent être crées automatiquement. Il peut exister un nombre fixe d’objets prédéfinis ou
encore y avoir une primitive pour créer l’objet.
Les messages sont-ils de taille fixe ou variable ? S’ils sont de taille variable, le système
d’exploitation peut imposer une taille maximale.
M. Sabbane : 2020-2021 13
Système d’Exploitation I : Chapitre II / SMI3
de réception. Tous deux sont libres de poursuivre leur exécution une fois la réponse du
récepteur émise.
Les messages sont-ils envoyés par valeur ou par référence ? Les messages envoyés par
référence nécessitent moins de surcharge, mais ils peuvent être modifiés après leur envoi.
Le passage des messages par référence enfreint le principe selon lequel chaque processus
doit recevoir un espace d’adressage indépendant.
Que se passe-t-il si un processus se termine alors qu’un autre processus est bloqué, dans
l’attente d’une action du processus qui vient de s’achever ? Généralement la primitive à
l’origine du blocage renvoie un statut d’erreur en indiquant un échec ou bien le processus
bloqué se termine également.
Communication indirecte entre les processus par le biais d’une boîte de messages :
Le passage du message est réalisé indirectement par le biais d’une boîte aux lettres.
- int create_mailBox(mbx) : crée une boîte aux lettres appelée mbx. Cette primitive échoue
si la boîte aux lettres existe déjà.
- int delete_mailBox(mbx) : supprime une boîte aux lettres appelée mbx. Cette primitive
échoue si le processus qui émet la primitive n’est pas propriétaire de la boîte aux lettres ou
si la boîte aux lettres n’existe pas.
- int send_mailBox(mbx, message) : envoie message dans boîte aux lettres mbx : le message
est copié dans la boîte aux lettres. Tout processus peut envoyer un message à n’importe
quelle boîte aux lettres. L’émetteur est bloqué jusqu’à réception du message. Les messages
M. Sabbane : 2020-2021 14
Système d’Exploitation I : Chapitre II / SMI3
sont des chaînes de n’importe quelle longueur. Cette primitive échoue si la boîte aux lettres
n’existe pas.
Communication indirecte entre les processus par le biais d’un canal de communication :
Le dernier exemple repose sur un canal de communication mis en tampon appelé tube
(pipe). A la différence des autres exemples pour lesquels la destination du message était un
numéro d’identification ou un nom pouvant être spécifié par tout processus quel qu’il soit,
les primitives d’envoi et de réception utilisent un descripteur de canal de communication
associé uniquement au processus ayant créé le tube et aux processus fils de ce dernier.
int close(pd) : pour les processus qui émettent cette primitive, ferme le descripteur
pd qui peut être un descripteur de lecture ou d’écriture. Cette primitive échoue si le
descripteur n’est pas ouvert.
Int send_pipe(pdw, byte) : écrit byte dans le tube associé au descripteur de lecture
pdw. Si le tube contient déjà 4096 octets, cette primitive se bloque jusqu’à ce qu’une
opération de lecture fasse de la place pour d’autres octets dans le tube. Cette
primitive échoue si le descripteur n’est pas ouvert ou si ce tube n’est ouvert à aucun
procesus pour la lecture.
M. Sabbane : 2020-2021 15