In a computer system, RAM is used to temporarily hold programs & data while they are required by the CPU. Storing them in RAM, due to its rapid access times and close proximity to the CPU, means its contents can be accessed and fetched quickly resulting a quicker overall execution compared to reading directly from the hard disk (slow!). Each memory address in RAM can be accessed in the same amount of time and additionally the computer has permission to read & write to the RAM, so programs and data are moved in and out of RAM as the computer's resource requirements change. Finally it is volatile, meaning that it requires a constant source of power to maintain its state and upon losing it will lose it's contents - explaining why programs must be reloaded once the computer restarts. In contrast, ROM stands for read-only memory and is used to hold firmware and device drivers which the computer typically doesn't need to change. In order to avoid this, the memory is read-only, preventing the risk of overwriting these important programs & data. It is slower than RAM and is non-volatile - meaning it doesn't need a constant source of power to be maintained. It tends to come in smaller quantities than RAM (8mb vs. 4gb) and is typically more expensive due to its more complex circuitry. One example of its use is to store the bootloader (which loads the operating system into RAM) - we wouldn't want to overwrite this or else our computer wouldn't work!