我知道它们都应该很小,但是两者之间的主要区别是什么?
2 回答
Exokernel是麻省理工学院的一个操作系统(以及它的一类变体),它处理相对较少的硬件抽象。在 exokernel 中,控制硬件(尤其是内存分配)的低级职责通常留给开发人员。许多开发人员可能更愿意让操作系统承担更多此类低级任务的责任,因为大多数开发人员只是在编写应用程序。
exokernel 只是将物理硬件资源分配给程序。这允许程序使用库操作系统,这些操作系统被链接以提供一些 exokernel 没有提供的抽象。然后,开发人员可以在抽象模型之间进行选择,或者自行开发。给定应用程序,这可能具有很大的性能优势。如果你不知道自己在做什么,你也可以编写崩溃时会爆炸的程序。
大多数内核会将物理硬件资源抽象为某种理论模型。开发人员与此模型交互,该模型处理内部处理硬件的更精细点。
术语超微内核用于描述特定类型的内核。前缀“pico-”,或“nano-”,“micro-”通常表示内核的“大小”。更大的内核构建的功能更多,处理更多的硬件抽象。Nanokernels 是相对较小的内核,提供硬件抽象,但缺乏系统服务。现代微内核也缺乏系统服务,因此术语变得类比。
内核的名称通常源于产生一种新型内核的特定批次的研究,例如在卡内基梅隆大学开发的名为“Mach”的内核,它是现代“微内核”的第一个例子。
旁注: exokernel 的真正好处是选择。大多数时候,大量抽象意味着更少的灾难性错误。在某些应用程序中,您可能想要使用不同的抽象模型,或者您可能想要自己处理所有事情。如果我们想放弃特定项目的操作系统抽象,我们就必须删掉操作系统并为这项工作投入一块硬件。在 exokernel 的情况下,这不是必需的。我们可以直接“对金属”进行编程,但也可以随时选择在抽象模型中进行链接。这是一个非常强大的概念。
旁注:对于大多数应用程序开发人员来说,在如此低的级别上处理内存是不必要的。通常在内核之上构建了几层操作系统,您的应用程序将在操作系统的最高级别上运行。使用 javascript 编写代码时,您仍然处于更高的位置,可以与在操作系统上运行的应用程序中实现的模型交互,等等。寻址内存虽然不应该被忽略,但对开发人员来说可能意味着完全不同的东西谁在写这么高的抽象水平。
我发现一个链接对于区分整体微内核和外内核非常有帮助。链接是--- http://www.scribd.com/doc/174682128/Difference-between-monolithic-microkernel-and-exokernel