mirror of
https://github.com/rcore-os/rCore-Tutorial-v3.git
synced 2024-11-22 09:26:26 +04:00
update README.md, dev-env-info.md
This commit is contained in:
parent
3d2909e990
commit
bb5dca2158
70
README.md
70
README.md
@ -1,16 +1,76 @@
|
|||||||
# rCore-Tutorial-v3
|
# rCore-Tutorial-v3
|
||||||
rCore-Tutorial version 3.x
|
rCore-Tutorial version 3.5. See the [Documentation in Chinese](https://rcore-os.github.io/rCore-Tutorial-Book-v3/).
|
||||||
|
|
||||||
|
## news
|
||||||
|
- 2021.07.29: Now we are updating our labs. Please checkout chX-dev Branches for our current new labs. (Notice: please see the [Dependency] section in the end of this doc)
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This project aims to show how to write an **Unix-like OS** running on **RISC-V** platforms **from scratch** in **[Rust](https://www.rust-lang.org/)** for **beginners** without any background knowledge about **computer architectures, assembly languages or operating systems**.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
* Platform supported: `qemu-system-riscv64` simulator or dev boards based on [Kendryte K210 SoC](https://canaan.io/product/kendryteai) such as [Maix Dock](https://www.seeedstudio.com/Sipeed-MAIX-Dock-p-4815.html)
|
||||||
|
* OS
|
||||||
|
* concurrency of multiple processes
|
||||||
|
* preemptive scheduling(Round-Robin algorithm)
|
||||||
|
* dynamic memory management in kernel
|
||||||
|
* virtual memory
|
||||||
|
* a simple file system with a block cache
|
||||||
|
* an interactive shell in the userspace
|
||||||
|
* **only 4K+ LoC**
|
||||||
|
* [A detailed documentation in Chinese](https://rcore-os.github.io/rCore-Tutorial-Book-v3/) in spite of the lack of comments in the code(English version is not available at present)
|
||||||
|
|
||||||
|
## Run our project
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
|
||||||
|
## Working in progress
|
||||||
|
|
||||||
|
Now we are still updating our project, you can find latest changes on branches `chX-dev` such as `ch1-dev`. We are intended to publish first release 3.5.0 after completing most of the tasks mentioned below.
|
||||||
|
|
||||||
|
Overall progress: ch7
|
||||||
|
|
||||||
|
### Completed
|
||||||
|
|
||||||
|
* [x] automatically clean up and rebuild before running our project on a different platform
|
||||||
|
* [x] fix `power` series application in early chapters, now you can find modulus in the output
|
||||||
|
* [x] use `UPSafeCell` instead of `RefCell` or `spin::Mutex` in order to access static data structures and adjust its API so that it cannot be borrowed twice at a time(mention `& .exclusive_access().task[0]` in `run_first_task`)
|
||||||
|
* [x] move `TaskContext` into `TaskControlBlock` instead of restoring it in place on kernel stack(since ch3), eliminating annoying `task_cx_ptr2`
|
||||||
|
* [x] replace `llvm_asm!` with `asm!`
|
||||||
|
* [x] expand the fs image size generated by `rcore-fs-fuse` to 128MiB
|
||||||
|
* [x] add a new test named `huge_write` which evaluates the fs performance(qemu\~500KiB/s k210\~50KiB/s)
|
||||||
|
* [x] flush all block cache to disk after a fs transaction which involves write operation
|
||||||
|
|
||||||
|
### Todo(High priority)
|
||||||
|
|
||||||
|
* [ ] bug fix: we should call `find_pte` rather than `find_pte_create` in `PageTable::unmap`
|
||||||
|
* [ ] bug fix: check validity of level-3 pte in `find_pte` instead of checking it outside this function
|
||||||
|
* [ ] use old fs image optionally, do not always rebuild the image
|
||||||
|
* [ ] replace `spin::Mutex` with `UPSafeCell` before SMP chapter
|
||||||
|
* [ ] add new system calls: getdents64/fstat
|
||||||
|
* [ ] shell functionality improvement(to be continued...)
|
||||||
|
* [ ] add a new chapter about synchronization & mutual exclusion(uniprocessor only)
|
||||||
|
* [ ] give every non-zero process exit code an unique and clear error type
|
||||||
|
* [ ] effective error handling of mm module
|
||||||
|
|
||||||
|
### Todo(Low priority)
|
||||||
|
|
||||||
|
* [ ] rewrite practice doc and remove some inproper questions
|
||||||
|
* [ ] provide smooth debug experience at a Rust source code level
|
||||||
|
* [ ] format the code using official tools
|
||||||
|
* [ ] support Allwinner's RISC-V D1 chip
|
||||||
|
|
||||||
## Dependency
|
## Dependency
|
||||||
|
|
||||||
### Binaries
|
### Binaries
|
||||||
|
|
||||||
* rustc 1.56.0-nightly (08095fc1f 2021-07-26)
|
* rustc 1.56.0-nightly (b03ccace5 2021-08-24)
|
||||||
|
|
||||||
* qemu: 5.0.0
|
* qemu: 5.0.0
|
||||||
|
|
||||||
* rustsbi-lib: 0.2.0-alpha.4
|
* rustsbi: qemu[7d71bfb7] k210[563144b0]
|
||||||
|
|
||||||
rustsbi-qemu: d4968dd2
|
### Crates
|
||||||
|
|
||||||
rustsbi-k210: b689314e
|
We will add them later.
|
||||||
|
16
dev-env-info.md
Normal file
16
dev-env-info.md
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# rCore-Tutorial-v3
|
||||||
|
rCore-Tutorial version 3.x
|
||||||
|
|
||||||
|
## Dependency
|
||||||
|
|
||||||
|
### Binaries
|
||||||
|
|
||||||
|
* rustc 1.56.0-nightly (08095fc1f 2021-07-26)
|
||||||
|
|
||||||
|
* qemu: 5.0.0
|
||||||
|
|
||||||
|
* rustsbi-lib: 0.2.0-alpha.4
|
||||||
|
|
||||||
|
rustsbi-qemu: d4968dd2
|
||||||
|
|
||||||
|
rustsbi-k210: b689314e
|
Loading…
Reference in New Issue
Block a user