I am running a program with certain array variable. I am taking translating the virtual address(VA) of this array into physical address(PA) using /proc/self/pagemap file which is supported in Linux systems(ubuntu). I tried to observe the VA-PA mapping by running the same program several times (with a gap in time between successive runs). What I have observed is the PA remains the same in all the runs.
It is reasonable if VA remains same, but why PA also remains the same.? PA depends on the free pages available in the RAM which is maintained by the OS. It has to vary wrt to the system load at that moment. Considering all this I am expecting the PA to be varrying but, the opposite is what I observed.
What concept I am missing of OS/Architecture that answers this question?