Kernel

来自osdev
(重定向自Kernels
跳到导航 跳到搜索
内核设计
模型
其它概念
这篇文章关注的是 kernels 背后的理论。 Bare bones tutorials 这里列出了几个建立出来的小工作内核。

简介

内核是操作系统的中心组件。 这是操作系统针对资源管理需求的自然结果,并且通常是业余操作系统中最重要的部分。 它的职责包括管理内存和设备,并为软件应用程序提供使用这些资源的接口。 根据操作系统的体系结构,内核通常管理保护程序和多任务。

在开发内核时曾出现过许多内核模型,每个模型都取决于个人选择以及对可靠性,速度以及使用指定方法实现目标难易程度的研究。 两种主要模型是单内核(monolithic kernel)和微内核(micro kernel)。 单内核基于内核是高在上位于内存中,并是管理系统的单程序的想法。 在考量的另一个方向,微内核则提供尽可能少的内核模式服务,并将其余的内容与用户模式组件协同处理。

主要内核模型

Monolithic Kerne 单内核

正文: Monolithic kernel

单内核与在内核模式下所有内核和设备驱动程序运行在同一个地址空间。 这种方法的主要优点是效率 (尤其是在x86架构上,其中任务切换代价特别昂贵)。 不幸的是,由于其单一地址空间,设备驱动程序中的错误会导致整个系统崩溃。

微内核

正文: Microkernel

微内核尝试在用户空间中运行其大部分服务和设备驱动程序。 这可以为具有足够内存保护的机器提高稳定性和安全性。 在大多数当前的实现中,速度损失被认为太大,无法使微内核在大多数商业系统中实用。

细分的一些内核模型

这些模型通常可以归类为上述任一模型,并且通常将两者的概念混合在一起。

Hybrid Kernel 混合内核

正文: Hybrid Kernel

混合内核,通常称为宏内核Macrokernel,主要是一种单内核。 它的不同之处在于,它的各个部分通常在代码中,由几个物理模块或两者的混合进行分段。 与使用消息传递系统与用户空间模块进行通信的微内核不同,混合内核通常在运行时链接在一起,并且仍然作为一个整体存在于内核空间中。 该术语通常是指给核心功能模块化的内核,而不是给有能力将驱动程序作为单独的内核模块加载的系统。

Modular Kernel 模块化内核

正文: Modular Kernel

同样属于单内核一类,模块化内核通常比混合内核模块化得多,它基于以上相同的概念。 主要区别在于内核通常可以加载许多未知的核心模块,而不是简单地加载已知的内核部分。 使用名称空间或简化的代码库,在这里并不被认为是模块化的。

Nanokernel 纳米内核

正文: Nanokernel

通常被认为是极小的微内核。 纳米内核设计实际上并未定义组合零件的方法,因此可以属于任何一个阵营中。 大多数纳米内核使用消息传递系统与其他组件进行通信,以使系统在架构上尽可能独立。 它基本上是一个精简的内核,没有任何形式的硬件抽象,因此它需要为体系结构中的每个基本资源提供设备驱动程序。 这包括通常由HAL控制的设备,例如计时器,RTC,PIC和DMA控制器。

Exokernel 外内核

正文: Exokernel

也是一个很小的内核设计,外内核代表了尽可能少的抽象,与纳米内核完全相反。 外内核旨在以安全的方式为不受信任的程序提供对硬件的尽可能多的控制。 这使程序可以利用当前硬件的细节,而不必依靠内核来做到这一点,这在某些情况下会导致性能的大幅提高。 然而,这不得不以编写更复杂的软件为代价。 通常是在提供内核行为抽象的系统库中编程。

de:Kernel