This project simulates a simplified Operating System Scheduler in C, incorporating process management, memory allocation, scheduling algorithms, and mutex-based synchronization. It includes a real-time Graphical User Interface built using Raylib to visualize memory, processes, queues, and resource locks.
Milestone 2 focuses on:
- Creating and scheduling processes from program files.
- Implementing three scheduling strategies.
- Managing shared resource access through mutexes.
- Visualizing OS behavior through an interactive GUI.
- Parses and runs 3 custom programs:
Program_1.txt: Print numbers between two integers.Program_2.txt: Write user input to a file.Program_3.txt: Read and print file contents.
- Each program simulates a process with its own PCB and memory space.
- FCFS (First-Come First-Serve)
- Round Robin (with adjustable quantum)
- Multilevel Feedback Queue (MLFQ)
- 4 priority levels
- Dynamic time quantums: {1, 2, 4, 8}
- Fixed memory: 60 words
- Each process is allocated space for:
- Instructions
- 3 variables
- PCB metadata
- Three critical resources:
userInputuserOutputfile
- Managed using
semWaitandsemSignal - Blocked queue implemented with priority unblocking
- Live visualization of:
- System clock, current instruction
- Ready & Blocked Queues
- Memory status
- Mutex holders & waitlists
- Process states & priority
Check out our custom-built Raylib GUI that visualizes process scheduling, memory usage, and mutexes in real-time:
- C compiler (e.g.
gcc) - Raylib installed

