Authors: Aditya Pandey, Kartik, Vivek, Gaurang
This project provides TWO ways to explore virtual memory management:
- 🌐 Web GUI (Recommended - No compilation needed!)
- 💻 Command Line (For advanced users)
Navigate to the VMM project directory:
cd /Users/adityapandey/Desktop/VMMcd gui
python3 -m http.server 8000You should see:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Open your web browser and go to:
http://localhost:8000
The web interface provides:
- ✅ Real-time visualization of TLB, page tables, and memory frames
- ✅ Interactive controls to configure and run simulations
- ✅ Performance charts showing metrics over time
- ✅ Event log with detailed access history
- ✅ No compilation required!
- Configure RAM size (e.g., 64 MB) and algorithm (e.g., LRU)
- Click "Generate Trace" to create memory access pattern
- Click "Run Simulation" to watch it execute
- Observe the visualizations update in real-time!
- Check metrics and charts for performance analysis
That's it! No coding or compilation needed!
cd /Users/adityapandey/Desktop/VMM
makeThis compiles all the C code. You should see:
Compiling src/main.c...
Compiling src/vmm.c...
...
Linking bin/vmm
make tracesThis creates sample memory access traces in the traces/ directory.
./bin/vmm -r 64 -p 4096 -t traces/working_set.trace -a LRU -T 64Parameters explained:
-r 64- 64 MB of RAM-p 4096- 4KB page size-t traces/working_set.trace- Input trace file-a LRU- Use LRU replacement algorithm-T 64- 64 TLB entries
The simulator outputs detailed metrics to the console.
- How virtual addresses are translated to physical addresses
- How the TLB speeds up address translation
- How page faults occur and are handled
- How different replacement algorithms perform (FIFO, LRU, Clock)
- How memory thrashing happens and how to avoid it
- Compare algorithms: Run same trace with different algorithms
- TLB impact: Try small vs large TLB sizes
- Memory pressure: See what happens with limited RAM
- Access patterns: Compare sequential vs random access
- Thrashing: Force pathological behavior and observe
- QUICKSTART.md - Detailed 5-minute guide
- README.md - Complete project documentation
- gui/README.md - Web GUI user guide
- PROJECT_SUMMARY.md - Project overview
- AUTHORS.md - Team contributions
For Developers:
- docs/DESIGN.md - Architecture and design
- docs/API.md - Developer API reference
- docs/TESTPLAN.md - Testing guide
- EXTENSIONS.md - Future enhancements
- ✅ Start with Web GUI (easiest)
- ✅ Read QUICKSTART.md for examples
- ✅ Experiment with different configurations
- ✅ Try all trace patterns and algorithms
- ✅ Then explore command-line interface
- ✅ Read DESIGN.md for architecture
- ✅ Review API.md for extension points
- ✅ Study source code in
src/directory - ✅ Run tests with
make test - ✅ Check EXTENSIONS.md for ideas
- Problem: Port 8000 already in use
- Solution: Try a different port:
python3 -m http.server 8080
- Problem: GCC not installed
- Solution: Install build tools:
xcode-select --install(macOS)
- Problem: Trace files not generated
- Solution: Run
make tracesfirst
- Problem: Script not executable
- Solution:
chmod +x tests/run_tests.sh
- Start web server:
cd gui && python3 -m http.server 8000 - Open http://localhost:8000
- Select "Working Set" trace pattern
- Click "Generate Trace"
- Click "Run Simulation"
- Watch TLB and frames update in real-time!
Time: 2 minutes
# Build and generate traces
make && make traces
# Run with FIFO
./bin/vmm -r 32 -t traces/random.trace -a FIFO --csv fifo.csv
# Run with LRU
./bin/vmm -r 32 -t traces/random.trace -a LRU --csv lru.csv
# Compare results
# LRU should have fewer page faults!Time: 5 minutes
- Configure: 8 MB RAM (very small)
- Select "Thrashing" pattern
- Generate and run
- Observe: Very high page fault rate (>30%)
- Reset and try with 64 MB RAM
- Observe: Dramatically lower fault rate
Time: 3 minutes
-
🎨 Beautiful Web Interface
- Modern, responsive design
- Real-time visualization
- Interactive controls
- No installation needed!
-
🔬 Comprehensive Simulation
- 5 replacement algorithms
- Multiple trace patterns
- Realistic timing simulation
- Detailed metrics
-
📖 Excellent Documentation
- 2000+ lines of docs
- Clear examples
- Architecture diagrams
- API reference
-
🧪 Thorough Testing
- 10 automated tests
- Sample traces included
- Validation scripts
- Expected outputs documented
-
🚀 Production Quality
- Clean, modular code
- Zero memory leaks
- Comprehensive error handling
- Professional build system
- ✅ Students learning operating systems
- ✅ Educators teaching VM concepts
- ✅ Researchers comparing algorithms
- ✅ Self-learners exploring OS internals
- ✅ Developers understanding system performance
Developed by:
- Aditya Pandey - Core VMM, frame allocator, swap manager
- Kartik - Page tables, replacement algorithms
- Vivek - TLB simulation, metrics system
- Gaurang - Trace engine, testing, documentation
All team members contributed to the web GUI and visualization.
cd gui
python3 -m http.server 8000
# Open http://localhost:8000make
make traces
./bin/vmm -t traces/working_set.trace -a LRUQuestions? Check the documentation or experiment with the GUI!
Enjoy exploring virtual memory! 🎊