Memory management in an Operating System (OS) plays very important role in allocating memory, for using memory very efficiently or for protection of primary memory (i.e. RAM) while program is being executed. It involves managing both primary memory (RAM) and secondary memory (Solid State Drive and Hard Disk Drive).
Importance of Memory Management :
- Allocating Memory : Allocating memory is important because when you install or run a program managing memory is very important. Operating System (OS) maintains track of free memory and allocates them when required. this memory allocation can be contigous (continous blocks) or non contigous (not in continous blocks seprated in memroy) both have their own advantages and disadvantages.
- Multitasking and Virtual Memory : To enable effiicient multitasking, operating system introduces to virtual memory technique. Virtaul memroy creates an illusion of larger memory space than physically available by utilizing secondary storage (i.e. Hard disk drive) for extending RAM. It does it by swapping temporarily less used portions of programs to virtual memory freeing up the space of RAM for active processes. This allows the system to run multiple programs more effectively by exceeding the physical memory RAM capacity.
- Memory Sharing : Memory management enables sharing of memory between different processors giving them access to modify the same memory. This can help in preventing data redundancy (i.e. multiple copy of same data).It enhance the performance of applications that rely heavily on data exchange or coordinated access to common resources.
Memory Management Techniques :
- Contiguous Memory Allocation : In contiguous memory allocation to process is in continous order i.e. a single contiguous block of memory. This means all memroy is assigned to a process are in a continous range. In Programming array is a good example of this in array memroy stored is in contiguous (conitnous) format. As it is contiguous it is easy to implement and calculating address is simple as compared to non contiguous. As all memory is contiguous accessing memory is fast. But as it is contiguous it is hard to allocate memory i.e. it is hard to find free conotiguous memory space. And it is also not flexible as if there is somthing stored next to that contiguous memory it will be hard to extend it.
- Non Contiguous Memory Allocation : In non contiguous memory allocation to process is in different locations i.e. memory is not next to it like in contiguous memory allocation i.e. blocks can be placed anywhere in physical memory. As memory is non contiguous memory utilization is efficient and it is also flexible as memroy is stored in different locations. Memory isolation is easier to implement as every memroy is at different locations so it will be hard to access the memory. But there are some limitations too like it increases the complexity and also calcualting the address is difficult as compared to contiguous memory allocation.