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

Hardware Discussion :

[question]Problème de compréhension: La pagination


Sujet :

Hardware

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 18
    Points : 81
    Points
    81
    Par défaut [question]Problème de compréhension: La pagination
    Bonjour,
    je suis étudiant en informatique et j'ai quelques problèmes de compréhension sur le mécanisme de pagination.
    J'ai lu beaucoup de choses sur internet, mais cela n'a pas répondu a toutes mes questions. Je viens donc ici en espérant que certains puissent m'éclairer

    Je vous montre un exemple sur lequel je me pose certaines questions, il s'agit de d'un processeur x86-64 bits avec une pagination à 4 niveau.




    Les adresses virtuelles sont sur 48 bits vu que le plus grand diviseur entier de 52 par 4 est 48.
    Cependant je ne comprend pas pourquoi on utilise des adresses physique limitées sur 52 bits?
    que contiennent les entrées e chaque table?

    Je me demande aussi comment calculer la taille des de l'ensemble de pages?
    page map lvl4= 2^9 = 1ko
    page pointer directory = 2^18 = 32 ko
    page directory = 2^27 = 16 Mo
    page = 2^36 =8,1 Go
    ça me parait énorme pour gérer la mémoire.

    Certains processeurs récent utilisent des pages de 4kio, 4Mio voir 1 Gio. Quel en est l’intérêt?

    Voila, merci pour ceux qui prendront le temps de répondre, bonne journée

  2. #2
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    Décembre 2010
    Messages
    14 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14 939
    Points : 23 253
    Points
    23 253
    Billets dans le blog
    10
    Par défaut
    Bonjour

    Pour comprendre la pagination il faut avant comprendre la segmentation, ceci vient du processeur 16 bits qui adresse en 20 bits.

    Ce qui fait que la registrerie en adressage mémoire comporte deux niveaux de registre qui est segment:offset (segment + déplacement).

    Voici ce que dit Wikipédia :

    Accès mémoire

    Les possibilités d'adressage mémoire de la gamme x86 remontent au 8080, qui avait 16 bits de bus d'adresse et pouvait donc accéder à 64 Ko de mémoire.

    Le 8086, pour faciliter le passage du 8080 au 8086, introduit l'adressage segmenté, où l'adresse référencée par segment:offset est segment · 0x10 + offset, avec segment et offset tous deux sur 16 bits. Cela fournit 1 Mo de mémoire adressable, divisée en segments de 64 Ko, un segment commençant tous les 16 octets. Le processeur a 4 registres de segment : un pour le code, un pour les données, un pour la pile et un supplémentaire (qui sert entre autres de destination dans les instructions de copie de chaînes de caractères). Intel introduit des « modèles mémoire ». Dans le modèle tiny, qui imite le modèle mémoire du 8080, tous les registres de segments ont la même valeur et on accède donc effectivement à 64 Ko de mémoire. C'est le modèle utilisé sous DOS, par les exécutables .com. Dans le modèle small, les registres ont des valeurs différentes mais ne changent pas : on a donc 64 Ko pour le code, 64 Ko pour les données, 64 Ko pour la pile. Pour manipuler plus de mémoire, il faut faire des accès « far », c'est-à-dire aller chercher le mot en mémoire en changeant d'abord la valeur du registre de segment, puis en lisant le segment à l'offset voulu. Le modèle « large » fait des accès far dans le code et les données et donc utilise effectivement le mébi-octet d'espace adressable. Les modèles medium (64 Ko de données, plusieurs segments de code) et compact (plusieurs segments de données, 64 Ko de code) sont des compromis.

    Le 80286 brise la barrière des 1 024 Ko en introduisant le mode protégé : les segments ne se réfèrent plus à l'adresse segment·0x10 mais à une table (la GDT -- ou la LDT) qui maintient en plus les informations de protection. L'espace adressable est de 16 Mo, l'espace virtuel est potentiellement de 1 Go, un segment ne peut pas dépasser 64 Ko. Avec le 386, Intel introduit un processeur 32 bit. Les segments peuvent être aussi gros que tout l'espace adressable, soit 4 Go. La pagination vient s'ajouter à la segmentation.
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  3. #3
    Membre averti
    Avatar de Chatanga
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 211
    Points : 346
    Points
    346
    Par défaut
    Citation Envoyé par petogo Voir le message
    Les adresses virtuelles sont sur 48 bits vu que le plus grand diviseur entier de 52 par 4 est 48.
    Cependant je ne comprend pas pourquoi on utilise des adresses physique limitées sur 52 bits?
    que contiennent les entrées e chaque table?
    Rien, ou plutôt la même valeur que le bit 47 (d’où le terme extension). Il existe des modes de pagination sur 52 et 64 bits, mais il n’existe par contre pas encore, que je sache, de processeurs les exploitant. Ce n’est donc pas une limite fondamentale, mais davantage une optimisation pour se dispenser de gérer une pagination à plus de 48 bits quand personne n’a besoin pour l’instant d’autant de mémoire adressable.
    Citation Envoyé par petogo Voir le message

    Je me demande aussi comment calculer la taille des de l'ensemble de pages?
    page map lvl4= 2^9 = 1ko
    page pointer directory = 2^18 = 32 ko
    page directory = 2^27 = 16 Mo
    page = 2^36 =8,1 Go
    ça me parait énorme pour gérer la mémoire.
    Ça l’est, mais les tables elles-même peuvent être swappées (à l’exception de la table de premier niveau). C’est en partie l’utilité du découpage en plusieurs niveaux.
    Citation Envoyé par petogo Voir le message

    Certains processeurs récent utilisent des pages de 4kio, 4Mio voir 1 Gio. Quel en est l’intérêt?
    La pagination change aussi, avec moins de niveaux. Le but est d’accélérer les traductions d’adresses virtuelles en évitant de faire trop de recherches dans les tables. Les inconvénients, fragmentation et optimisation de l’espace, sont les mêmes qu’avec les systèmes de fichiers.

Discussions similaires

  1. [Débutant] problème de compréhension
    Par Sylvester dans le forum Général Java
    Réponses: 18
    Dernier message: 21/07/2005, 09h16
  2. Réponses: 5
    Dernier message: 11/04/2005, 10h21
  3. [C#] Problème de compréhension de System.Convert ET Provider
    Par papouAlain dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/11/2004, 21h52
  4. onclipevent (problème de compréhension)
    Par stephane eyskens dans le forum Flash
    Réponses: 8
    Dernier message: 24/09/2003, 15h09
  5. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07

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