你有没有想过,一块小小的单片机,除了跑那些精简到极致的裸机代码,还能不能干点更"重"的活儿?
大多数时候,我们用微控制器,都是写一段非常具体的代码,让它专心执行某一个特定任务。设备被设置成以最小的开销,精确运行我们想要的功能。但有些场景下,给单片机配上一个操作系统,反而能带来更多好处。
![]()
Federico Terraneo 在 Hackaday Europe 上聊的正是这个话题。他谈到了内核架构、实时操作系统,以及如何在微控制器世界里更好地使用 C++。
操作系统到底是什么?
Federico 从一个很有帮助的地方开始讲起——他先解释了操作系统到底是什么。简单来说,它就是介于硬件和运行在硬件之上的应用程序之间的软件。拆开来看,一个操作系统通常由一个主内核构成,内核之上是基础系统服务、库、设备驱动程序,以及维护和操作系统所必需的实用程序。用户界面则位于所有这些之上,让用户可以选择和运行应用程序,并通过操作系统完成各种任务。
当然,不同的操作系统在具体架构上各有不同。比如 Linux 依赖的宏内核(Monolithic kernel),保持着内核空间和用户空间的分离。内核在系统模式下运行,拥有完整的硬件访问权限,而应用程序在用户模式下运行,没有这种直接访问权。宏内核通常只在带有内存管理单元(MMU)的架构上运行——想想你的笔记本电脑或台式机,那些拥有完整 CPU 的计算机。
三种内核,三种思路
Unikernel 操作系统,比如 FreeRTOS,则有些不同。在这种架构里,应用程序和操作系统被压缩成一个单一的可执行二进制文件,直接以原始硬件访问权限运行。没有抽象层,没有内存保护,也没有类似的东西——这让它更容易在典型的微控制器上运行。
还有微内核(Microkernel),它旨在最大限度地减少在系统模式下运行的代码量,把驱动程序和文件系统访问等任务推到用户空间。这种架构仍然需要 MMU,并且主要出现在对安全性或安全关键性要求极高的特定领域。
说到微控制器,Unikernel 是最值得关注的架构。但它也有局限——在稳定性、安全性方面,以及它不支持运行时加载代码,也没有办法轻松地对系统进行部分升级。
流体内核:一个可扩展的解决方案
Federico 来讲解的流体内核(Fluid Kernel),正是为了解决这些问题。它希望提供一个可扩展的操作系统解决方案,适用于嵌入式计算领域——在这个领域里,微控制器资源有时非常有限,而且内存管理单元很少存在。它同时打算兼容标准 API——比如 POSIX 和 C++ 标准库。
这意味着什么?简单来说,流体内核试图在资源受限的单片机上,提供一种更灵活、更安全的操作系统体验。它既想保留 Unikernel 在微控制器上运行的便利性,又想弥补它在稳定性和安全性上的短板。
对于嵌入式开发者来说,这或许是一个值得关注的方向。如果你正在为"要不要在单片机上跑操作系统"而纠结,流体内核的思路可能会给你一个新的选择。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.