From 5bebd2b777efab9f404e43958117ae8fa97a6082 Mon Sep 17 00:00:00 2001 From: Minep Date: Wed, 22 Jun 2022 16:04:57 +0100 Subject: [PATCH] update readme --- README.md | 4 ++ docs/README_en.md | 94 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 docs/README_en.md diff --git a/README.md b/README.md index 8f5b488..cddf54b 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@

+

+ 简体中文 | English +

+ # LunaixOS Project LunaixOS - 一个简单的,详细的,POSIX兼容的(但愿!),带有浓重个人风格的操作系统。开发过程以视频教程形式在Bilibili呈现:[《从零开始自制操作系统系列》](https://space.bilibili.com/12995787/channel/collectiondetail?sid=196337)。 diff --git a/docs/README_en.md b/docs/README_en.md new file mode 100644 index 0000000..8f6db81 --- /dev/null +++ b/docs/README_en.md @@ -0,0 +1,94 @@ +

+ +

+ +

+ 简体中文 | English +

+ +# The LunaixOS Project +LunaixOS - A simple (yet naive), POSIX-complaint (hopefully!), operating system from scratch. This is started for educational & learning purpose, for my online video tutorial on OS development **in Chinese**:[*Do It Yourself an Operating System*](https://space.bilibili.com/12995787/channel/collectiondetail?sid=196337). + +## Features + +This operating system is a macro-kernel, has its root in Intel's x86 platform and its ecosystem. It runs in protected mode and uses 4GiB addressing with two-level paging mechanism. It does not have x86_64 variant and does not support multi-core machine. + +The memory is split into two parts, that is, 3GiB for user space (0x400000~0xBFFFFFFF) and 1GiB for kernel space (0xC0000000~0xFFFFFFFF). Such paradigm is a common practicing found in major operating systems, for example x86_32 version of Linux and Windows. For a more detailed arrangement of memory in LunaixOS, please refer to [LunaixOS Virtual Memory Mappings](docs/img/lunaix-os-mem.png). + + +The following list presents all features it does have in current stage. + ++ Multiboot for bootstrapping ++ APIC/IOAPIC as interrupt controller and programmable timer. ++ ACPI table parsing. ++ Virtual memory & paging ++ Memory management & demand paging ++ PS/2 Keyboard support ++ Muti-tasking and task management ++ 15 commonly used POSIX syscall([See Appendix 1](#appendix1)) ++ User Space ++ Signal + +## Project Structure + +| | | +|-----|------| +| [lunaix-os](lunaix-os/) | LunaixOS source code | +| [slides](slides/) | Slides used in my videos | +| [reference-material](reference-material/)| References | + +## Referenced Tutorial + +**THERE IS NONE !** The project is based solely on my understanding on operating system concepts and relevant research. And has referenced no third party tutorial nor open source project like the Linux or other hobbyist project. + +Thus, the author has devoted large amount of time to go through any related materials such as technical references, manuals, textbooks, and industrial standards. To further ensure the technology used and knowledge taught is up-to-date and is coming "straight from the factory". + +You can find most of aforementioned materials in [reference-material](reference-material/). + +The following list also enumerated such materials the author has used: + +#### Manuals, Technical References and Standards ++ [Intel 64 and IA-32 Architecture Software Developer's Manual (Full Volume Bundle)](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html) ++ [ACPI Specification (version 6.4)](https://uefi.org/sites/default/files/resources/ACPI_Spec_6_4_Jan22.pdf) ++ IBM PC/AT Technical Reference ++ IBM VGA/XGA Technical Reference ++ 82093AA I/O Advanced Programmable Controller (IOAPIC) (Datasheet) ++ MC146818A (Datasheet) ++ Intel 500 Series Chipset Family Platform Controller Hub (Datasheet - Volume 2) + +#### Textbook ++ *Computer System - A Programmer's Perspective Third Edition* (Bryant, R & O'Hallaron, D), a.k.a. CS:APP ++ *Modern Operating System* (Tanenbaum, A) + + +#### Website ++ [OSDev](https://wiki.osdev.org/Main_Page) - For material gathering. ++ [FreeVGA](http://www.osdever.net/FreeVGA/home.htm) - For VGA references. ++ GNU CC & LD online documentation. + +#### Others ++ Linux Manual - For learning the system call behavior on real machine. + + +## Appendix 1: Supported System Call + +### Unix/Linux/POSIX +1. `sleep(3)` +1. `wait(2)` +1. `waitpid(2)` +1. `fork(2)` +1. `getpid(2)` +1. `getppid(2)` +1. `getpgid(2)` +1. `setpgid(2)` +1. `brk(2)` +1. `sbrk(2)` +1. `_exit(2)` +1. `sigreturn(2)` +1. `sigprocmask(2)` +1. `signal(2)` +1. `kill(2)` + +### Unique to LunaixOS + +1. `yield` -- 2.27.0