Giter Club home page Giter Club logo

os-scheduler's Introduction

OS Scheduler with Memory Allocation

Overview

The OS Scheduler with Memory Allocation is dedicated to implementing a CPU scheduler for operating systems. This project orchestrates the execution order of processes, employing an efficient data structure to monitor process statuses within the system. Additionally, it integrates dynamic memory allocation, optimizing memory usage by allocating and deallocating memory space for processes as they enter and exit the system.

Features

  • Scheduling Algorithms:
    • Round Robin, Priority Scheduling
    • Non-preemptive Highest Priority First (HPF)
    • Shortest Remaining Time Next (SRTN).
  • Memory Allocation Algorithm:
    • Buddy system

Getting Started

Prerequisites

  • linux or WSL
  • gcc:
  sudo apt install build-essential
  sudo apt install gcc
  • git:
  sudo apt install git

Installation

1- Clone the repository

  git clone https://github.com/moa234/OS-Scheduler.git
  cd src

2- Compile the program

  make build 

Usage

1- Generate testcases

./test_generator.out

2- run the program

  make run

3- choose the algorithm you want to run

number to choose algorithm
1 Non-preemptive Highest Priority First (HPF).
2 Shortest Remaining time Next (SRTN).
3 Round Robin (RR).

Output

  • The program will generate a file called "scheduler.log" that contains the following information:

    • The order of execution of the processes.
    • The waiting time for each process.
    • the remaining time for each process.
    • The turnaround time for each process.
    • The weighted turnaround time for each process.

    HPF_Log.png

  • The program will generate a file called "scheduler.perf" that contains the following information:

    • The CPU utilization.
    • The average waiting time for all processes.
    • The average weighted turnaround time for all processes.
    • The standard deviation for the average weighted turnaround time for all processes.

    HPF_Perf.png

  • The program will generate a file called "memory.log" that contains the following information:

    • The order of allocation of the processes.
    • The order of deallocation of the processes.

    Memory_Log.png

Contributors

  • Moaaz Tarek
  • Salah Mohamed
  • Omar Sherif
  • Hussein Mostafa

References

os-scheduler's People

Contributors

moa234 avatar salahabotaleb avatar omarelzahar02 avatar hussein-elhawary avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.