Memory Management in Operating System - GeeksforGeeks

Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

Aptitude Engineering Mathematics Discrete Mathematics Operating System DBMS Computer Netw

Memory Management in Operating


System
Last Updated : 06 Sep, 2023

The term memory can be defined as a collection of data in a specific format. It is used
to store instructions and process data. The memory comprises a large array or group
of words or bytes, each with its own location. The primary purpose of a computer
system is to execute programs. These programs, along with the information they
access, should be in the main memory during execution. The CPU fetches instructions
from memory according to the value of the program counter.

To achieve a degree of multiprogramming and proper utilization of memory, memory


management is important. Many memory management methods exist, reflecting
various approaches, and the effectiveness of each algorithm depends on the situation.

Here, we will cover the following memory management topics:

What is Main Memory?


What is Memory Management?
Why Memory Management is Required?
Logical Address Space and Physical Address Space
Static and Dynamic Loading
Static and Dynamic Linking
Swapping
Contiguous Memory Allocation
Memory Allocation
First Fit
Best Fit
Worst Fit
Fragmentation
Internal Fragmentation
External Fragmentation
Paging
Before we start Memory management, let us know what is main memory is.

What is Main Memory?


The main memory is central to the operation of a Modern Computer. Main Memory is a
large array of words or bytes, ranging in size from hundreds of thousands to billions.
Main memory is a repository of rapidly available information shared by the CPU and
I/O devices. Main memory is the place where programs and information are kept when
the processor is effectively utilizing them. Main memory is associated with the
processor, so moving instructions and information into and out of the processor is
extremely fast. Main memory is also known as RAM (Random Access Memory). This
memory is volatile. RAM loses its data when a power interruption occurs.
Main Memory

What is Memory Management?


In a multiprogramming computer, the Operating System resides in a part of memory,
and the rest is used by multiple processes. The task of subdividing the memory among
different processes is called Memory Management. Memory management is a method
in the operating system to manage operations between main memory and disk during
process execution. The main aim of memory management is to achieve efficient
utilization of memory.

Why Memory Management is Required?


Allocate and de-allocate memory before and after process execution.
To keep track of used memory space by processes.
To minimize fragmentation issues.
To proper utilization of main memory.
To maintain data integrity while executing of process.

Now we are discussing the concept of Logical Address Space and Physical Address
Space

Logical and Physical Address Space


Logical Address Space: An address generated by the CPU is known as a “Logical
Address”. It is also known as a Virtual address. Logical address space can be
defined as the size of the process. A logical address can be changed.
Physical Address Space: An address seen by the memory unit (i.e the one loaded
into the memory address register of the memory) is commonly known as a
“Physical Address”. A Physical address is also known as a Real address. The set of
all physical addresses corresponding to these logical addresses is known as
Physical address space. A physical address is computed by MMU. The run-time
mapping from virtual to physical addresses is done by a hardware device Memory
Management Unit(MMU). The physical address always remains constant.

Static and Dynamic Loading


Loading a process into the main memory is done by a loader. There are two different
types of loading :

Static Loading: Static Loading is basically loading the entire program into a fixed
address. It requires more memory space.
Dynamic Loading: The entire program and all data of a process must be in physical
memory for the process to execute. So, the size of a process is limited to the size of
physical memory. To gain proper memory utilization, dynamic loading is used. In
dynamic loading, a routine is not loaded until it is called. All routines are residing on
disk in a relocatable load format. One of the advantages of dynamic loading is that
the unused routine is never loaded. This loading is useful when a large amount of
code is needed to handle it efficiently.

Static and Dynamic Linking


To perform a linking task a linker is used. A linker is a program that takes one or more
object files generated by a compiler and combines them into a single executable file.

Static Linking: In static linking, the linker combines all necessary program modules
into a single executable program. So there is no runtime dependency. Some
operating systems support only static linking, in which system language libraries
are treated like any other object module.
Dynamic Linking: The basic concept of dynamic linking is similar to dynamic
loading. In dynamic linking, “Stub” is included for each appropriate library routine
reference. A stub is a small piece of code. When the stub is executed, it checks
whether the needed routine is already in memory or not. If not available then the
program loads the routine into memory.

Swapping
When a process is executed it must have resided in memory. Swapping is a process of
swapping a process temporarily into a secondary memory from the main memory,
which is fast compared to secondary memory. A swapping allows more processes to
be run and can be fit into memory at one time. The main part of swapping is
transferred time and the total time is directly proportional to the amount of memory
swapped. Swapping is also known as roll-out, or roll because if a higher priority
process arrives and wants service, the memory manager can swap out the lower
priority process and then load and execute the higher priority process. After finishing
higher priority work, the lower priority process swapped back in memory and continued
to the execution process.

swapping in memory management

Memory Management with Monoprogramming (Without Swapping)

This is the simplest memory management approach the memory is divided into two
sections:

One part of the operating system


The second part of the user program

Fence Register

operating system user program


In this approach, the operating system keeps track of the first and last location
available for the allocation of the user program
The operating system is loaded either at the bottom or at top
Interrupt vectors are often loaded in low memory therefore, it makes sense to load
the operating system in low memory
Sharing of data and code does not make much sense in a single process
environment
The Operating system can be protected from user programs with the help of a
fence register.

Advantages of Memory Management

It is a simple management approach

Disadvantages of Memory Management

It does not support multiprogramming


Memory is wasted

Multiprogramming with Fixed Partitions (Without Swapping)

A memory partition scheme with a fixed number of partitions was introduced to


support multiprogramming. this scheme is based on contiguous allocation
Each partition is a block of contiguous memory
Memory is partitioned into a fixed number of partitions.
Each partition is of fixed size

Example: As shown in fig. memory is partitioned into 5 regions the region is reserved
for updating the system the remaining four partitions are for the user program.

Fixed Size Partitioning

Operating System

p1

p2

p3
p4

Partition Table

Once partitions are defined operating system keeps track of the status of memory
partitions it is done through a data structure called a partition table.

Sample Partition Table

Starting Address of Partition Size of Partition Status

0k 200k allocated

200k 100k free

300k 150k free

450k 250k allocated

Logical vs Physical Address

An address generated by the CPU is commonly referred to as a logical address. the


address seen by the memory unit is known as the physical address. The logical
address can be mapped to a physical address by hardware with the help of a base
register this is known as dynamic relocation of memory references.

Contiguous Memory Allocation


The main memory should accommodate both the operating system and the different
client processes. Therefore, the allocation of memory becomes an important task in
the operating system. The memory is usually divided into two partitions: one for the
resident operating system and one for the user processes. We normally need several
user processes to reside in memory simultaneously. Therefore, we need to consider
how to allocate available memory to the processes that are in the input queue waiting
to be brought into memory. In adjacent memory allotment, each process is contained
in a single contiguous segment of memory.
Contiguous Memory Allocation

Memory Allocation
To gain proper memory utilization, memory allocation must be allocated efficient
manner. One of the simplest methods for allocating memory is to divide memory into
several fixed-sized partitions and each partition contains exactly one process. Thus,
the degree of multiprogramming is obtained by the number of partitions.

Multiple partition allocation: In this method, a process is selected from the input
queue and loaded into the free partition. When the process terminates, the partition
becomes available for other processes.
Fixed partition allocation: In this method, the operating system maintains a table
that indicates which parts of memory are available and which are occupied by
processes. Initially, all memory is available for user processes and is considered
one large block of available memory. This available memory is known as a “Hole”.
When the process arrives and needs memory, we search for a hole that is large
enough to store this process. If the requirement is fulfilled then we allocate memory
to process, otherwise keeping the rest available to satisfy future requests. While
allocating a memory sometimes dynamic storage allocation problems occur, which
concerns how to satisfy a request of size n from a list of free holes. There are some
solutions to this problem:
First Fit

In the First Fit, the first available free hole fulfil the requirement of the process
allocated.

First Fit

Here, in this diagram, a 40 KB memory block is the first available free hole that can
store process A (size of 25 KB), because the first two blocks did not have sufficient
memory space.

Best Fit

In the Best Fit, allocate the smallest hole that is big enough to process requirements.
For this, we search the entire list, unless the list is ordered by size.

Best Fit

Here in this example, first, we traverse the complete list and find the last hole 25KB is
the best suitable hole for Process A(size 25KB). In this method, memory utilization is
maximum as compared to other memory allocation techniques.

Worst Fit
In the Worst Fit, allocate the largest available hole to process. This method produces
the largest leftover hole.

Worst Fit

Here in this example, Process A (Size 25 KB) is allocated to the largest available
memory block which is 60KB. Inefficient memory utilization is a major issue in the
worst fit.

Fragmentation
Fragmentation is defined as when the process is loaded and removed after execution
from memory, it creates a small free hole. These holes can not be assigned to new
processes because holes are not combined or do not fulfill the memory requirement of
the process. To achieve a degree of multiprogramming, we must reduce the waste of
memory or fragmentation problems. In the operating systems two types of
fragmentation:

1. Internal fragmentation: Internal fragmentation occurs when memory blocks are


allocated to the process more than their requested size. Due to this some unused
space is left over and creating an internal fragmentation problem.Example:
Suppose there is a fixed partitioning used for memory allocation and the different
sizes of blocks 3MB, 6MB, and 7MB space in memory. Now a new process p4 of
size 2MB comes and demands a block of memory. It gets a memory block of 3MB
but 1MB block of memory is a waste, and it can not be allocated to other processes
too. This is called internal fragmentation.
2. External fragmentation: In External Fragmentation, we have a free memory block,
but we can not assign it to a process because blocks are not contiguous. Example:
Suppose (consider the above example) three processes p1, p2, and p3 come with
sizes 2MB, 4MB, and 7MB respectively. Now they get memory blocks of size 3MB,
6MB, and 7MB allocated respectively. After allocating the process p1 process and
the p2 process left 1MB and 2MB. Suppose a new process p4 comes and demands
a 3MB block of memory, which is available, but we can not assign it because free
memory space is not contiguous. This is called external fragmentation.
Both the first-fit and best-fit systems for memory allocation are affected by external
fragmentation. To overcome the external fragmentation problem Compaction is used.
In the compaction technique, all free memory space combines and makes one large
block. So, this space can be used by other processes effectively.

Another possible solution to the external fragmentation is to allow the logical address
space of the processes to be noncontiguous, thus permitting a process to be allocated
physical memory wherever the latter is available.

Paging
Paging is a memory management scheme that eliminates the need for a contiguous
allocation of physical memory. This scheme permits the physical address space of a
process to be non-contiguous.

Logical Address or Virtual Address (represented in bits): An address generated by


the CPU.
Logical Address Space or Virtual Address Space (represented in words or bytes):
The set of all logical addresses generated by a program.
Physical Address (represented in bits): An address actually available on a memory
unit.
Physical Address Space (represented in words or bytes): The set of all physical
addresses corresponding to the logical addresses.

Example:

If Logical Address = 31 bits, then Logical Address Space = 231 words = 2 G words (1
G = 230)
If Logical Address Space = 128 M words = 27 * 220 words, then Logical Address =
log2 227 = 27 bits
If Physical Address = 22 bits, then Physical Address Space = 222 words = 4 M words
(1 M = 220)
If Physical Address Space = 16 M words = 24 * 220 words, then Physical Address =
log2 224 = 24 bits

The mapping from virtual to physical address is done by the memory management unit
(MMU) which is a hardware device and this mapping is known as the paging
technique.

The Physical Address Space is conceptually divided into several fixed-size blocks,
called frames.
The Logical Address Space is also split into fixed-size blocks, called pages.
Page Size = Frame Size
Let us consider an example:

Physical Address = 12 bits, then Physical Address Space = 4 K words


Logical Address = 13 bits, then Logical Address Space = 8 K words
Page size = frame size = 1 K words (assumption)

Paging

The address generated by the CPU is divided into:

Page Number(p): Number of bits required to represent the pages in Logical


Address Space or Page number
Page Offset(d): Number of bits required to represent a particular word in a page or
page size of Logical Address Space or word number of a page or page offset.

Physical Address is divided into:

Frame Number(f): Number of bits required to represent the frame of Physical


Address Space or Frame number frame
Frame Offset(d): Number of bits required to represent a particular word in a frame
or frame size of Physical Address Space or word number of a frame or frame
offset.

The hardware implementation of the page table can be done by using dedicated
registers. But the usage of the register for the page table is satisfactory only if the
page table is small. If the page table contains a large number of entries then we can
use TLB(translation Look-aside buffer), a special, small, fast look-up hardware cache.

The TLB is an associative, high-speed memory.


The TLB is an associative, high-speed memory.
Each entry in TLB consists of two parts: a tag and a value.
When this memory is used, then an item is compared with all tags simultaneously.
If the item is found, then the corresponding value is returned.

Page Map Table

Main memory access time = m


If page table are kept in main memory,
Effective access time = m(for page table)
+ m(for particular page in page table)

TLB Hit and Miss

For more details, must-read Paging in Operating System


Frequently Asked Questions

Q.1: What is a memory leak, and how does it affect system performance?

Answers:

A memory leak occurs when a program fails to release memory that it no longer
needs, resulting in wasted memory resources. Over time, if memory leaks
accumulate, the system’s available memory diminishes, leading to reduced
performance and possibly system crashes.

Q.2: Can memory fragmentation be prevented in an operating system?

Answers:

While it is challenging to completely eliminate memory fragmentation, certain


techniques can help minimize its impact. One approach is to use memory
allocation algorithms that focus on reducing external fragmentation, such as
buddy systems or slab allocation. Additionally, techniques like compaction can be
employed to reduce internal fragmentation.

Q.3: What are the advantages and disadvantages of using virtual memory?

Answers:

Virtual memory provides several benefits, including the ability to run larger
programs than the available physical memory, increased security through memory
isolation, and simplified memory management for applications. However, using
virtual memory also introduces additional overhead due to page table lookups and
potential performance degradation if excessive swapping occurs.

Suggest improvement
Suggest improvement

Previous Next

Share your thoughts in the comments Add Your Comment

Similar Reads
Best Ways for Operating System Operating Systems | Memory
Memory Management Management | Question 1

Operating Systems | Memory Operating Systems | Memory


Management | Question 2 Management | Question 10

Operating Systems | Memory Operating Systems | Memory


Management | Question 4 Management | Question 5

Operating Systems | Memory Operating Systems | Memory


Management | Question 6 Management | Question 10

Operating Systems | Memory Operating Systems | Memory


Management | Question 8 Management | Question 9

V varshacho…

Article Tags : Operating Systems-Memory Management , Operating Systems

A-143, 9th Floor, Sovereign Corporate


Tower, Sector-136, Noida, Uttar
Pradesh - 201305
Company Explore

About Us Hack-A-Thons

Legal GfG Weekly Contest

Careers DSA in JAVA/C++

In Media Master System Design

Contact Us Master CP

Advertise with us GeeksforGeeks Videos

GFG Corporate Solution Geeks Community

Placement Training Program

Languages DSA

Python Data Structures

Java Algorithms

C++ DSA for Beginners

PHP Basic DSA Problems

GoLang DSA Roadmap

SQL Top 100 DSA Interview Problems

R Language DSA Roadmap by Sandeep Jain

Android Tutorial All Cheat Sheets

Tutorials Archive

Data Science & ML HTML & CSS

Data Science With Python HTML

Data Science For Beginner CSS

Machine Learning Tutorial Web Templates

ML Maths CSS Frameworks

Data Visualisation Tutorial Bootstrap

Pandas Tutorial Tailwind CSS

NumPy Tutorial SASS

NLP Tutorial LESS

Deep Learning Tutorial Web Design

Django Tutorial
Django Tutorial

Python Tutorial Computer Science

Python Programming Examples Operating Systems

Python Projects Computer Network

Python Tkinter Database Management System

Web Scraping Software Engineering

OpenCV Tutorial Digital Logic Design

Python Interview Question Engineering Maths

DevOps Competitive Programming

Git Top DS or Algo for CP

AWS Top 50 Tree

Docker Top 50 Graph

Kubernetes Top 50 Array

Azure Top 50 String

GCP Top 50 DP

DevOps Roadmap Top 15 Websites for CP

System Design JavaScript

High Level Design JavaScript Examples

Low Level Design TypeScript

UML Diagrams ReactJS

Interview Guide NextJS

Design Patterns AngularJS

OOAD NodeJS

System Design Bootcamp Lodash

Interview Questions Web Browser

Preparation Corner School Subjects

Company-Wise Recruitment Process Mathematics

Resume Templates Physics

Aptitude Preparation Chemistry

Puzzles Biology

Company-Wise Preparation Social Science

English Grammar

World GK
Management & Finance Free Online Tools

Management Typing Test

HR Management Image Editor

Finance Code Formatters

Income Tax Code Converters

Organisational Behaviour Currency Converter

Marketing Random Number Generator

Random Password Generator

More Tutorials GeeksforGeeks Videos

Software Development DSA

Software Testing Python

Product Management Java

SAP C++

SEO - Search Engine Optimization Data Science

Linux CS Subjects

Excel

@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved

You might also like