微内核和单(宏)内核的区别

内核按照体系结构分为两类 : 微内核(microkernel)与宏内核(macrokernel).

微内核 是将各种服务功能放到内核之外,自身仅仅是一个消息中转战,用于各种功能间的通讯.
宏内核 是将所有服务功能集成于一身,使用时直接调用.
ps:服务功能有进程管理,内存管理等.

微内核的系统有WindowNT,Minix,Mach,etc. 宏内核的系统有Unix,Linux,etc.

下面拿Minix(微内核)和Linux(宏内核)举例:

Minix与Linux创建新进程的过程比较可以看出二者之间的区别,Minix是建立在分模块之上的,模块之间以信息传递联系。Linux内部也是分模块的,但在运行的时候,他是一个独立的二进制大映像,其模块间的通讯是通过直接调用其他模块中的函数实现的。宏内核与微内核的区别也就在这吧,微内核是一个信息中转站,自身完成很少功能,主要是传递一个模块对另一个模块的功能请求,而宏内核则是一个大主管,把内存管理,文件管理等等一股脑全部接管。 从理论上来看,微内核的思想更好些,微内核把系统分为各个小的功能块,降低了设计难度,系统的维护与修改也容易,但通信带来的效率损失是个问题。宏内核的功能块之间的耦合度太高造成修改与维护的代价太高,不过在目前的Linux里面还不算大问题,因为Linux目前还不算太复杂,宏内核因为是直接调用,所以效率是比较高的。

时间: 2024-11-03 21:10:49

微内核和单(宏)内核的区别的相关文章

[转帖]微内核 宏内核

https://www.cnblogs.com/libao/articles/2748867.html Linux 是宏内核,指导linus 开发的 minix 其实是 微内核, 微内核稳定 但是影响性能. Windows NT 是微内核 单位后期为了提高性能 兼有宏内核的特性了. 微内核与宏内核比较内核按照体系结构分为两类:微内核(microkernel)与宏内核(macrokernel). 微内核的系统有WindowNT,Minix,Mach,etc.宏内核的系统有Unix,Linux,et

微内核VS宏内核【转】

本文转载自:https://segmentfault.com/a/1190000002711544 内核按照体系结构分为两类 : 微内核(microkernel)与宏内核(macrokernel). 微内核 是将各种服务功能放到内核之外,自身仅仅是一个消息中转战,用于各种功能间的通讯.宏内核 是将所有服务功能集成于一身,使用时直接调用.ps:服务功能有进程管理,内存管理等. 微内核的系统有WindowNT,Minix,Mach,etc.宏内核的系统有Unix,Linux,etc. 下面拿Mini

宏内核、微内核和混合内核

Monolithic Kernel 无论是Windows还是Linux等等,这些寻常使用的操作系统,都是用内核和管理和使用硬件的. 宏内核. Monolithic,词典义是『单一的,庞大的』,简单理解,就是内核的所有功能,从文件系统,到内存管理,到CPU调度,等等等等,都放在内核态中.这样做有一个很大的好处,那就是所有这些功能都在同一个地址空间下,大家做通信会非常方便,而且通信的成本肯定也是低的,实现起来会快糙猛一些.就是很莽很厉害. 但是,这样也会导致一些其他问题.我觉得最大的问题就是代码复杂

【转载】LINUX 和 WINDOWS 内核的区别

LINUX 和 WINDOWS 内核的区别 [声明:欢迎转载,转载请注明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1.html] 关于LINUX和WINDOWS的口水站已经很多了.本文企图从技术角度来比较下2个主流操作系统的异同.偏重于内核部分. 一.动机: 我最早是 WINDOWS 阵营的.在WINDOWS下写过2年多的驱动程序.后来由于学习需要,转投LINUX,一晃也快2年了.期间经历了很多曲折,也学到了很多

C++中的内联函数和C中的宏定义的区别

在C++中内联函数: 内联函数即是在函数的声明和和定义前面加上“inline”关键字,内联函数和常规函数一样,都是按照值来传递参数的,如果参数为表达式,如4.5+7.5,则函数将传递表达式的值(这里为12),而宏定义则不同. 在C中的宏定义: C语言使用的预处理器语句#define来提供宏,例如:#define SQUARE(X)  X*X,这里宏并不是通过值传递来实现的,而是通过文本替换来实现的. 内联函数和宏定义的区别用下面的代码来观察: //内联函数 inline double squar

关于 html5 代码中 "xxx"(双引号) 和 (单引号)'xxx' 的区别,谈谈我的经验!

最近在学习的时候看到有人问 "find" 与 'find' 的区别,发现了很多人都说没有区别,纯属个人爱好! 于是我好奇地试验了一下,发现了不一样的结果,通过对比分析发现 '' 和 "" (单引号,双引号),还是有很大的区别地! 建议:<!--************为了防止 引号匹配错误: 单引号与双引号交叉使用*******************--> 在使用html onclick 事件属性时候乱用 单引号 /双引号 会出错的,比如: <!

PHP 单双引号的区别

PHP中单双引号的区别 "" 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出.'' 单引号里面的不进行解释,直接输出.所以在效率上 单引号比双引号要快了. 例如:$abc = 'my name is tome';echo $abc //结果是:my name is tomecho '$abc' //结果是:$abcecho "$abc" //结果是:my name is tom PHP引号使用原则1.字符串的值用引号2.PHP中尽量用单引号,HTML代

const和宏定义的区别!!!

宏的命名规范:一般以项目前缀开头,key结尾. #开头表编译. 宏的用法:1.定义常用字符串. 2.定义一段代码. const与宏的区别:1.编译时刻:宏-预编译    const-command+b(编译阶段)编译. 2.宏不会检查代码错误,只是替换,但是const会编译报错. 3.宏的好处:定义代码或字符串.方法.参数 const不能.  坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换. const作用:限制类型 1.const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p)

内联函数与宏定义的区别

内联函数与宏的区别: 内联函数与普通函数相比,可以加快程序的运行速度,因为不需要中断调用,在编译的时候内联函数可以直接镶嵌到目标代码中.而宏只是简单的字符替换. 内联函数要做参数类型检查,这是内联函数跟宏相比的优势. inline一般只用于如下情况: (1)一个函数不断被重复调用 (2)函数只有简单的几行,且不包含for.while.switch等语句. 一般而言,写小程序没有必要使用inline,但是如果要完成一个工程项目,当一个简单函数被调用多次时,应考虑使用inline