Vous êtes sur la page 1sur 8

Chapitre2 : Gestion du processeur

2.1- Introduction :
Dans un système multi-utilisateurs à temps partagé, plusieurs processus peuvent être présents
en mémoire centrale en attente d'exécution. Si plusieurs processus sont prêts, le système
d'exploitation doit gérer l'allocation du processeur aux différents processus à exécuter. C'est
l'ordonnanceur qui s'acquitte de cette tâche.
2.2- Concepts de processus :
2.2.1- Qu’est-ce qu’un processus ? :

Un processus est une entité dynamique qui matérialise un programme en cours d'exécution
avec ses données, sa pile, son compteur ordinal, son pointeur de pile et les autres valeurs de
registres nécessaires à son exécution. Contrairement à un programme (texte exécutable) qui
a une existence statique, un processus constitue l'aspect dynamique du programme.

2.2.2- Etats d’un processus :

Comme toute entité dynamique, un processus peut changer d'état au cours de son exécution.
La transition d'un état à un autre est effectuée selon le diagramme de transitions ci-dessous :

Initialement, un processus est à l'état « prêt ». Il passe à l'état « Elu », lorsque le processeur
entame son exécution. Un processus passe de l'état « Elu » à l'état « prêt », lorsqu'il est
suspendu provisoirement pour permettre l'exécution d'un autre processus. Il passe de l'état
« Elu » à l'état « bloqué », si le processus ne peut plus poursuivre son exécution (demande
d'une E/S). Il se met alors en attente d'un événement (fin de l'E/S). Lorsque l'événement
survient, il redevient à l’état « prêt ».

2.2.3- Contexte de processus :

Le contexte d'un processus regroupe l'ensemble des informations nécessaires pour la reprise
d’exécution d’un processus ainsi que les informations nécessaire au système d'exploitation
pour la gestion des processus.
Il existe une table des informations concernant tous les processus créés. Il y a une entrée par
processus dans la table, appelée le Bloc de Contrôle de Processus (PCB).
Chaque entrée de la table PCB comporte des informations sur :
• Le pid du processus (identificateur du processus).
• L'état du processus (Prêt, en attente, suspendu,...).
• Son compteur ordinal (adresse de la prochaine instruction devant être exécutée par
ce processus).
• Contexte mémoire ou espace de travail (segment procédure, données, pile
d'exécution).
• Les fichiers ouverts.
• Contexte processeur (mot d'état, les valeurs contenues dans les registres du
processeur).
• Tout ce qui doit être sauvegardé lorsque l'exécution d'un processus est suspendue.

2.2.4- Mécanisme de commutation de contexte :

La commutation de contexte est le mécanisme qui permet au système d'exploitation de


remplacer le processus élu par un autre processus éligible. L'opération de commutation de
contexte, préalable au changement de processus actif, est l'enchaînement indivisible des deux
opérations suivantes :
1- rangement du mot d'état du processus actif à un emplacement particulier de la
mémoire et copie du contexte du processeur.
2- chargement d'un autre mot d'état, depuis un emplacement spécifique de la
mémoire, vers le processeur et récupération du contexte du processeur
correspondant.

Le nouveau processus peut alors être exécuté à partir de l'état où il se trouvait lorsqu'il a été
lui-même interrompu. Insistons sur le fait que cette commutation de contexte ne peut être
effectuée que lorsque le processeur se trouve dans un état observable, c'est à dire entre deux
instructions. La notion d'instruction est relative au microcode de la machine qui a peu à voir
avec celle utilisée par le programmeur qui pense aux instructions du langage évolué qu'il
emploie. Une instruction de C ou Fortran, de Java encore plus, correspond à plusieurs
instructions du microcode. Le temps d'exécution de ces instructions élémentaires représente
le quantum de temps minimum pendant lequel le processeur ne peut être stoppé. Les points
d'arrêt sont donc les instants entre les instructions. Ils sont désignés sous le nom de point
interruptible.

2.3- Définition de l'ordonnanceur (Scheduleur) et dispatcheur :


Chaque fois que le processeur devient inactif, le système d’exploitation doit sélectionner un
processus de la file d'attente des processus prêts, et lui passe le contrôle. D'une manière
concrète, cette tâche est prise en charge par deux routines système en l'occurrence le
Dispatcheur et le scheduleur.
2.3.1- Dispatcheur : Le dispatcheur est la routine système, qui s'occupe de l'affectation du
processeur à un processus sélectionné par le scheduleur du processeur. Les taches confient à
cette routine sont :

 Commutation de contexte, c'est-à-dire sauvegarde du contexte du processus qui


doit relâcher le processeur et restauration du contexte du processus qui aura le
prochain cycle processeur.
 Basculement vers le mode utilisateur, le dispatcheur s'exécute en mode maître et
le processus à lancer est souvent un processus utilisateur qui doit être exécuté en
mode esclave.
 Branchement au bon emplacement dans le processus utilisateur pour le faire
démarrer.

2.3.2- Scheduleur : Le scheduleur du processeur est également une autre routine . système qui
s'occupe de la sélection du processus qui aura le processeur, à partir de la file d'attente des
processus prêts. Concrètement, cette routine n'est rien d'autre que l'implémentation d'un
algorithme d'ordonnancement de processus.
2.4- Objectifs du scheduleur :

Les objectifs d'un scheduleur sont, entre autres :


 S'assurer que chaque processus en attente d'exécution reçoit sa part de temps
processeur.
 Minimiser le temps de réponse.
 Utiliser le processeur à 100%.
 Utilisation équilibrée des ressources.
 Prendre en compte des priorités.
 Être prédictibles.
Ces objectifs sont parfois complémentaires, parfois contradictoires : augmenter la performance
par rapport à l'un d'entre eux peut diminuer la performance considérée à partir d'autre. Il est
impossible de créer un algorithme qui optimise tous les critères de façon simultanée.
2.5- Politiques d'ordonnancement :
Nous distinguons plusieurs algorithmes d'ordonnancement, les plus répondus sont :
2.5.1- Ordonnancement du premier arrivé premier servi : FIFO
Dans cet algorithme, les processus sont rangés dans la file d'attente des processus prêts selon
leur ordre d'arrivée. Les règles régissant cet ordonnancement sont :
 Quand un processus est prêt à s'exécuter, il est mis en queue de la file d'attente
des processus prêts. .
 Quand le processeur devient libre, il est alloué au processus se trouvant en tête
de file d'attente des processus prêts.
 Le processus élu relâche le processeur s'il se termine ou s'il demande une E/S (pas
de réquisition).
Les principales caractéristiques de cet algorithme sont :
 Ce scheduleur est sans réquisition.
 Ce scheduleur est non adapté à un système temps partagé car dans un système
partagé, chaque utilisateur obtienne le processeur à des intervalles réguliers.

2.5.2- Ordonnancement du plus court d'abord : SJF (Shortest Job First)


Dans cet algorithme, les processus sont rangés dans la file d'attente des processus prêts selon
un ordre croissant de leur temps d'exécution. Les règles régissant cet ordonnancement sont:
 Quand un processus est prêt à s'exécuter, il est inséré dans la file d'attente des
processus prêts à sa position approprié.
 Quand le processeur devient libre, il est assigné au processus se trouvant en tête
de la file des processus prêts (ce processus possède le plus petit cycle processeur).
Si deux processus ont la même longueur de cycle, on applique dans ce cas
l'algorithme FIFO.
 Le processus élu relâche le processeur s'il se termine ou s'il demande une E/S (pas
de réquisition).
Les principales caractéristiques de cet algorithme sont :
 Ce scheduleur est sans réquisition.
 Ce scheduleur nécessite de connaître le temps d'exécution de chaque processus.
 risque de famine (les processus de longue durée peuvent n'avoir jamais
accès au processeur si des processus de courte durée arrivent en
permanence).
2.5.3- Ordonnancement du plus court temps restant d'abord : SRTN (Shortest Remaining
Time Next)
Dans cet algorithme, les processus sont rangés dans la file d'attente des processus prêts selon
un ordre croissant de leur temps d'exécution restant. Les règles régissant cet ordonnancement
sont :
 Quand un processus est prêt à s'exécuter, il est inséré dans la file d'attente des
processus prêts à sa position approprié.
 Quand le processeur devient libre, il est assigné au processus se trouvant en tête
de la file des processus prêts (ce processus possède le plus petit cycle processeur).
Si deux processus ont la même longueur de cycle, on applique dans ce cas
l'algorithme FIFO.
 Le processus élu perd le processeur quand un processus ayant un temps
d'exécution inférieur au temps d'exécution restant du processus élu. Le processus
sera mis dans la file d'attente des processus prêts et le processeur sera alloué au
processus qui vient d'entrer.
Les principales caractéristiques de cet algorithme sont :
 Ce scheduleur est avec réquisition.
 Ce scheduleur nécessite de connaître le temps d'exécution restant de chaque
processus.
2.5.4- ordonnancement circulaire : le tourniquet (Round Robin)
Dans cet algorithme les processus sont rangés dans une file d'attente des processus prêts. Le
processeur est alloué successivement aux différents processus pour une tranche de temps fixe
Q appelée quantum.
Cet ordonnancement est régit par les règles suivantes :
 Un processus qui rentre dans l'état prêt est mis en queue de la file d'attente des
processus prêts.
 Si un processus élu se termine ou se bloque (pour des raisons de -synchronisation
par exemple) avant de consommer son quantum de temps, le- processeur est
immédiatement alloué au prochain processus se trouvant en tête de la file
d'attente des processus prêts.
 Si le processus élu continue de s'exécuter au bout de son quantum, dans ce cas le
processus sera interrompu est mis en queue de la file d'attente des processus
prêts et le processeur est réquisitionné pour être réalloué au prochain processus
en tête de cette même file d'attente.

Les principales caractéristiques de cet algorithme sont :


 Ce scheduleur est avec réquisition.
 Ce scheduleur est bien adapté aux systèmes temps partagé.
 L'efficacité de ce scheduleur dépend principalement de la valeur du quantum Q car:
 Le choix d'un Q assez petit augmente le nombre de commutation.
 Le choix d'un Q assez grand augmente le temps de réponse du système.

2.5.5- Ordonnancement circulaire à plusieurs niveaux :


Dans cet algorithme on dispose de n files d'attentes (F0,...,Fn.i) pour les processus prêts, à
chaque file est associée un quantum de temps dont la valeur croit avec i
Cet ordonnancement est régit par les règles suivantes :
 Tout nouveau processus qui entre dans le système est mis dans la file d'attente F0.
 Tout processus de la file d'attente F1 ne sera servi que si toutes les files Fi tel que
j<i sont vides.
 Si un processus de la file F1 a consommé son quantum ci; sans être terminé, il passe
dans la file d'attente suivante F,+1 sauf celui de la file Fn.i qui doit retourner dans
cette même file.

Les principales caractéristiques de cet algorithme sont :


 Ce scheduleur est avec réquisition.
 Ce scheduleur favorise les processus court sans savoir à l'avance combien de
temps processeur ceux-ci vont utiliser.

2.5.6- Ordonnancement avec priorité :


Dans cet algorithme les processus sont rangés dans la file d'attente des processus prêts par
ordre décroissant de priorité. L'ordonnancement est dans ce cas régit par les règles suivantes :
 Quand un processus est admis par le système, il est inséré dans la file d'attente des
processus prêts à sa position appropriée (dépend de la valeur de priorité).
 Quand le processeur devient libre, il est alloué au processus se trouvant en tête de
file d'attente des processus prêts (le plus prioritaire).
 Un processus élu relâche le processeur s'il se termine ou se bloque (E/S, ou autre).

Remarque : Notons que si le système met en œuvre la réquisition, quand un processus de


priorité supérieure à celle du processus élu entre dans l'état prêt, le processus élu sera mi
dans la file d'attente des processus prêt à la position appropriée, et le processeur est alloué
au processus qui vient d'entrer.
Les principales caractéristiques de cet algorithme sont :
 Ce scheduleur peut être avec ou sans réquisition.
 Dans ce scheduleur, un processus de priorité basse risque de ne pas être servi
(problème de famine) d'où la nécessité d'ajuster périodiquement les priorités des
processus prêts. L'ajustement consiste à incrémenter graduellement la priorité
des processus de la file d'attente des processus prêts (par exemple à chaque 15
mn on incrémente d'une unité la priorité des processus prêts).

2.6- Les systèmes d'interruption :

2.6.1- Interruption :

Une interruption est un signal envoyé de façon asynchrone au processeur qui le force à
suspendre l'activité en cours au profit d'une autre. La source peut être un autre processeur,
un contrôleur d'entrées/sorties ou tout autre dispositif physique externe. Le programme en
cours d'exécution suspend son activité au premier point interruptible. Le processeur exécute
alors un programme prédéfini de traitement de l'interruption. Les causes d'interruption sont
multiples. Il faut donc être capable de les distinguer et de les traiter chacune de façon
spécifique. Pour cela, diverses méthodes peuvent être envisageables :

 Si l'indicateur d'interruption est unique, le code de l'interruption est stocké


quelque part dans la mémoire et doit être lu par le programme de traitement.
 S'il existe des indicateurs multiples, chacun est appelé niveau d'interruption. On
attache un programme différent de traitement à chacun de ces niveaux.
 On peut utiliser ces deux méthodes simultanément. Chaque niveau d'interruption
est accompagné d'un code qui est lu par le programme de traitement de ce niveau.
On distingue alors les interruptions matérielles qui sont les différents niveaux et
les interruptions logicielles qui correspont4nt aux codes lus.
2.6.2- Organigramme générale d'une interruption :
Lorsqu'une interruption survient, le processeur achève l'exécution de l'instruction en cours,
puis il se produit :
1. Sauvegarde du contexte dans une pile :
- adresse de la prochaine instruction à exécuter dans le programme
interrompu,
- contenu des registres qui seront modifiés par le programme d'interruption,
- contenu du mot d'état (registre de peaux) rassemblant les indicateurs (Tout
cela forme le contexte sauvegardé).
2. Chargement du contexte du programme d'interruption et passage en mode système
(superviseur).
3. Exécution du programme d'interruption.
4. Retour au programme interrompu en restaurant le contexte et en repassant en mode
utilisateur.

2.6.3- Type d’interruption :

les interruptions se différencient selon leurs sources (interne ou externe) et selon leurs
intentions (volontaire ou involontaire); on distingue donc :

 Interruption interne (déroutement): est un événement qui se- produit


lorsque certaines conditions particulières apparaissent dans l'exécution
d'un programme. C’est le cas d'un débordement d'une opération
arithmétique, d'une division par zéro, ou d'un accès sur une zone
interdite de la mémoire. Un déroutement provoque une rupture de la
séquence d'exécution d'un programme vers une adresse mémoire
spécifique à laquelle se trouve un branchement à la procédure de
traitement du déroutement (Trap Handler). Cette dernière commence
par sauvegarder le contexte du processeur qui sera restitué au retour
du programme.
 Interruption logique (appel système) : permet à un processus
utilisateur de faire un appel au système d'exploitation. Il a pour. but :
changer de mode d'exécution pour passer du mode utilisateur au mode
maître, récupérer les paramètres et vérifier la validité de l'appel, de
lancer l'exécution de la fonction demandée, de récupérer la (les)
valeur(s) de retour et de retourner au programme appelant avec retour
au mode utilisateur.
 Interruptions matérielles : déclenchées par une unité électronique
(lecteur, clavier, canal, contrôleur de périphérique, panne de
courant,....) ou par un autre processeur.
2.6.4- Priorité d'interruption :
A chaque interruption, est associée une priorité (système d'interruptions hiérarchisées) qui
permet de regrouper les interruptions en classes. Chaque classe est caractérisée par un degré
d'urgence d'exécution de son programme d'interruption.
Règle : Une interruption de priorité j est plus prioritaire qu'une interruption de niveau i si j > i.
L'intérêt de ce système est la solution de problèmes tels que :
 arrivée de plusieurs signaux d'interruption pendant l'exécution d'une instruction,
 arrivée d'un signal d'interruption pendant l'exécution du signal de traitement d'une
interruption précédente.

2.6.5- Masquage des interruptions :


Certaines interruptions présentent tellement d'importance qu'il ne doit pas être possible
d'interrompre leur traitement. On masquera alors les autres interruptions pour empêcher leur
prise en compte. Certaines interruptions sont non masquables : on les prend obligatoirement
en compte.
Une interruption masquée n'est pas ignorée : elle est prise en compte dès qu'elle est
démasquée.
Au contraire, une interruption peut-être désarmée : elle sera ignorée. Par défaut, les
interruptions sont évidemment armées.

Vous aimerez peut-être aussi