Markdown to HTML

AuroBreeze Blog

A tiny, fast Markdown blog for GitHub Pages.

ArceOS start

这几天一直都在参加rcore的比赛,这几天的赛段是写ArceOS中的题目

尽管自己无权评判他人的设计思路,但是这些只是我的个人感受,并无恶意。

前几天在写rcore的时候,给我的感觉就是,rust不太适合拿来做操作系统,他的抽象过多,不适合项目的维护,(不知道为什么,感觉rust要是做大型项目的话,感觉也不太合适,不知道是我自己没有参加过中型或大型项目的原因)。

在看ArceOS的时候,很多的库也是直接从外面导入进来的,有时候想看下面的代码,还得翻到导入的库中,不是很方便,而且,虽然是隐藏了底层的开发细节,但是,操作系统最应该关注的不也有这些吗?所以我感觉还是移除外部库的依赖,手写底层的控制。

在就是嵌套的问题,嵌套问题和上面也有很大的联系,最难懂的还是要使用的外部的导入库,不方便翻库代码,也就不方便写。

在就是所见即所得的问题,rust作为一个高度抽象,为内存安全所设计的语言,不和C一样,有所见即所得的感受,大量的traitglobalallocate等,致使在写OS的时候,自己无法完全的掌控代码的意图,你永远不知道你这行代码下面会牵动什么东西,会给你编译出什么东西来。

对我而言,rust的定位,应该是高性能的底层软件设计,以及必要的OS设计和支持,所以新人,不是很建议用rustOS,这样会对OS的底层产生隔阂。

不过,在设计思路上,ArceOS的设计思路还是蛮新奇的,而且多架构的支持也是很不错,通过抽象,可以很优雅的实现一些C写起来很麻烦的内容,就像页表的复制,清除等等,当然,我看这部分内容是使用的外部的库,当然这也是rust的优势,hhh

内存安全当然是不必多说的,使用Drop来管理内存的释放,很优雅,也不会忘记执行(自动的),很方便,这是C难以企及的,不知道C能不能再OS中使用类似RAII的管理方式,如果可以的话,那也很不错。

而且,得益于feature的特性,可以很方便的裁剪内核内容,确实是很方便,当然,也要写一堆的feature

不过,按我的性子,还是比较喜欢CRust确实是抽象而又优雅,但是因为safe的原因,离真实的硬件掌控又远了一步,无可避免的牺牲。

总的来说,ArceOS确实是个很不错的项目,基于Rust构建的Unikernel项目,以库为核心,将多个内容拆分,即可以提高开发速度,又能保证各个库之间的测试完整性,我相信后面再改改,整个项目可以做的更加优雅。