A comprehensive, interactive Operating Systems simulation & visualization suite
Formerly: Disk Scheduling Algorithm Visualizer
| # | Section |
|---|---|
| 1 | Overview |
| 2 | Live Demo |
| 3 | System Architecture |
| 4 | Module Breakdown |
| 5 | Algorithms Reference |
| 6 | Tech Stack |
| 7 | Project Structure |
| 8 | Setup & Installation |
| 9 | Usage Guide |
| 10 | Performance Benchmarks |
| 11 | Viva Prep |
Talensync OS Simulation Engine is a full-featured Python GUI application that brings Operating System theory to life through real-time simulation and interactive visualization. What began as a simple disk scheduling tool has evolved into a multi-module OS learning platform.
Built for OS coursework, academic demos, lab sessions, and viva preparation.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β WHAT THIS PROJECT COVERS β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββ¬ββββββββββββββββββββββββ€
β πΎ Disk I/O β π§ CPU Scheduling β π Deadlock β
β FCFS, SSTF, SCAN β FCFS, SJF, RR, P β RAG + Banker's Algo β
ββββββββββββββββββββββββΌβββββββββββββββββββββββΌββββββββββββββββββββββββ€
β π Synchronization β π File Systems β π Process States β
β Mutex + Race Cond β Contiguous/Linked β NewβReadyβRunβTerm β
ββββββββββββββββββββββββ΄βββββββββββββββββββββββ΄ββββββββββββββββββββββββ
π Try the interactive web version instantly β no installation required:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π LIVE DEMO FEATURES β
β β
β β
Disk Scheduling Visualizer (Browser-based) β
β β
Interactive graph animations β
β β
FCFS Β· SSTF Β· SCAN β all runnable in-browser β
β β
Zero setup β works on any device β
β β
Mobile friendly β
β β
β URL: rishvinreddy.github.io/Interactive-Disk-Scheduling- β
β Algorithm-Visualizer/ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TALENSYNC ENGINE β
β β
β ββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββ β
β β main.py βββββββββΆβ OS Architecture Dashboard β β
β β (Entry Pt.) β β [Central Hub + Real-Time Log Stream] β β
β ββββββββββββββββ ββββββββββββββββββ¬βββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββββββββββββββΌβββββββββββββββββββββββ β
β β Sidebar Navigation β β
β ββββ¬βββββββ¬βββββββ¬βββββββ¬βββββ΄βββββββ¬ββββββββ¬βββββββββ β
β β β β β β β β
β βΌ βΌ βΌ βΌ βΌ βΌ β
β ββββββββββββ βββββ βββββ ββββββ βββββββ ββββββββ βββββββββββ β
β β Disk β βCPUβ βDL β βSyncβ β FS β β Proc β β Factory β β
β β I/O β βSchβ βDetβ β β βAllocβ βStatesβ βHardware β β
β ββββββ¬ββββββ βββ¬ββ βββ¬ββ ββββ¬ββ ββββ¬βββ ββββ¬ββββ ββββββ¬βββββ β
β β β β β β β β β
β βΌ βΌ βΌ βΌ βΌ βΌ βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Matplotlib Β· NetworkX Β· ReportLab Β· CustomTkinter β β
β β [ Visualization & Export Layer ] β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββ
β Dashboard (Hub) β
β βββββββββββββββββ β
β β Event Logger β β
β β Metric Store β β
β βββββββββββββββββ β
ββββββββββββ¬βββββββββββ
β fires events
ββββββββββββββββββββββΌβββββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββ ββββββββββββββββββ βββββββββββββββββ
β Disk Module β β CPU Scheduler β β Deadlock Det β
β βββββββββββ β β ββββββββββββ β β βββββββββββ β
β Algorithm β β Process Queue β β RAG Builder β
β Engine β β Gantt Chart β β Banker's Algoβ
β Animation β β Burst Calc β β Safe State β
βββββββββ¬ββββββββ ββββββββββ¬ββββββββ ββββββββ¬βββββββββ
β β β
ββββββββββββββββββββββΌββββββββββββββββββββ
β
ββββββββββββΌβββββββββββ
β Export / Report β
β (ReportLab PDF) β
βββββββββββββββββββββββ
Disk Track Layout (0 ββββββββββββββββββββββββββββ 199)
Head: 53 βββΆ
Requests: [98, 183, 37, 122, 14, 124, 65, 67]
FCFS: 53β98β183β37β122β14β124β65β67 Total: 640
SSTF: 53β65β67β37β14β98β122β124β183 Total: 236 β β
Best
SCAN: 53β65β67β98β122β124β183β37β14 Total: 331
Algorithms Supported:
| Algorithm | Strategy | Starvation Risk | Complexity |
|---|---|---|---|
| FCFS | First Come First Serve | Low | O(n) |
| SSTF | Shortest Seek Time First | High | O(nΒ²) |
| SCAN | Elevator (bidirectional) | None | O(n log n) |
| C-SCAN | Circular SCAN | None | O(n log n) |
| LOOK | SCAN up to last request | None | O(n log n) |
| C-LOOK | Circular LOOK | None | O(n log n) |
Process Timeline (Gantt Chart View)
P1 ββββββββββββββββββββ
P2 ββββββββββββββββββββ
P3 ββββββββββββββββββββ
P4 ββββββββββββββββββββ
0 5 10 15 20 β Time (ms)
Legend: β = Executing β = Waiting
| Algorithm | Type | Preemptive | Best Use Case |
|---|---|---|---|
| FCFS | Non-preemptive | β | Batch systems |
| SJF | Non-preemptive | β | Short jobs known upfront |
| SRTF | Preemptive SJF | β | Real-time estimation |
| Round Robin | Time-quantum | β | Time-sharing systems |
| Priority | Priority-based | β /β | Mixed priority tasks |
Resource Allocation Graph (RAG)
P1 ββrequestsβββΆ R1
P1 βββholdsββββ R2
P2 ββrequestsβββΆ R2
P2 βββholdsββββ R1
β
DEADLOCK DETECTED β οΈ
(Circular Wait Condition)
Banker's Algorithm β Safe Sequence Finder:
ββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββ
β P# β Max Need βAllocationβ Remaining β
ββββββΌβββββββββββΌβββββββββββΌβββββββββββββ€
β P0 β 7 5 3 β 0 1 0 β 7 4 3 β
β P1 β 3 2 2 β 2 0 0 β 1 2 2 β
β P2 β 9 0 2 β 3 0 2 β 6 0 0 β
β P3 β 2 2 2 β 2 1 1 β 0 1 1 β
β P4 β 4 3 3 β 0 0 2 β 4 3 1 β
ββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββββ
Available: [3, 3, 2]
Safe Sequence: P1 β P3 β P4 β P0 β P2 β
Mutex Lock Simulation
Thread-1: LOCK(mutex) βββΆ [Critical Section] βββΆ UNLOCK(mutex)
β
Thread-2: LOCK(mutex) βββΆ βββWAITINGββββββββ βββΆ [Critical Section]
β
Blocked until T1 releases
Race Condition Scenario (No Lock):
Thread-1 reads x=5 βββΆ computes x+1=6
Thread-2 reads x=5 βββΆ computes x+1=6
Both write 6 βββΆ LOST UPDATE β (expected x=7)
ββββ CONTIGUOUS βββββββββββββββββββββββββββββββββββββββ
β Block: [0][1][2][3][4][5][6][7][8][9][10][11][12] β
β File A: ββββββββββββββββββββββββββββββββββ β
β File B: βββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββ LINKED βββββββββββββββββββββββββββββββββββββββββββ
β [Block 0]βββΆ[Block 3]βββΆ[Block 7]βββΆ[Block 11]βΆNULLβ
β File data data data data β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββ INDEXED ββββββββββββββββββββββββββββββββββββββββββ
β Index Block: [3][7][11][15] β
β β β β β β
β βΌ βΌ βΌ βΌ β
β Block3 Blk7 Blk11 Blk15 (file data) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Method | Access | Fragmentation | Overhead |
|---|---|---|---|
| Contiguous | O(1) | External | Low |
| Linked | O(n) | None | Medium (pointers) |
| Indexed | O(1) | None | High (index block) |
βββββββββββββββ
ββββββββββββΆβ NEW β
β ββββββββ¬βββββββ
β β admitted
β ββββββββΌβββββββ
β ββββββΆβ READY βββββββββββ
β β ββββββββ¬βββββββ β
β I/Oβ β scheduled β I/O done
β done ββββββββΌβββββββ β
β β β RUNNING βββββββββββ
β β ββββββββ¬βββββββ
β β β wait(event)
β β ββββββββΌβββββββ
β βββββββ WAITING β
β βββββββββββββββ
β β exit
β ββββββββΌβββββββ
βββββββββββββ TERMINATED β
βββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TECH STACK β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ€
β Language β Python 3.x β
βββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββ€
β GUI Framework β CustomTkinter (dark/light adaptive UI) β
β β Tkinter (base widgets) β
βββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββ€
β Visualization β Matplotlib (plots + animations) β
β β NetworkX (graph-based deadlock RAGs) β
βββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββ€
β Export β ReportLab (PDF report generation) β
βββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββ€
β Web Demo β HTML Β· CSS Β· JavaScript (GitHub Pages) β
βββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββ
Talensync-OS-Simulation-Engine/
β
βββ π main.py β Application entry point
βββ π disk_scheduling_gui.py β Legacy standalone visualizer
βββ π requirements.txt
βββ π README.md
β
βββ π OS_Simulation_Suite/
β βββ π main.py β Suite launcher
β βββ π dashboard.py β Central hub + real-time logs
β β
β βββ π modules/
β β βββ π disk_io.py β Disk scheduling algorithms
β β βββ π cpu_scheduling.py β CPU scheduler + Gantt chart
β β βββ π deadlock.py β RAG + Banker's Algorithm
β β βββ π synchronization.py β Mutex + race condition sim
β β βββ π file_system.py β File allocation strategies
β β βββ π process_states.py β State transition visualizer
β β βββ π factory_monitor.py β Factory hardware simulation
β β
β βββ π utils/
β β βββ π algorithm_engine.py β Core algorithm logic
β β βββ π report_exporter.py β ReportLab PDF export
β β βββ π random_generator.py β Test data generator
β β
β βββ π assets/
β βββ π themes.py β Dark/Light theme config
β
βββ π web/ β GitHub Pages live demo
βββ π index.html
βββ π style.css
βββ π visualizer.js
β
Python 3.8 or higher
β
pip (Python package manager)
β
Git
# 1. Clone the repository
git clone https://github.com/RishvinReddy/Interactive-Disk-Scheduling-Algorithm-Visualizer.git
# 2. Navigate to the project directory
cd Interactive-Disk-Scheduling-Algorithm-Visualizer
# 3. (Recommended) Create a virtual environment
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
# 4. Install all dependencies
pip install -r requirements.txt
# 5. Launch the full suite
cd OS_Simulation_Suite
python main.py
# --- OR run the legacy single-file disk visualizer ---
python disk_scheduling_gui.pycustomtkinter>=5.2.0
matplotlib>=3.7.0
networkx>=3.1
reportlab>=4.0.0
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TALENSYNC [Dark β] [Minimize][X] β
ββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β β
β π Home β β Module Content Area β β
β β β
β πΎ Disk β Simulation controls, graphs, β
β β and real-time metrics appear here β
β π§ CPU β β
β β β
β π DLock β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β π Sync β π REAL-TIME LOG β
β β [12:01] Disk SCAN completed β Seek: 331 β
β π Files β [12:02] Deadlock detected in RAG β P1, P2 β
β β [12:03] Safe sequence found: P1βP3βP0 β
β π States β β
β β β
β π Factoryβ β
ββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Step | Action |
|---|---|
| 1 | Enter number of requests OR click "Generate Random Test" |
| 2 | Fill in Disk Requests (space-separated integers, range 0β199) |
| 3 | Set Initial Head Position (single integer) |
| 4 | Choose SCAN Direction β Left or Right |
| 5 | Click "Run All Algorithms" |
| 6 | View the Comparison Table for seek totals |
| 7 | Open visual graphs per algorithm |
| 8 | Export results as PDF report (optional) |
INPUT:
Disk Requests : 98 183 37 122 14 124 65 67
Initial Head : 53
SCAN Direction : Right
OUTPUT COMPARISON TABLE:
βββββββββββββ¬βββββββββββββββββββββββ¬βββββββββββ
β Algorithm β Seek Sequence β Total β
βββββββββββββΌβββββββββββββββββββββββΌβββββββββββ€
β FCFS β 53β98β183β37β... β 640 β
β SSTF β 53β65β67β37β... β 236 β β β
BEST
β SCAN β 53β65β67β98β... β 331 β
βββββββββββββ΄βββββββββββββββββββββββ΄βββββββββββ
Total Head Movement (Lower = Better)
FCFS ββββββββββββββββββββββββββββββββ 640
SCAN βββββββββββββββββ 331
SSTF ββββββββββββ 236 β π Optimal
LOOK ββββββββββββββ 280
C-SCAN βββββββββββββββββββ 370
C-LOOK ββββββββββββββββ 310
0 200 400 600
| Algorithm | Time Complexity | Space | Notes |
|---|---|---|---|
| FCFS | O(n) | O(1) | No sorting needed |
| SSTF | O(nΒ²) | O(1) | Greedy nearest search |
| SCAN | O(n log n) | O(n) | Sort + single pass |
| C-SCAN | O(n log n) | O(n) | Circular variant |
| LOOK | O(n log n) | O(n) | Optimized SCAN |
| C-LOOK | O(n log n) | O(n) | Optimized C-SCAN |
ALL four must hold simultaneously for deadlock to occur:
1. MUTUAL EXCLUSION β Only one process can use a resource at a time
2. HOLD AND WAIT β Process holds resources while waiting for more
3. NO PREEMPTION β Resources cannot be forcibly taken away
4. CIRCULAR WAIT β P1 waits for P2, P2 waits for P3, P3 waits for P1
βββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββ
β FCFS β Service in arrival order. Simple but inefficient β
β SSTF β Go to closest request. Fast but may starve far β
β β requests β
β SCAN β Move in one direction like an elevator. Reverse β
β β at ends. Fair & prevents starvation β
β C-SCAN β Like SCAN but only one direction. Jumps back to β
β β start after reaching end. More uniform wait times β
β LOOK β SCAN but only goes as far as last request. Saves β
β β unnecessary head movement β
β C-LOOK β Circular LOOK. Best overall in most benchmarks β
βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββ
| Term | Definition |
|---|---|
| Seek Time | Time for disk head to move to target track |
| Rotational Latency | Time waiting for sector to rotate under head |
| Transfer Time | Time to actually read/write the data |
| Starvation | A process perpetually denied CPU/resource access |
| Safe State | A state where a safe sequence of execution exists |
| Race Condition | Outcome depends on non-deterministic thread ordering |
| Critical Section | Code segment accessing shared resources |
| Mutual Exclusion | Only one process in critical section at a time |
Designed & Developed for Operating Systems Analysis & Teaching
π Live Demo Β· β Star this repo if it helped you Β· π Found a bug? Open an issue
Built with Python Β· CustomTkinter Β· Matplotlib Β· NetworkX Β· ReportLab