Memory management is critical in a computer system. A good memory management system must be able to dynamically allocate memory to programs as they require it as well as free that memory up once they have finished using it. Without a good memory management system, a computer will be terribly slow, or not usable at all.
Stick of RAM
Due to this importance, a lot of thought has gone into developing an efficient system of memory management. Virtual memory was a large step forward in this direction. The basic idea behind this is to separate the memory addresses a process uses from physical ones in order to squeeze out more RAM. An algorithm for memory management that decouples the way memory is organised and and the physical memory itself make it possible to separate processes out and use paging or swapping to secondary storage for efficiency gains. With it, every time a process requests access to stored data, virtual memory must translate that virtual address into a physical one, allowing finer, more granular control over the memory system to eliminate unnecessary actions. This idea also applies to memory allocation requests from processes where the machine must locate a block of free memory big enough to fill the request. The place this block comes from is called the heap, and at any given time the heap may be split into many, many subsections that are being allocated, used and freed very rapidly so a fine level of control is essential. A good virtual memory manager can hugely improve overall system performance. Cache algorithms can further improve this.