1

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

4

2 回答 2

5

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

内核- 一个程序,其目的是为了其他程序的利益而控制和多路复用硬件。通常在 CPU 的最高特权操作模式下运行。操作系统的最里面的组件。

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

内核的一个典型例子是Linux

微内核——一种用于构建内核的特定架构,其中采用模块化方法将内核程序分割成一组独立且可替换的代码模块。该设计允许以较低的特​​权级别运行通常与内核相关的一些功能。

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

微内核的主要例子是GNU Hurd

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

如果我们再次以上面的示例服务为例,管理程序内的调度与内核的调度本质上没有什么不同(除了调度的实体是 OS 虚拟 CPU 而不是单一程序),但管理程序通常不会公开文件系统接口,而是将看起来像原始存储设备的东西(例如磁盘)暴露给它控制的客户操作系统。

管理程序的一个很好的例子是KVM,它的有趣之处在于它是一个内置在内核中的管理程序(内核是 Linux)。

于 2017-12-30T06:51:58.450 回答
1

简短的回答是,微内核是虚拟机管理程序的一种可能实现(正确的实现,恕我直言),但可以做的不仅仅是提供虚拟机。您可以在此处阅读有关微内核和管理程序的更多信息。

于 2017-12-30T05:35:38.163 回答