Difference/relationship 在 Kernel/Microkernel/Hypervisor 之间

Difference/relationship between Kernel/Microkernel/Hypervisor

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

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

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

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

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

内核的主要示例是 Linux

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

重复使用之前的例子,微内核仍然会处理调度,但是文件系统和磁盘访问,一般来说,会作为一个程序来实现,运行比微内核本身,其他程序使用 client/server 方法连接到它以访问磁盘资源。

微内核的主要示例是 GNU Hurd

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

如果我们再次使用上面的示例服务,管理程序内的调度本质上与内核没有区别(除了调度的实体是 OS 虚拟 CPU 而不是单一程序)但是管理程序通常根本不会公开文件系统接口,而是将看起来像原始存储设备(例如磁盘)的内容公开给它控制的来宾OS。

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