有没有人可以用单片和微内核之间的例子来解释一下?还有其他内核分类?
答案 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)
微内核和整体内核之间的一些区别如下:
答案 7 :(得分:0)
微内核:
将更多内容从内核移至“用户”空间。
使用消息传递在用户模块之间进行通信。
好处:
1-更容易扩展微内核
2-更易于将操作系统移植到新架构
3-更可靠(更少的代码在内核模式下运行)
4-更安全
缺点:
1-用户空间到内核空间通信的性能开销