-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
update .gitignore README.md dev-env-info.md
- Loading branch information
Showing
3 changed files
with
78 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,3 +12,4 @@ easy-fs/target/* | |
easy-fs-fuse/Cargo.lock | ||
easy-fs-fuse/target/* | ||
tools/ | ||
pushall.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,67 @@ | ||
# 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/). | ||
|
||
## Dependency | ||
## news | ||
- 2021.11.20: 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) | ||
|
||
### Binaries | ||
## Overview | ||
|
||
* rustc 1.56.0-nightly (08095fc1f 2021-07-26) | ||
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**. | ||
|
||
* qemu: 5.0.0 | ||
## Features | ||
|
||
* rustsbi-lib: 0.2.0-alpha.4 | ||
* 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) | ||
|
||
rustsbi-qemu: d4968dd2 | ||
## Run our project | ||
|
||
rustsbi-k210: b689314e | ||
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 | ||
* [x] replace `spin::Mutex` with `UPSafeCell` before SMP chapter | ||
* [x] add codes for a new chapter about synchronization & mutual exclusion(uniprocessor only) | ||
|
||
### Todo(High priority) | ||
|
||
* [ ] support Allwinner's RISC-V D1 chip | ||
* [ ] 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 | ||
* [ ] add new system calls: getdents64/fstat | ||
* [ ] shell functionality improvement(to be continued...) | ||
* [ ] 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 | ||
|
||
|
||
### Crates | ||
|
||
We will add them later. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# rCore-Tutorial-v3 | ||
rCore-Tutorial version 3.x | ||
|
||
## Dependency | ||
|
||
### Binaries | ||
|
||
* rustc: 1.57.0-nightly (e1e9319d9 2021-10-14) | ||
|
||
* cargo-binutils: 0.3.3 | ||
|
||
* qemu: 5.0.0 | ||
|
||
* rustsbi-lib: 0.2.0-alpha.4 | ||
|
||
rustsbi-qemu: d4968dd2 | ||
|
||
rustsbi-k210: b689314e |