docs: fix ASCII logo alignment in terminal window card and enhance Architecture Overview with topology matrix
This commit is contained in:
@@ -2,23 +2,6 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
```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)
|
||||
```
|
||||
|
||||
[-007acc?style=for-the-badge&logo=cpu)]()
|
||||
[]()
|
||||
[]()
|
||||
@@ -30,11 +13,38 @@
|
||||
|
||||
<p align="center">
|
||||
<b>A state-of-the-art, capability-based microkernel operating system written in Rust and modern C++20.</b><br>
|
||||
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.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
```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!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user