nanokernel和exokernel有什么区别?

Cri*_*omo 14 kernel

我知道它们都应该很小,但两者之间的主要区别是什么?

kep*_*aro 23

Exokernel是一个来自MIT(以及它的一类变体)的操作系统,它处理相对较少的硬件抽象.在exokernel中,控制硬件(特别是内存分配)的低级职责通常留在开发人员手中.许多开发人员可能更愿意让操作系统承担更多这类低级别任务的责任,因为大多数开发人员只是编写应用程序.

exokernel只是为程序分配物理硬件资源.这允许程序使用库操作系统,这些操作系统被链接以提供exokernel未提供的一些抽象.然后,开发人员可以在抽象模型之间进行选择,也可以自行选择.鉴于应用程序,这可能会带来很大的性能优势.如果您不知道自己在做什么,也可以编写在崩溃时会爆炸的程序.

大多数内核会将物理硬件资源抽象为某种理论模型.开发人员与此模型接口,处理内部处理硬件的更精细点.

术语nanokernel用于描述特定类型的内核.前缀"pico-"或"nano-","micro-"通常表示内核的"大小".更大的内核更多地构建了更多的功能,并处理更多的硬件抽象.Nanokernels是相对较小的内核,提供硬件抽象,但缺乏系统服务.现代微内核也缺乏系统服务,因此这些术语已经变得类似了.

内核名称通常源于一组特定的研究,这些研究产生了一种新的内核,例如在Carnegie Mellon开发的称为"Mach"的内核,这是现代"微内核"的第一个例子.

旁注: exokernel的真正好处是选择.大多数情况下,大量抽象意味着更少的灾难性错误.在某些应用程序中,您可能希望使用不同的抽象模型,或者您可能希望自己处理所有内容.如果我们想要废弃特定项目的操作系统抽象,我们必须切断操作系统并为工作提交一块硬件.在exokernel的情况下,这不是必需的.我们可以直接编程"到金属",但也可以选择在我们喜欢的时候链接抽象模型.这是一个非常强大的概念.

旁注:对于大多数应用程序开发人员来说,处理如此低级别的内存是不必要的.通常在内核之上构建多层操作系统,您的应用程序将在最高级别的OS上运行.使用javascript编写时,你仍然处于更高的位置,与在操作系统上运行的应用程序中实现的模型连接等.寻址内存虽然不应该被忽略,但可能意味着与开发人员完全不同谁在如此高水平的抽象上写作.