Bonjour .
En cours de systeme , nous avons fait la pagination et le swapping , mais j'ai beau essayé de regarder d autres explications sur le net , je n'arrive pas du tout à visualiser ce cours . Pages , mémoire virtuel , cadre , offset et tout ça ne veulent pas rentrer ..
Ceci sont des morceaux de cours que je ne saisis pas
La pagination
1)
2)Les problèmes posés
Problème : -Ou mettre le système ( permanent ) et les processus ( temporaires ) ?
Problèmes annexes :
-Comment assurer l’intimité du système et des processus ?
- Que faire lorsque la mémoire est pleine ? (ôter les processus inactifs ?)
Mise en œuvre : Pagination et espace d’adressage virtuel
3)Pagination : Transformation d’une adresse virtuelle en adresse physique .
-On considère que la mémoire est constitué de pages de taille fixe , par exemple 4ko sur x86 .
-adresse=numéro de page + déplacement dans la page . La table de transformation ne porte ainsi que sur les numéros de page .
-remarque : la page est la partie virtuelle de la mémoire , le cadre la partie physique
Sur x86, 1 page = 4Ko (2^12, 12 bits). L'adressage est sur 32 bits, il reste 20 bits pour les n° de page : 2^20 possibilités.
Problème : comment organiser cette table ?
La table des pages fera la relation pages virtuelles/ adresses réelles. Données utilisables = 2^20 x 4 octets = 4 Mo par processus
Solution : on redécoupe la table en
répertoire + page + offset
on reste sur une adresse 32 bits, on à 1024 rép (2^10) de 1024 pages et 4096 offsets (2^12) (soit 4 Go pour un processus) ; chaque entrée du répertoire adresse 4 Mo.
SwappingRemarques :
gestion supplémentaire pour le système : « traduction » des pages,
allocation intra-page, fragmentation
définition, pour chaque entrée d'une table des pages, de bits de protection (lecture, écriture, exécution). Exemple :
● les pages du code ne sont accessibles qu'en exécution ;
● les pages de données sont accessibles en lecture écriture. tous les processus qui exécutent le même programme partagent les mêmes cadres (pages différentes). Les processus ne peuvent partager de pointeurs (adresses virtuelles). les répertoires sont toujours conservés en mémoire. Les tables de page peuvent être évacuées : swapping et pagination
1)
2)Utilisation de disques comme stockage de processus lents ou peu utilisés :
un processus entier : swapping ;
des pages inutilisées : pagination.
On garde le swapping pour les cas extrêmes : manque de mémoire et processus en attente longue.
La pagination est plus légère : elle transfère des pages de 4 ko.
3)Lorsque la mémoire est saturée et qu'il se produit un défaut de page (page non disponible en mémoire), il faut alors :
1) choisir une page à évincer et la recopier en mémoire secondaire (si nécessaire) ;
2) charger à sa place la page manquante ;
3) mettre à jour les tables des pages
4)Le choix de la page à évincer est fondamental pour l'efficacité du système.
Objectif du système : minimiser les défauts de pages.
Deux stratégies sont possibles :
évincer la page la plus ancienne en mémoire (FIFO)
évincer la page qui sera accédée le plus tard possible (OPT), nécessite une connaissance complète de ce qui va se passer.
Donc voilà . Comme je l'ai dis , j'ai beau comprendre qu'on peut faire croire qu'on peut utiliser plus de mémoire tout ça , mais comment cela fonctionne réellement , ça je n'y arrive pas . Les morceaux de cours que j'ai mis sont vraiment difficile pas facile pour moi à saisir/visualiser ..Solutions plus utilisées :
LRU : choisir la page dont le dernier accès est le plus ancien ;
LFU : idem que LRU mais utilise la fréquence d'accès.
Toutes ces stratégies nécessitent de maintenir une comptabilité des accès : extrêmement coûteux. On utilise donc des approximations.
Merci d'avance à ceux qui pourront m'aider ..
Partager