Skip to content

Commit

Permalink
Create Alien OS说明
Browse files Browse the repository at this point in the history
  • Loading branch information
Godones authored Nov 2, 2023
1 parent 2c3ae9d commit f81f032
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions doc/Alien OS说明
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Alien是一个用 Rust 实现的基于riscv平台的简单操作系统。目的是探索如何使用模块来构建一个完整的操作系统,因此系统是由一系列独立的模块组成的。在大多数os开发当中,开发者更倾向与将整个OS内部组件混合在一个系统中,但同时也会引用一些外部模块,这导致后续如果有想开发os的人如果想要借鉴其某个模块实现时,只能Copy其代码,并通过一些必要修改从而适配自己的os,周而复始,这些模块在各个os中重复拷贝。我们认为这种代码合作方式说不够优雅的,既然这些模块被这么多os使用,足以说明这些模块的公用性,如果我们可以将这些模块独立出来,作为os的一个依赖引入,这样其它开发者也只需要引用这个库即可。我们认为这样做有这些好处:

- 组件分离,我们可以单独对os子模块进行代码编写,同时独立测试
- 模块重用,开发者可以方便地找到需要的模块并进行引用
- 高效开发,独立模块允许开发者可以互相合作从而打磨得更好
- 精简内核,允许内核专注于最核心的功能,缩减内核开发难度
Alien OS在开发初期虽然尽量遵守模块化的原则,尽量把功能隔离到外部模块中,但迫于时间关系,很多模块实现得并不好,而且我们发现,Rust社区中其实已经存在一些模块可以供我们利用。因此在后面的开发当中,我们主要集中精力对os的模块进行了整理和重构,在尽可能重用社区已有模块的前提下,对其它模块进行重写和打磨,以期减少许多之前存在的不安全代码和一些trick。我们可以在这里看到目前已有的模块。但这些模块还不够多,内核中还有很多功能可以形成独立模块,这正是我们想要做的事情。

目前我正在做的事情是重构内核最重要的文件系统部分,之前的VFS框架被完全重写,不再保留C风格,而是使用Rust的类型系统来让其更易扩展、更更易阅读。这涉及到内核大量修改,因为内核的许多功能跟文件系统相关,但我认为这是有价值的,因为新的框架可以精简内核文件系统相关系统调用实现,从目前的观察来看,这部分代码至少减少了一半,但这部分的修改完成后,系统需要重新对所有测例进行重新测试,从而确保修改后的系统是正确的。

欢迎有兴趣的同学一起参与开发,深入了解os的真正实现。

这个网址中包含了一系列报告,其中第17场也包含了Alien os的开发报告,但是目前系统还没有上传后面的录播。各位同学可以查看之前的报告,其中也包含了其它os的开发过程以及许多其它有趣的任务。

联系方式:GitHub或者wx:godones001

0 comments on commit f81f032

Please sign in to comment.