Estoy preguntando específicamente sobre Linux, pero una respuesta que se aplique a Unix en general (es decir, POSIX o similar) sería aún mejor, obviamente.
Linux usa memoria libre (es decir, la memoria que aún no está asignada a los procesos) para almacenar en caché los metadatos del sistema de archivos (y tal vez otras cosas). Cuando los procesos solicitan memoria adicional, estos cachés se reducen para hacer espacio.
Mi pregunta: ¿Existe algún método mediante el cual una aplicación pueda asignar memoria que sirva únicamente como caché? Es decir, la asignación se realiza sabiendo que el núcleo puede tomar el control de esta área de memoria de alguna manera cuando la memoria disponible se agota y las asignaciones de memoria de otros procesos no podrían servirse de otro modo.
Respuesta1
Quizás podrías usarmadvise(2)
es MADV_FREE
para esto: marca las páginas como disponibles para reclamar, pero no necesariamente las elimina inmediatamente y los datos se pueden volver a leer. Sabrá que las páginas desaparecieron si recupera todos los ceros (por página).