There is a common misconception that virtual memory is for providing more [primary storage]? to an application than that actually exists. Though that is a highly visible effect of virtual memory, it is not the only intention. Commonly a system's physical memory address space is shared by RAM, ROM and [device memory]?. Of these only RAM is available for generic use by applications. The RAM is spread across the system's address space interspersed with ROM and device memory. This layout varies from system to system. If applications have to be written generically these layout differences must be abstracted to them. The Operating System does this abstraction by implementing a virtual memory model. Applications are written for this model and so can execute on any system implementing that model.