Process isolation: Control and share memory when multiple process running. Preventing overwrite another program data or instruction in main memory.
Automatic allocation and management: Program should allocate memory dynamically. Large amount of memory allocate to low memory needed program is wasting memory. Also amount of memory should allocate according to the need of corresponded program.
Support of modular programming: Program define on separate modules. Size of module change dynamically.
Protection and access control: In memory shared system, data can be collect by another program. Therefore OS should create partition and provide access privilege according to corresponded program.
Long term storage: OS should provide facility to store for long time even after computer power down.