单片和微内核有什么区别?

时间:2010-12-27 09:52:09

标签: language-agnostic terminology kernel

有没有人可以用单片和微内核之间的例子来解释一下?还有其他内核分类?

8 个答案:

答案 0 :(得分:106)

单片内核是一个完全在单个地址空间中运行的单个大型进程。它是一个静态二进制文件。所有内核服务都在内核地址空间中存在并执行。内核可以直接调用函数。基于单片内核的操作系统的示例:Unix,Linux。

在微内核中,内核被分解为单独的进程,称为服务器。一些服务器在内核空间中运行,一些服务器在用户空间中运行。所有服务器都保持独立,并在不同的地址空间中运行。服务器通过IPC(进程间通信)发送消息来相互调用“服务”。这种分离的优点是,如果一台服务器出现故障,其他服务器仍可以高效工作。基于微内核的操作系统的示例:Mac OS X和Windows NT。

答案 1 :(得分:66)

1 )单片内核比Microkernel年龄大,这个想法是在1980年代末构思出来的。

2 )单片内核用于Unix和Linux。微内核用于QNX,L4和HURD。它最初用于Mach(不是Mac OS X),但后来转换为混合内核。甚至Minix也不是纯内核,因为设备驱动程序是作为内核的一部分编译的。

3 )单片内核比微内核更快。第一个微内核Mach比Monolithic内核慢50%,而像L4这样的后期版本比Monolithic内核慢2%或4%。

4 )单片内核通常很笨重。纯Microkernel必须小巧,以适应处理器的L1缓存(第一代微内核)。

5 )在Monolithic内核中,设备驱动程序驻留在内核空间中,而在Microkernel中,设备驱动程序驻留在用户空间中。

6 )由于设备驱动程序驻留在内核空间中,因此单片内核的安全性低于微内核,驱动程序中的故障可能导致崩溃。微内核比单片内核更安全,因此在某些军事设备中使用。

7 )单片内核使用信号和套接字来确保IPC,微内核方法使用消息队列。第一代微内核很难实现IPC,因此上下文切换速度很慢。

8 )向单片系统添加新功能意味着重新编译整个内核,而使用微内核,您可以添加新功能或补丁而无需重新编译。

答案 2 :(得分:21)

单片内核

内核的所有部分,如调度程序,文件系统,内存管理,网络堆栈,设备驱动程序等,都在整体内核

中的内核中维护在一个单元中

<强>优点

•加快处理速度

<强>缺点

•崩溃不安全 •移植不灵活 •内核大小爆炸

<强>实施例 •MS-DOS,Unix,Linux

微内核

只有IPC(进程间通信),基本调度程序,基本内存处理,基本I / O原语等非常重要的部分才会被放入内核。通过消息传递进行通信。其他在User Space

中维护为服务器进程

<强>优点

•防撞,便携,尺寸更小

<强>缺点

•由于额外的消息传递而导致处理速度变慢

<强>实施例 •Windows NT

答案 3 :(得分:13)

1.Monolithic Kernel(Pure Monolithic):all

  • 单个组件的所有内核服务

    ( - )无法添加/删除,更少/零灵活

    (+)内部组件通信更好

e.g。 : - 传统Unix

2.Micro内核:few

  • 来自核心内核的少数服务(内存管理,CPU管理,IPC等),来自不同层/组件的其他服务(文件管理,I / O管理等)

  • 拆分方法[某些服务处于特权(内核)模式,而某些服务处于正常(用户)模式]

    (+)灵活适应变化/升级

    ( - )沟通开销

例如: - QNX 等。

3.Modular kernel(Modular Monolithic):most

  • Micro和Monolithic kernel的组合

  • 模块集合 - 模块可以是 - &gt;静态+动态

  • 驱动程序以模块

  • 的形式出现

e.g。 : - Linux Modern OS

答案 4 :(得分:0)

在内核设计的范围内两个极端 点是单片内核和微内核。

(经典)Linux 例如,内核是一个单片内核(每个商业操作系统都是如此 到目前为止 - 虽然他们可能会另有要求);

因为它的代码是 单个C文件产生一个实现上述所有过程的过程 服务。
为了举例说明Linux内核的封装,我们注意到了这一点 Linux内核甚至无法访问任何标准C库。 实际上Linux内核不能使用诸如的基本C库函数 的printf。相反,它实现了自己的打印功能(称为打印)。

这种Linux内核和自包含的隐藏提供了Linux内核 主要优点:内核驻留在单个地址空间1中 启用 所有功能都可以以最快的方式进行通信而无需借助 任何类型的消息传递。 特别是,单片内核实现了所有设备驱动程序 系统的结构。

这是单片内核的主要缺点: 引入任何新的不支持的硬件需要重写 内核(在相关部分中),重新编译它,并重新安装整个 操作系统。
更重要的是,如果任何设备驱动程序崩溃,整个内核都会受到影响 结果是。 这种非模块化的硬件添加和硬件崩溃方法 是支持其他极端设计方法的主要论据 对于内核。微内核在某种意义上是一个简约的内核 只有最基本的OS服务(如进程管理和文件系统) 管理)。在微内核中,设备驱动程序位于内核之外 允许在OS运行时添加和删除设备驱动程序 并且不需要替换内核。

答案 5 :(得分:0)

单片内核具有所有内核服务以及内核核心部分,因此很重,对速度和性能有负面影响。另一方面,微内核是轻量级的,从而提高了性能和速度 我在wordpress网站回答了同样的问题。 对于表格形式的单片,微内核和外部内核之间的区别,您可以访问here

答案 6 :(得分:0)

微内核与整体内核之间的区别

微内核和整体内核之间的一些区别如下:

  • 与单核相比,微内核的大小要小得多。
  • 微内核很容易扩展,而对于单片内核则相当复杂。
  • 与单核相比,微内核的执行速度较慢。
  • 编写微内核比单片内核需要更多的代码。
  • 微内核的示例是QNX,Symbian,L4 Linux等。单片内核的示例是Linux,BSD等。

答案 7 :(得分:0)

微内核:

将更多内容从内核移至“用户”空间。

使用消息传递在用户模块之间进行通信。

好处:

1-更容易扩展微内核

2-更易于将操作系统移植到新架构

3-更可靠(更少的代码在内核模式下运行)

4-更安全

缺点:

1-用户空间到内核空间通信的性能开销