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.