๐ 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