发布于 2018-04-14 10:11:36
Unikernel是库操作系统的一种特殊类型。库操作系统作为库提供了所有的功能,通常链接到应用程序编译时。
区别并不是很清楚,但当Anil Madhavapeddy发明Unikernel一词时,他指的是一个线程应用程序,所有的东西都运行在单个地址空间中,使用的是以高级类型安全语言创建的库操作系统,运行在虚拟机监控程序上。
应该注意的是,IncludeOS项目没有严格遵守定义。它是用C++编写的,它不是类型安全的,它支持多个CPU核心、线程和裸金属硬件上的引导。
我听说过Anil将IncludeOS描述为一个统一内核,所以我想他对此并不太严格。
使用Uni内核编写应用程序的动机各不相同,但主要是内存占用(unikernels很小)、性能(函数调用比系统调用更快)和安全性。
安全方面的收益来自Unikernels的性质。Unikernels被构建为不可变的。因此,如果您正在构建一个带有Uni内核的虚拟防火墙设备,那么防火墙规则应该是代码,防火墙应该是硬编码的,以准确地执行规则集。这与传统的单块内核不同,在这个内核中,所有的配置都是动态的。
Unikernels并不意味着要重新配置。他们注定要被取代。因此,它们没有支持重新配置的特性,这使得它们很难被利用。
发布于 2018-04-14 07:59:56
"Embedded“没有指定软件体系结构,它仅仅意味着软件和硬件是打包在一起的,并且与用户的观点是不可分割的。
在大多数现代计算机系统中,您将拥有一个处理器,它允许在其上运行的第一个程序( OS)控制它,而不是使用所获得的硬件控制,允许其他程序在有限的可能性下运行。这就像一个看门人走进一栋大楼,抓起所有房间的钥匙,在设施控制板上坐下。然后,他等待房客或客人进来,并允许他们有限地进入。除了管理大楼外,他自己没有什么特别的目的。他只是坐在那里监视,分发和收回钥匙和吃甜甜圈。
有了一个统一内核,就只有一个具有专用目的的程序。它不是一个允许程序运行的通用系统,而是一个不允许任何其他程序在其上运行的通用程序。基本上,它是一个没有操作系统的应用程序。应用程序本身控制机器,拥有所需的所有电源和访问权限。
就像一个人走进一个空荡荡的旅馆,把门锁在身后,启动他需要的设施,抓起他想要进入的房间的钥匙,然后做他想做的事情。
在软件中,与通用操作系统和单个应用程序相比,单内核程序将相对较小,因为它只包含应用程序实际使用的那些服务。在嵌入式环境下,这可能是有益的。
https://softwareengineering.stackexchange.com/questions/369347
复制相似问题