Files
Custom-Operating-System/README.md

131 lines
4.8 KiB
Markdown
Raw Normal View History

2025-02-12 09:54:05 -05:00
# xOS
**A multi-architecture operating system built from scratch targeting x86, ARM, and RISC-V**
![System Overview][system_overview]
---
## What This Is
An operating system implemented entirely from scratch (no existing kernel), spanning kernel development, driver architecture, filesystems, userland applications, and UI frameworks.
### Technical Scope
- **Multi-architecture kernel**: x86/x86-64, ARMv7, Arm64, RISC-V support with unified codebase
- **Custom bootloaders** for each architecture with ELF validation and secure boot integration
- **Full userspace stack**: C/C++ standard libraries, Objective-C runtime, UI framework, window server
- **Production OS features**: Ext2 filesystem, virtual filesystem layer, process management, POSIX signals, TTY subsystem
---
## Core Technical Implementation
### Kernel Architecture
**Preemptive Multitasking & Scheduling**
- Priority-based round-robin scheduler with 12 priority levels
- Per-CPU runqueues for SMP support (multi-core)
- Conditional kernel preemption (`PREEMPT_KERNEL` flag for real-time responsiveness)
- Interrupt depth counter preventing race conditions during context switches
- Idle threads for zero-allocation interrupt handling
**Memory Management**
- Virtual memory manager with per-process address spaces
- Demand paging and swap support
- Kernel/userspace memory isolation with access validation
- Shared buffers for zero-copy IPC
**System Call Interface**
- 60+ system calls following POSIX conventions (`fork`, `exec`, `read`, `write`, `mmap`, etc.)
- Architecture-specific syscall dispatch (software interrupts on x86, `svc` on ARM)
- Kernel-mode syscalls (`ksys1`-`ksys4`) for internal operations
### Boot Process & Security
**Custom Bootloader Chain**
- **Stage 1** (x86): Real-mode to protected-mode transition, memory map collection
- **Stage 2/Prekernel**: ELF loader, device tree initialization, MMU setup
- **Kernel validation**: SHA256 + RSA signature verification before execution
- Passes boot arguments (`boot_args_t`) with memory layout, framebuffer, device tree
### Filesystem & Device Management
- **Ext2 filesystem** with full read/write support
- **Virtual filesystem (VFS)** layer abstracting file operations
- `/dev` (device nodes) and `/proc` (process/system introspection) filesystems
- Device tree parsing for ARM/RISC-V hardware discovery
- Device driver framework with pluggable driver registration
### Userland & UI
**Window Server** (compositing manager)
- Client-server architecture using IPC
- Desktop and mobile window management modes
- Hardware-accelerated rendering via LibG
- Menu bar, dock, popup system
**Libraries**
- **LibC/LibCxx**: POSIX-compliant C library and C++ STL
- **LibObjC**: Objective-C runtime (message dispatch, ARC)
- **LibFoundation**: Event loop, shared buffers, collections (Cocoa-inspired)
- **LibG**: 2D graphics (pixel buffers, fonts, PNG/BMP loaders)
- **LibUI**: High-level UI widgets (buttons, text fields, windows)
---
## Key Engineering Decisions
**1. Multi-Architecture Support**
Abstracted platform-specific code (`kernel/platform/{x86,arm32,arm64,riscv}`) with common interfaces for MMU, interrupts, context switching. Enables same kernel codebase across all targets.
**2. Build System**
GN (Generate Ninja) meta-build system for fast incremental builds. Compiles for multiple architectures from single source tree.
**3. Bootloader Security**
Validates kernel ELF binary cryptographically before loading—prevents tampered kernel execution (verified boot).
**4. Preemptive vs Cooperative**
Kernel preemption is compile-time optional (`-DPREEMPT_KERNEL`). Enables low-latency scheduling when enabled, or simpler non-preemptive model for easier debugging.
**5. Window Server Architecture**
Separates compositing from applications—crash in user app doesn't take down entire UI. Similar to X11/Wayland model.
---
## Features
### Kernel
* x86/x86-64, ARMv7 and Arm64 kernel with pre-emptive multi-threading
* Ext2 filesystem
* /dev and /proc filesystems
* Local sockets
* POSIX signals
* TTY
* [learn more](https://code.ayaantunio.me/ayaan/Custom-Operating-System/src/branch/master/docs/kernel.md)
### Libraries
* Runtime & support: LibC, LibCxx, LibObjC
* Rich functionality: LibFoundation
* UI functionality & rendering: LibG, LibUI
* [learn more](https://code.ayaantunio.me/ayaan/Custom-Operating-System/src/branch/master/docs/libs.md)
### Userland
* Composing windows manager for desktop and mobile
* Simple UI apps
* Terminal
### Boot
* Custom bootloaders
* Kernel validation during the boot proccess
* Custom device tree
* [learn more](https://code.ayaantunio.me/ayaan/Custom-Operating-System/src/branch/master/docs/boot.md)
## How to build and run xOS?
See the [build instructions](https://code.ayaantunio.me/ayaan/Custom-Operating-System/src/branch/master/docs/build.md)
[system_overview]: /Images/sysarch.svg "System Architecture Diagram"