Leo*_*313 2 kernel hypervisor microkernel
我是这个话题的新手。我一直在网上寻找有关该主题的信息,现在我也更加困惑了。如果我没记错的话,他们会管理硬件并在用户空间和设备的真实物理部分之间创建连接(如果不是这样,请纠正我)。但两者之间真正的区别是什么?我如何对它们进行分类?我正在寻找的是一个明确的答案,它可以推动我正确的参考,以更好地理解和深入研究该领域。
从学术角度来看,以下内容可能不是 100% 准确,但我相信抓住了其本质:
内核- 一个程序,其目的是为了其他程序的利益而控制和复用硬件。通常以 CPU 的最高特权操作模式运行。操作系统的最内部组件。
内核的两个示例任务是(1)调度,即允许不同的程序共享 CPU,每个程序都保证(或多或少)公平地共享 CPU;(2)提供文件系统,允许不同的程序共享 CPU。访问存储设备(例如磁盘)的程序。
内核的一个主要例子是Linux。
微内核——构建内核的特定体系结构,其中采用模块化方法将内核程序分割成一组独立且可替换的代码模块。该设计允许在较低权限级别运行通常与内核相关的一些功能。
为了重新使用与之前相同的示例,微内核仍将处理调度,但文件系统和磁盘访问通常将被实现为一个程序,以比微内核本身更低的权限运行,而其他程序则无法使用该程序。使用客户端/服务器方法连接以访问磁盘资源。
微内核的主要例子是GNU Hurd。
管理程序- 一个程序,其目的是控制和复用其他内核的硬件。通常运行在比内核更高的特权级别上,内核就是为此目的而发明的。允许在多个操作系统或其实例之间共享单个硬件。虚拟机管理程序与内核的不同之处在于它们的接口 - 内核公开系统调用编程接口,例如 POSIX,而虚拟机管理程序接口(如作为来宾运行的操作系统所观察到的那样)主要看起来只是一个“裸”CPU 和硬件,具有为了半虚拟化的性能,可以选择性地偏离该原则。
如果我们再次采用上面的示例服务,虚拟机管理程序内的调度本质上与内核没有什么不同(除了调度实体是操作系统虚拟 CPU 而不是单个程序),但虚拟机管理程序通常根本不会公开文件系统接口,而不是将看起来像原始存储设备的东西(例如磁盘)暴露给它控制的来宾操作系统。
虚拟机管理程序的一个很好的例子是KVM,它很有趣,因为它是内置于内核(内核是 Linux)中的虚拟机管理程序。