1. Keeps tracks of primary memory, i.e., what part of it are in use by whom, what part are not in use
2. In multiprogramming, the OS decides which process will get memory when and how much
3. Allocates the memory when a process requests it to do so
4. De-allocates the memory when a process no longer needs it or has been terminated