A feature-rich operating system built from scratch, focusing on modern functionality, user experience, and system performance.
# Clone the repository
git clone https://github.com/yourusername/myos.git
cd myos
# Build the OS
make
# Run in QEMU
make run-
Memory Management
- Paging support
- Virtual memory management
- Heap allocation
- Memory mapping capabilities
- Protected memory spaces
-
Process Management
- Multi-tasking support
- Process creation and destruction
- Priority-based scheduling
- Context switching
- Inter-process communication
- Process states (Ready, Running, Blocked, Zombie)
-
File System
- Inode-based architecture
- Directory structure support
- File operations (create, read, write, delete)
- File permissions
- Symbolic links
- Maximum file size: 4GB
- Support for up to 1024 files
-
Modern GUI System
- Window management
- Double buffering for smooth graphics
- Mouse and keyboard input
- Multiple window support
- Window stacking and focus management
-
Applications
-
Notepad
- Text editing capabilities
- File saving/loading
- Cut, copy, paste functionality
- Keyboard shortcuts
-
Calculator
- Basic arithmetic operations
- Modern, responsive interface
- Keyboard input support
- Error handling
- Decimal support
- Backspace functionality
-
- Complete Network Stack
- TCP/IP protocol support
- Socket interface
- Support for multiple network interfaces
- Protocols:
- IP (v4)
- TCP
- UDP
- ICMP
- ARP
- Maximum packet size: 1518 bytes
- Network interface flags for various modes
- Sound Support
- Multiple sound buffer management
- Various audio formats:
- PCM8
- PCM16
- Channel configurations:
- Mono
- Stereo
- Sample rates:
- 8000 Hz
- 11025 Hz
- 22050 Hz
- 44100 Hz
- Volume control
- Sound mixing capabilities
- Callback system for audio events
- System Architecture - Overall system design and component interactions
- Memory Management - Memory allocation, virtual memory, and protection mechanisms
- Process Management - Process scheduling, IPC, and synchronization primitives
- Command System - Command registration and execution API
- System Calls - Available system calls and their usage
- Shell Interface - Using the command-line interface and built-in commands
- i686-elf cross-compiler
- NASM assembler
- GNU Make
- QEMU for testing
- Ensure all prerequisites are installed
- Clone and build:
git clone https://github.com/yourusername/myos.git cd myos make - Run in QEMU:
make run
| Component | Minimum Requirement |
|---|---|
| Architecture | x86 |
| RAM | 32MB |
| Display | VGA-compatible |
| Input | PS/2 keyboard and mouse |
| Optional | Sound card, Network card |
myos/
├── src/ # Source code
│ ├── boot/ # Boot loader and initialization
│ ├── kernel/ # Core kernel components
│ │ ├── memory/ # Memory management
│ │ ├── process/ # Process management
│ │ ├── fs/ # File system
│ │ ├── network/ # Network stack
│ │ ├── sound/ # Audio system
│ │ └── graphics/ # GUI system
│ └── apps/ # User applications
│ ├── notepad/ # Text editor
│ └── calc/ # Calculator
├── docs/ # Documentation
│ ├── core/ # Core system docs
│ ├── api/ # API reference
│ └── user/ # User guides
├── tests/ # Test suites
└── tools/ # Development tools
- Added comprehensive command system with extensible architecture
- Implemented shell application with command history and line editing
- Created detailed system documentation and API references
- Enhanced memory management with improved error handling
- Added process management with priority-based scheduling
We welcome contributions! Here's how you can help:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please read our Contributing Guidelines for details.
This project is licensed under the MIT License - see the LICENSE file for details.
- Thanks to all contributors who have helped build MyOS
- Special thanks to the OSDev community for their valuable resources
- Inspired by various open-source operating systems
- Report bugs by opening an issue
- Join our Discord community
- Follow updates on Twitter
Made with ❤️ by the MyOS Team