A robust, interactive C-based simulator for operating system process scheduling policies. Developed for the Advanced Operating Systems course at ISI.
This project implements core scheduling algorithms including FIFO, Round-Robin, Priority, and Multilevel Queues, featuring a rich ncurses-based graphical interface for real-time visualization.
- Multiple Scheduling Policies:
- First-In-First-Out (FIFO)
- Round-Robin (RR) with configurable quantum
- Preemptive Static Priority
- Multilevel Queue with Aging (Skeleton)
- Interactive Dashboard: Real-time visualization of the CPU, Ready Queue, and Process Table using
ncurses. - Dynamic Configuration: Load processes from config files or generate them randomly.
- Smart Installation: Automated
Makefilethat handles system-wide or local user installation. - Detailed Logging: Comprehensive execution metrics.
The system is designed with a modular architecture, separating the core scheduling logic from the user interface and input parsing.
- GCC Compiler
- Make
- libncurses-dev (Required for the GUI)
sudo apt-get update
sudo apt-get install build-essential libncurses5-dev libncursesw5-dev-
Clone the repository:
git clone https://github.com/FirasKahlaoui/os-scheduling-system cd os-scheduling-system -
Compile:
make
-
Install: The installation script automatically detects your permissions.
- Root/Sudo: Installs to
/usr/local/bin(System-wide). - User: Installs to
~/.local/bin(Local).
make install
Note: If installed locally, ensure
~/.local/binis in your$PATH. - Root/Sudo: Installs to
Run the scheduler without arguments to enter the interactive menu:
schedulerRun with a specific configuration file and policy:
scheduler config_examples/test1.conf FIFO
scheduler config_examples/test2.conf RoundRobin 4Access built-in documentation:
scheduler --help
# OR inside the app:
help fifoCreate your own process scenarios using the following format:
# Name Arrival Burst Priority
P1 0 10 1
P2 2 5 2
.
├── bin/ # Compiled executables
├── config_examples/ # Sample process scenarios
├── doc/ # Documentation (User Guide, Technical Report)
├── obj/ # Object files
├── policies/ # Scheduling algorithm implementations
├── src/ # Core source code (main, parser, display)
├── Makefile # Build automation
└── README.md # This file
| Member | Role |
|---|---|
| Firas Kahlaoui | Scrum Master |
| Oussema Abdelmoumen | Developer |
| Hamza Bargoug | Developer |
| Seifeddine Ben Fredj | Developer |
| Malek Nasri | Developer |
This project is licensed under the MIT License. See the LICENSE file for details.
Justification: The license choice was validated by scanning the codebase with scancode-toolkit, ensuring no conflicting proprietary code exists. The detailed scan results can be found in scan_results.json.


