10.1 urdl22005 systèmes dexploitation mémoire virtuelle bases pagination à la demande création...
TRANSCRIPT
10.1 URD L2 2005Systèmes d’exploitation
Mémoire VirtuelleMémoire Virtuelle
Bases
Pagination à la Demande
Création de Processus
Remplacement de Pages
Allocation de Cadres de page
Ecroulement
Segmentation à la Demande
Exemples OSs
10.2 URD L2 2005Systèmes d’exploitation
BasesBases
Mémoire Virtuelle – séparation de la mémoire utilisateur (logique) et de la mémoire réelle (physique). Seulement une partie du programme a besoin d’être en mémoire
pour l’exécution.
L’espace d’adressage logique peut ainsi être plus large que l’espace mémoire physique.
Permet le partage des espaces d’adressage par plusieurs processus.
Permet plus d’efficacité pour la création de processus (due au partage d’espace d’adressage).
La mémoire virtuelle peut être implémentée via: Demande de pages
Demande de segments
10.3 URD L2 2005Systèmes d’exploitation
Mémoire Virtuelle > Mémoire PhysiqueMémoire Virtuelle > Mémoire Physique
10.4 URD L2 2005Systèmes d’exploitation
Espace d’Adressage VirtuelEspace d’Adressage Virtuel
10.5 URD L2 2005Systèmes d’exploitation
Utilité De La Mémoire VirtuelleUtilité De La Mémoire Virtuelle
Elle permet facilement le partage de mémoire entre processus
10.6 URD L2 2005Systèmes d’exploitation
Bibliothèque Partagée Avec La Mémoire Bibliothèque Partagée Avec La Mémoire VirtuelleVirtuelle
10.7 URD L2 2005Systèmes d’exploitation
Pagination à la DemandePagination à la Demande
Importer une page en mémoire SEULEMENT au moment où elle est demandée Moins besoin d’I/O
Moins besoin mémoire
Réponse plus rapide
Plus d’utilisateurs
Page demandée référence à cette page Référence invalide abort
Pas en mémoire l’importer en mémoire
10.8 URD L2 2005Systèmes d’exploitation
Transfert D’une Mémoire Paginée Sur Un Espace Transfert D’une Mémoire Paginée Sur Un Espace Disque ContiguDisque Contigu
10.9 URD L2 2005Systèmes d’exploitation
Bit Valide-InvalideBit Valide-Invalide
A chaque entrée dans la table des pages, un bit valide–invalide lui est associé(1 en-mémoire, 0 pas-en-mémoire)
Initiallement, ce bit est mis à 0 sur toutes les
entrées qui ne sont pas en mémoire Snapshot d’une table des pages:
Durant la translation d’adresses, si le bit valide–invalide sur une entrée de la table des pages est à 0 defaut de page
111
1
0
00
Cadre de page # valide-invalide
Table des pages
10.10 URD L2 2005Systèmes d’exploitation
Table des Pages avec Quelques Pages sur DisqueTable des Pages avec Quelques Pages sur Disque
10.11 URD L2 2005Systèmes d’exploitation
Faute De PageFaute De Page
A la première référence à une page defaut de page puisque bit valide-invalide à 0 !
OS regarde dans une table interne (normallement dans le PCB) pour décider: Référence interdite (pas dans l’espace d’adressage logique du
processus) abort. Sinon, pas en mémoire.
Trouver une page physique P vide. Swapper la page en mémoire dans P. Mettre à jour la table, bit de validation = 1. Relancer l’instruction
10.12 URD L2 2005Systèmes d’exploitation
Traîtement D’une Defaut De PageTraîtement D’une Defaut De Page
10.13 URD L2 2005Systèmes d’exploitation
Et S’il N’y A Plus de Cadres de page Vides?Et S’il N’y A Plus de Cadres de page Vides?
Remplacement de Pages – trouver une page en mémoire, “pas utilisée”, et la swapper algorithme
performance – on voudrait un algorithme qui génère le minimum de defauts de pages
La même page peut revenir en mémoire plusieurs fois
10.14 URD L2 2005Systèmes d’exploitation
Performance : Pagination à la DemandePerformance : Pagination à la Demande
Probabilité d’un defaut de page 0 p 1.0 Si p = 0, pas de defauts de pages
Si p = 1, chaque référence est un defaut
Temps d’Accès Effectif (TAE)
TAE = (1 – p) x accès mémoire
+ p x (temps de defaut de page =
[swap page sur disque ]
+ swap page en mémoire
+ relancer instruction)
10.15 URD L2 2005Systèmes d’exploitation
Exemple de Pagination à la DemandeExemple de Pagination à la Demande
Temps d’accès mémoire = 1 microseconde
50% du temps, la page remplacée a été modifiée => elle sera swappée sur disque
Temps de Swap = 10 msec = 10,000 microsec
TEA = (1 – p) x 1 + p (15000)
~ 1 + 15000p (in msec)
10.16 URD L2 2005Systèmes d’exploitation
Création de ProcessusCréation de Processus
La mémoire virtuelle permet d’autres bénéfices durant la création de processus:
- Copy-on-Write
- Fichiers mappés en mémoire (après)
10.17 URD L2 2005Systèmes d’exploitation
Copy-on-WriteCopy-on-Write
Copy-on-Write (COW) permet aux processus père et fil de partager les mêmes pages en mémoire
Si un des processus modifie une page partagée, seulement cette dernière est copiée
COW permet une meilleure efficacité à la création de processus puisque seulement les pages modifiées sont copiées
Les pages libres sont allouées dans un pool de pages
10.18 URD L2 2005Systèmes d’exploitation
Remplacement de PagesRemplacement de Pages
Prévenir la sur-allocation de la mémoire en modifiant la routine de service des defauts de pages; on lui ajoute une fonction de remplacement de pages
Utiliser bit de modification (dirty bit) pour réduire l’overhead des transferts de pages – seulement les pages modifiées sont copiées sur disque
Le remplacement de pages complète la séparation entre la mémoire logique et le mémoire physique – une mémoire virtuelle large peut être fournie sur une petite mémoire physique
10.19 URD L2 2005Systèmes d’exploitation
Besoin de Remplacement de PagesBesoin de Remplacement de Pages
10.20 URD L2 2005Systèmes d’exploitation
Remplacement de Page : FonctinnementRemplacement de Page : Fonctinnement
1. Trouver la page demandée sur disque
2. Trouver un cadre de page libre :- Si un cadre de page libre existe, l’utiliser- Si un cadre de page libre n’existe pas, utiliser un
algorithme de remplacement de page pour choisir un cadre de page victime
3. Lire la page demandée dans le cadre de page libre. Mettre à jour les tables des pages et des cadre de page.
4. Relancer le processus
10.21 URD L2 2005Systèmes d’exploitation
Remplacement de PagesRemplacement de Pages
10.22 URD L2 2005Systèmes d’exploitation
Algorithmes de Remplacement de PagesAlgorithmes de Remplacement de Pages
On voudrait le taux de defauts de pages le plus bas
Evaluer un algorithme en l’exécutant sur un ensemble de références mémoire et en calculant le nombre de defauts de page en résultant
Dans tous nos exemples, on utilisera l’ensemble de références suivant
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
10.23 URD L2 2005Systèmes d’exploitation
Graphe de Defauts de Pages Vs Nombre de Cadres de Graphe de Defauts de Pages Vs Nombre de Cadres de pagepage
10.24 URD L2 2005Systèmes d’exploitation
Algorithme First-In-First-Out (FIFO)Algorithme First-In-First-Out (FIFO) Références mémoire : 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 3 cadre de page (3 pages peuvent être en mémoire à un certain moment par
processus)
4 cadre de page
Remplacement FIFO – Anomalie de Belady Plus de cadre de page plus de defauts de pages
1
2
3
1
2
3
4
1
2
5
3
4
9 page faults
1
2
3
1
2
3
5
1
2
4
5 10 page faults
44 3
10.25 URD L2 2005Systèmes d’exploitation
Remplacement FIFORemplacement FIFO
10.26 URD L2 2005Systèmes d’exploitation
Anomalie de Belady avec FIFOAnomalie de Belady avec FIFO
10.27 URD L2 2005Systèmes d’exploitation
Algorithme OptimalAlgorithme Optimal
Remplacer la page qui ne sera pas utilisée pour la plus longue période
Exemple avec 4 cadre de page
1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Difficile à implémenter : Comment avoir l’information sur les références futures ?
Utilisé pour mesurer les performances des autres algorithmes
1
2
3
4
6 page faults
4 5
10.28 URD L2 2005Systèmes d’exploitation
Remplacement OptimalRemplacement Optimal
10.29 URD L2 2005Systèmes d’exploitation
Algorithme Least Recently Used (LRU)Algorithme Least Recently Used (LRU)
Références mémoire : 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
Implémentation avec compteur Chaque entrée de page a un compteur; à chaque fois qu’une page
est référencée, on copie une horloge logique dans ce compteur
Quand une page est référencée, incrémenter l’horloge logique et la copier dans le compteur de la page référencée => on a toujours le temps de la derniére utilisation de cette page
1
2
3
5
4
4 3
5
10.30 URD L2 2005Systèmes d’exploitation
Remplacement LRURemplacement LRU
10.31 URD L2 2005Systèmes d’exploitation
Algorithme LRU (Cont.)Algorithme LRU (Cont.)
Implémentation avec pile – laisser une pile des numéros de page: Page référencée:
Mettre en haut de la pile
Demande le changement de 6 pointeurs au pire !
Pas de recherche pour le remplacement
10.32 URD L2 2005Systèmes d’exploitation
Pile pour l’Enregistrement des Pages Référencées RécemmentPile pour l’Enregistrement des Pages Référencées Récemment
10.33 URD L2 2005Systèmes d’exploitation
Approximation Algorithme LRUApproximation Algorithme LRU
Bit de Référence Avec chaque page, associer un bit, initiallement à 0 Quand une page est référencée, bit mis à 1 Remplacer une page dont le bit est à 0 (s’il en existe). On ne
connaît pas l’ordre !
Seconde chance Bit de référence Remplacement type FIFO Si la page a remplacer a le bit de reference = 1 alors:
Mettre le bit de reference a 0 Laisser la page en memoire Remplacer la prochaine page (en suivant l’ordre FIFO), avec
les memes regles emises ci-dessus
10.34 URD L2 2005Systèmes d’exploitation
Algo. de Remplacement Seconde ChanceAlgo. de Remplacement Seconde Chance
10.35 URD L2 2005Systèmes d’exploitation
Algorithmes avec CompteurAlgorithmes avec Compteur
Garder un compteur du nombre de références faites sur chaque page
Algorithme LFU: remplace la page avec le plus petit compteur
Algorithme MFU: basé sur l’argument que la page avec le compteur le plus petit a été importée en mémoire et n’a pas encore été utilisée !
10.36 URD L2 2005Systèmes d’exploitation
Allocation de Cadres de pageAllocation de Cadres de page
Chaque processus a besoin d’un nombre minimum de pages
Exemple: IBM 370 – 6 pages pour l’instruction SS MOVE: instruction sur 6 octets, peut être sur 2 pages
2 pages pour from
2 pages pour to
Deux schémas majeurs d’allocation Allocation fixe
Allocation prioritaire
10.37 URD L2 2005Systèmes d’exploitation
Allocation FixeAllocation Fixe
Allocation égale – e.g., si 100 cadres de page et 5 processus, donner à chacun 20 pages
Allocation proportionelle – Allouer en fonction de la taille du processus
mSs
pa
m
sS
ps
iii
i
ii
for allocation
frames of number total
process of size
5964137127
56413710
127
10
64
2
1
2
a
a
s
s
m
i
10.38 URD L2 2005Systèmes d’exploitation
Allocation PrioritaireAllocation Prioritaire
Utiliser une allocation proportionelle avec la priorité comme critère plutôt que la taille
Si le processus Pi génère un defaut de page,
Choisir pour le remplacement un des ses cadre de page
Choisir pour le remplacement un cadre de page d’un processus moins prioritaire
10.39 URD L2 2005Systèmes d’exploitation
Allocation Globale vs. LocaleAllocation Globale vs. Locale
Remplacement global – le processus choisit un cadre de page de remplacement de l’ensemble de tous les cadres de page; un processus peut récupérer un cadre de page d’un autre processus
Remplacement local – chaque processus choisit parmi les cadres de page qui lui sont déjà allouées
10.40 URD L2 2005Systèmes d’exploitation
EcroulementEcroulement
Si un processus n’a pas “assez” de pages, le taux de defauts de pages est assez haut => Utilisation de la CPU basse
L’OS pense qu’il a besoin d’accroître son degré de multiprogrammation
Un autre processus est ajouté au système
Ecroulement un processus est occupé à swapper des pages (in et out)
10.41 URD L2 2005Systèmes d’exploitation
Ecroulement Ecroulement
Pourquoi la pagination fonctionne ?Modèle de localité Les processus migrent d’une localité à une autre
Les localités peuvent s’entrelacer
Pourquoi le ecroulement a lieu ? taille des localités > taille totale de la mémoire
10.42 URD L2 2005Systèmes d’exploitation
Localité des Références MémoireLocalité des Références Mémoire
10.43 URD L2 2005Systèmes d’exploitation
Working-Set ModelWorking-Set Model
fenêtre working-set un nombre fixe de références de pages Exemple: 10,000 instructions
WSPi (working set du Process Pi) =nombre total de pages référencées durant le temps passé le plus récent (varie en fonction du temps) si très petit, la localité ne sera pas prise en compte
si trop large, on englobera plusieurs localités
si = on englobera la totalité du programme
D = WSPi demande totale de cadre de page
si D > m (# total de cadre de page) Ecroulement
Politique: si D > m, alors suspendre un des processus
10.44 URD L2 2005Systèmes d’exploitation
Medèle du Working-setMedèle du Working-set
10.45 URD L2 2005Systèmes d’exploitation
Implémentation du Working SetImplémentation du Working Set
Approximation avec une horloge + un bit référence
Exemple: = 10,000 Interruption d’horloge chaque 5000 unités de temps
Garder en mémoire 2 bits pour chaque page
A chaque interruption, on copie les bits de référence en mémoire et on les remet à 0
Si un des bits en mémoire = 1 page dans le working set
Pourquoi ce n’est pas totalement précis ?
Amelioration = 10 bits et interruption chaque 1000 unites de temps
10.46 URD L2 2005Systèmes d’exploitation
Fréquence des Defauts de PageFréquence des Defauts de Page
Etablir un taux “acceptable” de defauts de page
Si taux trop bas, le processus perd des cadres de page
Si taux trop haut, le processus reçoit des cadres de page en plus
10.47 URD L2 2005Systèmes d’exploitation
Fichiers Mappés en MémoireFichiers Mappés en Mémoire
Fichiers mappés en mémoire permet que les E/S soient traîtées comme des accès en mémoire en mappant un bloc disque à une page en mémoire
Un fichier est initiallement lu avec une demande de pagination. Une portion du fichier de la taille d’une page mémoire est copiée à partir du système de fichiers en mémoire. Les accès suivants reads/writes suivants du/au fichier sont traîtés comme des accès mémoire ordinaires
Simplifie les accès fichiers en traîtant les E/S fichiers via la mémoire qu’à travers des appels système read() write()
Permet aussi à plusieurs processus de mapper le même fichier en mémoire, et ainsi de partager les pages en mémoire
10.48 URD L2 2005Systèmes d’exploitation
Fichiers Mappés en MémoireFichiers Mappés en Mémoire
10.49 URD L2 2005Systèmes d’exploitation
Fichiers Mappés en Mémoire en JavaFichiers Mappés en Mémoire en Java
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class MemoryMapReadOnly
{
// Assume the page size is 4 KB
public static final int PAGE SIZE = 4096;
public static void main(String args[]) throws IOException {
RandomAccessFile inFile = new RandomAccessFile(args[0],"r");
FileChannel in = inFile.getChannel();
MappedByteBuffer mappedBuffer =
in.map(FileChannel.MapMode.READ ONLY, 0, in.size());
long numPages = in.size() / (long)PAGE SIZE;
if (in.size() % PAGE SIZE > 0)
++numPages;
10.50 URD L2 2005Systèmes d’exploitation
Fichiers Mappés en Mémoire en Java (cont)Fichiers Mappés en Mémoire en Java (cont)
// we will "touch" the first byte of every page
int position = 0;
for (long i = 0; i < numPages; i++) {
byte item = mappedBuffer.get(position);
position += PAGE SIZE;
}
in.close();
inFile.close();
}
} L’API pour la methode map() est la suivante:
map(mode, position, size)
10.51 URD L2 2005Systèmes d’exploitation
Autres Considérations Autres Considérations
Pagination à l’avance Pour réduire le nombre de defauts de page qui intervient au démarrage du
processus Paginer à l’avance tout ou une partie des pages don’t un processus a
besoin, avant qu’elles ne soient référencées Mais, si les pages paginées à l’avance ne sont pas utilisées, les E/S et la
mémoire sont gaspillées Soient s pages paginées à l’avance et α les pages utilisées parmi ces pages
Est-ce que le coût des s * α defauts de page economisees > ou < que le cout de la pagination a l’avance des s * (1- α) pages non necessaires?
Si α proche de 0 pagination a l’avance mauvaise Si α proche de 1 pagination a l’avance gagne
Le choix de la taille de page doit prendre en considération: fragmentation taille de table Overhead de l’E/S localité
10.52 URD L2 2005Systèmes d’exploitation
Autres Considérations (Cont.)Autres Considérations (Cont.)
Couverture TLB – La taille mémoire accessible à partir du TLB
Couverture TLB = (Taille TLB) X (Taille Page)
Idéallement, le working set de chaque processus se trouve dans le TLB. Sinon, il y a un degré élevé de defauts de page.
10.53 URD L2 2005Systèmes d’exploitation
Autres Considérations (Cont.)Autres Considérations (Cont.)
Incrémenter la taille de page. Ceci peut amener à une augmentation de la fragmentation puisque toutes les applications n’en n’ont pas besoin.
Fournir des tailles de page différentes. Ceci permet aux applications qui demandent des tailles de page plus grandes de les utiliser sans augmenter la fragmentation.
10.54 URD L2 2005Systèmes d’exploitation
Autres Considérations (Cont.)Autres Considérations (Cont.)
Structure du programme int A[][] = new int[1024][1024];
Chaque ligne est sauvegardée sur une page
Program 1 for (j = 0; j < A.length; j++)for (i = 0; i < A.length; i++)
A[i,j] = 0;1024 x 1024 defauts de page
Programme 2 for (i = 0; i < A.length; i++)for (j = 0; j < A.length; j++)
A[i,j] = 0;
1024 defauts de page
10.55 URD L2 2005Systèmes d’exploitation
Autres Considerations (Cont.)Autres Considerations (Cont.)
Verrouillage pour les E/S – Les pages doivent parfois être verrouillées en mémoire
Considérer les E/S. Les pages utilisées pour copier un fichier d’un périphérique doivent être vérrouillées pour ne pas être éligibles à l’éviction par un algorithme de remplacement de pages.
10.56 URD L2 2005Systèmes d’exploitation
Pourquoi les Cadres de page d’E/S Restent en Pourquoi les Cadres de page d’E/S Restent en Mémoire ?Mémoire ?
10.58 URD L2 2005Systèmes d’exploitation
Exemples d’OSExemples d’OS
Windows XP
Solaris 2
10.59 URD L2 2005Systèmes d’exploitation
Windows XPWindows XP
Utilise la pagination à la demande avec du clustering. Clustering récupère en mémoire les pages entourant la page “fautive”.
Les processus sont assignées un working set minimal et un working set maximal
Le Working set minimal est le nombre minimum de pages que le processus a la garantie d’avoir en mémoire
Un processus peut avoir autant de pages en mémoire jusqu’à son working set maximal
Quand le montant de la mémoire libre dans le système devient plus petit qu’un certain seuil, de l’élagage automatique du working set est effectué pour restorer le montant de mémoire libre
L’élagage du working set supprime les pages des processus qui ont des pages en excès de leur working set minimal
10.60 URD L2 2005Systèmes d’exploitation
Solaris Solaris
Maintient une liste de cadres de page libres à accorder aux processus “fautifs”
Lotsfree – seuil (montant de mémoire libre) pour commencer la pagination
Desfree – seuil pour augmenter la pagination
Minfree – seuil pour commencer la pagination
La pagination est effectuée par le processus pageout
Le processus pageout scanne les pages utilisant un algorithme d’horloge modifié
Scanrate est le taux de scan des pages. Ceci va de slowscan à fastscan
Le processus pageout est appelé plus fréquemment si jamais le montant de la mémoire libre diminue
10.61 URD L2 2005Systèmes d’exploitation
Solaris 2 : Scanner de PageSolaris 2 : Scanner de Page