fuchsia基于内核zicron,而zicron又是基于高通的LK(little kernel)项目,搞安卓的同学对fastboot应该不会陌生,fastboot用的其实就是LK,或者说,LK用在了fastboot上,LK项目地址在:
GitHub - littlekernel/lk: LK embedded kernel
fushia(zicron)项目文档,代码地址:
https://fuchsia.dev/fuchsia-src/concepts/kernel/zx_and_lk
https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/zircon
fuchsia的体验网址:
qemu运行lk内核:
qemu运行谷歌fuchsia内核littlekernel_papaofdoudou的博客-CSDN博客
Fuchsia OS放弃了具有多个屏幕的设计,这在Android或iOS中是常见的,而是在主屏幕上显示所有内容。
和Android,Linux,Chrome OS不同点
1.Fuchsia使用了一个实时操作系统的内核.
2.Fuchsia内置了一个叫做escher的基于物理的三维渲染器.
3.底层图形引擎基于最新的业界标准 Vulkan.
如何评价一个系统的好坏,我觉得,系统是给用户用的,首先要使用用户需求的变化,给用户带来较好的产品体验,其次,操作系统根植于硬件之上,而硬件也是变化的,先进的操作系统应当适应甚至影响硬件的变化,并挖掘出硬件的最大潜力。
开发语言:
C,C++,Rust,Dart开发驱动,模块,中间件和应用。
显示框架:
fuchsia上层应用图形开发框架使用 flutter开发,开发语言是dart.
底层显示框架是escher,对应安卓的surface flinger。
体量:
当前fuchsia的体量相当于Android 4.x时代的体量,这方面代码量最多的是内核之上的组件,fuchsia内核比Linux内核小很多。
RPC:
Android上有Binder实现跨进程的RPC调用,在安卓应用上非常普遍,本质上,Android应用之间的无感穿插底层依赖的就是Binder机制。
在fuchsia 系统中,也有类似机制,底层实现基于zircon内核的channel技术,中间件则用FIDL(Fuchsia 接口描述语言)定义接口,这个和Android很像,Android底层用了Binder,中间层则用HIDL来描述定义接口。
图示如下,左边是fuchsia ,右边是Android.
调试工具:
fuchsia 上的zxdb,相当于android上的ADB.
总结
- fuchsia 内核是基于LK修改的,单独的内核代码体量很小,也就是一般RTOS的量级。
- fuchsia 是微内核架构(文件系统貌似没有在内核里面),内核代码量还没我们的melis 大呢,大部门代码都是中间件和应用。