Skip to content

RekcahA/cpu-scheduling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

CPU Scheduling Algorithms

License: MIT

This project is a collection of implementations for various CPU scheduling algorithms commonly studied in Operating Systems. Whether you're a student, educator, or just a curious developer, you're in the right place.

Table of Contents

Overview

CPU scheduling is a critical component in operating systems that determines the order in which processes access the CPU. This repository contains implementations of several classic scheduling algorithms, including:

  • First-Come, First-Served (FCFS)
  • Shortest Job First (SJF)
  • Round Robin (RR)
  • Priority Scheduling
  • Multilevel Queue Scheduling

Each algorithm is implemented with clarity and accompanied by sample test cases, detailed comments, and documentation to help you understand the underlying logic and design choices.

Features

  • Clear and Concise Code: Easy-to-read implementations with comments explaining key concepts.
  • Modular Design: Each algorithm is separated into its own file/module for simplicity and reusability.
  • Extensible: Add new scheduling algorithms or enhancements with minimal changes to the overall project structure.
  • Testing Suite: Robust unit tests to ensure the correctness of each algorithm.
  • Educational Resources: Inline documentation and usage examples that can help you learn and understand CPU scheduling.

Implemented Algorithms

Below is a brief description of each algorithm included in this repository:

  • FCFS (First-Come, First-Served):
    Processes are scheduled in the order they arrive, ensuring fairness but possibly leading to long wait times if a long process is at the front of the queue.

  • SJF (Shortest Job First):
    Selects the process with the shortest execution time. It minimizes the average waiting time but requires knowledge of the upcoming process durations.

  • Round Robin (RR):
    Each process is given a fixed time slot (quantum) in a cyclic order. This algorithm improves responsiveness in a time-sharing environment.

  • Priority Scheduling:
    Processes are scheduled based on priority levels. This method can be preemptive or non-preemptive and is useful for systems where certain tasks require higher importance.

  • Multilevel Queue Scheduling:
    Processes are divided into multiple queues based on their priority or type, with different scheduling algorithms applied to each queue.

Prerequisites

Before running the code, ensure that you have the following installed on your machine:

  • Python 3.x (or your preferred language/environment if implementations are in another language)
  • Git for cloning the repository
  • pytest (if running tests)

Note: If your implementations require other dependencies, please refer to the individual algorithm documentation or the requirements file.

Installation

Clone the repository to your local machine:

git clone https://github.com/yourusername/cpu-scheduling-algorithms.git
cd cpu-scheduling-algorithms

If a requirements.txt file is provided, install the necessary packages using pip:

pip install -r requirements.txt

License

This project is licensed under the MIT License - see the LICENSE file for details.


Happy Coding! 🚀

About

This project is a collection of implementations for various CPU scheduling algorithms commonly studied in Operating Systems.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors