kernel - 纳米内核和外内核有什么区别?

标签 kernel

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

最佳答案

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

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

大多数内核会对 做更多的事情抽象物理硬件资源转化为某种 理论模型 .开发人员与此模型交互,该模型处理内部处理硬件的更精细点。

术语 纳米内核 用于描述特定的 内核类型 .前缀“pico-”或“nano-”、“micro-”通常表示内核的“大小”。更大的内核 更具有更多功能,以及 处理更多硬件抽象 .纳米内核是相对较小的内核,提供硬件抽象 ,但是 缺少系统服务 .现代微内核也缺乏系统服务,因此这些术语变得类似。

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

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

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

关于kernel - 纳米内核和外内核有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/172388/

相关文章:

linux - 如何将几个内核模块(的代码)合并在一起?

android - 修改 Android 内核交换

kernel - Grub 2 未检测到内核中的多重引导 header

linux - 在交换器中执行时,Linux 内核模块中的任务所有者 pid

c - task_struct ->parent 始终指向根进程而不是实际的父进程

linux - 升级后的 Redhat Linux 内核在启动时出现内核 panic

windows - 从用户模式访问内核内存 (Windows)

linux-kernel - 为 DMA 使用静态数据结构

c - 平台设备;为什么是 'alloc' 和 'add' ?

linux - 在内核版本 3.16.x 中实现自定义系统调用