There are many diffferent memory management techniques used in
any Operating System, and Linux is no different. The answer is not
simple and is beyond the scope of this type of question. I would
refer you to any of the Linux kernel books for more in-depth
discussion of the techniques that are used.