rCore-Tutorial-v3
rCore-Tutorial-v3 copied to clipboard
Let's write an OS which can run on RISC-V in Rust from scratch!
当user目录下的app过多,超出MAX_APP_NUM限制;或者MAX_APP_NUM过大,使得某些部分溢出,应该让编译不通过。
看到 `user` 文件夹下有 TCP 和 UDP 的测例,并且成功运行了,因此想试试能否跑 [iPerf](https://iperf.fr/)。请问这是否可行,会有哪些可能的障碍,谢谢!
# 无栈协程的方案之一 -- 达夫设备 ( 从语言的角度来看 ) > 这是属于第八章的主题,是自己学习协程的一点心得,希望对相应的工作有所帮助. 前置的一些文章 ( 建议看一下 ) - [深入理解达夫设备](https://mthli.xyz/duff-device/) - [Coroutines in C](https://www.chiark.greenend.org.uk/~sgtatham/coroutines.html) 达夫设备的出现是个十分偶然的"故事",但是这个"故事"却比较好的给出了一个在栈中捕获状态机的方案, 即无栈协程的方案: 在栈中利用 `switch`(in C++), `loop`(Rust) . 前者Boost(v1.66)已经有相关的设计实现,其源码在`boost/asio/coroutine.hpp`和`boost/asio/yield.hpp`,中, 后者则是自己偶然的一个Rust尝试,见如下代码: ```rust #[allow(unreachable_code)]...
> 目前基本完成了`nix flakes`的配置,可以在`nix`环境下直接通过`nix develop`打开执行环境,尽可能的降低课程依赖的安装对于外界环境的影响也可以更好的移除,*可能具有更好的平台适用性,但是我没测试过*。 *注意:使用本文的方法最好需要有一定`nix`的使用基础,以在可能出错的地方修改代码使之正常运行。(本文的代码尚未完全测试)* [配置文件最新地址](https://gist.github.com/jackyliu16/e6952c26a3810e4b46a1d348831984dd) 如果在使用的过程中遇到了任何问题,欢迎回复(就是不一定我能解决 ```nix # update in 2023-05-24 21:26 { description = "A devShell for rCore"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # nixpkgs-qemu7.url = "https://github.com/NixOS/nixpkgs/archive/7cf5ccf1cdb2ba5f08f0ac29fc3d04b0b59a07e4.tar.gz";...
如题。@Ydrmaster在做一个[rustsbi-tutorial](https://github.com/rustsbi/rustsbi-tutorial),应该能够满足我们的tutorial项目的需求,我们正在跟进该项目的进展。
详情参见[这里](https://github.com/LearningOS/rCore-Tutorial-Code-2023S/pull/7)。
目前各分支上仍存在一些手动`drop`,其中有些是不必要的,与调度相关的必要的`drop`也可以通过类似于`ch9`分支上的`exclusive_session`接口来规避。无需手动`drop`是Rust相比C语言的一大优势,要考虑或借鉴一种更好的设计达成这一目标。