Fix: stale dnode caching instance cause locked-up upon accessing (#52)
[lunaix-os.git] / docs / README_en.md
index 2a115ca8db43eb7eac765f493bf90e54f53479a1..a7dd4156c3cbfcdbc5b10308059da6bf9fbe11f2 100644 (file)
@@ -3,19 +3,19 @@
 </p>
 
 <p align="center">
 </p>
 
 <p align="center">
-  <a href="../README.md"><b>简体中文</b></a> | <span><b>English</b></span>
+  <a href="../README.md"><b>简体中文</b></a> | <a href="#the-lunaixos-project"><b>English</b></a>
 </p>
 
 </p>
 
-# The LunaixOS Project 
+# 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
 
 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. 
+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 virtual address space is divided 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](img/lunaix-os-mem.png).
 
 
 The virtual address space is divided 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](img/lunaix-os-mem.png).
 
-
 The following list presents all features it does have in current stage.
 
 + Multiboot for bootstrapping
 The following list presents all features it does have in current stage.
 
 + Multiboot for bootstrapping
@@ -25,15 +25,19 @@ The following list presents all features it does have in current stage.
 + Memory management & demand paging
 + PS/2 Keyboard support
 + Muti-tasking and task management
 + Memory management & demand paging
 + PS/2 Keyboard support
 + Muti-tasking and task management
-+ 47 commonly used POSIX syscall([See Appendix 1](#appendix1))
++ 50 commonly used POSIX syscall([See Appendix 1](#appendix1))
 + User Space
 + Signal
 + PCI 3.0
 + PCIe 1.1 (WIP)
 + Serial ATA AHCI
 + User Space
 + Signal
 + PCI 3.0
 + PCIe 1.1 (WIP)
 + Serial ATA AHCI
-+ Virtual File System
++ File System
+  + Virtual File System
+  + ISO9660
+    + Original
+    + Rock Ridge Extension (WIP)
 + GDB Remote debugger (via UART)
 + GDB Remote debugger (via UART)
-  
+
 The OS has been tested in the following environments, including both virtual and bare-metal.
 
 + QEMU (>=7.0.0)
 The OS has been tested in the following environments, including both virtual and bare-metal.
 
 + QEMU (>=7.0.0)
@@ -101,7 +105,7 @@ To maximize the value of this section, we will provide some FAQ below that hopef
 
 This is a issue related to misconfiguration of ACPI table in QEMU, and has been addressed in version 7.0.0.
 
 
 This is a issue related to misconfiguration of ACPI table in QEMU, and has been addressed in version 7.0.0.
 
-#### Q2: General Protection exception get triggered.
+#### Q2: General Protection exception get triggered
 
 It is possible a race condition result from multiprogramming. This is not possible in current stage, and we however encourage you to report in case of it.
 
 
 It is possible a race condition result from multiprogramming. This is not possible in current stage, and we however encourage you to report in case of it.
 
@@ -132,30 +136,36 @@ The following list also enumerated such materials the author has used:
 + PCI Express Base Specification, Revision 1.1
 + PCI Firmware Specification, Revision 3.0
 + Serial ATA - Advanced Host Controller Interface (AHCI), Revision 1.3.1
 + PCI Express Base Specification, Revision 1.1
 + PCI Firmware Specification, Revision 3.0
 + Serial ATA - Advanced Host Controller Interface (AHCI), Revision 1.3.1
-+ Serial ATA: HIgh Speed Serialized AT Attachment, Revision 3.2
++ Serial ATA: High Speed Serialized AT Attachment, Revision 3.2
 + SCSI Command Reference Manual
 + ATA/ATAPI Command Set - 3 (ACS-3)
 + SCSI Command Reference Manual
 + ATA/ATAPI Command Set - 3 (ACS-3)
++ [ECMA-119 (ISO9660)](https://www.ecma-international.org/publications-and-standards/standards/ecma-119/)
++ Rock Ridge Interchange Protocol (RRIP: IEEE P1282)
++ System Use Sharing Protocol (SUSP: IEEE P1281)
++ Tool Interface Standard (TIS) Portable Formats Specification (Version 1.1)
 
 **DISCLAIMER: All rights of PCI-related specification is reserved by PCI-SIG. It is provided ONLY for learning purpose. Any commercial use should purchase a copy from PCI-SIG**
 
 #### Textbook
 
 **DISCLAIMER: All rights of PCI-related specification is reserved by PCI-SIG. It is provided ONLY for learning purpose. Any commercial use should purchase a copy from PCI-SIG**
 
 #### Textbook
+
 + *Computer System - A Programmer's Perspective Third Edition* (Bryant, R & O'Hallaron, D), a.k.a. CS:APP
 + *Modern Operating System* (Tanenbaum, A)
 
 + *Computer System - A Programmer's Perspective Third Edition* (Bryant, R & O'Hallaron, D), a.k.a. CS:APP
 + *Modern Operating System* (Tanenbaum, A)
 
+#### Website
 
 
-#### 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.
 + [PCI Lookup](https://www.pcilookup.com/) - For device look up
 
 #### Others
 + [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.
 + [PCI Lookup](https://www.pcilookup.com/) - For device look up
 
 #### Others
-+ Linux Manual - For learning the system call behavior on real machine.
 
 
++ Linux Manual - For learning the system call behavior on real machine.
 
 ## Appendix 1: Supported System Call<a id="appendix1"></a>
 
 **Unix/Linux/POSIX**
 
 ## Appendix 1: Supported System Call<a id="appendix1"></a>
 
 **Unix/Linux/POSIX**
+
 1. `sleep(3)`
 1. `wait(2)`
 1. `waitpid(2)`
 1. `sleep(3)`
 1. `wait(2)`
 1. `waitpid(2)`
@@ -177,7 +187,7 @@ The following list also enumerated such materials the author has used:
 2. `write(2)`
 2. `open(2)`
 2. `close(2)`
 2. `write(2)`
 2. `open(2)`
 2. `close(2)`
-2. `mkdir(2)`
+2. `mkdir(2)`
 2. `lseek(2)`
 2. `readdir(2)`
 2. `readlink(2)`※
 2. `lseek(2)`
 2. `readdir(2)`
 2. `readlink(2)`※
@@ -200,9 +210,12 @@ The following list also enumerated such materials the author has used:
 2. `setxattr(2)`※
 2. `fgetxattr(2)`※
 2. `fsetxattr(2)`※
 2. `setxattr(2)`※
 2. `fgetxattr(2)`※
 2. `fsetxattr(2)`※
-2. `ioctl(2)`
+2. `ioctl(2)`
 2. `getpgid(2)`
 2. `setpgid(2)`
 2. `getpgid(2)`
 2. `setpgid(2)`
+2. `mmap(2)`
+2. `munmap(2)`
+2. `execve(2)`
 
 **LunaixOS**
 
 
 **LunaixOS**