fuchsia的源码树初探
fuchsia的4层架构源码结构zicron目录源码结构garnet目录源码结构topaz目录源码结构src目录源码结构examples源码结构
fuchsia的4层架构
翻译自英文原文Fuchsia Friday: The Four Layers of Fuchsia
google使用了4个层来组织fuchsia的代码
第一层是 zicron,是Google设计的新内核,主要处理对硬件的访问以及软件之间的通信。zicron对于fuchsia 就好比linux对于android。
第二层是garnet,它包含了一个操作系统所必要的基础软件,包括设备驱动,网络,图形以及软件安装。最激动人心的事情是 Escher(图形渲染器),Amber(Fuchsia 的更新程序)和Xi Core,它是Xi文本和代码编辑器的底层引擎
第三层是peridot,处理fuchsia模块化应用程序设计,Peridot的另外两个主要组件直接用于模块。 Ledger 可以跨设备保存您在应用/模块中的位置,并同步到您的Google帐户。Maxwell 是一个更复杂的主题,需要更多进一步的深入研究,但是 Maxwell 极有可能是让 Fuchsia 充分施展魔力的点睛之笔,可以提前透露的是,Maxwell 的厉害之处包括 Kronk,也是大家熟知的 Google Assistant。
第四层:Topaz,是这个顶层,也是对开发者和用户直接影响最大的一层。Topaz 提供 Flutter 支持,而有了Flutter 的支持,各种华丽的应用程序,可以帮助充实地提供日常使用的功能齐全的应用程序。比如,现在最令人印象深刻的当然是 Armadillo UI,它是 Fuchsia 主要用户界面和主屏幕。
关于fuchsia的认识,许中兴博士的ppt很深入
https://xuzhongxing.github.io/201806fuchsia.pdf
源码结构
在源码树里tree看看
比较重要的有
- zircon: 操作系统内核主体代码
bootloader, 内核的进程,内存管理,内核对象,arch相关代码; 以及运行在用户态的系统核心进程, 系统调用和library都在这里 - garnet: 基础软件层的主体代码
主要是属于garnet层的bin文件代码, - topaz:应用层
最关键的是dart,flutter的runtime - src:操作系统的基础代码模块,应该来说很多属于garnet层
这里有camera,网络connectivity,graphics,media,security, storage - build
基本上是gni文件,构建需要的 - sdk
构建sdk/ddk所需要的配置和脚本 - boards
全部是gni文件,和板子相关的编译配置 - tools
本地pc机上运行的工具,比如fidl的工具 - third_party
从外部引入的库,比如flatbuffers,go,dart,ssl,iperf,libpng,protobuf等等 - examples
一些c/c++/rust/go的是示例代码,可以学习在fuchsia上怎么开发
zicron目录源码结构
其中
- bootloader: The Gigaboot boot loader
The Gigaboot boot loader is a UEFI boot shim for Zircon that can load images via chaining from iPXE, from a UEFI-accessible filesystem, or from local disk partitions. - kernel
内核主体部分,进程调度,内存管理 内核对象object等 - system
运行在用户态的核心系统进程,bootsvc,devmgr,svchost等,这个后面细细的品;一些基础的library ulib和基础的工具uapp - vdso
偏底层的系统调用相关的fidl文件
garnet目录源码结构
这里都是用户层的bin文件,包括系统中比较重要的命令行工具,真正属于garnet层的核心代码在另外的src目录下
topaz目录源码结构
这层包含的上层app的运行时,包括dart,flutter和web等内容. 我们从编译脚本BUILD.gn也可以看出来
src目录源码结构
这个目录包含的是操作系统的基础软件模块。
camera,chromium,connectivity,驱动程序(微内核系统的驱动是在用户态的),graphic相关,多媒体,电源,安全,存储等等
examples源码结构
一些示例程序,教我们怎么在fuchsia上开发程序,有底层驱动的,有用户层c++,有rust示例, fidl的用法