IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Pagination et Swapping


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Pagination et Swapping
    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)
    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
    2)
    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.
    3)

    Remarques :
    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
    Swapping

    1)

    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.
    2)

    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
    3)

    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.
    4)
    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.
    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 ..

    Merci d'avance à ceux qui pourront m'aider ..

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    tu peux t'imaginer ça comme des graphiques

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ram physique et apres la swap
    |----------------------------------|------------|
    processus 1 à 10 et ensuite les 11 & 12 
    [----------------------------][----------][-]---|
    voilà déjà pour la notion de swap

    tu devrais te faire un graphique comme ça avec 10/12 process pour chacun la pagination leur ordre de fin/commencement etc...
    et là tu comprendras mieux comment ça marche

    mais tu n'as pas à vraiment t'inquietter de ça, il faut juste comprendre le cas général, et memoriser les définitions.
    tu n'auras jamais à faire ça (sauf à écrire un jour ton propre kernel !!!) donc même en embarqué c'est une chose que tu ne feras jamais.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour ,

    Merci de ton retour, mais ce n'est vraiment pas clair du tout ..

  4. #4
    Membre actif
    Avatar de heinquoi
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 85
    Par défaut
    Bonjour,

    C'est vrai que c'est pas simple !
    http://fr.wikipedia.org/wiki/M%C3%A9moire_virtuelle
    quand on parle de swap et mémoire virtuelle on l'associe au mode protégé ( par oposition au mode réél) du processeur.
    http://fr.wikipedia.org/wiki/Mode_prot%C3%A9g%C3%A9
    Pour avoir fait un peu d'assembleur sur des 286, 486, ... il y déjà de nombreuses années. Et bien, c'est complexe.
    Mais faut prendre tout ça simplement. En partant du processeur.
    Des couches ont été rajoutés pour faciliter le travail des programmeurs,améliorer la vélocité, s'adapter au nouvelles capacités des matériels et conserver une compatibilité avec les versions précédentes.

    le point 1 est simple. tu peux y répondre toi-même c'est du bon sens:ce qui change ont le met en mémoire ce qui change pas ont le met sur disque. Parce que les accès disque sont beaucoup plus lent que ceux de la mémoire.

  5. #5
    Membre actif
    Avatar de heinquoi
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 85
    Par défaut
    la mémoire virtuelle est défini comme une suite de d'octets numéroter. La taille maximum de mémoire est défini par la taille des registres de 32 bits qui numérote cette mémoire virtuelle.
    2 puissance 32 -1 possibilité de nombre différents (2^32)-1=4 294 967 295
    soit 4 Go = 4 294 967 296/1024^3

    Pour la pagination, on part du principe que lorsque le processeur lit un octet, la plus part du temps, on va aussi utiliser les elements ( données ou programme) proche de cette meme adresse. D’où l’intérêt des pages de memoire qui regroupe des octets contigus de 4k.
    D'ailleurs 4ko=4095 octet et en binaire c''est 1111 11111111 soit 1 octet + 1/2 octet soit 12 Bits. Les adresse étant sur 32 bits on peut faite 32-12=20.
    Il reste 20 bits
    Je suis en train de paraphraser ton cours la...c'est peut être pas utile.

    Suis le fil du début et arrête toi des que tu ne comprend plus. Cherche alors sur internet ce que tu ne comprend pas. Au besoins lits plusieurs explications, et si tu ne comprends toujours pas, pose ta question précisément.
    Parce qu'il est difficile de répondre à ta question qui est trop générale. Il existe des bouquins entiers de 800 pages ou plus sur la gestion de la mémoire .

Discussions similaires

  1. [Win32] Swap
    Par Blustuff dans le forum OpenGL
    Réponses: 17
    Dernier message: 21/05/2004, 18h14
  2. Optimisation du swap sous Fedora Core 2
    Par demeuremichel dans le forum Administration système
    Réponses: 3
    Dernier message: 20/02/2004, 00h52
  3. aide pour swap ?
    Par formet dans le forum CORBA
    Réponses: 2
    Dernier message: 01/07/2003, 16h00
  4. Erreur dans l'utilisation de SWAP
    Par mire dans le forum Langage
    Réponses: 12
    Dernier message: 15/03/2003, 21h39
  5. swapping entre processeurs
    Par shef dans le forum MFC
    Réponses: 5
    Dernier message: 26/08/2002, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo