Memory management is about managing the memory of the computer system.
“Providing ways for the dynamic allocation of the memory blocks to the applications when they request for it and freeing these blocks after use so that they can be again used by some other processes forms an essential part of the memory management concept”.
– Memory management is very critical for the proper functioning of the computer system.
– Today, a number of methods have been designed that have greatly increased the effectiveness and efficiency of the memory management.
– Nowadays, we have the virtual memory systems for the separation of the memory addresses from the actual physical addresses used by a process.
– This has also allowed for the separation of the processes and increasing the availability of the RAM through techniques such as segmentation and paging thus causing a shift to the secondary storage media.
– The overall performance of the system is very much affected by the virtual memory manager’s quality.
Dynamic Memory Allocation
– This is an important part of the memory management.
– An allocation request can only be fulfilled by locating a free block of disk space or memory of the required size.
– These requests for memory are satisfied by the allocation of the memory blocks or bytes from a pool of free memory called the heap.
– At any instant of time, some parts of the heap might be in use while others might be free and available for making future allocations.
– There are several issues that may make the implementation of the dynamic allocation complicate like external and internal fragmentation.
– The size of the small allocations also gets inflated by the metadata of the allocator.
– Chunking is a technique that is used for managing this problem.
– Outstanding allocations need to be tracked by the memory management system of the computer system for ensuring that there is no overlapping and also there is no loss of memory through memory leaks.
– The performance can be significantly affected by the implementation of some specific algorithm for dynamic memory allocation.
– The exact location of the allocation is not known beforehand and therefore an indirect access has to be made to the memory via a pointer reference.
– The algorithms used for the organization of the memory area, allocation and de-allocation etc have a link to the kernel and may use either buddy blocks allocation or fixed size blocks allocation techniques.
– The memory organization can be decoupled from the physical hardware with this method.
– The memory is operated on by the application through virtual addresses.
– Whenever an attempt is made for accessing the data stored in memory, the virtual memory manager translates the virtual address in to a physical one.
– This has helped in maintaining granular control over the access methods and the memory systems.
– It is up to the operating system up on how to limit the access to the memory in virtual systems.
– Thus, a process can be allowed or disallowed for carrying out reading and writing operations to a piece of memory that has not been allocated to it.
– This is necessary as it prevents the malfunctioning of the code from interfering with the working of the other programs.
– Usually, memory allocated to a process is kept isolated.
– Some processes might require sharing the information stored in those memory blocks.
– Thus for the inter-process communication sharing memory is the best technique and the fastest too.
– Memory is classified in to two categories namely the primary storage and the secondary storage based up on their access rates.
– Moving information and data between these two categories of the memory is handled by the memory management systems.