• [^] # Re: Juste une question

    Posté par (site web personnel) . En réponse à la dépêche Nouvelle version 2.6.33 du noyau Linux. Évalué à 8.

    >>> Je comprends le problème de la fragmentation pour des périphériques avec un temps d'accès lent, typiquement les disques durs avec leur parties mécaniques qui doivent donc se déplacer de fragment en fragment. Mais lors d'accès en RAM, ce problème ne se pose pas. Quel est donc le problème ?

    Moi aussi ce truc m'a toujours plus ou moins intrigué. Cela s'explique parce qu'il y a des cas ou il est absolument nécessaire d'allouer une quantité de mémoire contigüe....et évidemment c'est difficile de satisfaire cette condition si toute la mémoire est fragmentée en petits bouts entre les processus.
    On trouve pas mal de détails ici : http://lwn.net/Articles/211505/
    Notamment ce paragraphe (à la fin rigolote) :
    "Since Linux is a virtual memory system, fragmentation normally is not a problem; physically scattered memory can be made virtually contiguous by way of the page tables.
    But there are a few situations where physically-contiguous memory is absolutely required. These include large kernel data structures (except those created with vmalloc()) and any memory which must appear contiguous to peripheral devices. DMA buffers for low-end devices (those which cannot do scatter/gather I/O) are a classic example. If a large ("high order") block of memory is not available when needed, something will fail and yet another user will start to consider switching to BSD
    ".