矽望泛在操作系统训练营
矽望是一个开源社区,由一群系统软件爱好者自发形成,致力于探索和构建适合特定泛在应用场景的新型态操作系统。
在当前阶段,主要目标是针对实时非实时任务混合运行的边缘计算场景,如医疗设备、车辆控制、工业控制、无人系统等领域,面向非对称多处理器SoC(MCU, CPU, DSP等)新型硬件平台对现有操作系统管理机制带来的挑战,在操作系统架构和实现机制上尝试创新:
- 在架构方面,现有宏内核存在系统复杂性高的问题,微内核存在性能差的问题,我们将借鉴separation kernel、unikernel等设计思想,探索新型态的操作系统架构,尝试新的应用运行和资源管理方式。
- 在实现机制方面,现有操作系统主要采用C语言实现,C语言代码容易存在内存方面的缺陷。我们将用内存安全的Rust语言构建安全、高效、专用的新型态泛在操作系统。
为了实现上述目标,社区将主要聚焦下述项目:
- 一个轻量化的Type 1 hypervisor hvisor,主要遵循separation kernel思想,主要功能是管理系统物理资源,将资源组织到各个分区(zone)中,通过严格分区保证各个分区在时间和空间上的严格隔离,从而可以同时支持各个分区的系统独立互不干扰运行。分区里部署运行的系统称为租户tenant,常以轻量虚拟机方式运行。常见的租户有标准Linux OS,Unikernel OS,Android OS,实时RTOS甚至裸机应用。通过Type 1 hypervisor的分区隔离,实时RTOS和非实时的Linux或Android虚拟机可以正常运行,满足各自的应用需求。separation kernel常见于面向高可靠高安全(safety)应用的操作系统,如PikeOS。 在目前设计中,zone0也称为根zone(root zone),承担系统管理任务,tenant 一般是简化版的Linux。zoneU一般承担高算力计算任务,tenant 可以是unikernel OS,或者Linux OS;承担实时计算任务的zoneR,tenant 一般是面向MCU的RTOS。
- 一个兼容Linux应用的轻量化库操作系统RuxOS,主要遵循unikernel设计思想,考虑到边缘泛在计算场景下,应用通常数目有限且相对固定,因此将操作系统简化设计为只支持单应用,将内核功能封装为库,以系统调用的形式提供给应用,应用直接运行在内核态。这种库型态的操作系统应用性能会有极大提升,安全问题(security)主要交给底层的Type 1 hypervisor解决。库型态的操作系统需要良好的工具支持,以方便用户根据单一应用生成构造可运行的二进制镜像,如unikraft。
- 一组用Rust语言实现的操作系统基础构件(component),如文件系统、网络协议栈、内存管理器、消息通信机制等。基于这些构件可实现特定的库操作系统。
底层硬件方面,将面向非对称多处理器SoC(MCU, CPU, FPGA,GPU,NPU及DSP等ASIC)新型硬件平台。前期将基于QEMU,之后将基于物理开发板进行。
