diff --git a/README.md b/README.md index 269e741..32541db 100644 --- a/README.md +++ b/README.md @@ -2,23 +2,6 @@
-```text - ___ root@opencoreC - / \ ----------------- - | (o) | ___ OS: opencoreC Microkernel x86_64 - | | / \ Kernel: v0.1.0-release (Rust #![no_std]) - \ ___ / | (o) | Uptime: 42 mins, 12 secs - \___/ Shell: osh (opencore shell 1.0) - [=== opencoreC ===] Display: 1280x800 @ 60Hz 32bpp (Linear FB) - x86_64 SMP DE / WM: LVGL v8.3 Windows/KDE Compositor - Ring 3 Userspace CPU: QEMU Virtual CPU (4 Cores SMP) - Fast-Path IPC Cap Memory: 38 MiB / 509 MiB (7%) - Network: Realtek RTL8139 (10.0.2.15) - ACPI: S5 Poweroff, Reset, MADT 4 Cores - Security: Ring 3 Signal Fault Isolation (SIGSEGV) - Entropy: Hardware RNG (RDRAND / TSC) -``` - [![Architecture](https://img.shields.io/badge/Architecture-x86__64%20(Long%20Mode)-007acc?style=for-the-badge&logo=cpu)]() [![Kernel](https://img.shields.io/badge/Kernel-Rust%20%23!%5Bno__std%5D-dea584?style=for-the-badge&logo=rust)]() [![User Space](https://img.shields.io/badge/User%20Space-C%2B%2B20%20%26%20C11-00599c?style=for-the-badge&logo=c%2B%2B)]() @@ -30,11 +13,38 @@

A state-of-the-art, capability-based microkernel operating system written in Rust and modern C++20.
- Designed from scratch for x86_64 long mode, featuring SMP multi-core affinity, an LVGL-powered desktop compositor, hardware ACPI power management, hardware random generation, and fault-tolerant process signal isolation. + Built from scratch for x86_64 long mode, featuring SMP multi-core affinity, an LVGL-powered desktop compositor, hardware ACPI power management, hardware random generation, and fault-tolerant process signal isolation.

+```text +╭─────────────────────────────────────────────────────────────────────────────────────────────╮ +│ ● ● ● root@opencoreC: ~ (osh) │ +├─────────────────────────────────────────────────────────────────────────────────────────────┤ +│ │ +│ ___ root@opencoreC │ +│ / \ ----------------- │ +│ | (o) | ___ OS: opencoreC Microkernel x86_64 │ +│ | | / \ Kernel: v0.1.0-release (Rust #![no_std]) │ +│ \ ___ / | (o) | Uptime: 42 mins, 12 secs │ +│ \___/ Shell: osh (opencore shell 1.0) │ +│ [=== opencoreC ===] Display: 1280x800 @ 60Hz 32bpp (Linear FB) │ +│ x86_64 SMP DE / WM: LVGL v8.3 Windows/KDE Compositor │ +│ Ring 3 Userspace CPU: QEMU Virtual CPU (4 Cores SMP) │ +│ Fast-Path IPC Cap Memory: 38 MiB / 509 MiB (7%) │ +│ Network: Realtek RTL8139 (10.0.2.15) │ +│ ACPI: S5 Poweroff, Reset, MADT 4 Cores │ +│ Security: Ring 3 Signal Fault Isolation (SIGSEGV) │ +│ Entropy: Hardware RNG (RDRAND / TSC) │ +│ │ +│ ███ ███ ███ ███ ███ ███ ███ ███ │ +│ │ +│ ┌──(root@opencoreC)-[~] │ +│ └─# fastfetch │ +╰─────────────────────────────────────────────────────────────────────────────────────────────╯ +``` + --- ## 🚀 Key Highlights & Subsystems @@ -90,36 +100,71 @@ ## 🏛️ Architecture Overview +The system strictly enforces **Principle of Least Privilege (PoLP)**: only memory translation and fast-path IPC primitives reside in Ring 0, while everything else executes in isolated Ring 3 address spaces. + +### 🌐 Multi-Core Topology & Subsystem Isolation + +```text +┌─────────────────────────────────────────────────────────────────────────────────────────────┐ +│ HARDWARE LAYER (x86_64 Long Mode) │ +│ │ +│ [CPU 0: Bootstrap] [CPU 1: AP 1] [CPU 2: AP 2] [CPU 3: AP 3] │ +│ ├── PIT 8254 Timer └── Linear Framebuffer └── PS/2 Input Buffer ├── PCI RTL8139 │ +│ ├── Local APIC/IOAPIC (1280x800@32bpp) (Keyboard + Mouse) └── 16550 UART │ +│ └── ACPI PM / RNG │ +└──────────────────────────────────────────────┬──────────────────────────────────────────────┘ + │ + Interrupts & MSRs + ▼ +┌─────────────────────────────────────────────────────────────────────────────────────────────┐ +│ RING 0: RUST MICROKERNEL (#![no_std]) │ +│ │ +│ ┌──────────────────────┐ ┌──────────────────────┐ ┌───────────────────────────────────┐ │ +│ │ Memory Subsystem │ │ Multi-Core Scheduler │ │ Fast-Path Rendezvous IPC │ │ +│ │ ├── 4-Level PML4 VMM│ │ ├── Core Affinity │ │ ├── Register Fast-Path (32B) │ │ +│ │ └── Bitmap PFA │ │ └── Quantum Switch │ │ └── Capability Token Access │ │ +│ └──────────────────────┘ └──────────────────────┘ └───────────────────────────────────┘ │ +│ ┌──────────────────────┐ ┌──────────────────────┐ ┌───────────────────────────────────┐ │ +│ │ Signal Interceptor │ │ Hardware ACPI Driver │ │ Hardware Entropy Generator │ │ +│ │ ├── SIGSEGV / SIGILL│ │ ├── RSDP / MADT / S5│ │ ├── RDRAND / RDSEED │ │ +│ │ └── Thread Recovery │ │ └── 8042 Power Reset│ │ └── High-Entropy PRNG Stirring │ │ +│ └──────────────────────┘ └──────────────────────┘ └───────────────────────────────────┘ │ +└──────────────────────────────────────────────┬──────────────────────────────────────────────┘ + │ + Isolated Page Tables (CR3) + ▼ +┌─────────────────────────────────────────────────────────────────────────────────────────────┐ +│ RING 3: USERSPACE ECOSYSTEM │ +│ │ +│ [Core 1 Dedicated] [Core 2 Dedicated] [Core 3 Dedicated] [Core 3 Service] │ +│ gui_server sh init_server / procmgr uart_driver │ +│ ├── LVGL Compositor ├── osh Interactive ├── System Lifecycle └── 16550 Serial │ +│ ├── Windows/KDE Shell ├── Fastfetch Engine ├── Process Spawner Rendezvous │ +│ └── HW Mouse Cursor └── Command Suite └── Cap Table Registry Listen Loop │ +└─────────────────────────────────────────────────────────────────────────────────────────────┘ +``` + +### ⚡ Detailed Component Communication + ```mermaid -graph TD - subgraph Hardware [Physical & Virtual Hardware] - CPU["x86_64 SMP (4 Cores)"] - FB["Linear Framebuffer (1280x800@32bpp)"] - NIC["PCI Realtek RTL8139 Fast Ethernet"] - PS2["PS/2 Keyboard & Mouse"] - ACPI_HW["ACPI FADT / MADT / PM1a"] - RNG_HW["Hardware RNG (RDRAND/RDSEED)"] - end +sequenceDiagram + autonumber + actor User as PS/2 Mouse & Keyboard + participant IRQ as HW Interrupts (Core 0) + participant Kernel as Rust Microkernel (Ring 0) + participant GUI as gui_server (Core 1) + participant Shell as sh Terminal (Core 2) + participant Net as RTL8139 NIC (Core 3) - subgraph Ring0 [Rust Microkernel - Ring 0] - SCHED["SMP Scheduler (Core Affinity & Quantum)"] - VMM["4-Level Paging (PML4) & VMM"] - PFA["Physical Frame Allocator (Bitmap)"] - IPC["Fast-Path Rendezvous & Capability IPC"] - SIG["Signal Dispatcher (SIGSEGV/SIGILL/SIGFPE)"] - DMESG["Kernel Circular Log Ring Buffer"] - end - - subgraph Ring3 [Isolated User Space - Ring 3] - GUI["gui_server (LVGL Desktop Compositor) [Core 1]"] - SH["sh (Interactive UNIX Terminal Shell) [Core 2]"] - INIT["init_server (System Root Server) [Core 3]"] - UART["uart_driver (16550 Serial Driver) [Core 3]"] - PROC["procmgr (Process & Server Manager) [Core 3]"] - end - - Hardware <--> Ring0 - Ring0 <--> Ring3 + User->>IRQ: Mouse Move / Keypress Event + IRQ->>Kernel: Hardware Interrupt Vector 33 / 44 + Kernel->>GUI: Syscall 21: SYS_MOUSE_GET (x, y, buttons) + GUI->>GUI: Direct Framebuffer Raster Blit (60 FPS) + User->>Shell: Keypress: "ping 10.0.2.2" + Shell->>Kernel: Syscall 1: SYS_IPC_CALL (RTL8139 Endpoint) + Kernel->>Net: Synchronous Rendezvous IPC (Op: TX_PACKET) + Net->>Kernel: Syscall 20: SYS_DMA_ALLOC (Physical Ring Buffer) + Net-->>User: ICMP Echo Reply Packet Received! ``` ---