An operating system use Page Directory and Page Table to handle memory virtualization.
One thing I am not sure about is in the title of this question: Is that structure the same for every process, or does each process own a specific Page Table ?
It seems cumbersome and impractical to have a Page Table for every process. There is also the fact that the whole data structure (Page Directory, Page Table...) seem to address every byte of physical memory.