Source: https://pages.cs.wisc.edu/~remzi/OSTEP/vm-segmentation.pdf