How does virtual memory management work in Linux, and what is the role of the Out-Of-Memory (OOM) killer?