-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
15 additions
and
0 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 |
---|---|---|
@@ -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 |