Memory Management in Operating System
Computer Memory is basically known as a collection of data that is represented in binary format. Main Memory refers to a physical memory that is the internal memory of the computer. The word main is used to distinguish it from external mass storage devices such as disk drives. Main memory is also known as RAM. The computer is able to change only data that is in the main memory. Therefore, every program we execute and every file we access must be copied from a storage device into main memory.
All the programs are loaded in the main memory for execution. Sometimes the complete program is loaded into the memory, but sometimes a certain part or routine of the program is loaded into the main memory only when it is called by the program, this mechanism is called Dynamic Loading, which enhances the performance.
Also, at times one program is dependent on some other program. In such a case, rather than loading all the dependent programs, the CPU links the dependent programs to the main executing program when required. This mechanism is known as Dynamic Linking.
Let us understand how the data is being stored in the computer system.
What is Memory Management in Operating System?
Memory Management is the process of coordinating and controlling the memory in a computer, Blocks are assigning portions that are assigned to various running programs in order to optimize the overall performance of the system. This technique helps in keeping the track of each and every memory location, whether the memory location is allocated to some process or it is free.
This technique decides which process will get memory at what time. It also keeps the count of how much memory can be allocated to a process. As it keeps the tracks of everything so whenever some memory gets freed or unallocated it updates the status correspondingly.
Need for Memory Management in OS
Memory management technique is needed for the following reasons:
-
This technique helps in placing the programs in memory in such a way so that memory is utilized at its fullest extent.
-
This technique helps to protect different processes from each other so that they do not interfere with each other's operations.
-
It helps to allocate space to different application routines.
-
This technique allows you to check how much memory needs to be allocated to processes that decide which processor should get memory at what time.
-
It keeps the track of each memory location whether it is free or allocated.
-
This technique keeps the track of inventory whenever memory gets freed or unallocated and it will update the status accordingly.
Methods Involved in Memory Management
There are various methods and with their help Memory Management can be done intelligently by the Operating System:
Swapping in OS
A process needs to be in memory for execution. But sometimes there is not enough main memory to hold all the currently active processes in a timesharing system. So, the excess process is kept on disk and brought in to run dynamically. Swapping is the process of bringing in each process in the main memory, running it for a while, and then putting it back to the disk.
Contiguous Memory Allocation
In contiguous memory allocation, each process is contained in a single contiguous block of memory. Memory is divided into several fixed-size partitions. Each partition contains exactly one process. When a partition is free, a process is selected from the input queue and loaded into it. The free blocks of memory are known as holes. The set of holes is searched to determine which hole is best to allocate.
Memory Protection
Memory protection is a phenomenon by which we control memory access rights on a computer. The main aim of it is to prevent a process from accessing memory that has not been allocated to it. Hence prevents a bug within a process from affecting other processes, or the operating system itself, and instead results in a segmentation fault or storage violation exception being sent to the disturbing process, generally killing of process.
Memory Allocation in OS
Memory allocation is a process by which computer programs are assigned memory or space. It is of three types :
- First Fit Allocation
The first hole that is big enough is allocated to the program.
- Best Fit Allocation
The smallest hole that is big enough is allocated to the program.
- Worst Fit Allocation
The largest hole that is big enough is allocated to the program.
Fragmentation in OS
Fragmentation occurs in a dynamic memory allocation system when most of the free blocks are too small to satisfy any request. It is generally termed as the inability to use the available memory.
In such a situation, processes are loaded and removed from the memory. As a result of this, free holes exist to satisfy a request but are non-contiguous i.e. the memory is fragmented into large no. Of small holes. This phenomenon is known as External Fragmentation.
Also, at times the physical memory is broken into fixed-size blocks, and memory is allocated in the unit of block sizes. The memory allocated to space may be slightly larger than the requested memory. The difference between allocated and required memory is known as Internal fragmentation i.e. the memory that is internal to a partition but is of no use.
Paging
A solution to the fragmentation problem is Paging. Paging is a memory management mechanism that allows the physical address space of a process to be non-contagious. Here physical memory is divided into blocks of equal size called Pages. The pages belonging to a certain process are loaded into available memory frames.
Page Table
A Page Table is the data structure used by a virtual memory system in a computer operating system to store the mapping between the virtual address and physical addresses.
The virtual address is also known as the Logical address and is generated by the CPU. While Physical address is the address that actually exists on memory.
Segmentation in OS
Segmentation is another memory management scheme that supports the user-view of memory. Segmentation allows the breaking of the virtual address space of a single process into segments that may be placed in non-contiguous areas of physical memory.
Segmentation with Paging
Both paging and segmentation have their advantages and disadvantages, it is better to combine these two schemes to improve on each. The combined scheme is known as 'Page the Elements'. Each segment in this scheme is divided into pages and each segment is maintained in a page table. So the logical address is divided into the following 3 parts :
We will cover all the above methods one by one in our Upcoming tutorials.