RAM is used for a variety of tasks and is highly versatile, as opposed to ROM and CMOS, which contain crucial — and permanent, in the case of ROM — data related to systems operation, while virtual memory and cache are used to simulate or manipulate RAM during tasks. Virtual memory and cache are designed to enable memory resources for increasingly fast processors.
RAM, or Random Access Memory, is responsible for holding raw forms of data that are either waiting to be processed or stored to disk, as well as running the installed operating system. The major disadvantage RAM has is that once a device is shut down, all unwritten data is lost.
ROM, or Read Only Memory, cannot be changed. Unlike RAM, it is permanent data that is used to instruct a device what processes to use when starting up. ROM allows a CPU to make use of installed hardware, disk drives and other system critical components every time it is booted up, as RAM is only usable when a machine is powered.
CMOS holds data very well with minimal power, meaning that it can retain important system configuration data for a device even when it is powered off. Unlike ROM however, CMOS can be updated and changed through the use of plug and play devices.
Cache gives a CPU fast access to resources by anticipating how much RAM is needed for a task, before allocating that amount for the CPU to use. This means the CPU does not have to draw from the RAM directly, which would slow processes down.
Virtual memory is a simulated form of RAM using excess storage space and is commonly used to run large or RAM-intensive programs and software.