Skip to content

"This repository contains an implementation of diverse memory management techniques in an operating system, aiming to optimize resource allocation and utilization."

License

Notifications You must be signed in to change notification settings

jElhamm/Memory-Management

Repository files navigation

Memory Management

This repository contains implementations of various Memory Management techniques in C++ and Python programming languages.

Table of Contents

Introduction

In this repository, you will find implementations of the following memory management techniques:

  • Paging

Implementation with C++

Implementation with Python

  • Best Fit Memory Allocator:

Implementation with C++

Implementation with Python

  • First Fit Memory Allocator:

Implementation with C++

Implementation with Python

  • Fixed Partitioning Technique:

Implementation with C++

Implementation with Python

  • Variable Partitioning Technique:

Implementation with C++

Implementation with Python

  • Worst Fit Memory Allocator:

Implementation with C++

Implementation with Python

Each technique is implemented in both C++ and Python.

Overview

  • Paging: Paging is a memory management scheme that allows the physical memory to be divided into fixed-size blocks called pages and manages them efficiently by mapping them to corresponding logical addresses.

  • Best Fit Memory Allocator: This technique allocates the smallest free block of memory that can satisfy a requested memory allocation, leading to efficient memory utilization by reducing fragmentation.

  • First Fit Memory Allocator: It allocates the first free block of memory that is large enough to accommodate the requested memory size, which is a simple and fast method but can lead to fragmentation.

  • Worst Fit Memory Allocator: This technique allocates the largest free block of memory available, which can result in more internal fragmentation but may be suitable for scenarios where large contiguous blocks are needed.

  • Fixed Partitioning Technique: In this technique, memory is divided into fixed-size partitions, and each partition can hold a single process. It is simple to implement but can lead to internal fragmentation.

  • Variable Partitioning Technique: Unlike fixed partitioning, this technique allows memory partitions to vary in size based on the process requirements, reducing internal fragmentation.

Each memory management technique implements a different strategy for managing memory allocation and efficiency. For detailed information and usage instructions, refer to the specific directories in the repository.

Usage

To use the implementations, follow these steps:

  1. Clone the repository to your local machine.
  2. Choose the desired memory management technique.
  3. Navigate to the corresponding directory.
  4. Follow the installation instructions provided in the README file of each technique.

References

BOOK:

  • Modern Operating Systems Book by Andrew Tanenbaum.
  • Operating System Concepts Book by Abraham Silberschatz.

License

This repository is licensed under the MIT License. See the LICENSE file for more details.

About

"This repository contains an implementation of diverse memory management techniques in an operating system, aiming to optimize resource allocation and utilization."

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published