• [^] # Re: Juste une question

    Posté par . En réponse à la dépêche Nouvelle version 2.6.33 du noyau Linux. Évalué à 3.

    Comme le dit patrick_g, il y a des fois où on _doit_ avoir des pages contiguës en mémoire physique, par exemple lorsque tu communiques avec des périphériques/DMA (qui eux n'ont pas ce système de MMU/mémoire virtuelle ils attaquent directement le bus).
    Ensuite, si tu regardes les sources du noyau, tu verras qu'on demande bien plus souvent des pages contiguës en mémoire physique qu'en mémoire virtuelle (kmalloc() vs kvmalloc()).
    La raison est la même que pour le disque : contrairement à ce que tu pourrais croire, les accès mémoire ne sont pas gratuits, et il vaut mieux avoir des pages contiguës pour éviter des modifications de la table des pages et aussi pour profiter au mieux des caches offerts par le processeur (TLB). C'est toujours pareil, un accès séquentiel est toujours plus rapide qu'un acccès "aléatoire".
    Voilà pourquoi on a besoin, et on préfère, des pages contiguës en mémoire (physique). C'est aussi pour cela qu'on préfère des allocations d'ordre pas trop gros, et que par exemple des stacks de 4K en kernel mode seraient sympa, car bien plus rapides et faciles à trouver (parce que pour le coup il faut qu'elles soient contiguës).