How to update the PMD and PTE tables of page-table by allocating or relocating memory?

212 Views Asked by At

I have a requirement of forcing the PTE and PMD levels of the page-table to be updated or in other words, to make the process frequently hold the PMD and PTE locks. This is for research purposes.

I know this could be done in one of two ways:

  • Allocate a MAP_ANONYMOUS memory using mmap, touch the allocated memory (to allocate a physical memory), and then munmap it; both mmap and munmap update the page-table. But I don't know how to make this allocation/deallocation touch both tables.

  • Allocate a memory using mmap like above, and frequently relocate the memory in such a way that modifies both PMD and PTE levels. For this, I couldn't find a way to move pages to a new location that causes both tables to be updated.

So my question is, how to allocate or relocate a mapped memory in such a way that both the PTE and PMD tables are updated? I presume any solution based on the above is a matter of finding a proper virtual address to map to or relocate to.

My processor is an Intel Xeon Gold 6142 with 4 levels page table.

0

There are 0 best solutions below