Cache de page - Page cache

En informatique, un cache de page , parfois également appelé cache disque , est un cache transparent pour les pages provenant d'un périphérique de stockage secondaire tel qu'un disque dur (HDD) ou un SSD (Solid State Drive ). Le système d'exploitation conserve un cache de page dans des parties autrement inutilisées de la mémoire principale (RAM), ce qui permet un accès plus rapide au contenu des pages mises en cache et des améliorations de performances globales. Un cache de page est implémenté dans les noyaux avec la gestion de la mémoire de pagination , et est principalement transparent pour les applications.

En général, toute la mémoire physique non directement allouée aux applications est utilisée par le système d'exploitation pour le cache de pages. Étant donné que la mémoire serait autrement inactive et est facilement récupérée lorsque les applications la demandent, il n'y a généralement pas de pénalité de performance associée et le système d'exploitation peut même signaler une telle mémoire comme "libre" ou "disponible".

Par rapport à la mémoire principale, les lectures / écritures sur le disque dur sont lentes et les accès aléatoires nécessitent des recherches de disque coûteuses ; par conséquent, de plus grandes quantités de mémoire principale améliorent les performances, car davantage de données peuvent être mises en cache dans la mémoire. Une mise en cache de disque séparée est fournie côté matériel, par des puces RAM ou NVRAM dédiées situées soit dans le contrôleur de disque (auquel cas le cache est intégré dans un disque dur et généralement appelé tampon de disque ), soit dans un contrôleur de réseau de disques . Une telle mémoire ne doit pas être confondue avec le cache de page.

Conservation de la mémoire

Les pages du cache de pages modifiées après avoir été importées sont appelées pages sales. Étant donné que les pages non modifiées dans le cache de pages ont des copies identiques dans le stockage secondaire (par exemple, un disque dur ou un lecteur SSD ), la suppression et la réutilisation de leur espace est beaucoup plus rapide que la pagination de la mémoire d'application, et est souvent préférable au vidage des pages sales. dans un stockage secondaire et réutiliser leur espace. Les binaires exécutables , tels que les applications et les bibliothèques, sont également généralement accessibles via le cache de page et mappés à des espaces de processus individuels à l' aide de la mémoire virtuelle (cela se fait via l' appel système mmap sur les systèmes d'exploitation de type Unix). Cela signifie non seulement que les fichiers binaires sont partagés entre des processus séparés, mais aussi que les parties inutilisées des binaires seront finalement vidées de la mémoire principale, conduisant à la conservation de la mémoire.

Étant donné que les pages mises en cache peuvent être facilement expulsées et réutilisées, certains systèmes d'exploitation, notamment Windows NT , signalent même l'utilisation du cache de page en tant que mémoire «disponible», alors que la mémoire est en fait allouée aux pages du disque. Cela a conduit à une certaine confusion sur l'utilisation du cache de page dans Windows.

Écriture sur disque

Le cache de page facilite également l'écriture sur un disque. Les pages de la mémoire principale qui ont été modifiées lors de l'écriture de données sur le disque sont marquées comme "sales" et doivent être vidées sur le disque avant de pouvoir être libérées. Lorsqu'une écriture de fichier se produit, la page mise en cache pour le bloc particulier est recherchée. S'il se trouve déjà dans le cache de page, l'écriture est effectuée sur cette page dans la mémoire principale. Si elle n'est pas trouvée dans le cache de page, alors, lorsque l'écriture tombe parfaitement sur les limites de taille de page , la page n'est même pas lue à partir du disque, mais allouée et immédiatement marquée comme sale. Sinon, la ou les pages sont extraites du disque et les modifications demandées sont effectuées. Un fichier qui est créé ou ouvert dans le cache de pages, mais pas écrit dans, peut entraîner un fichier de zéro octet lors d'une lecture ultérieure.

Cependant, toutes les pages mises en cache ne peuvent pas être écrites car le code du programme est souvent mappé en lecture seule ou en copie sur écriture ; dans ce dernier cas, les modifications du code ne seront visibles que par le processus lui-même et ne seront pas écrites sur le disque.

Attaques secondaires

En 2019, des chercheurs en sécurité ont démontré des attaques par canal latéral contre le cache de pages: il est possible de contourner la séparation des privilèges et d'exfiltrer des données sur d'autres processus en surveillant systématiquement si certaines pages de fichiers (par exemple des fichiers exécutables ou de bibliothèque ) sont présentes ou non dans le cache.

Voir également

Les références

Liens externes