内核/微内核/管理程序之间的差异/关系

时间:2017-12-23 09:29:52

标签: kernel hypervisor microkernel

我是这个主题的新手。 我一直在网上冲浪寻找有关该主题的信息,现在,我也更加困惑。如果我没有错,他们会管理硬件并在用户空间和设备的真实物理部分之间建立连接(如果不是这样,请纠正我)。但这是一个又一个真正的区别?我怎样才能对它们进行分类?我正在寻找的是一个明确的答案,可以促使我正确参考,更好地理解并深入研究该领域。

2 个答案:

答案 0 :(得分:1)

简短的回答是微内核是虚拟机管理程序的可能实现(正确的实现,恕我直言),但除了提供虚拟机之外,还可以做更多的事情。 您可以在微内核和虚拟机管理程序上阅读更多内容,here

答案 1 :(得分:1)

从学术角度来看,以下内容可能不是100%准确,但我相信它抓住了它的本质:

内核 - 一个程序,其目的是控制和多路复用硬件,以利于其他程序。通常以CPU的最高特权操作模式运行。操作系统的最内层组件。

内核的两个示例任务是(1)调度,即允许不同程序共享CPU,每个程序都保证CPU的(或多或少)公平份额,以及(2)提供文件系统,允许不同的程序访问存储设备,例如磁盘。

内核的一个主要示例是Linux

微内核 - 用于构建内核的特定体系结构,其中采用模块化方法将内核程序分段为一组隔离且可替换的代码模块。该设计允许运行一些通常与较低权限级别的内核相关联的函数。

要重复使用与以前相同的示例,微内核仍然会处理调度,但一般来说,文件系统和磁盘访问将作为程序实现,运行的权限低于微内核本身,其他程序连接到使用客户端/服务器方法来访问磁盘资源。

微内核的主要示例是GNU Hurd

Hypervisor - 一个程序,其目的是控制和多路复用其他内核的硬件。通常以比内核更高的特权级别运行,内核是为此目的而发明的。允许在多个操作系统或其实例之间共享单个硬件。虚拟机管理程序与内核的不同之处在于它们的接口 - 内核暴露了系统调用编程接口,例如POSIX,而虚拟机管理程序接口(就像以客户端观察的操作系统)主要看起来只是一个“裸”的CPU和硬件,为了在半虚拟化的形式中实现性能,这种原理的可选偏差是可能的。

如果我们再次从上面获取我们的示例服务,则在虚拟机管理程序中的调度与内核(调度的实体是OS虚拟CPU而非单个程序除外)没有什么不同,但是虚拟机管理程序通常不会公开文件系统完全接口,而是将看起来像原始存储设备的内容(例如磁盘)暴露给它控制的来宾操作系统。

管理程序的一个很好的例子是KVM,这很有趣,因为它是一个内置于内核的管理程序(内核是Linux)。