-# LunaixOS Project
-
-LunaixOS - 一个简单的,详细的,POSIX兼容的(但愿!),带有浓重个人风格的操作系统。开发过程以视频教程形式在Bilibili呈现:[《从零开始自制操作系统系列》](https://space.bilibili.com/12995787/channel/collectiondetail?sid=196337)。
-
-## 当前进度以及支持的功能
-
-该操作系统支持x86架构,运行在保护模式中,采用宏内核架构,目前仅支持单核心。内存结构采用经典的3:1划分,即低3GiB为用户地址空间(0x400000 ~ 0xBFFFFFFF),内核地址空间重映射至高1GiB(0xC0000000 ~ 0xFFFFFFFF)。内存的详细布局可参考[LunaixOS内存地图](docs/img/lunaix-os-mem.png)
-
-在下述列表中,则列出目前所支持的所用功能和特性。列表项按照项目时间戳进行升序排列。
-
-+ 使用Multiboot进行引导启动
-+ APIC/IOAPIC作为中断管理器和计时器
-+ ACPI
-+ 虚拟内存
-+ 内存管理与按需分页(Demand Paging)
-+ 键盘输入
-+ 多进程
-+ 50个常见的Linux/POSIX系统调用([附录1](#appendix1))
-+ 用户模式
-+ 信号机制
-+ PCI 3.0
-+ PCIe 1.1 (WIP)
-+ Serial ATA AHCI
-+ 文件系统
- + 虚拟文件系统
- + ISO9660
- + 原生
- + Rock Ridge拓展
-+ 远程GDB串口调试 (COM1@9600Bd)
-+ 用户程序加载与执行
-+ 动态链接 (WIP)
-
-已经测试过的环境:
-
-+ QEMU (>=7.0.0)
-+ Bochs(SATA功能不支持)
-+ Virtualbox
-+ Dell G3 3779
-
-## 目录结构
-
-| | |
-| ----------------------------------------- | ---------------------------- |
-| [lunaix-os](lunaix-os/) | LunaixOS源代码 |
-| [slides](slides/) | 视频中所用的幻灯片和补充材料 |
-| [reference-material](reference-material/) | 标准,技术文档和参考文献 |
-
-## 编译与构建
-
-### 环境搭建
-
-构建该项目需要满足以下条件:
-
-+ gcc (目标平台: i686-elf)
+# The Lunaix Project
+
+The Lunaix, LunaixOS, or Lunaix kernel to be exact, is a multi-architectural general purpose kernel written from scratch by the author *independently*. And it is the author's years-long personal endeavor and also a challenge to oneself for writing a functioning kernel **without** any external reference such as existing implementation, tutorial and books (with code) on kernel design.
+
+The overall design is aimed to be modern and POSIX-compliance. In a nutshell, Lunaix is:
+
++ fully-preemptive
++ modular design with configurable components at compile-time and extendable subsystems
++ high-performance by utilising advanced caching techniques and infrastructure.
++ fault-tolerance with sophisticated builtin error handling and tracing techniques.
++ robust in nature with techniques such as proactive deadlock detection and driver isolation mechanism.
+
+To give a better understanding (and appreciation) of the works, the following list has been compiled with all feature that lunaix currently supported:
+
++ Multi-ISA
+ + x86_32
+ + x86_64
+ + Aarch64 (W.I.P)
++ Boot protocol abstraction
++ Platform resource management and definition
+ + ACPI
+ + Devicetree
++ Memory management
+ + multi-architecture abstraction
+ + on-demand paging
+ + copy-on-write and page sharing
+ + compound page support
+ + explicit huge page support (sorry, not THP!)
+ + reverse mapping indexing (rmap)
+ + memory compaction (W.I.P)
+ + slab-alike object allocator
++ Multi-threadingg and multi-tasking
+ + Protection level and memory space isolation
+ + Native threading support (no more lightweight process nonsense)
+ + Signal handling
+ + Kernel-level multi-tasking (i.e. kernel threads)
+ + Round-robin scheduling (for now)
+ + Fully-preemptive kernel design
+ + taskfs: file system interface to process and threads
++ File system
+ + virtual file system framework
+ + ...with POSIX compliant file system interface
+ + mountable file system
+ + page cache for file IO
+ + node cache for vfs structure representation.
+ + ext2 (rev.0, rev.1)
+ + iso9660 (rock-ridge)
+ + twifs: file system interface to kernel states.
++ Device management and interrupt handling
+ + architectural decoupled design
+ + generalised driver framework
+ + generalised irq framework
+ + driver modularisation design
+ + support asynchronous device model
+ + devfs: file system interface to device subsystem
++ Block I/O (blkio)
+ + generalised block IO interface and encapsulation
+ + blkio request caching
+ + asynchronous blkio operation in nature
++ Serial I/O
+ + POSIX-compliant serial port model
+ + serial device driver framework (part of driver framework)
++ Caching Infrastructure
+ + primtive: generic sparse associative array
+ + LRU replacement policy and pooling
+ + kernel daemon for periodical cache eviction
++ Error handling and detection
+ + stack back-tracing with symbol resolution
+ + nested exception unfolding
+ + CPU state dumping
+ + Deadlock/hung-up detection
+
+For the device driver that is currently support see below:
+
++ Arhcitecture Neutral
+ + UART 16650-compatible driver
+ + Serial ATA AHCI
+ + PCI 3.0
+ + PCIe 1.1
+ + Standard VGA
++ Intel x86
+ + RTC (Intel PCH)
+ + IOAPIC irq controller
+ + APIC Timer
+ + Legacy i8042 keyboard controller
++ ARM
+ + GICv3
+ + PL011 (W.I.P)
+
+By the way, do you know there is an online video course by the author on the design of lunaix? [Check it out](https://space.bilibili.com/12995787/channel/collectiondetail?sid=196337) (although it is in Chinese!)
+
+## Project Structure
+
+| | |
+|-----|------|
+| [lunaix-os](../lunaix-os/) | LunaixOS source code |
+| [slides](../slides/) | Slides used in my videos |
+| [reference-material](../reference-material/)| References |
+
+## Compile and Build
+
+You will need following dependencies in order to build Lunaix
+
++ gcc (recommend v12+)