🚀 Explore Disk Scheduling in Action — A Powerful Visualization Platform to Understand, Compare, and Experiment with Algorithms like FCFS, SSTF, SCAN, C-SCAN, and LOOK for Enhanced Learning and Research
Disk Scheduling Algorithms Simulator is a comprehensive educational and analytical tool designed to demonstrate, compare, and visualize various disk scheduling algorithms used in modern operating systems. This interactive suite provides both terminal-based and graphical interfaces for understanding how different scheduling strategies optimize disk I/O performance.
| 🔧 Interactive Simulation | 🎨 Advanced UI/UX |
|---|---|
| ✅ Multi-Algorithm Support: 6 scheduling algorithms | ✅ Rich Terminal Interface: Colorized output with progress bars |
| ✅ Dynamic Parameter Input: Customizable track configurations | ✅ Graphical GUI: Modern CustomTkinter interface |
| ✅ Real-time Visualization: Animated disk head movement | ✅ Data Visualization: Professional matplotlib charts |
| ✅ Performance Metrics: Seek time and distance analysis | ✅ Error Handling: Comprehensive input validation |
| Algorithm | Full Name | Strategy | Time Complexity | Best Use Case |
|---|---|---|---|---|
| 🎯 FCFS | First-Come, First-Served | Sequential processing | O(n) | Simple, fair scheduling |
| ⚡ SSTF | Shortest Seek Time First | Greedy nearest-first | O(n²) | Minimize seek time |
| 🛗 SCAN | Elevator Algorithm | Bidirectional sweep | O(n) | Heavy load systems |
| 👀 LOOK | Look Algorithm | Optimized SCAN | O(n) | Efficient boundary handling |
| 🔄 C-SCAN | Circular SCAN | Unidirectional circular | O(n) | Uniform response time |
| 🎯 C-LOOK | Circular LOOK | Optimized C-SCAN | O(n) | Best overall performance |
🛠️ Development Environment
|
Python 3.8+ Core runtime environment |
Cross-Platform Windows, macOS, Linux |
Desktop Environment For GUI components |
🔧 Required Libraries
| 📊 Visualization & UI | 🎨 Enhancement Libraries |
|---|---|
matplotlib>=3.5.0 – Data visualization |
tqdm>=4.64.0 – Progress bars |
rich>=12.0.0 – Terminal formatting |
colorama>=0.4.4 – Terminal colors |
customtkinter>=5.0.0 – Modern GUI framework |
CTkMessagebox>=2.0.0 – GUI dialogs |
Pillow>=9.0.0 – Image processing |
numpy>=1.21.0 – Numerical computing |
git clone https://github.com/icodecedd/disk-scheduling.git
cd disk-scheduling# Create virtual environment
python -m venv disk_scheduler_env
# Activate virtual environment
# On Windows:
disk_scheduler_env\Scripts\activate
# On macOS/Linux:
source disk_scheduler_env/bin/activate# Install all required packages
pip install matplotlib rich tqdm colorama customtkinter pillow CTkMessagebox numpy
# Or install from requirements file (if available)
pip install -r requirements.txtpython -c "import matplotlib, rich, customtkinter; print('✅ All dependencies installed successfully!')"We enthusiastically welcome contributions from the community! Here's how you can help improve this project:
| 🔧 Development Contributions | 📚 Documentation & Education | 🐛 Quality Improvements | 🎯 Feature Requests |
|---|---|---|---|
| 🆕 New Algorithms: Implement additional scheduling algorithms | 📖 Tutorials: Create step-by-step learning guides | 🔍 Bug Reports: Identify and report issues | 🔮 New Features: Suggest innovative functionality |
| 🎨 UI Improvements: Enhance user interface and experience | 🎥 Examples: Add practical use-case demonstrations | ✨ Code Quality: Refactor and improve code structure | 🎨 Visualization: Propose new chart types and displays |
| ⚡ Performance: Optimize existing algorithm implementations | 🔍 Analysis: Provide performance comparison studies | 🛡️ Security: Enhance input validation and error handling | ⚙️ Configuration: Add customization options |
| 🧪 Testing: Expand test coverage and validation | 🌐 Translations: Localize documentation and interfaces | 📊 Analytics: Improve performance metrics and reporting | 🚀 Performance: Suggest optimization strategies |
- Fork the repository to your GitHub account
- Clone your fork locally (
git clone https://github.com/icodecedd/disk-scheduling.git) - Create a feature branch (
git checkout -b feature-name) - Commit your changes (
git commit -m "Add: Enhanced SSTF algorithm with batch processing"') - Push to your branch (
git push origin feature-name) - Open a Pull Request