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

任何人都可以请示例单片和微内核之间的差异解释? 还有其他的内核分类?

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

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

1 )单核内核比微内核要老很多,这个想法是在二十世纪八十年代末期构思的。

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

3 )单片内核比微内核快。 第一个微内核马赫比单片内核慢了50%,而后来的L4比单片内核慢了2%或4%。

4 )整体的内核一般都很笨重。 一个纯微内核的尺寸必须很小,以适应处理器的L1caching(第一代微内核)。

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

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

7 )单片内核使用信号和套接字来确保IPC,微内核方法使用消息队列。 第一代微内核在IPC上执行得不好,所以上下文切换很慢。

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

单片内核

内核中的所有部分(如调度程序,文件系统,内存pipe理,networking堆栈,设备驱动程序等)都被维护在单核内核中的一个单元中

优点

•更快的处理

缺点

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

示例 •MS-DOS,Unix,Linux

微内核

只有IPC(Inter进程通信),基本调度程序,基本内存处理,基本I / O原语等非常重要的部分被放入内核。 沟通通过消息传递发生。 其他人则作为用户空间中的服务器进程维护

优点

•防碰撞,便携,尺寸更小

缺点

由于附加的消息传递,处理速度较慢

示例 ?Windows NT

1.单片内核(Pure Monolithic): all

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

    ( – )添加/删除是不可能的,更less/零灵活

    (+)组件间通信更好

例如: – 传统的Unix

2.微内核: few

  • 来自核心内核的很less的服务(内存pipe理,CPUpipe理,IPC等),来自不同层/组件的其他服务(文件pipe理,I / Opipe理等)

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

    (+)灵活更改/升级

    ( – )通信开销

例如: – QNX

3.模块化内核(Modular Monolithic): most

  • Micro和Monolithic内核的组合

  • 模块集合 – 模块可以是 – >静态+dynamic

  • 驱动程序以模块的forms出现

例如: – Linux现代操作系统

在内核devise的范围内,两个极端点是单核内核和微内核。

例如(经典的)Linux内核就是一个单一的内核(所​​有的商业操作系统也是如此 – 尽pipe他们可能会声称)。

因为它的代码是一个单一的C文件,引起了一个实现上述所有服务的过程。
为了举例说明Linux内核的封装,我们说Linux内核甚至不能访问任何标准的C库。 事实上,Linux内核不能使用基本的C库函数,如printf。 而是实现自己的打印function(称为打印)。

Linux内核的隔离和自我遏制为Linux内核提供了主要优势:内核驻留在单个地址空间中,使得所有特性能够以最快的方式进行通信,而不需要任何types的消息传递。 特别是,单片内核实现了系统的所有设备驱动程序。

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