【问题标题】:What is the difference between an nanokernel and an exokernel?纳米内核和外内核有什么区别?
【发布时间】:2010-09-15 09:39:47
【问题描述】:

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

【问题讨论】:

    标签: kernel


    【解决方案1】:

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

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

    大多数内核将更多地将物理硬件资源抽象为某种理论模型。开发人员与此模型交互,该模型处理内部处理硬件的更精细点。

    nanokernel 一词用于描述特定的内核类型。前缀“pico-”,或“nano-”,“micro-”通常表示内核的“大小”。更大的内核构建的功能更多,处理更多的硬件抽象。纳米内核是相对较小的内核,提供硬件抽象,但缺少系统服务。现代微内核也缺少系统服务,因此术语变得类比。

    内核的名称通常源于特定批次的研究,这些研究产生了一种新的内核,例如卡内基梅隆大学开发的名为“Mach”的内核,它是最早的内核之一现代“微内核”的例子。

    旁注: exokernel 的真正好处是选择。大多数时候,大量抽象意味着更少的灾难性错误。在某些应用程序中,您可能想要使用不同的抽象模型,或者您可能想要自己处理所有事情。如果我们想放弃特定项目的操作系统抽象,我们就必须删掉操作系统并为这项工作投入一块硬件。在 exokernel 的情况下,这不是必需的。我们可以直接“对金属”进行编程,但也可以随时选择在抽象模型中进行链接。这是一个非常强大的概念。

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

    【讨论】:

      【解决方案2】:

      我发现一个链接对于区分单片微内核和外内核非常有帮助。链接是--- http://www.scribd.com/doc/174682128/Difference-between-monolithic-microkernel-and-exokernel

      【讨论】:

      • 强烈建议不要使用仅链接的答案;请总结一下你的发现。
      • 这个链接好像已经死了,反正……
      猜你喜欢
      • 2011-05-31
      • 2012-07-05
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      相关资源
      最近更新 更多