查看原文
其他

面向物联网的微内核SynestiaOS

赵晨雨 Linux内核之旅 2022-03-15

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

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

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

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 的开发计划。

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


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

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

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

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

https://synestiaos.org

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

SynestiaOS现已开源:

https://github.com/SynestiaOS

SynestiaOS 的文档开源地址:

https://github.com/SynestiaOS/Documentation


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存