Pour accélérer les accès disque, le système utilise un cache disque qui est une zone mémoire en RAM. Quand un programme accède à un fichier sur disque, les pages du fichier sur disque sont recopiées dans des pages en RAM. Plus le programme lit des données dans le fichier, plus le cache disque en RAM augmente. Si le programme relit dans le fichier une donnée déjà lue, le système peut la fournir rapidement grâce au cache disque sans avoir à relire le disque.
La taille de la RAM est limitée alors que l´on peut lire de gros fichiers. Et donc un moment donné toute la RAM est prise pour les programmes et le cache disque. Dans ce cas le système, doit libérer des pages RAM. Suivant les versions d´unix, la stratégie varie, mais en règle générale, la méthode suivante est appliquée.
Le noyau du système maintient pour chaque page en mémoire virtuelle (RAM + swap) des informations qui lui permettent de prendre des décisions. Chaque page a des drapeaux indiquant si la page est en cours d´utilisation par un ou plusieurs programmes. Un drapeau indique aussi si la page fait partie d´un programme ou si c´est une page du cache disque. Dans ce cas soit les données viennent d´un fichier, soit les données viennent d´un programme qui a fait une écriture. Une page du cache marquée comme ayant des données sera enregistrée dans le fichier sur disque sur timer (par exemple toutes les minutes).
À, chaque page est associée une date de dernière utilisation, ainsi quand le système a besoin de libérer des pages en RAM, il peut en swapper certaines (les pages des programmes) vers le swap disque. Si les pages font partie du cache disque, les pages ayant des données à écrire seront écrites sur disque, alors que les pages qui ne contiennent que des données en lecture peuvent être purement et simplement libérées. Tout cela dépent principalement de la date de dernière utilisation. Les pages les plus vieilles sont libérées de la RAM.
Source : http://www.levenez.com/NeXTSTEP/Memoire.html