An open API service indexing awesome lists of open source software.

https://github.com/abdallahhemdan/sqrt_os

Sqrt OS is a simulation of an OS scheduler and memory manager using different scheduling algorithms including Highest Priority First (non-preemptive), Shortest Remaining Time Next, and Round Robin.
https://github.com/abdallahhemdan/sqrt_os

hemdan highest-priority-first memory-manager mini-os operating-system os round-robin scheduler shortest-time-remanining-first sqrt-os

Last synced: 25 days ago
JSON representation

Sqrt OS is a simulation of an OS scheduler and memory manager using different scheduling algorithms including Highest Priority First (non-preemptive), Shortest Remaining Time Next, and Round Robin.

Awesome Lists containing this project

README

        




![Component 14](https://user-images.githubusercontent.com/40190772/104843823-48f18c00-58d5-11eb-946f-510a76db56b3.png)


Sqrt OS



[![GitHub contributors](https://img.shields.io/github/contributors/AbdallahHemdan/Sqrt_OS)](https://github.com/AbdallahHemdan/Sqrt_OS/contributors)
[![GitHub issues](https://img.shields.io/github/issues/AbdallahHemdan/Sqrt_OS)](https://github.com/AbdallahHemdan/Sqrt_OS/issues)
[![GitHub forks](https://img.shields.io/github/forks/AbdallahHemdan/Sqrt_OS)](https://github.com/AbdallahHemdan/Sqrt_OS/network)
[![GitHub stars](https://img.shields.io/github/stars/AbdallahHemdan/Sqrt_OS)](https://github.com/AbdallahHemdan/Sqrt_OS/stargazers)
[![GitHub license](https://img.shields.io/github/license/AbdallahHemdan/Sqrt_OS)](https://github.com/AbdallahHemdan/Sqrt_OS/blob/master/LICENSE)



## About
> A CPU scheduler determines an order for the execution of its scheduled processes; it
> decides which process will run according to a certain data structure that keeps track
> of the processes in the system and their status.

> A process, upon creation, has one of the three states: Running, Ready, Blocked (doing
> I/O, using other resources than CPU or waiting on unavailable resource).

## System Description

> Consider a Computer with 1-CPU and fixed size memory (1024 ==> can be changed).
> Our scheduler implemented the complementary components as sketched in the following diagrams.

📌 NOTE:

> We are supporting the following Scheduling algorithms:

1. HPF (Highest Priority First)
2. STRN (Shortest Time Remaining Next)
3. RR (Round Robin)

## Used Data structures

| Algo/Part | DS |
|:-----------------:|:--------------:|
| Processes WTA | Linked list |
| HPF - SRTN | Priority queue |
| RR - Waiting list | Queue |
| Buddy | Binary tree |

## Algorithm Flow

- Algo Explanation:
1. Recieve and process all processes which come in the current second
1. In case of free space: Allocate space for it and push it in the ready queue
2. Else: Push it in the waiting list

2. Check the running process if it finishes or not
1. True: Free its allocated space and check the waiting list
2. False: Pass (continue the code flow)
3. Check if the ready queue is not empty:
- True: based on the algo, we decide that we will switch or not
4. Wait till the next second

## Results
1. HPF Algorithm





2. SRTN Algorithm



3. Round Robin Algorithm




### Contributors



Abdallah Hemdan



Adel Mohamed



Ahmed Sherif



Ahmed Mahboub



### Licence
[MIT Licence](https://github.com/AbdallahHemdan/Sqrt_OS/blob/main/LICENSE)