app 都是通过构建脚本自动生成链接脚本来加载到内核中的,这非常有意思,我称之为“交叉构建”(化用“交叉编译”)——要清晰地认识到,内核代码和用户代码是完全分离的,rCore 中依靠 user 来编译出可运行在内核上的代码,pa 则是使用 navy-app。这打破了我们平时思考的习惯。我们能在电脑上写代码、跑起来,其实是因为 windows 有能在自己上面跑的面向 windows 的编译器,它可能是自举的,也可能是用其他 os 交叉编译了一部分的。若是没写好这样的自给自足的编译器,就只能向 rCore 一样通过元编程来加载。
我是在一年前关注到“开源操作系统训练营”这个活动的,但是苦于那时在进行本科毕业设计工作,没有抽出时间来参加。在那时,我就已经对系统软件、 Rust很感兴趣了,因此本科毕业设计做的也是 OS 相关的工作。如今在研一,课业之外有了一部分时间,想用来提升自身对 OS 前沿的认识,同时积累一些工程经验,于是便参加了今年的开源 OS 训练营。
后来,做毕业设计的时候,导师偶尔会提到一些清华大学陈渝老师组的一些 OS 方面的前沿研究工作,比如押宝 Rust、组件化 OS 之类的。因此,我对 Rust 的认识也在发生转变。实际上,OS 发展中一个重要的影响因素就是系统级编程语言,而 Rust 作为一门比较新的系统级编程语言,未来势必影响 OS 的发展。