Skip to content

Latest commit

 

History

History
152 lines (109 loc) · 4.47 KB

README.md

File metadata and controls

152 lines (109 loc) · 4.47 KB

GitHub contributors GitHub issues GitHub license GitHub forks GitHub stars GitHub Language

📝 Table of Contents

📙 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)

    For memory we are using the buddy memory allocation system.

🏁 Getting Started

This is an list of needed instructions to set up your project locally, to get a local copy up and running follow these instructuins.

Prerequisite

  1. Any unix based system
  2. GCC compiler installed

Installation

  1. Clone the repository
$ git clone https://github.com/ZeyadTarekk/Mini-OS.git
  1. Navigate to Phase2 Folder
$ cd Phase2

Running

Running program

  1. First remove the old files
$ make clean
  1. Build all the needed files
$ make build
  1. Run the test generator to generate a files of random procceses
$ ./test_generator.out
  1. Now run the scheduler
$ make run

💻 Built Using

  • C

Demo Outputs

HPF

RR

SRTN

Contributors

Zeyad Tarek
Zeyad Tarek
Abdelrahman Mohamed
Abdelrahman Mohamed
Beshoy Morad
Beshoy Morad
Ziad Sherif
Ziad Sherif

License

This software is licensed under MIT License, See License for more information ©ZeyadTarekk.