9

面向物联网的微内核SynestiaOS

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI3NzA5MzUxNA%3D%3D&%3Bmid=2664608680&%3Bidx=1&%3Bsn=5cbb2a90899b50fc396680614e6a02fb
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

SynestiaOS是一个面向物联网设备的基于标准的开源操作系统,面向机器人,智能手表,电视和汽车信息娱乐等平台。由 Thought Works 未济实验室   和    陈莉君 名师工作室    的同学们一起开发。

640?wx_fmt=png

随着物联网、自主驾驶和机器人等技术的发展,操作系统迎来了新的切入点和机遇。主要制造商在操作系统领域都有所部署,例如谷歌的 Fuchsia,亚马逊的 FreeRTOS,阿里的 AliOS-Thing,华为的LiteOS,腾讯的TinyOS,以及国产知名的RT-Thread和RT-Thread smart等。

640?wx_fmt=png

相对于传统的嵌入式RTOS而言,Synestia更倾向于在硬件配置较高的智能IoT设备上而不是硬件配置有限的小型单功能IoT设备运行。SynestiaOS开源免费,拥有独立的知识产权,可以根据用户需求进行定制,以符合实际场景。

640?wx_fmt=png

SynestiaOS 采用微内核架构,内核态中仅维护进程管理子系统和内存管理子系统,SynestiaOS 采用 CFS 调度算法,目前实现了内核线程的主调度器和周期性调度器;内存管理部分在 ARM32 上开启 LPAE 模式,采用虚拟内存管理,目前实现了Heap、Stack、Page 的管理以及MMU的驱动。

由于 SynestiaOS 采用微内核架构,宏内核操作系统的文件系统、网络协议栈在 SynestiaOS 中都位于用户态,所以文件系统和网络协议栈或其他子系统在通信的时候,就存在消息传递的问题,所以在系统调用层和进程管理内存管理两大子系统之间,SynestiaOS 设置消息队列,以解决用户态子系统和内核态子系统之间的通信。

在文件系统中,SynestiaOS 吸取了Linux内核的优势,实现了虚拟文件系统VFS,并正在实现Ext2文件系统的方法。目前系统启动后,可以正常加载和读取Ext2文件系统。

SynestiaOS 遵循POSIX标准,除了提供基础的 LibC、Labmath 库以外,考虑到一些物联网设备会带有终端显示器,SynestiaOS 还提供了LibGUI、LibDFX(2D/3D)库以供开发者使用。

介于硬件平台和操作系统中间的 HAL 部分,SynestiaOS目前实现了树莓派硬件的中断和Timer机制。后续 SynestiaOS 会支持更多的硬件种类并增加64位支持。

以下是 SynestiaOS 的开发计划。

640?wx_fmt=png

目前的工作是添加 ELF Loader、多核心支持、用户态进程,后续在用户态实现网络协议栈并增加虚拟机。

以下是 SynestiaOS 目前的系统界面截图(QEMU虚拟环境下),这是系统启动动画:

640?wx_fmt=png

每一个线程开启一个窗口,也支持按钮,另外测试了2D图形库。

640?wx_fmt=png

系统启动后,成功加载并读取Ext2文件系统:

640?wx_fmt=png

更多信息,欢迎大家访问 SynestiaOS 的官网:

https://synestiaos.org

640?wx_fmt=png

640?wx_fmt=png

欢迎大家加入 SynestiaOS 社区讨论,微信群二维码:

640?wx_fmt=png

SynestiaOS现已开源:

https://github.com/SynestiaOS

SynestiaOS 的文档开源地址:

https://github.com/SynestiaOS/Documentation

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK