Vous êtes sur la page 1sur 27

Table des matières

INTRODUCTION

I- OBJECTIFSET FONCTIONS D’UN SE ...................................................................................................... 4


II- LES TYPES DE SE ......................................................................................................................................... 6
III- GESTION DES PROGRAMMES EN COURS D’EXECUTION : LE PROCESSUS……………………8
A- LA NOTION DE PROCESSUS…………………………………………………………………………………………..8
i- Gestion du temps……………………………………………………………………………………………..9
ii- Les états d’un processus………………………………………………………………………………10
iii- Bloc de contrôle du processus………………………………………………………………………11
iv- Operations sur le processus…………………………………………………………………………12
v- Les types de processus………………………………………………………………………………….14

B- L’ORDONNNANCEMENT DES PROCESSUS…………………………………………………………………..15


i- Les types d’ordonnanceurs……………………………………………………………………………15
ii- Les Catégories d’algorithme d’ordonnancement………………………………………….15
iii- Les divers algorithmes d’ordonnancement…………………………………………………16

C- COMMUNICATION INTERPROCESSUS………………………………………………………………………..17
D- SECTION CRRITIQUE……………………………………………………………………………………………… 19

IV- GESTION DE LA MEMOIRE CENTRALE……………………………………………………………………20


A- Allocation contiguë de la mémoire……………………………………………………………………20
i- Partitionnement fixe ………………………………………………………………………………20
ii- Partitionnement dynamique………………………………………………………………21
iii- Les méthodes d’allocations des zones vides………………………………………….21
iv- La Notion de fragmentation externe et compactage de la mémoire………23

B- Allocation non-contigu de la mémoire………………………………………………………………25.


i- Pagination………………………………………………………………………………………………26
ii- Segmentation………………………………………………………………………………………….26
C- Le swapping de processus……………………………………………………………………………………27

CONCLUSION………………………………………………………………………………………………………………………………29

Operating System support Page 3


INTRODUCTION

De manière logique et cohérente, l’on peut définir le Système d’exploitation comme


étant une interface entre le logiciel et le matériel. Il s’appuie sur le fonctionnement
bimodal du processeur qui est le mode noyau où toutes les instructions sont autorisées
et le mode utilisateur où certaines instructions sont interdites pour faciliter le contrôle
qu’il exerce….

Etant donné qu’il s’exécute en mode Noyau tandis que tous les autres programmes sont
exécutés en mode utilisateur cela lui permet de protéger les ressources tout en
contraignant les autres programme a faire appel à lui de manière pas nécessairement
explicite afin d’accéder aux ressources.

Cependant la question fondamentale qui se pose est la suivante:

- Pourquoi étudier un SE??

Pour répondre à cette problématique nous allons de fond en comble explorer les
objectifs et fonctions d’un SE, les types de Systèmes d’exploitation sans oublier de
préciser comment il manage les processus et la mémoire centrale

Operating System support Page 4


I- OBJECTIFS ET FONCTIONS D’UN SE

Le système d’exploitation peut être défini comme un programme système qui


commande l’exécution de programmes d’application. Le système d'exploitation (SE, en
anglais Operating System ou OS) est un ensemble de programmes responsables de la
liaison entre les ressources matérielles d'un ordinateur (partie Hardware) et les
applications de l'utilisateur (traitement de texte, jeu vidéo...) (partie Software). Il
assure le démarrage de l'ordinateur, et fournit aux programmes applicatifs des
interfaces standardisées pour l’accès aux périphériques. Il est responsable du
chargement et de l’exécution de programmes d’application. Il veille { la disponibilité des
configurations matérielles et logicielles requises avant d’exécuter le programme
d’application. Le système d’exploitation est le programme qui agit comme intermédiaire
entre l’utilisateur et la partie matérielle, il peut être considéré comme gestionnaire de
ressources.

Le système d'exploitation étant donné que c’est un programme qui gère les ressources
de l'ordinateur, fournit des services aux programmeurs et planifie l'exécution d'autres
programmes. Une certaine compréhension des systèmes d'exploitation est essentielle
pour comprendre les mécanismes par lesquels la CPU contrôle le système informatique.
En particulier, les explications de l'effet des interruptions et de la gestion de la
hiérarchie de la mémoire sont mieux expliquées dans ce contexte.

Un processus est un programme en cours d’exécution auquel est associé un


environnement processeur (Compteur Ordinal, Registre d’Etat, registres généraux) et
un environnement mémoire appelés contexte du processus Ressource.

Une ressource désigne toute entité dont a besoin un processus pour s’exécuter.

En gros, le SE assure plusieurs fonctions essentielles à savoir :

 La gestion des processus : C’est l’une des fonctions les plus importante ici le
système d’exploitation détermine quel processus doit être exécuté { un moment
donné. En règle générale, le matériel interrompra un processus en cours de
temps { autre pour permettre au système d’exploitation une nouvelle décision de
planification afin de partager le temps de traitement de manière équitable entre
plusieurs processus. La gestion des processus n’a de sens que sur les machines
fonctionnant en temps partagé. Elle comprend la création et la destruction
dynamique de processus.
 La gestion de la mémoire : C’est une autre fonction très importante, afin de
simplifier la gestion des processus, les systèmes d’exploitation modernes
Operating System support Page 5
travaillent dans un espace mémoire virtuel, c’est-à-dire avec des adresses
virtuelles qui doivent être traduites pour correspondre à des adresses physiques.
Cela permet d’allouer { chaque processus (y compris au noyau) son propre
espace mémoire de telle sorte qu’il a l’illusion d’avoir la machine pour lui tout
seul. La plupart des systèmes d’exploitation actuels incluent une capacité de
mémoire virtuelle, qui présente deux avantages: (1) Un processus peut
s’exécuter en mémoire principale sans que toutes les instructions et données de
ce programme soient présentes dans la mémoire principale à la fin. Une fois, et
(2) l’espace mémoire total disponible pour un programme peut dépasser de
beaucoup la mémoire principale réelle du système. Bien que la gestion de la
mémoire soit effectuée de manière logicielle, le système d’exploitation dépend
du support matériel du processeur, y compris du matériel de pagination et de
segmentation.
 La gestion des entrées / sorties : Les entrées / sorties permettent de faire
transiter des données par l’ordinateur et d’utiliser ces données pour faire des
calculs. Ces données peuvent provenir de périphériques, de processus présents
sur la machine ou de processus présents sur d’autres machines (via un réseau).
 Le système de fichiers : Le système de fichiers est un élément essentiel des
systèmes d’exploitation moderne : il permet d’accéder aux différents
périphériques et il propose une interface abstraite pour manipuler des données.
 La gestion des communications entre machines : Il est aujourd’hui
impensable de disposer d’ordinateurs { usage professionnel sans que ceux-ci
soient reliés entre eux par un réseau local. Par ailleurs, l’utilisation de réseaux
internationaux comme l’Internet se répand et le système d’exploitation doit donc
prendre en charge la gestion des communications par réseaux.

II- LES TYPES DE S.E

Nous présentons les différents types de systèmes d’exploitation :

 Système monolithique

Le système d’exploitation est une structure hiérarchique écrit comme un ensemble de


procédures dont chacune peut appeler n’importe quelle autre en cas de besoin. La
structure de base suggérée par cette organisation est la suivante :

 un programme principal qui invoque la procédure de service ;


 un ensemble de procédures de services qui gèrent les appels système ;
 un ensemble de procédures utilitaires auxiliaires des procédures.

 Les systèmes en couche

L’organisation d’un système en une série de couches est une généralisation de la


structure précédente. Le système était composé par une série de couches hiérarchiques.
- La couche 0 fournissait le service de multiprogrammation CPU.
Operating System support Page 6
 La couche 1 était en charge de la gestion de la mémoire et des tampons .
 La couche 2 se chargeait de la communication interprocessus et console
 La couche 3 était en charge des entrées sorties
 La couche 4 contenait les programmes utilisateurs
 La couche 5 était le processus opérateur.

Chaque couche masque ainsi les couches situées en dessous d’elle et oblige la couche
située au-dessus { utiliser l’interface qu’elle propose. L’avantage est évident : les
couches sont totalement indépendantes les unes des autres et seule l’interface entre
chaque couche compte. Cela permet de développer, de débugger et tester chaque couche
en se fondant sur les couches inférieures qui sont sûres. Même si ce principe est
séduisant, il est très complexe { mettre en œuvre et les systèmes ainsi structurés sont
souvent très lourds et peu performants.

 Machines virtuelles

La plupart du temps, les utilisateurs des ordinateurs sont assis devant leur PC (unité
centrale + les différents périphériques). Cependant, dans d’autres cas, les utilisateurs
sont en face d’un terminal connecté { un mainframe ou ordinateur connecté { d’autres
ordinateurs en réseau. Dans le premier cas, le système est conçu de telle sorte qu’un
seul utilisateur monopolise toutes les ressources. Ainsi l’objectif de tels systèmes est
l’efficacité dans l’accomplissement des tâches soumises par l’utilisateur. Ces systèmes
sont donc conçus de telle sorte qu’elles soient faciles { utiliser avec pour seule
considération les performances du système, sans se soucier de l’utilisation des
ressources. Dans le second cas (utilisation d’un terminal), la même ressource peut être
demandée par plusieurs utilisateurs chacun assis devant son propre terminal.

Dans de tels cas, la conception de ces systèmes d’exploitation met un accent particulier
sur l’accès aux ressources. Ils doivent garantir la disponibilité de ressources et un
partage équitable entre les requérants.

En dernier lieu, on distingue de systèmes où l’utilisateur possède des ressources


dédiées (utilisation d’un ordinateur personnel) mais comportant des ressources
partagées (serveur de fichiers, serveur d’impression, etc.).

Dans ce cas, la conception de tels systèmes d’exploitation doit chercher un compromis


entre la gestion des ressources et l’utilisation individuelle de la machine.

 Les micronoyaux

Nous avons vu que les noyaux des systèmes monolithiques ont tendance à être
volumineux. Par ailleurs, si un service particulier est très rarement utilisé, il doit
néanmoins être présent dans le programme du noyau et il utilisera donc de la mémoire
de façon inutile. Pour éviter ces problèmes, une solution consiste à réduire le noyau à
quelques procédures essentielles et à reporter tous les autres services dans des
programmes système. Le noyau ainsi réduit s’appelle souvent micronoyau.

Operating System support Page 7


Ce travail est néanmoins considérable car il suppose une refonte totale des systèmes
d’exploitation habituels : ceux-ci ayant été développés au fil des ans, il se peut que des
services très importants, mais apparus tardivement, soient implantés à la périphérie du
noyau et que, donc, l’isolement de ces services demande la réécriture complète du
noyau. Un autre inconvénient des micronoyaux réside dans la communication entre les
différents services. Cette partie fondamentale permet le dialogue entre le noyau et les
services (tels que le réseau, l’accès aux disques.

Chaque service étant cloisonné dans son espace d’adresses, il est impératif d’établir ce
mécanisme de communication entre le micro noyau et les services. Cette couche de
dialogue, qui n’existe pas dans un noyau monolithique, ralentit les opérations et conduit
à une baisse de performance.

 Le modèle client-serveur

Il consiste { implémenter la plus grande partie du système d’exploitation sous forme de


processus utilisateur. La demande d’un service passe par l’envoie du service demandeur
(le client) d’une requête au service pourvoyeur (serveur) qui rend le service et renvoie
le résultat.

III- Gestion de l’exécution des programmes : le processus

Dans cette partie, nous nous intéressons { la fonction d’exécution qui recouvre
principalement deux notions : celle de processus qui correspond { l’image d’un
programme qui s’exécute et celle d’ordonnancement qui correspond au problème de
l’allocation du processeur et donc du partage du processeur entre différents processus.
Enfin, nous terminons cette partie en abordant les problèmes de synchronisation et de
communication entre processus

A- La notion de processus

Un processus est l’abstraction d’un programme en cours d’exécution. Le concept de


processus est capital pour la réalisation d’un système d’exploitation.

La notion de processus n’a cependant de sens que pour les systèmes d’exploitation
fonctionnant en temps partagé ou en multiprogrammation. Si un système d’exploitation
ne peut pas commuter d’un processus A { un processus B avant que le processus A ne se
termine, il est inutile de concevoir une gestion complexe des processus : il suffit de les
exécuter dans l’ordre. Un système d’exploitation digne de ce nom doit fonctionner en
temps partagé ! Les systèmes qui sont de plus multi-utilisateurs doivent offrir une

Operating System support Page 8


gestion de processus plus élaborée, qui comprend notamment la protection des
processus d’un utilisateur contre les actions d’un autre utilisateur.

i- La gestion du temps
Supposons que trois programmes doivent être exécutés sur notre ordinateur. À un
instant donné t, seul un des processus représentant ces programmes disposera du
processeur pour exécuter les instructions de son programme. Pour faciliter
l’explication, nous nommerons A, B et C les trois processus représentant l’exécution des
trois programmes.

Supposons alors que nous découpions le temps en petites unités de l’ordre de la


milliseconde (souvent appelées quanta) et que nous attribuions une unité de temps à
chaque processus. Pendant le laps de temps qui lui est accordé, A pourra exécuter un
certain nombre d’instructions.

Une fois ce laps de temps écoulé, A sera interrompu et il sera nécessaire de sauvegarder
toutes les informations dont A a besoin pour reprendre son exécution (son contexte), en
particulier le compteur d’instructions de A.

Un autre processus peut alors utiliser le processeur pour exécuter les instructions de
son programme. Quel processus choisir ? A, B ou C ? Ce choix est assuré par le système
d’exploitation et la façon dont les processus sont choisis s’appelle l’ordonnancement ou
le scheduling. On parle aussi parfois de scheduler pour désigner la partie du système
d’exploitation qui prend en charge l’ordonnancement.

Reprenons notre ordonnancement : A vient d’être interrompu. Supposons que B soit


choisi. Tout d’abord, il faut rétablir le contexte de B, c’est-à-dire remettre le système
dans l’état où il était au moment où B a été interrompu. L’opération consistant {
sauvegarder le contexte d’un processus, puis { rétablir le contexte du processus suivant
s’appelle le changement de contexte (context switching) et est essentiellement assurée
par les couches matérielles de l’ordinateur.
Après rétablissement de son contexte, le processus B va disposer du processeur pour un
quantum et pourra exécuter un certain nombre d’instructions de son programme.
Ensuite, B sera interrompu et un autre processus (éventuellement le même) se verra
attribuer le processeur. Ce principe est résumé sur la figure ci-dessous

Operating System support Page 9


Figure II.A.1 : Principe de l’ordonnancement des processus chaque processus dispose
du processeur pendant un certain temps, mais, à chaque instant, un seul processus peut
s’exécuter.

Ainsi, à tout instant, un seul processus utilise le processeur et un seul programme


s’exécute. Mais si nous observons le phénomène { l’échelle humaine, c’est-à-dire pour
des durées de l’ordre de la seconde, nous avons l’illusion que les trois programmes
correspondant aux trois processus A, B et C s’exécutent en même temps. Cette exécution
est en fait concurrente, car les unités de temps attribuées à un processus ne servent pas
aux autres. Dans le cas de systèmes à temps partagé, tous les processus progressent
dans le temps, mais un seul s’exécute { la fois. Lorsque le processeur passe d’un
processus { un autre, la vitesse de traitement de processus n’est pas uniforme, ni même
reproductible si le même processus s’exécutait une autre fois.

ii- Les états d’un processus

Lors de son exécution, un processus est caractérisé par un état :

 lorsque le processus obtient le processeur et s’exécute, il est dans l’état élu. L’état
élu est l’état d’exécution du processus;

 lors de cette exécution, le processus peut demander à accéder à une ressource,


par exemple il demande à lire des données depuis le disque. Le processus ne
peut pas poursuivre son exécution tant qu’il n’a pas obtenu la ressource. Selon
notre exemple, le processus doit attendre la fin de l’opération d’entrées-sorties
disque
pour disposer des données sur lesquelles il pourra effectuer les calculs suivants

Operating System support Page 10


de son code. Le processus quitte alors le processeur et passe dans l’état bloqué.
L’état bloqué est l’état d’attente d’une ressource autre que le processeur;

 lorsque le processus a enfin obtenu la ressource qu’il attendait, celui-ci peut


potentiellement reprendre son exécution. Cependant, nous nous sommes placés
dans le cadre de systèmes multiprogrammés, c’est-à-dire qu’il y a plusieurs
programmes en mémoire centrale et donc plusieurs processus. Lorsque le
processus est passé dans l’état bloqué, le processeur a été alloué { un autre
processus. Le processeur n’est donc pas forcément libre. Le processus passe
alors dans l’état prêt. L’état prêt est l’état d’attente du processeur.
Le passage de l’état prêt vers l’état élu constitue l’opération d’élection. Le passage de
l’état élu vers l’état bloqué est l’opération de blocage. Le passage de l’état bloqué vers
l’état prêt est l’opération de déblocage.

Un processus est toujours créé dans l’état prêt. Un processus se termine toujours {
partir de l’état élu (sauf anomalie).

Figure II.A.2 : diagramme d’état d’un processus

iii- Bloc de contrôle du processus

Le chargeur a pour rôle de monter en mémoire centrale le code et les données du


programme { exécuter. En même temps que ce chargement, le système d’exploitation
crée une structure de description du processus associé au programme exécutable : c’est
le PCB ou Process Control Block (bloc de contrôle du processus).

 Le bloc de contrôle d’un processus contient les informations suivantes


(figure II.A.3) : un identificateur unique du processus (un entier);
 l’état courant du processus (élu, prêt, bloqué);
 le contexte processeur du processus : la valeur du CO, la valeur des autres
registres du processeur;
 le contexte mémoire : ce sont des informations mémoire qui permettent de
trouver
le code et les données du processus en mémoire centrale;

Operating System support Page 11


 des informations diverses de comptabilisation pour les statistiques sur les
performances du système;
 des informations liées { l’ordonnancement du processus;
 des informations sur les ressources utilisées par le processus, tels que les
fichiers
ouverts, les outils de synchronisation utilisés, etc.

Figure II.A.3: Bloc de contrôle de processus

Le PCB permet la sauvegarde et la restauration du contexte mémoire et du contexte


processeur lors des opérations de commutations de contexte.

iv- Opération sur les processus

Le système d’exploitation offre généralement les opérations suivantes pour la gestion


des processus : création de processus, destruction de processus, suspension de
l’exécution et reprise de celle-ci.

 Création de processus

Un processus peut créer un ou plusieurs autres processus en invoquant un appel


système de création de processus. Le processus créateur est généralement
appelé le processus père tandis que le ou les processus créés constituent quant à
eux les processus fils. Ces processus fils peuvent à leur tour créer des processus,
devenant ainsi également des processus père. Ainsi, au fil des opérations de
création initiées par les processus, se développe un arbre de filiation entre
processus.
Les opérations de création de processus admettent notamment les variantes
suivantes selon les systèmes d’exploitation :

Operating System support Page 12


 Le processus créé hérite ou non de données et du contexte de son
processus créateur. Ainsi, le nouveau processus peut exécuter un
programme différent de celui de son créateur (système Dec Vms) ou
être constitué comme un clone de celui-ci avec le même code et les
mêmes données (système Unix);
 Le processus créé peut s’exécuter parallèlement { son père. Dans
certains systèmes, le processus père doit attendre la terminaison de
ses fils pour pouvoir reprendre sa propre exécution.

Exemple :
Sous Linux ou Unix, l’appel système fork permet à un processus de créer un
autre processus qui est une exacte copie de lui-même au moment de l’appel.
Le processus fils hérite du code et des données de son père, hormis son
identificateur. Ce code hérité peut être modifié pour un autre code par le biais
d’un appel { une des routines systèmes de la famille exec.

 Destruction de processus

La destruction d’un processus intervient :

 Lorsque le processus a terminé son exécution. Dans ce cas, le


processus s’autodétruit en appelant une routine système de fin
d’exécution (par exemple exit () sous Unix);
 Lorsque le processus commet une erreur irrécouvrable. Dans ce cas,
une trappe est levée et le processus est terminé par le système
 Lorsqu’un autre processus demande la destruction du processus, par
le biais d’un appel { une routine système telle que kill sous Unix.

Lors de la destruction d’un processus, le contexte de celui-ci est démantelé :


les ressources allouées au processus sont libérées et son bloc de contrôle est
détruit.

 Suspension d’exécution

La suspension d’exécution est une opération qui consiste { momentanément


arrêter l’exécution d’un processus pour la reprendre ultérieurement.
Lors de l’opération de suspension, le contexte du processus est sauvegardé dans
son PCB afin de pouvoir reprendre l’exécution, l{ où elle a été suspendue. Le
processus suspendu passe dans l’état bloqué. Lors de sa reprise d’exécution, le
processus franchit la transition de déblocage et entre dans l’état prêt.

Sous les systèmes Linux ou Unix, l’appel système sleep(durée) permet de


suspendre
l’exécution d’un processus pour un temps égal { durée secondes.

Operating System support Page 13


v- Les types de processus

On distingue les processus interactifs et les processus automatiques

 Les processus interactifs

Les processus interactifs sont démarrés par l’utilisateur connecté au système. Ils sont
initialisés et contrôlés via une session terminale. Ces processus peuvent s’exécuter en
avant plan du terminal qui a lancé le programme. Dans ce cas aucune autre application
ne peut être lancée aussi longtemps que le processus est en train de s’exécuter en avant
plan.

Lorsque ces processus s’exécutent en arrière-plan, de nouvelles commandes peuvent


être acceptées par le terminal pendant l’exécution du programme. Lors de l’exécution

des programmes en arrière-plan, le système n’interdit pas l’utilisateur { faire autre


chose sur le terminal utilisé pour lancer le programme. Le job control du noyau du
système d’exploitation offre une gestion aisée de plusieurs processus. Ce mécanisme fait
passer les processus de l’avant plan { l’arrière-plan. En utilisant ce système, des
programmes peuvent également être lancés immédiatement en arrière-plan.

 Les processus automatiques

Les processus automatiques ou processus par lot sont des processus non connectés au
terminal. Ce sont plutôt de tâches mises dans une file d’attente pour être exécutées.
Cette file
d’attente est gérée selon le mode du premier entré- premier sorti (First in, First out :
FIFO).
De telles tâches sont exécutées selon les critères suivants:

 A une certaine période (date et heure): exécutée selon la commande at;


 Au moment où le système est suffisamment moins occupé pour accepter
d’autres travaux (jobs): exécutées en utilisant la commande par lot (batch
command). Dans les environnements plus larges, le traitement par lots peut
être privilégié lorsque de grandes quantités de données doivent être traitées
ou lorsque des tâches gourmandes en ressources sont en attente alors que
 le système est suffisamment chargé. Le traitement par lots est aussi utilisé
dans l’optimisation des performances du système.

Operating System support Page 14


B- L’ordonnancement des processus

Dans un système multitâche plusieurs processus sont en cours simultanément, mais le


processeur ne peut, { un moment donné, exécuter qu’une instruction (d’un programme)
à la fois. Le processeur travaille donc en temps partagé.

L’ordonnanceur (scheduleur) est le module du SE qui s’occupe de sélectionner le


processus suivant à exécuter parmi ceux qui sont prêts.

Le SE doit sélectionner les processus { partir de ces files d’attente d’une manière
quelconque, Cependant il effectue un processus de sélection qui doit être bien mené par
un scheduleur

i. Les types d’ordonnanceurs

 Le scheduleur à long terme ou scheduleur de travaux

 Sélectionne le processus qui doit aller dans la fille de processus prêts.


 S’exécute moins fréquemment : peut-être lent (seconds, minutes).
 Contrôle le degré de multiprogrammation (le nombre de processus dans la
mémoire).
 Il est important que le scheduleur à long terme réalise un bon mélange de
processus tributaires de la CPU et tributaires des E/S

 Le scheduleur à court terme ou scheduleur de la CPU

 Choisit parmi les processus prêts celui à être exécuté (alloue la CPU à lui).
 Appelé assez fréquemment : doit être très rapide

 Le scheduleur à moyen terme

Assuré par l'ordonnanceur de mémoire aussi appelé permutateur ou swapper.


Son rôle est de permuter les processus placés en mémoire et ceux qui, faute de
place, ont été temporairement entreposés sur le disque.
Ces permutations ne peuvent toutefois pas être trop fréquentes pour ne pas
gaspiller la bande passante des disques.

ii. Les catégories d’algorithme d’ordonnancement

Les algorithmes d’ordonnancement (scheduleur) peuvent être classés en deux


catégories:

 Les algorithmes Non préemptifs

Operating System support Page 15


 Sélectionne un processus, puis le laisse s’exécuter jusqu’{ ce qu’il bloque (soit
sur une E/S, soit en attente d’un autre processus) où qu’il libère
volontairement le processeur.
 Même s’il s’exécute pendant des heures, il ne sera pas suspendu de force.
 Aucune décision d’ordonnancement n’intervient pendant les interruptions
de l’horloge.

 Les algorithmes préemptifs

 Sélectionne un processus et le laisse s’exécuter pendant un délai déterminé.


 Si le processus est toujours en cours { l’issue de ce délai, il est suspendu et le
scheduleur sélectionne un autre processus à exécuter

iii. Les divers algorithmes d’ordonnancement

 FCFS- First-come First-served =>Premier arrivé /


Premier servi
Les jobs attendent dans une file. Le premier arrivé est admis immédiatement et
s'exécute tant qu'il n'est pas bloqué ou terminé. Lorsqu'il se bloque, le processus
suivant commence à s'exécuter et le processus bloqué va se mettre au bout de la file
d'attente. C’est typiquement un algorithme non préemptif.
Avantages : l'algorithme est simple (c'est une simple liste chaînée),
l'ordonnancement est équitable.
Inconvénient : Le processus qui utilise davantage de temps est favorisé par
rapport à ceux qui font beaucoup d'appels aux entrées/sorties.

 SJF - Shorted Job First => le job le plus court d'abord

Sera élu, le processus dont on suppose que le traitement sera le plus court. Si quatre
jobs ont des durées d'exécution a, b, c et d ; le premier se termine à l'instant a, le
second à l'instant (a+b) et ainsi de suite. La durée de rotation moyenne est de

Le premier job exécuté contribue donc beaucoup plus que les autres à la durée
moyenne. Il est donc normal d'exécuter le plus court en premier lieu. (C'est ce qui se
passe quand à la caisse d'une grande surface les clients laissent passer devant
quelqu'un qui n'a qu'un article)
Inconvénient : les jobs les plus courts sont favorisés. Si des processus courts
arrivent sans cesse, les processus plus longs n'auront jamais le temps de s'exécuter

 SRT - Shorted Remaining Time => l'algorithme du temps


restant le plus court

C'est la version préemptive de l'algorithme précédent.


(Cette fois le client qui n'a qu'un article vient carrément interrompre la caissière.).

 RR - Round Robin => L'algorithme du tourniquet


Operating System support Page 16
Chaque processus reçoit tour à tour un intervalle de temps appelé quantum.
Au terme de ce quantum ou, si le processus s'achève ou se bloque avant cet instant,
l'ordonnanceur attribue directement le processeur au processus suivant.
L'algorithme est simple et équitable. C'est généralement cet ordonnancement
circulaire qui est utilisé dans les systèmes à temps partagé. La valeur du quantum
est couramment fixée aux alentours de 20 à 50 ms.
Des quanta plus courts provoqueraient trop de commutations de processus et la
proportion du temps consacré à ces changements de contexte deviendrait trop
importante.
Si par contre, on optait pour des quanta plus longs, ce seraient les temps de réponse
aux processus interactifs qui en pâtiraient.

 L'ordonnancement avec priorité

Une valeur de priorité est assignée à chaque processus.


La priorité peut être fonction d'un ordre de préséance entre utilisateurs ou fonction
des caractéristiques des processus. Un processus temps réel sera par exemple
prioritaire par rapport à une tâche de fond.
La priorité peut varier dynamiquement. Exemple : pour ne pas encombrer la
mémoire avec des processus qui passent le plus clair de leur temps à attendre des
entrées/sorties, on leur accorde une priorité d'autant plus grande qu'ils ne
consomment qu'une petite fraction de leur quantum.

Supposons que la valeur du quantum est fixée à 50 ms. Un processus qui n'utilise
que 1 ms avant d'être bloqué aurait droit à une priorité de 50 ms/ 1 ms = 50 tandis
qu'un processus qui se bloque au bout de 25 ms a droit à une priorité de 50/25=2 et
les processus qui consomment tout le quantum ont une priorité de 1.

C- Communication interprocessus

Les processus d’un système ne s’exécutent pas tous de manière isolée. Certains se
trouvent en compétition pour une ressource donnée, d’autres ont besoin de coopérer et
nécessitent par conséquent des moyens de communication et de synchronisation. Ainsi,
les principaux problèmes liés à la communication interprocessus sont les suivants:

 Comment un processus fait-il pour passer des informations à un autre


processus?
 Comment éviter que deux processus ou plus ne produisent pas de conflits
lorsqu’ils s’engagent dans des activités critiques (tentative de
récupération du dernier Mo de mémoire par deux processus?

Operating System support Page 17


 Comment faire le séquençage en présence de dépendances (un processus
B qui travaille sur des données produites par A, doit attendre que A ait
terminé pour pouvoir commencer)?

Pour étayer la communication interprocessus, prenons pour exemple le spouleur


d’impression.
Les noms des fichiers à imprimer sont stockés dans un répertoire de spool et
supprimés au fur et à mesure de leur impression. Le répertoire de spool possède
plusieurs entrées numérotées de manière croissante et chaque entrée peut loger un
nom de fichier. Pour gérer ce répertoire, deux variables globales partagées (in et
out) sont utilisées. La variable in pointe vers la prochaine entrée libre du répertoire
tandis que la variable out pointe vers le prochain fichier à imprimer. Le processus
qui veut lancer l’impression lit la valeur de la variable globale in, la met dans sa
variable locale suivante, puis place le nom de fichier dans l’entrée libre, du
répertoire de spool, désignée par le contenu de la variable suivante puis met à jour
la variable globale in en lui affectant la valeur du suivant incrémentée de 1.

Le pseudo code correspondant à cette séquence est le suivant:


suivant=in;
MettreNomDeFichier (suivant);
in=suivant+1;

Admettons qu’{ un instant t, in=7 et out =4 et que deux processus A et B désirent


lancer l’impression.

Figure II.C.1 : Intention d’accès simultanée de deux processus à la mémoire partagée

Dans ce cas, chaque processus doit exécuter la séquence d’actions d’ajout d’une
tâche d’impression (voir le pseudo-code ci-dessus indiqué). Supposons que le
processus A s’exécute et est interrompu par l’ordonnanceur avant de mettre { jour la
variable globale in (c’est { dire interrompu quelque part entre la 1ère et la 3ème
instruction).

Operating System support Page 18


L’ordonnanceur jugeant que le processus A a eu suffisamment de temps et bascule
vers le processus B. Pour ce cas les deux processus vont utiliser le même numéro, de
l’entrée libre, pour placer la tâche d’impression et l’une des tâches sera sans doute
supprimée.

Cependant au regard du contenu des variables in et out, le répertoire va rester


cohérent et aucune anomalie ne sera détectée par le CPU.

De tels cas de figure sont appelés de situations de concurrences (race conditions


en anglais).Face à une telle situation, il est donc indispensable que le système
fournisse un moyen sûr de communication interprocessus permettant la
synchronisation et l’échange de données.

D- Section critique

Pour résoudre le cas des problèmes d’accès concurrents (voir exemple ci-
dessus), il faut éviter que plus d’un processus accèdent { une donnée partagée en
même temps. Cela consiste { mettre en place un processus d’exclusion mutuelle {
la ressource partagée aussi appelée section critique.

Quatre conditions sont à remplir pour résoudre ce problème:

 deux processus ne doivent pas se trouver parallèlement dans leurs


sections critiques;
 il ne faut pas faire de suppositions sur la vitesse ou le nombre de
processeurs mis en œuvre;
 Aucun processus s’exécutant en dehors de la section critique ne doit
bloquer d’autres processus;
 . aucun processus ne dit attendre indéfiniment pour entrer dans sa section
critique.
 . Il existe plusieurs façons de mettre en œuvre l’exclusion mutuelle :
l’ordonnancement et la gestion de la mémoire

Operating System support Page 19


III- GESTION DE LA MEMOIRE
Comment se fait la gestion de la mémoire par le SE ? :

La mémoire est une ressource importante qui doit être gérée avec attention. Le Système
d’Exploitation doit cohabiter dans la mémoire principale avec un ou plusieurs
processus. La gestion de la mémoire prend en charge l’allocation de la mémoire aux
processus. Elle doit également protéger la mémoire qui lui est allouée contre des accès
non autorisé. Ainsi, un bon gestionnaire de mémoire doit être capable de:

- Connaître les parties libres de la mémoire physique


- Allouer la mémoire aux processeurs en évitant le gaspillage;
- Récupérer la mémoire par la terminaison de processus;
- offrir aux processus des services de mémoire virtuelle plus grand que la
mémoire physique disponible, au moyen des techniques va-et-vient ou
swapping, partitionnement fixe et dynamique, pagination,
segmentation…

A- Allocation Contiguë De La Mémoire


Dans cette méthode d’allocation, le programme est considéré comme un espace
d’adressage insécable. La mémoire physique est découpée en zones disjointes de
taille variable, adaptables à la taille des programmes, qui sont dénommées
partitions.

i- Le partitionnement fixe

Le partitionnement fixe, ou allocation statique de la mémoire, consiste à


découper, de façon arbitraire et « définitive », l’espace mémoire centrale en
plusieurs partitions (ne pas confondre avec la partition du disque dur). La
taille de chaque partition peut être différente en fonction des traitements que
l’on sera amené à y effectuer.
Les processus seront donc chargés dans les partitions mémoire au fur et à
mesure des besoins. L’inconvénient majeur de cette technique est le
fractionnement des processus trop importants pour loger dans une seule
partition libre

Operating System support Page 20


Figure IV.A.1: Allocation statique de la mémoire

ii- Le partitionnement dynamique

Cette technique, dite aussi allocation dynamique de la mémoire (garbage


collector, littéralement « ramassage des ordures »), consiste à tasser les
segments les uns { la suite des autres dès qu’un processus se retire de
l’espace mémoire, laissant alors derrière lui un espace inutilisé.
Chaque processus n’occupe ainsi que la place qui lui est nécessaire et laisse,
du fait du tassement, un seul segment de mémoire contiguë vide.
Toutefois, le tassement que rend nécessaire cette technique est coûteuse en
temps de traitement

Figure IV.A.2: Allocation dynamique de la mémoire


iii- Les méthodes d’allocation des espaces vides
Charger un nouveau programme consiste à trouver une zone libre suffisamment grande
pour pouvoir y placer ce programme, tout en minimisant la place perdue en mémoire
centrale et le temps de choix d’une zone libre. Trois stratégies existent pour le choix de
la zone libre : stratégie de la première zone libre (First Fit), stratégie de la meilleure
zone libre (Best Fit) et stratégie de la plus mauvaise zone libre (Worst Fit).

 Stratégie de la première zone :

Une première stratégie pour choisir une zone libre est de prendre la première zone libre
suffisamment grande trouvée au cours du parcours de la liste chaînée des zones, c’est-à-
dire la première zone libre ZL telle que taille (ZL) supérieure ou égale à la taille
(programme à charger).

Operating System support Page 21


Figure IV.A.3 : Stratégie de la première zone

Sur la figure ci-dessus, le programme 7 dont la taille est égale à 80 Ko est ainsi placé
dans la zone libre de 120 Ko ce qui crée une nouvelle zone libre résiduelle de 40 Ko.

Cette méthode optimise la rapidité du choix d’une zone, mais elle ne conduit pas
forcément à la meilleure utilisation possible de la mémoire centrale.

 Stratégie de la meilleure zone libre

Une seconde stratégie pour choisir une zone libre est de prendre la zone libre dont la
taille est la plus proche de celle du programme à allouer, donc celle engendrant
la plus petite zone libre résiduelle. C’est la zone libre Zi pour laquelle pour tout i,
taille (Zi) – taille (programme à charger) est minimum.

Figure IV.A.4 : Stratégie de la première zone libre

Sur la figure ci-dessus, le programme 7 dont la taille est égale à 80 Ko est ainsi placé
dans la zone libre de 120 Ko ce qui crée une nouvelle zone libre résiduelle de 40 Ko.
Cette méthode optimise la rapidité du choix d’une zone, mais elle ne conduit pas
forcément à la meilleure utilisation possible de la mémoire centrale.

 Stratégie de la plus mauvaise zone libre

Une dernière stratégie pour choisir une zone libre est de prendre la zone libre dont la
taille est la plus éloignée de celle du programme à allouer, donc celle engendrant la plus

Operating System support Page 22


grande zone libre résiduelle. C’est la zone libre Zi pour laquelle pour tout i, taille (Zi) –
taille (programme à charger) est maximum.

Sur la figure ci-dessous, le programme 7 dont la taille est égale à 80 Ko est placé dans la
zone libre de 150 Ko ce qui crée une nouvelle zone libre résiduelle de 70 Ko.

Cette méthode présente le même inconvénient que la méthode de la meilleure zone


libre en termes de vitesse de choix de la zone libre. Par contre, les zones résiduelles
créées suite à une allocation, sont davantage utilisables pour de nouvelles allocations.

Figure IV.A.5: Stratégie de la plus mauvaise zone

iv- La Notion de fragmentation externe et compactage de la


mémoire centrale

 Fragmentation externe

Au fur et { mesure des opérations d’allocations et de dés-allocations, la mémoire


centrale devient composée d’un ensemble de zones occupées et de zones libres
éparpillées dans toute l’étendue de la mémoire centrale. Ces zones libres peuvent être
chacune trop petites pour permettre l’allocation de nouveaux programmes, alors que la
somme totale de l’espace libre en mémoire centrale est suffisante : on parle alors de
fragmentation externe de la mémoire centrale.

Operating System support Page 23


Figure : Fragmentation externe de la mémoire centrale

Ainsi, sur la figure ci-dessus, la mémoire centrale comporte 4 zones libres


respectivement de 60 Ko, 120 Ko, 20 Ko et 150 Ko mais aucune d’elles n’est assez
grande pour contenir le programme 8 de 180 Ko.

Pourtant l’ensemble des 4 zones libres forme un espace de 60 + 120 + 20 + 150 = 350
Ko suffisant pour y placer le programme 8. Il y’a fragmentation externe.

 Compactage de la mémoire centrale

Une solution au problème de la fragmentation externe est apportée par l’opération de


compactage de la mémoire centrale.

Le compactage de la mémoire centrale consiste à déplacer les programmes en mémoire


centrale de manière { ne créer qu’une seule et unique zone libre. Le compactage de la
mémoire centrale est une opération coûteuse. Il n’existe pas d’algorithme simple
permettant d’optimiser le nombre d’octets déplacés lors d’une telle opération. Par
ailleurs elle suppose un chargement dynamique des programmes : déplacer un
programme consiste alors { changer la valeur d’adresse d’implantation chargée dans le
registre de translation.
La figure ci-dessous illustre le principe du compactage de la mémoire centrale qui
permet
ici de charger le programme 8 dont la taille est égale à 180 Ko.

Operating System support Page 24


Figure IV.A.6: compactage de la mémoire centrale

B- Allocation non contigu de la mémoire physique


La méthode d’allocation par partitions variables présente deux difficultés :

- comme le programme à charger en mémoire centrale est considéré


comme un ensemble de mots insécable, elle nécessite de trouver en
mémoire centrale une zone libre d’un seul tenant suffisamment grande
pour y placer le programme. Si la taille du programme est importante,
trouver une telle zone libre peut se révéler difficile;
- les allocations et dés-allocations successives engendrent une
fragmentation externe
de la mémoire centrale, nécessitant une opération de compactage de la
mémoire
centrale qui est excessivement coûteuse.

Une solution à la première difficulté évoquée ci-dessus est de considérer que


l’ensemble des mots constituant un programme est maintenant un ensemble
sécable. Ainsi, le programme à charger est divisé en un ensemble de morceaux,
chaque morceau étant lui-même un ensemble de mots contigus insécable.

Chaque morceau du programme est alors alloué en mémoire centrale


indépendamment des autres

- Si le programme est divisé en un ensemble de morceaux de taille fixe et


égale, le
mécanisme d’allocation de la mémoire centrale est alors celui de la
pagination. Chaque morceau est appelé page.
- Si le programme est divisé en un ensemble de morceaux de taille
variable, le mécanisme d’allocation de la mémoire centrale est alors
celui de la segmentation. Chaque morceau est appelé segment

Operating System support Page 25


i- La pagination

La technique de la pagination, qui rappelle celle du partitionnement statique,


utilise un découpage de la mémoire en segments de même taille, eux-mêmes
décomposés en petits blocs d’espace mémoire (128, 256 octets…) appelés pages.
Dans certains systèmes, les termes de segments et pages désignent la même
chose. La pagination évite ainsi les problèmes liés au tassement des segments
mais nécessite, pour gérer les pages, l’adjonction d’un dispositif que l’on appelle
table des pages – qui doit être capable de reconstituer l’ordre logique des
diverses pages composant le segment de programme.

Figure IV.B.1: extrait de pagination pure

ii- La segmentation

La segmentation est une technique qui consiste { diviser l’espace mémoire en n


segments de longueur variable, un numéro étant attribué à chacun des segments de
l’espace adressable. L’adresse logique est alors traduite en une adresse physique en
effectuant le calcul
base + déplacement.

Chaque segment peut être muni d’un certain nombre d’attributs tels qu’adresse
physique de base du segment, longueur du segment, attributs de protection…

Dans un segment l'adressage se fera à l'aide d'un déplacement. Le couple (segment,


déplacement) sera traduit en adresse mémoire par le biais d'une table de segments
contenant deux champs, limite et base. La base est l'adresse de début du segment, et
limite la dernière adresse du même segment :

Operating System support Page 26


Figure IV.B.2: Table de segments

Ces diverses informations sont stockées dans le registre descripteur d’un


composant spécialisé appelé unité de gestion mémoire dite MMU (Memory
Management Unit)

Figure IV.B.3: Registre descripteur du MMU

C- Le swapping de processus

L’opération de vidage (swap-out) d’un processus consiste { transférer sur disque


dans la zone de swap, l’ensemble des pages présentes en mémoire centrale de
l’espace d’adressage de ce processus. Le processus victime de l’opération de vidage
est un processus endormi (état bloqué) en attente d’une ressource pour la poursuite
de son exécution. L’intérêt de cette opération est de désengorger d’un seul coup la
mémoire centrale de pages inutiles plutôt que de le faire petit à petit par vol de
pages. Le vidage de processus peut être aussi déclenché en cas de situation de crise
au niveau de l’occupation de la mémoire centrale. L’opération inverse de swap-in
consiste à ramener les pages du processus depuis la zone de swap lorsque celui-ci
redevient actif.
Sous le système Unix, le processus système 0, premier processus créé lors du boot
du système, devient ensuite le processus swapper. Lorsqu’il est réveillé par le noyau,

Operating System support Page 27


le processus swapper examine les processus présents en mémoire centrale et
transfère ceux qui sont endormis depuis le plus longtemps. Par ailleurs, il examine
également les processus transférés dans la zone de swap et remonte en mémoire
centrale
ceux qui sont devenus prêts et pour lesquels il existe suffisamment d’espace en
mémoire centrale.

Operating System support Page 28


CONCLUSION

Grosso modo les Systèmes d’exploitation sont des machines virtuelles contenues dans
des machines réelles qui permettent aux usagers de machines réelles de travailler sans
avoir à se soucier de comment les logiciels installés cohabitent avec le matériel.

La complexité des systèmes d’exploitation est grande, elle résulte tant du nombre et de
la taille des programmes impliqués que de la multiplicité des processus et de leurs
interactions. Cette grande complexité rend illusoire le « zéro défaut » ! Aujourd’hui, on
continue à développer de nouveaux systèmes, tout en recherchant l’augmentation de
leur sûreté de fonctionnement. Pour cela, on commence à utiliser des techniques
automatiques de certification de programmes.

Operating System support Page 29

Vous aimerez peut-être aussi