wisemonkeys logo
FeedNotificationProfileManage Forms
FeedNotificationSearchSign in
wisemonkeys logo

Blogs

Different memory allocation strategies

profile
Srushti Chauhan
Jul 27, 2024
2 Likes
0 Discussions
611 Reads

Introduction

In operating systems, memory allocation refers to the process of assigning memory to different processes or programs running on a computer system. Memory allocation is a crucial function in operating systems, managing how memory resources are distributed among various processes. Different strategies have been developed to optimize memory usage and ensure system efficiency. Here are some common memory allocation strategies:

1. Contiguous Memory Allocation

  • Definition: This strategy allocates a single contiguous block of memory to each process.

Contiguous memory allocation is a technique where the operating system allocates a contiguous block of memory to a process. This memory is allocated in a single, continuous chunk, making it easy for the operating system to manage and for the process to access the memory. Contiguous memory allocation is suitable for systems with limited memory sizes and where fast access to memory is important.

Contiguous memory allocation can be done in two ways:-

  • Fixed Partitioning − In fixed partitioning, the memory is divided into fixed-size partitions, and each partition is assigned to a process. This technique is easy to implement but can result in wasted memory if a process does not fit perfectly into a partition.

  • Dynamic Partitioning − In dynamic partitioning, the memory is divided into variablesize partitions, and each partition is assigned to a process. This technique is more efficient as it allows the allocation of only the required memory to the process, but it requires more overhead to keep track of the available memory.

    Advantages of Contiguous Memory Allocation

    • Simplicity − Contiguous memory allocation is a relatively simple and straightforward technique for memory management. It requires less overhead and is easy to implement.

    • Efficiency − Contiguous memory allocation is an efficient technique for memory management. Once a process is allocated contiguous memory, it can access the entire memory block without any interruption.

  • Low fragmentation − Since the memory is allocated in contiguous blocks, there is a lower risk of memory fragmentation. This can result in better memory utilization, as there is less memory wastage.

Disadvantages of Contiguous Memory Allocation

  • Limited flexibility − Contiguous memory allocation is not very flexible as it requires memory to be allocated in a contiguous block. This can limit the amount of memory that can be allocated to a process.

  • Memory wastage − If a process requires a memory size that is smaller than the contiguous block allocated to it, there may be unused memory, resulting in memory wastage.

  • Difficulty in managing larger memory sizes − As the size of memory increases, managing contiguous memory allocation becomes more difficult. This is because finding a contiguous block of memory that is large enough to allocate to a process becomes challenging.

  • External Fragmentation − Over time, external fragmentation may occur as a result of memory allocation and deallocation, which may result in non − contiguous blocks of free memory scattered throughout the system.

2.Non-contiguous Memory Allocation

Non-contiguous memory allocation, on the other hand, is a technique where the operating system allocates memory to a process in non-contiguous blocks. The blocks of memory allocated to the process need not be contiguous, and the operating system keeps track of the various blocks allocated to the process. Non-contiguous memory allocation is suitable for larger memory sizes and where efficient use of memory is important.

Non-Contiguous memory allocation can be done in two ways:-

 1) Paging

  • Definition: Memory is divided into fixed-size blocks called pages, and physical memory is divided into page frames of the same size.
  • How it Works: A process’s memory is divided into pages that can be mapped to any page frame in physical memory. This approach helps avoid external fragmentation and simplifies memory management.

In paging, the memory is divided into fixed-size pages, and each page is assigned to a process. This technique is more efficient as it allows the allocation of only the required memory to the process.

  • Advantages:
    • Eliminates external fragmentation.
    • Simplifies allocation and deallocation.
  • Disadvantages:
    • Can cause internal fragmentation if a process doesn’t use the entire page.

   2)Segmentation

  • Definition: Memory is divided into segments based on the logical organization of the program (e.g., code, data, stack).
  • How it Works: Each segment is of variable length and is managed independently. Segments are referenced by segment number and offset.

In segmentation, the memory is divided into variable-sized segments, and each segment is assigned to a process. This technique is more flexible than paging but requires more overhead to keep track of the allocated segments.

  • Advantages:
    • Supports the logical division of a program.
    • Segments can grow or shrink independently.
  • Disadvantages:
    • Can lead to external fragmentation.
    • Managing variable-sized segments can be complex.

4. Virtual Memory

  • Definition: Provides an abstraction of memory that gives each process the illusion of having a large, contiguous block of memory, even though physical memory may be fragmented.
  • How it Works: Virtual memory systems use paging or segmentation to map virtual addresses to physical addresses. This allows processes to use more memory than physically available by swapping pages in and out of disk storage.
  • Advantages:
    • Supports multitasking by allowing multiple processes to run concurrently.
    • Provides the illusion of a large address space.
  • Disadvantages:
    • Can incur performance overhead due to paging and swapping.
    • Requires efficient management of page tables and disk space.

5. Buddy System

  • Definition: Memory is allocated in blocks that are powers of two, and the system maintains a list of free blocks of each size.
  • How it Works: When a process requests memory, the system finds a suitable block, which may involve splitting larger blocks. If memory is freed, the system attempts to merge adjacent free blocks into larger blocks.
  • Advantages:
    • Reduces fragmentation compared to fixed partitioning.
    • Relatively simple to implement.
  • Disadvantages:
    • Can still suffer from internal fragmentation.
    • May require additional bookkeeping.

6. Slab Allocation

  • Definition: Memory is divided into slabs, where each slab contains objects of a specific size.
  • How it Works: Objects of the same size are allocated from the same slab. This is often used in kernel memory management.
  • Advantages:
    • Reduces fragmentation for objects of fixed size.
    • Efficient for managing small, frequent allocations.
  • Disadvantages:
    • May be less efficient for objects of varying sizes.

7. Allocation with Garbage Collection

  • Definition: This strategy is often used in languages with automatic memory management. The system automatically reclaims memory that is no longer in use.
  • How it Works: Memory is allocated for objects as needed, and a garbage collector periodically scans for and frees unused objects.
  • Advantages:
    • Reduces the programmer’s burden of manual memory management.
    • Can help avoid memory leaks.
  • Disadvantages:
    • Garbage collection can introduce performance overhead.
    • The timing of garbage collection can be unpredictable.

Each strategy has its strengths and trade-offs, and the choice of strategy often depends on the specific requirements and constraints of the system being designed.


Comments ()


Sign in

Read Next

Digital Footprints An Emerging Dimension of Digital Inequality

Blog banner

The New Classic: Indo Western Patola Outfits for Today’s Woman

Blog banner

differentiate thinking humanly and rationally

Blog banner

The Bold Digital Marketing Moves That Made Durex India’s Second-Largest Condom Brand

Blog banner

Buffering

Blog banner

How To Invest in Indian Stock Market For Beginners. ~ Tutorial 2 (NSDL And CSDL) Continued...

Blog banner

Beyond the Track: Why the Best Hotel in Arcadia, Florida, Completes Your IMSA Sebring Getaway

Blog banner

An Overview of Virtual Machines

Blog banner

Hubspot

Blog banner

RAID

Blog banner

RAID - LEVELS OF RAID

Blog banner

A Heartfelt Act of Kindness

Blog banner

Starvation and Deadlock.

Blog banner

I/O Buffering

Blog banner

Celebrate Diwali the Delicious Way with Meal Maharaj Catering

Blog banner

Big Data Architecture

Blog banner

File management

Blog banner

MySQL

Blog banner

What Your Child Learns During Free Play (That You Might Not Notice)

Blog banner

Continual service improvement vs maintenance phase in IT

Blog banner

Uber

Blog banner

Artical on FreshBooks

Blog banner

Deadlock

Blog banner

Product Discount Calculator

Blog banner

Understanding the 4 Types of Learning Methods in Early Childhood

Blog banner

Digital Marketing Ethics Transparency Trust And Brand Reputation digital

Blog banner

File management

Blog banner

Memory Management

Blog banner

Major achievement

Blog banner

Oracle Corporation

Blog banner

Financial Stress and Mental Health

Blog banner

Is Pursuing a Dance Career in India Worth it?

Blog banner

Building Confidence in Children Through Daily Routines and Play

Blog banner

Whatsapp Messenger

Blog banner

Importance Of Education.

Blog banner

Linux Virtual Machine Process Scheduling

Blog banner

Service transistion under difficult conditions

Blog banner

10 Unknown facts about India's Independence

Blog banner

THREADS (assignment 1)

Blog banner

Importance Of Time

Blog banner

A-B-C of Networking: Part-3 (Topology [Ring, Tree, Mesh])

Blog banner

Climate Anxiety: Understanding the Psychological Impact of a Changing World

Blog banner