Tengo el requisito de forzar la actualización de los niveles de PTE y PMD de la tabla de páginas o, en otras palabras, hacer que el proceso mantenga con frecuencia los bloqueos de PMD y PTE . Esto es para fines de investigación.
Sé que esto podría hacerse de una de dos maneras:
Asigne una memoria MAP_ANONYMOUS usando mmap , toque la memoria asignada (para asignar una memoria física) y luego munmap ; tanto mmap como munmap actualizan la tabla de páginas . Pero no sé cómo hacer que esta asignación/desasignación toque ambas tablas.
Asigne una memoria usando mmap como arriba, y reubique con frecuencia la memoria de tal manera que modifique los niveles de PMD y PTE . Para esto, no pude encontrar una manera de mover páginas a una nueva ubicación que haga que ambas tablas se actualicen.
Entonces, mi pregunta es, ¿cómo asignar o reubicar una memoria asignada de tal manera que se actualicen las tablas PTE y PMD ? Supongo que cualquier solución basada en lo anterior es una cuestión de encontrar una dirección virtual adecuada para mapear o reubicarse.
Mi procesador es un Intel Xeon Gold 6142 con tabla de páginas de 4 niveles.