Module : SYSTEME
D’EXPLOITATION 2
Pr. I. AATTOURI
[Link]@[Link]
TC Infos S4
Année universitaire : 2024 / 2025.
1
INTRODUCTION
• Dans un système multitâche, la ressource la plus importante d’une machine est
le processeur. Cette ressource est allouée à un et un processus sélectionné
parmi un ensemble des processus éligibles.
• Par conséquent, il convient à bien gérer ce dernier afin de le rendre plus
productif. En effet, un système d’exploitation dispose d'un module qui s’occupe
de l’allocation du processeur en l’occurrence le Dispatcheur.
• Ce module est exécuté chaque fois qu’un processus se termine ou se bloque
dans le but de réquisitionner le processeur pour un autre processus.
• En plus de ce Dispatcheur, un système d’exploitation dispose d’un autre module
permettant ainsi la mise en ordre des processus qui demandent le processeur.
2
NOTION DE PROCESSUS
• Un processus est une entité dynamique qui matérialise un programme en cours
d'exécution avec ses propres ressources physiques (mémoire, processeur,
entrée/sortie, ...) et logiques (données, variables, ...). Contrairement à un
programme (texte exécutable) qui a une existence statique.
• Le système d’exploitation manipule deux types de processus :
• Processus système : processus lancé par le système (init processus père de
tous les processus du système).
• Processus utilisateur : processus lancé par l'utilisateur (commande
utilisateur).
3
NOTION DE PROCESSUS
• Dès sa création, un processus reçoit les paramètres suivants :
• PID : identificateur du processus (numéro unique),
• PPID : identificateur du processus père,
• UID : identificateur de l’utilisateur qui a lancé le processus,
• GID : identificateur du groupe de l’utilisateur qui a lancé le processus.
4
ETATS D’UN PROCESSUS
• Dans les systèmes mono-programmés, un programme ne quitte pas l’unité
centrale avant de terminer son exécution. Pendant cette période, il dispose de
toutes les ressources de la machine. Par contre, ce n’est pas le cas dans les
systèmes multiprogrammés et temps-partagé, un processus peut se trouver
dans l’un des états suivants :
• Élu : (en cours d’exécution) : si le processus est en cours d'exécution
• Bloqué : attente qu’un événement se produise ou bien ressource pour pouvoir
continuer
• Prêt : si le processus dispose de toutes les ressources nécessaires à son exécution à
l’exception du processeur.
5
ETATS D’UN PROCESSUS
Sémantique des Transitions
1. Allocation du processeur au
processus sélectionné
2. Réquisition du processeur après
expiration de la tranche du temps
par exemple
3. Blocage du processus élu dans
l’attente d'un événement (E/S ou
autres)
4. Réveil du processus bloqué après
disponibilité de l’événement
bloquant (Fin E/S, etc...)
6
ORDONNANCEMENT DES PROCESSUS
• Certains systèmes d’exploitation utilisent une technique d’ordonnancement à deux
niveaux qui intègre deux types d’Ordonnanceurs :
• Ordonnanceur du processeur : c'est un ordonnanceur court terme opérant sur un
ensemble de processus présents en mémoire. Il s’occupe de la sélection du processus
qui aura le prochain cycle processeur, à partir de la file d’attente des processus prêts.
• Ordonnanceur de travail : ou ordonnanceur long terme, utilisé en cas d'insuffisance de
mémoire. Son rôle est de sélectionner le sous-ensemble de processus stockés sur un
disque et qui vont être chargés en mémoire. Ensuite, il retire périodiquement de la
mémoire les processus qui sont restés assez longtemps et les remplace par des
processus qui sont sur le disque depuis trop de temps.
7
ORDONNANCEMENT DES PROCESSUS
• Nous distinguons plusieurs algorithmes d’ordonnancement, les plus répandus
sont :
• Ordonnancement Premier Arrivé Premier Servi
• Ordonnancement du plus court d’abord
• Ordonnancement circulaire : Tourniquet
• Ordonnancement circulaire à plusieurs niveaux
• Ordonnancement avec priorité
8
ALGORITHMES D’ORDONNANCEMENT
• L’ordonnancement est la partie du système d'exploitation qui détermine dans
quel ordre les processus prêts à s'exécuter (présents dans la file des prêts)
seront élus.
• Ses objectifs sont :
• Assurer le plein usage du CPU (agir en sorte qu'il soit le moins souvent possible inactif)
• Réduire le temps d'attente des utilisateurs
• Assurer l'équité entre les utilisateurs
9
ALGORITHMES D’ORDONNANCEMENT
• Un algorithme d’ordonnancement permet d’optimiser une des grandeurs
temporelles suivantes :
• Le temps de réponse moyen décrit la moyenne des dates de fin d’exécution :
TRM = (Σ TRi) / n, avec TRi = date début - date arrivée.
• Le temps de séjour (Turnaround Time) moyen décrit le temps qu’un
processus passe dans le système:
TATM = (Σ TATi) / n, avec TAT = date fin - date arrivée.
• Le temps d’attente moyen est la moyenne des délais d’attente pour commencer
une exécution :
TAM = (Σ TAi) / n, avec TAi = TATM - temps d’exécution.
10
ALGORITHMES D’ORDONNANCEMENT
• Les algorithmes d’ordonnancement se distinguent les uns des autres du fait que
certains autorisent la réquisition de l’unité centrale alors que d’autres
l’interdisent.
• La réquisition est la possibilité de retirer à n’importe quel instant le processeur à
un processus même si ce dernier est en cours d’exécution.
11
Réquisition vs Non-réquisition
Un système d’ordonnancement peut être : Non préemptif (Sans réquisition)
1. Un processus s'exécute jusqu'à sa fin ou jusqu'à ce qu'il entre en attente
(E/S, ressource).
2. Exemples : FCFS, SJF (non préemptif), Priority Scheduling (non
préemptif).
3. Inconvénient : Un processus long peut bloquer les autres.
12
Réquisition vs Non-réquisition
Un système d’ordonnancement peut être : Préemptif (Avec réquisition)
1. Un processus peut être interrompu et remplacé par un autre (ex. priorité
plus élevée).
2. Exemples : Round Robin, SJF (préemptif), Priority Scheduling (préemptif).
3. Avantage : Meilleure gestion du temps de réponse et des ressources.
13
First-Come, First-Served (FCFS)
• L'algorithme First-Come, First-Served (FCFS) est le plus simple des algorithmes
d'ordonnancement. Il fonctionne sur le principe de la file d'attente : les processus
sont exécutés dans l'ordre exact de leur arrivée FIFO (First In, First Out),
• Son principe est le suivant :
1. Chaque processus est ajouté à une file d’attente.
2. Le premier arrivé est le premier servi.
3. Une fois un processus lancé, il s’exécute jusqu’à sa fin (pas
d’interruption).
14
First-Come, First-Served (FCFS)
✅ Avantages :
• Facile à implémenter
• Équitable : tous les processus sont traités dans l’ordre d’arrivée
• Bon pour les processus longs (si peu de petits processus)
15
First-Come, First-Served (FCFS)
❌ Inconvénients
• Effet de convoi (Convoy Effect) : un processus long peut bloquer les suivants
• Temps d’attente élevé pour les processus courts arrivant après un
processus long
• Mauvaise utilisation du CPU si un processus long utilise peu le CPU mais
bloque d'autres tâches
16
First-Come, First-Served (FCFS)
Processus Temps d'arrivée Temps d'exécution
P1 0 5
P2 1 8
P3 2 3
17
Shortest Job Next (SJN) Non Préemptif
L’algorithme Shortest Job Next (SJN), aussi appelé Shortest Job First (SJF), est
une stratégie d’ordonnancement qui exécute en priorité le processus ayant la plus
courte durée d’exécution.
• Principe
• Règle de base : Le processus avec la durée d'exécution la plus courte est sélectionné pour être
exécuté en premier.
• Non-préemptif : Une fois qu'un processus commence à s'exécuter, il conserve le CPU jusqu'à ce qu'il
se termine ou qu'il passe à l'état d'attente.
• Objectif : Minimiser le temps d'attente moyen et le temps de rotation moyen
18
Shortest Job Next (SJN)
✅ Avantages :
• Temps d'attente moyen minimal : SJN est optimal pour minimiser le temps
d'attente moyen parmi tous les algorithmes non préemptifs.
• Efficacité : Il est particulièrement utile dans les environnements où les
durées d'exécution des processus sont connues à l'avance.
• Réduction de l'effet de convoi : Les processus courts ne sont pas bloqués
derrière des processus longs, contrairement à FCFS.
19
Shortest Job Next (SJN)
❌ Inconvénients
• Difficulté de prédiction : Il est souvent difficile de connaître à l'avance la
durée d'exécution exacte d'un processus.
• Risque de famine (starvation) : Les processus longs peuvent être
indéfiniment retardés si des processus courts arrivent fréquemment.
20
Shortest Job Next (SJN)
Processus Temps d'arrivée Temps d'exécution
P1 0 5
P2 1 8
P3 2 3
21
Priority Scheduling Non Préemptif
• Priority Scheduling Non préemptif est un algorithme d'ordonnancement des
processus qui attribue la priorité à chaque processus et exécute les processus en
fonction de leur priorité. Dans la version non préemptive, une fois qu'un processus
commence à s'exécuter, il conserve le CPU jusqu'à ce qu'il se termine ou passe à l'état
d'attente (par exemple, pour une opération d'entrée/sortie).
22
Priority Scheduling Non Préemptif
• Principe
• Règle de base : Le processus avec la priorité la plus élevée est sélectionné pour être
exécuté en premier.
• Priorité : Chaque processus se voit attribuer une priorité (généralement un nombre
entier). Une priorité plus faible (par exemple, 0) peut indiquer une priorité plus élevée, ou
vice versa, selon la convention utilisée.
• Non-préemptif : Une fois qu'un processus commence à s'exécuter, il ne peut pas être
interrompu par un autre processus, même si un processus de priorité plus élevée arrive
pendant son exécution.
23
Priority Scheduling Non Préemptif
✅ Avantages :
• Simplicité : Facile à comprendre et à implémenter.
• Priorisation des processus critiques : Les processus importants (par exemple, les tâches
système) peuvent être exécutés rapidement en leur attribuant une priorité élevée.
24
Priority Scheduling Non Préemptif
❌ Inconvénients
• Risque de famine (starvation) : Les processus de faible priorité peuvent être indéfiniment
retardés si des processus de priorité plus élevée arrivent fréquemment.
• Manque de réactivité : Les processus de priorité élevée qui arrivent pendant l'exécution
d'un processus de priorité inférieure doivent attendre que ce dernier termine.
• Dépendance à la priorité : Si les priorités ne sont pas bien définies, certains processus
peuvent être injustement favorisés ou défavorisés.
25
Priority Scheduling Non Préemptif
Proces Temps Temps Priorité (1
sus d'arrivée d'exécution plus fort)
P1 0 5 1
P2 1 8 2
P3 2 3 3
26
Exercice 1 :
Temps Temps
Processus Priorité
d'arrivée d'exécution
On vous donne une liste de processus P1 0 8 2
avec leur temps d’arrivée, leur temps
d'exécution et, leur niveau de priorité P2 1 4 1
(1 = haute priorité, 3 = basse priorité). P3 2 9 3
P4 3 5 2
27
Exercice 2
Temps Temps
Processus Priorité
d'arrivée d'exécution
On vous donne une liste de processus
avec leur temps d’arrivée, leur temps P1 0 6 3
d'exécution et, pour l'ordonnancement P2 2 8 1
par priorité, leur niveau de priorité (3 =
haute priorité, 1 = basse priorité). P3 4 7 2
P4 6 3 1
28
Shortest Remaining Time First (SRTF)
Le Shortest Remaining Time First (SRTF) est une version préemptive de l’algorithme
Shortest Job Next (SJN). Il exécute toujours le processus avec le moins de temps
d’exécution restant.
Principe
• À chaque instant, le processus ayant le temps d’exécution restant le plus court
est exécuté.
• Si un nouveau processus arrive et a un temps d’exécution plus court, il
interrompt le processus en cours.
• Un processus reprend son exécution dès que c'est à nouveau le plus court restant.
29
Shortest Remaining Time First (SRTF)
✅ Avantages
• Minimise le temps d’attente moyen.
• Optimise l’utilisation du processeur.
• Idéal pour les charges de travail interactives.
30
Shortest Remaining Time First (SRTF)
❌ Inconvénients :
• Difficile à implémenter car il faut suivre en temps réel les temps restants.
• Risque de famine : Les processus longs peuvent ne jamais s’exécuter si de
nombreux petits processus arrivent continuellement.
31
Shortest Remaining Time First (SRTF)
Processus Temps d'arrivée Temps d'exécution
P1 0 7
P2 2 4
P3 4 1
P4 5 4
32
Priority Scheduling Préemptif
L’ordonnancement par priorité préemptif est une version améliorée du Priority
Scheduling où un processus plus prioritaire peut interrompre un processus en
cours d'exécution.
Principe :
• Chaque processus a une priorité (généralement, plus le nombre est bas, plus la
priorité est haute).
• Le processus ayant la priorité la plus élevée est exécuté en premier.
• Si un nouveau processus avec une priorité plus haute arrive, il interrompt le
processus en cours.
33
Priority Scheduling Préemptif
✅ Avantages :
• Exécute les tâches critiques rapidement.
• Bonne réactivité pour les systèmes en temps réel.
• Plus efficace que la version non préemptive.
34
Priority Scheduling Préemptif
❌ Inconvénients :
• Risque de famine : Les processus à faible priorité peuvent ne jamais être exécutés.
• Complexité élevée : Beaucoup de changements de contexte peuvent ralentir le
système.
• Peut être injuste si les priorités ne sont pas bien gérées.
35
Priority Scheduling Préemptif
Processus Temps d'arrivée Temps d'exécution Priorité (1 = haute)
P1 0 7 3
P2 2 4 1
P3 3 5 2
P4 5 2 1
36
Round Robin (RR)
L’algorithme Round Robin (RR) est un algorithme préemptif qui attribue à chaque
processus un quantum de temps fixe. S’il ne termine pas dans ce délai, il est
interrompu et replacé à la fin de la file d’attente.
Principe :
• Chaque processus obtient un quantum (temps fixe d’exécution).
• Si un processus dépasse le quantum, il est interrompu et placé à la fin de la file.
• Si un processus termine avant la fin du quantum, il sort immédiatement.
• Le CPU passe au processus suivant dans la file.
37
Round Robin (RR)
✅ Avantages
• Équitable : Tous les processus ont une part de CPU.
• Bon pour les systèmes interactifs (ex. OS multitâche).
• Temps de réponse court comparé à FCFS ou SJN.
38
Round Robin (RR)
❌ Inconvénients
• Surcharge due aux nombreux changements de contexte.
• Le choix du quantum est critique :
• Trop petit → Trop de changements de contexte (ralentit le CPU).
• Trop grand → Se rapproche de FCFS (moins interactif).
39
Round Robin (RR)
Processus Temps d'arrivée Temps d'exécution
P1 0 8
P2 1 4
P3 2 9
P4 3 5
40
Introduction à la Gestion de Mémoire
Définition et Importance
La gestion de la mémoire est un élément fondamental des systèmes d’exploitation,
permettant d’assurer le stockage, la protection et l’optimisation des ressources
mémoire pour les programmes en cours d’exécution.
Importance :
• Permet aux processus d’accéder efficacement aux ressources mémoire.
• Garantit une allocation optimale de la mémoire pour éviter le gaspillage.
• Assure la protection des espaces mémoire des processus pour éviter les conflits.
• Facilite l’exécution de plusieurs programmes simultanément en partageant la
mémoire de manière efficace.
41
Objectifs de la Gestion de Mémoire
Les systèmes d’exploitation assurent plusieurs fonctions clés dans la gestion de la mémoire :
1. Allocation et désallocation de la mémoire
• Attribuer dynamiquement des blocs de mémoire aux processus.
• Libérer la mémoire inutilisée pour éviter le gaspillage et optimiser les performances.
2. Isolation des processus
• Empêcher un processus d’accéder à la mémoire d’un autre pour garantir la sécurité et la stabilité.
3. Abstraction matérielle
• Fournir une interface simplifiée aux programmes en masquant la complexité de l’architecture physique.
4. Optimisation des performances
• Réduire la latence d’accès à la mémoire grâce à des mécanismes comme la mémoire cache et la
pagination.
42
Registres du Processeur
• Localisation : Directement intégrés au CPU.
• Taille : Très petite (quelques octets à quelques dizaines d’octets).
• Vitesse : Ultra-rapide (temps d'accès en picosecondes).
• Rôle :
• Stocke temporairement des données utilisées immédiatement par l’Unité de Traitement
du CPU.
• Exemples : registre d’accumulateur (pour les calculs), registre d’adresse (pour les accès
mémoire), compteur ordinal (instruction en cours).
• Avantage : Temps d’accès instantané, utilisé pour les opérations critiques.
• Inconvénient : Espace extrêmement limité (généralement 8 à 32 registres par CPU).
43
Mémoire cache
• Localisation : Intégrée dans le processeur.
• Vitesse : Très rapide, mais légèrement plus lente que les registres.
• Niveaux :
• Cache L1 : Le plus rapide, très petit (16-128 Ko par cœur).
• Cache L2 : Plus grand que L1, mais plus lent (~256 Ko à 2 Mo).
• Cache L3 : Partagé entre les cœurs du CPU, plus grand (~4 Mo à 64 Mo), mais plus lent.
• Rôle : Stocke les données et instructions fréquemment utilisées pour éviter d’aller en RAM.
• Avantage : Accélère le traitement des programmes en réduisant l’attente du CPU.
• Inconvénient : Capacité limitée et coûteux à fabriquer.
44
1. Cache L1 (Niveau 1)
• Localisation : Directement intégré dans le processeur.
• Taille : Très petite (entre 16 Ko et 128 Ko par cœur).
• Vitesse : Ultra-rapide (quelques nanosecondes d'accès).
• Rôle : Stocke les données et instructions les plus fréquemment utilisées.
• Spécificité : Divisé en deux parties :
• Cache L1D (Data) : Contient les données utilisées par le CPU.
• Cache L1I (Instruction) : Contient les instructions du programme en cours d’exécution.
• Avantage : Temps d'accès quasi instantané
• Inconvénient : Très petite capacité.
45
2. Cache L2 (Niveau 2)
• Localisation : Toujours intégré dans le processeur, mais un peu plus éloigné que le
L1.
• Taille : Plus grande que L1 (de 256 Ko à 2 Mo par cœur).
• Vitesse : Un peu plus lent que L1 mais toujours très rapide.
• Rôle : Stocke des données récentes qui ne sont plus dans le cache L1 mais qui
pourraient être réutilisées bientôt.
• Avantage : Offre un bon compromis entre vitesse et capacité.
• Inconvénient : Moins rapide que L1, et la taille reste limitée.
46
3. Cache L3 (Niveau 3)
• Localisation : Partagé entre tous les cœurs du processeur.
• Taille : Beaucoup plus grande que L1 et L2 (entre 4 Mo et 64 Mo, selon les
processeurs).
• Vitesse : Plus lent que L2, mais toujours plus rapide que la RAM.
• Rôle : Sert de mémoire tampon pour éviter que le CPU ait à aller chercher trop
souvent des données en RAM.
• Avantage : Augmente la performance globale du système en réduisant les accès à
la RAM.
• Inconvénient : Moins rapide que L1 et L2, et peut devenir un goulot d'étranglement
si trop sollicité.
47
Mémoire Vive (RAM - Random Access
Memory)
• Localisation : Sur la carte mère, reliée au CPU via le bus mémoire.
• Taille : De plusieurs Go à plusieurs To.
• Vitesse : Plus lente que le cache (~50-100 ns d’accès).
• Rôle :
• Stocke temporairement les programmes en cours d’exécution et leurs données.
• Permet un accès rapide aux informations par le processeur.
• Avantage : Grande capacité, accessible rapidement.
• Inconvénient : Volatile (perd son contenu après extinction).
48
Mémoire Virtuelle
• Localisation : Stockée sur le disque dur ou SSD.
• Vitesse : Très lente comparée à la RAM (temps d'accès en millisecondes).
• Rôle :
• Étend la RAM en utilisant le stockage secondaire pour simuler de la mémoire
supplémentaire (swap).
• Gérée par le système d’exploitation via la pagination à la demande.
• Avantage : Permet d’exécuter des programmes nécessitant plus de mémoire que la
RAM disponible.
• Inconvénient : Très lent, peut causer des ralentissements (thrashing).
49
Stockage de Masse (Disque Dur, SSD,
etc.)
• Localisation : Support de stockage externe (HDD, SSD, clé USB).
• Vitesse : Beaucoup plus lente que la RAM (millisecondes d'accès).
• Rôle :
• Stocke les données à long terme (système d’exploitation, fichiers, applications).
• Utilisé pour la mémoire virtuelle en cas de manque de RAM.
• Avantage : Conservation permanente des données.
• Inconvénient : Temps d’accès long par rapport à la mémoire vive.
50
Type de mémoire Localisation Taille Vitesse Rôle
Stockage temporaire des
Registres CPU Octets Ultra-rapide (picosecondes)
données du CPU
Stocke les données
Cache (L1, L2, L3) CPU Ko à Mo Très rapide (nanosecondes)
fréquemment utilisées
Stocke les programmes en
RAM Carte mère Go à To Rapide (50-100 ns)
cours d’exécution
Étend la RAM, utilise le
Mémoire Virtuelle Disque Dur / SSD Variable Lent (millisecondes) disque comme mémoire
temporaire
Très lent (millisecondes à Conservation permanente
Stockage de Masse HDD / SSD To+
secondes) des données
51
Exemple concret : Temps d’accès
mémoire
Type de Mémoire Temps d'Accès Approx.
Cache L1 ~0.5 ns
Cache L2 ~2-5 ns
Cache L3 ~10-30 ns
RAM ~50-100 ns
SSD (NVMe) ~100,000 ns (0.1 ms)
Disque dur ~10,000,000 ns (10 ms)
52
Flux de Communication
1. Registres ↔ Cache Mémoire
• Les registres sont les plus proches du processeur et stockent temporairement les
données des calculs immédiats.
• Le cache mémoire (L1, L2, L3) agit comme une mémoire intermédiaire ultra-rapide
entre les registres et la RAM.
• Le contrôleur cache anticipe les besoins du processeur en chargeant les données
les plus souvent utilisées (principe de localité).
53
Flux de Communication
2. Cache Mémoire ↔ RAM (Mémoire Vive)
• Si une donnée demandée par le processeur n’est pas trouvée dans le cache
(cache miss), elle est recherchée en RAM.
• Le contrôleur mémoire (Memory Controller) gère le transfert entre le cache et la
RAM.
• Si la donnée est fréquemment utilisée, elle peut être copiée dans le cache pour un
accès plus rapide la prochaine fois.
54
Flux de Communication
3. RAM ↔ Mémoire Virtuelle (Swap sur Disque Dur/SSD)
• Si la RAM est saturée, une partie des données moins utilisées est déplacée vers un
fichier d’échange sur le disque dur (mémoire virtuelle).
• Ce processus est appelé swapping et permet d’exécuter des programmes
nécessitant plus de mémoire que la RAM disponible.
• Lorsqu’un programme a de nouveau besoin de ces données, elles sont rechargées
en RAM, ce qui peut provoquer des ralentissements (défauts de page - page fault).
55
Flux de Communication
4. RAM ↔ Stockage de Masse (Disque Dur/SSD)
• Les fichiers et applications stockés sur le disque dur ou SSD sont chargés en RAM
lorsqu'ils sont exécutés.
• Plus le support de stockage est rapide (ex : SSD vs HDD), plus le chargement est
performant.
• Le système de fichiers et le contrôleur disque gèrent ces transferts de données.
56
Résumé du Flux de Communication
[Link] processeur cherche les données en cache (L1, L2, L3).
[Link] elles ne sont pas en cache, elles sont recherchées en RAM.
[Link] elles ne sont pas en RAM, elles peuvent être chargées depuis la mémoire
virtuelle (swap sur disque dur/SSD).
[Link] un fichier est demandé pour la première fois, il est lu depuis le stockage de
masse (HDD/SSD) et copié en RAM.
57
Mémoire physique vs mémoire logique
Mémoire physique : la mémoire réelle (RAM) accessible via des
adresses physiques. Gérée par le système pour exécuter les
processus.
Mémoire logique (ou virtuelle) : vue abstraite de la mémoire
fournie à chaque processus. Chaque programme pense qu’il
dispose de tout l’espace mémoire.
La mémoire logique est traduite en mémoire physique via la MMU.
Rôle de la MMU (Memory Management Unit)
• C’est une unité matérielle située entre le CPU et la mémoire.
• Elle convertit les adresses logiques générées par le programme
en adresses physiques.
• Permet :
✓ Isolation des processus
✓ Protection mémoire (accès interdit)
✓ Implémentation de la mémoire virtuelle
Adressage 32 bits vs 64 bits
Caractéristique 32 bits 64 bits
Espace adressable 2³² ≈ 4 Go 2⁶⁴ ≈ 18 exaoctets
Taille max d’un
~4 Go Très grande (> 4 Go)
processus
Anciennes PC/Mac modernes,
Utilisation actuelle
architectures serveurs
Partitionnement Fixe
La mémoire est divisée à l’avance en partitions de taille fixe,
allouées aux processus sans modification dynamique.
Partitionnement à taille égale
• Toutes les partitions ont la même taille (ex : 4 partitions de 1 Mo).
• Simplifie la gestion mais augmente la fragmentation interne si les
processus sont petits.
Partitionnement à taille inégale
• La mémoire est divisée en partitions de tailles différentes (ex : 2 Mo, 1
Mo, 512 Ko...).
• Permet une meilleure adéquation entre la taille des processus et celle
des partitions.
Partitionnement Fixe
Critère Taille Égale Taille Inégale
Moyennement
Simplicité Très simple
complexe
Flexibilité Faible Meilleure
Interne
Fragmentation Moins fréquente
fréquente
Partitionnement Dynamique
La mémoire est allouée dynamiquement à chaque processus selon ses besoins.
Les tailles de partitions sont variables et ajustées au moment de l’allocation.
Avantages :
• Meilleure utilisation de la mémoire.
• Moins de fragmentation interne qu’avec les partitions fixes.
• S'adapte aux processus de différentes tailles.
Inconvénients :
• Fragmentation externe inévitable.
• Requiert des mécanismes de suivi et de compactage (compression).
Algorithmes de placement
First-Fit
Alloue dans le premier trou disponible suffisamment grand.
Rapide mais laisse souvent des petits trous en début de mémoire.
Best-Fit
Trou le plus petit possible pouvant contenir le processus.
Moins de perte immédiate, mais génère de nombreuses petites
zones inutilisables.
Algorithmes de placement
Worst-Fit
Trou le plus grand disponible.
Tente de maximiser la taille des trous restants mais souvent
inefficace.
Next-Fit
Variante de First-Fit : commence la recherche à partir de la
dernière position d’allocation.
Plus rapide si la mémoire est souvent remplie par le haut, mais peut
ignorer des trous disponibles en bas.
Pagination
• Technique de gestion de mémoire non-contiguë.
• La mémoire logique d’un processus est découpée en pages (taille
fixe) et la mémoire physique en cadres (frames) de même taille.
• Chaque page logique est placée dans un cadre physique, pas
nécessairement contigu.
• La table des pages permet de faire la correspondance entre
pages et cadres.
Pagination
Avantages :
• Élimine la fragmentation externe.
• Permet une utilisation souple de la mémoire.
• Supporte la mémoire virtuelle : chargement des pages à la demande.
Inconvénients :
• Fragmentation interne : dernière page d’un processus rarement remplie.
• Nécessite des structures de traduction (MMU, TLB).
Segmentation
Technique de gestion mémoire où l’espace d’adressage d’un
processus est divisé en segments logiques :
• Code
• Données
• Pile
• Variables globales, etc.
Chaque segment est indépendant, de taille variable, et possède :
• une base (adresse de début).
• une limite (taille maximale autorisée).
Segmentation
Avantages :
• Représentation naturelle pour le programmeur.
• Possibilité de protéger ou partager certains segments (ex : code
partagé, pile privée).
• Bonne base pour les droits d’accès segmentés.
Inconvénients :
• Fragmentation externe (segments de tailles différentes).
• Gestion plus complexe que la pagination.
Segmentation paginée
Technique hybride combinant les avantages de la segmentation (structure logique)
et ceux de la pagination (pas de fragmentation externe).
• Chaque segment est divisé en pages de taille fixe → puis chaque page est chargée
dans un cadre physique.
Structure :
• Table des segments : indique la base de la table des pages pour chaque segment.
• Table des pages : pour chaque segment, mappe les pages logiques vers les cadres
physiques.
Segmentation paginée :
Accès mémoire 3 étapes :
[Link] logique = ⟨n° segment, n° page, offset⟩
[Link] des segments → donne la table des pages du segment
[Link] des pages → donne le cadre → accès physique = cadre × taille page + offset
Segmentation paginée
Avantages :
• Pas de fragmentation externe.
• Souplesse de la segmentation (code séparé des données, accès indépendants).
• Bonne protection et partage possible par segment.
Inconvénients :
• Traduction d’adresse en plusieurs étapes (segment → page → cadre).
• Nécessite deux tables pour chaque processus.
Mémoire virtuelle
La mémoire virtuelle est une technique qui permet à un système
d’exploitation de faire croire à chaque processus qu’il dispose d’un
espace mémoire continu, même si celui-ci est en réalité fragmenté
et partiellement stocké sur disque. Cela permet d’exécuter des
programmes plus volumineux que la taille réelle de la RAM.
Pour cela, seules les pages actives d’un processus sont chargées
en mémoire physique. Les autres sont stockées sur un espace
disque appelé swap. Lorsqu'une page non présente en mémoire
est demandée, un défaut de page (page fault) se produit.
Swapping
Le swapping est le mécanisme qui consiste à :
• Swap-in : charger une page du disque vers la RAM.
• Swap-out : déplacer une page de la RAM vers le disque pour libérer de l’espace.
• Si le système passe son temps à swapper au lieu d’exécuter, il entre en thrashing,
ce qui cause de lourds ralentissements.
Défaut de Page (Page Fault)
Un page fault survient lorsqu’un processus tente d’accéder à une
page absente de la mémoire physique. Le système interrompt alors
le processus, va chercher la page sur le disque et la charge dans un
cadre libre.
S’il n’y a plus de cadre libre, un algorithme de remplacement de
page est utilisé pour décider quelle page actuelle sera évincée.
Algorithmes de Remplacement de Page
FIFO (First-In, First-Out) :
Remplace la page la plus ancienne en mémoire, sans prendre en compte son
utilisation.
LRU (Least Recently Used) :
Remplace la page la moins récemment utilisée. Nécessite de suivre l’historique des
accès, ce qui peut être coûteux.
Optimal :
Remplace la page qui ne sera pas utilisée avant le plus longtemps. C’est le meilleur
algorithme théorique, mais il n’est pas implémentable en pratique car il nécessite de
connaître le futur.
Algorithmes de Remplacement de Page
Second Chance (Horloge) :
Variante de FIFO : chaque page a un bit de référence. Si ce bit est à 1, on lui donne une
seconde chance avant de la remplacer. Les pages sont parcourues comme une aiguille
d’horloge.
NRU (Not Recently Used) :
Utilise deux bits (référence R et modification M) pour classer les pages en quatre catégories.
Privilégie le remplacement des pages non utilisées récemment et non modifiées.
LFU (Least Frequently Used) :
Remplace la page la moins utilisée en fréquence. Nécessite un compteur par page.
Random :
Sélectionne une page au hasard pour le remplacement. Simple et parfois efficace.
Mémoire vs Disque
Mémoire (RAM) :
• Données volatiles : perdues à l’extinction.
• Granularité fine (accès octet par octet).
• Accès très rapide, essentiel pour les opérations du processeur.
Disque :
• Stockage permanent : conserve les données même hors tension.
• Granularité plus grossière (accès par blocs).
• Accès plus lent, mais capacité bien plus importante.
• Les fichiers sont découpés en blocs physiques qui ne sont pas toujours contigus.
78
Stratégies de stockage
Stockage contigu :
• Le fichier est enregistré dans une suite continue de blocs.
• Avantage :
• lecture/écriture rapide car accès linéaire.
• Inconvénients :
• Fragmentation externe (espaces vides inutilisables).
• Difficile de trouver un espace libre assez grand pour les fichiers volumineux.
79
Stockage non-contigu :
[Link] chaînées :
• Chaque bloc contient l’adresse du bloc suivant.
• Avantage :
• pas besoin d’espace contigu.
• Inconvénient :
• accès séquentiel obligatoire, inefficace pour les accès aléatoires.
80
Stockage non-contigu :
2. FAT (File Allocation Table) :
• Table centrale en mémoire indiquant le chaînage des blocs pour chaque fichier.
• Accès plus rapide que les listes chaînées.
• Limitation : la table doit rester en RAM, ce qui est peu efficace pour les gros disques.
81
Stockage non-contigu : Systèmes de
fichiers avancés
Systèmes modernes combinant plusieurs techniques pour optimiser l’accès, la
gestion et la taille des fichiers.
Structures hybrides (inodes UNIX) :
• Utilisent un mélange d’adresses directes et indirectes.
• Permettent un bon compromis entre rapidité et capacité.
82
Gestion des blocs libres
1. Bitmap :
• Chaque bloc est représenté par un bit.
• 0 = libre, 1 = occupé.
• Lecture rapide, mais consomme de la mémoire pour les très grands disques.
83
Gestion des blocs libres
2. Listes chaînées :
• Chaque bloc libre contient l’adresse du suivant.
• Facile à parcourir, mais lente à cause des accès dispersés.
3. Listes avec comptage :
• Mémorise les plages continues de blocs libres (adresse de départ + nombre).
• Moins de mémoire utilisée, euicace pour les disques peu fragmentés
84
Problèmes clés
Fragmentation :
• Interne : espace inutilisé à l’intérieur d’un bloc (fichier plus petit que le bloc).
• Externe : plusieurs blocs libres, mais non contigus, rendant l’allocation difficile.
Performance :
• Le stockage contigu est rapide mais rigide.
• Le stockage non-contigu est souple mais plus lent.
• Les structures hybrides comme les inodes sont un compromis efficace.
85