wisemonkeys logo
FeedNotificationProfileManage Forms
FeedNotificationSearchSign in
wisemonkeys logo

Blogs

Different memory allocation strategies

profile
Srushti Chauhan
Jul 27, 2024
2 Likes
0 Discussions
570 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

Clustering Techniques

Blog banner

Disk scheduling

Blog banner

Use case of K-means clustering

Blog banner

semaphores

Blog banner

WINDOWS I/ O

Blog banner

How covid-19 impacted Social media ad spend forecast globally

Blog banner

IoT Architecture Based Security

Blog banner

A Review on Data Acquisition in Cyber Forensics

Blog banner

Goa Trip With Friends

Blog banner

GIS in Disaster Management

Blog banner

Linux 94

Blog banner

Operating Systems Overview

Blog banner

Riddhi Miyani 53003220140

Blog banner

MACHINE LEARNING

Blog banner

SECURITY RISKS OF REMOTE WORKING

Blog banner

Sleep Matters: The Science Behind Toddler Naps

Blog banner

How to Encrypt and Decrypt Using GNU PGP

Blog banner

Jira service Management

Blog banner

Craziness of dream 11 and how it impacts on our life

Blog banner

The Psychology of Diversity, Equity & Inclusion: How Inclusive Workplaces Boost Productivity

Blog banner

PHISHING

Blog banner

LINUX

Blog banner

MY FIRST BLOG?

Blog banner

SECURITY VULNERABILITIES COUNTERMEASURES IN A SMART SHIP SYSTEM

Blog banner

Beautiful and stunning natural phenomena worth to see

Blog banner

MORDERN UNIX SYSTEM

Blog banner

Docker Framework

Blog banner

The Power of Cyber Forensic in Solving Crimes

Blog banner

Memory Management - operating system

Blog banner

SPEM

Blog banner

Sessions In OS.

Blog banner

MULTITHREADING:ENHANCEING PERFORMANCE AND EFFICIENCY IN COMPUTING

Blog banner

ADIDAS

Blog banner

Process Creation

Blog banner

A-B-C of Networking: Part-1 (Basics)

Blog banner

File management

Blog banner

Computer Forensics and its Impact in Business Environment

Blog banner

Regression Analysis

Blog banner

Cyber Security in Data Breaching

Blog banner

Scheduling

Blog banner

Heart Fulness Meditation

Blog banner

Virtual memory in os

Blog banner