Genode 11.02来到FPGA SoCs, Fiasco.OC, 运行GNU工具集
时间:2011-03-11 来源:OSNEWS中文版
刚刚发布的Genode OS Framework 11.02版本推出了其支持8种不同内核的平台。通过将那些内核之一与一个数量稳步增长的立即可用组件相结合,Genode就可以架构专业的操作系统。 这个新的平台增加了现代基于能力的微内核Fiasco.OC的支持,一个NOVA管理程序0.3的升级,和一个定制内核实现,专门针对基于FPGA的SoCs中soft-core CPU的使用。聪明的功能,Genode 11.02的第一个特征是新执行环境可以在Genode中自然地运行基于命令行的GNU软件。
Genode的跨内核可移植性一直是该框架的独特之处。传统的基于微内核的操作系统被捆绑到一个特定的微内核,并且本质上视为不能移植。 Genode改变了这个情况,提供了一个统一的API,跨越了许多不同内核的API透明地工作。同时,如果需要的话可以轻易进入每一个内核的具体功能中。
Genode的大多数基本结构是完全内核不可知的。这包括动态连接器,许多设备驱动程序,一个TCP/ IP协议栈的libc,图形用户界面,和Qt4。因此,每个支持的内核平台直接受益于这个结构的强化。当前Fiasco.OC内核的版本提供了这些丰富的功能。
从技术上讲,Fiasco.OC是L4/Fiasco一个现代化的版本,因为它摆脱了L4/Fiasco代码库。 然而,Fiasco.OC的内核接口完全偏离了传统的L4 API,朝向一个现代的基于能力的面向对象的形式发展。谈到Fiasco.OC的功能,它是很丰富的。它支持x86_32,x86_64以及许多基于ARM的平台,促进了基于硬件的虚拟化的使用,支持SMP,账户内核资源,和实现了基于能力的安全。这个特征设置实际上非常适合 Genode,从一开始,它就被设计为基于能力的操作系统。
随着第二个主要Genode平台支持的增加,Genode项目进入了内核开发的境界。 为了在Xilinx MicroBlaze softcore CPU之上运行Genode而创建了一个全新的内核设计,消除了用户区域和内核区域传统的分裂。我来解释一下。
现有的微内核是自我维护控制的形式,包括了所有需要从用户区域独立操作的功能。这项功能包括跟踪内存映射和内存分配器的数据结构。然而在实践中, 每一个内核伴随着一个单一的用户层级的组件(通常被称为roottask,管理着更深入用户层级程序的创建)。为了完成这点,roottask必须保持与那些在内核中使用的数据结构非常相似的数据结构。对于一个真正的系统工作负荷来说,内核和roottask永远是可信任计算基础的一部分。 因此, roottask可以定性为内核的用户级部分 (即使内核开发商往往不欣赏这种特性)。
Genode的核心组件扮演了roottask这样一个角色。如果内核和核心一直存在于一个真正的系统中,让两者都使用相同的数据结构不会有意义吗?一个基于微内核系统的真正目标不应该是一个最小复杂度(minimal-complexity)可信任的计算基础 ,而不仅仅是一个最小复杂度的内核,那么一个复杂的roottask将与哪一个为伴呢?
移动Genode到一个提供了正确激励的新CPU架构来执行核心与内核合并实验。内核部分减少到只有一个典型微内核的子集:Xilinx MicroBlaze CPU上CPU异常处理,调度,一个加载软件的TLB直接操作功能, 和 IPC机制。当前的实施阶段允许运行核心和初始进程的多重嵌套实例。这项工作的结果已经表明, 这种方法有可能显着减少了所有Genode应用可信任的基础计算复杂性。
Genode 11.02第三方平台的增加是最近发布的NOVA 管理程序版本0.3。有了这个版本,NOVA提供了所有手段运行完整的Genode软件堆栈,包括动态连接程序。
一个受广泛支持的平台没有能用到框架上的功能价值是有限的。因此, 每一个版本用担负所支持内核的新功能丰富其框架。版本11.02也没有例外,它的第一个特征是Noux执行环境, 允许使用Genode之上基于命令行的GNU用户区域程序。Noux着眼于 Genode开发人员的需求, 尤其是使用GNU工具的人(gcc, binutils, make等等)。尽管Noux在初期阶段,与新版本发布的代码明显地展现了其开发人员引领的方向—– 将Genode塑造成为一个可扩展并且高度安全的通用操作系统。
在这个发布记录中进一步阅读这个新内核平台的细节, Noux背后的视野,和许多这个框架此版本的提升。