it's said that virtual memory solves the problems of raw physical memory, namely lack of memory, fragmentation, and protection. but does it provide a guarantee that two processes don't map to the same physical memory? how does, when "allocating" a space for a new process, virtual memory manager know that "this physical memory is allocated so i can't touch it, but that one isn't so i'll give it to the new process"? is there some kind of mapping stored?