SkyWatch simulates a realistic Operating System (OS) for air traffic control, demonstrating process management, scheduling, and inter-process communication. It’s perfect for learning advanced OS concepts, process scheduling algorithms, and IPC mechanisms.
- Multi-Level Feedback Queue (MLFQ) scheduling
- Forked Process Management – Jet generation and lifecycle
- Inter-Process Communication – POSIX FIFOs for updates
- Signal Handling – Graceful termination and cleanup
- Real-time Monitoring – Queue and runway display
- Dynamic Jet Lifecycle – Fuel tracking, emergencies, runway allocation
- Logging – Event tracking for debugging and analysis
- Language: C++17 or later
- Platform: Linux / WSL (POSIX-compliant)
- Compiler: g++ 7+
- Concurrency & IPC: fork(), select(), FIFOs, threads, mutex
- Storage: Local runtime logging
- Visualization: Terminal-based queue and radar display
SkyWatch_System_With_Threads_&_Pipes/
├── include/
│ └── skywatch.h
├── src/
│ ├── main.cpp
│ ├── scheduler.cpp
│ ├── jet.cpp
│ ├── display.cpp
│ └── atc.cpp
├── build.sh
├── .gitignore
├── LICENSE
└── README.md
chmod +x build.sh
./build.shor
./skywatch- Forks jet child processes dynamically
- Creates FIFO for each jet
- Sends metadata to ATC
- Simulates random arrivals
- Event-driven controller using
select() - Manages scheduling queues
- Reads jet updates via FIFOs
- Allocates runways
- Handles user input commands
-
Three Priority Queues:
- Q0 – Emergency Jets (Shortest Remaining Time First)
- Q1 – Standard Jets (Round Robin)
- Q2 – Batch Jets (FCFS)
-
Dynamic promotion/demotion
-
Aging to prevent starvation
-
Selects next jet for runway
- Real-time queue visualization
- Radar-style overview
- Jet status updates
- Runway occupancy display
- Individual jet simulation
- Fuel consumption tracking
- Queue traversal and emergency handling
- Jet Created – Generator forks jet, FIFO created
- ATC Receives Jet – JetInfo struct, assigned to queue
- Scheduler Chooses Jet – Based on priority, fuel, time quantum
- Running Jet – Communicates with ATC via FIFO
- Jet Terminates – Signals ATC, FIFO removed, memory cleaned
- Global state setup
- FIFO creation
- Signal handlers (SIGINT)
- Starts ATC loop
- Jet lifecycle, fuel tracking, FIFO messaging
- Queue management
- MLFQ scheduling, promotion/demotion
- Jet selection
- Terminal-based queue visualization
- Main event loop
- Reads FIFO messages
- Processes user commands
- Add GUI visualization
- Switch FIFOs to Unix domain sockets
- Thread-based jet simulation for Windows
- Configurable runtime parameters
- Export logs to JSON/CSV
- For educational and experimental purposes only
- Controlled environment testing
- Misuse for unauthorized access is prohibited
Name: Mohid Umer
Email: mohidumer112@gmail.com
SkyWatch demonstrates OS scheduling, IPC, and process management through a technically rigorous, real-time simulation.