- 论坛徽章:
- 0
|
本帖最后由 fefacn 于 2016-10-09 20:27 编辑
最近在看 Andrew Tanenbaum 的《操作系统设计与实现》,因为我有一个想法:
用sel4作为微内核,然后将 FreeBSD 改造成几个运行在其上的服务,比如进程管理、文件系统、设备驱动、网络服务……
考虑到现有的 FreeBSD 用户进程都是向 kernel 发送系统调用请求,而 sel4 没那么多系统调用,原有的系统调用大多数要靠微内核和一个或几个服务来共同实现,所以可以做一个响应 posix 系统调用呼叫的服务,姑且叫做“FreeBSD 粘合层”(或 posix 粘合层)服务。虽然,微内核发送消息本身就比宏内核增加了系统开销,而多了一个粘合层更加剧了这种开销,但这样可以将 FreeBSD 程序直接拿来用,可以解决新架构软件生态的问题,此为其一;
其二,直接面向新架构开发的程序(或移植现有的),就不需要向“FreeBSD 粘合层”发送系统调用的请求了,而是直接向内核或所需的服务发送消息(IPC)。省掉一个粘合层,相信性能会有一定的提高,应该能更接近宏内核的系统调用效率吧。
希望感兴趣的能一起讨论一下。
需要强调的是,本人只有C语言入门水平,写过一点点php、javascript,这些想法,纯粹是处于兴趣。这些想法的理由有以下几点:
1.为啥是微内核?喜欢微内核的设计思想,觉得将 OS 核心功能缩小,能降低代码出错率,提高系统稳定性,方便移植;将其他重要功能移出核心态,并且分割成运行在独立地址空间的用户态,便于系统功能的扩展,应该也能降低各个服务代码的出错率,而且即使出错也不会导致系统崩溃,网上论述很多,本人不想赘述。
2.为啥是 sel4?据说 sel4 很NB,据说通过形式验证是个不会出错的内核,这么好,还开源,为啥不用?!
3.为啥是 FreeBSD?喜欢 FreeBSD!因为 BSD 许可!因为llvm/clang,因为 ports/pkg,因为zfs……等等这些包含在 FreeBSD 基本系统里的优秀代码。 据说已经有一个项目,将 linux 运行在 L4 上,叫做 L4Linux,但是不喜欢 Linux!因为不喜欢GPL,特别是 GPL v3。
目前的打算是:
先啃书,《操作系统设计与实现》、《C Primer Plus》、《C++ Primer Plus》……,看完之后再研究 sel4、FreeBSD 的源代码,然后开刀……(本人闲暇时间还是颇多的,自己手动滑稽一下吧) |
|