宏内核linux,Linux 为什么还要坚持使用宏内核?

导航:网站首页 >

Linux 为什么还要坚持使用宏内核?

时间:2016-5-14

相关问题:

匿名网友:

目前主流的操作系统(MAC OS X,Windows)都是使用了微内核来实现,但是...答:这问题就和 CISC 和 RISC 之争一样没有意义。容易归纳出来一个结论,很多时候极端终将会归于中庸。

热心网友:

这问题就和 CISC 和 RISC 之争一样没有意义。容易归纳出来一个结论,很多时候极端终将会归于中庸。

热心网友:

本文还这个回答的一个债:Linux 战略或生态圈是什么? - in nek 的回答。里面提到微内核都是学院派的意淫,这里回答为什么。

我没有指向——我只是为了说明问题——如果是真心问这个问题很大程度上反映了提问者还是个代码中二:)

我说的“中二”,是那种没有经验,只有“名”,没有“实”的思考者。具体名称空间定义参考这里:《道德经》讲了什么?为什么它广受推崇? - in nek 的回答。这种人,在社会中是会被老子这样的人K的:)

对应地,这样的人在Linux世界中也是要被Linus K的。

我解释一下为什么:“是否微内核”仅仅是一个名字定义的问题,和用户要解决的问题一点关系都没有。我们在维护架构的时候,首先保证不创建额外的概念解决非直接用户相关的问题。这种情况下,为什么要为Linux引入微内核?现在没有问题要解决了?到了吃饱饭没事干瞎做死的时候了吗?

微内核只是学院概念,学院概念都是听着很有道理,但经过打磨以后才能肯定是否正确道路的。你看每年有多少红点设计奖?有几个被复制到所有的类似产品中的?为什么没有复制?不是专利和版权限制,是那个设计有创意,但并不实用。

微内核有成功的例子么?Minix是个教学系统,WindowsNT一开始说微内核,结果怎么呢?把图像渲染丢内核里了,QNX算是最成功的商用微内核系统了,但我告诉你QNX是怎么工作的:你要把用户程序,协议栈,驱动都放到一个进程中的。

这背后反映了什么?这反映了,如果你要参与市场竞争,你要用尽一切能力去保证功能和性能,其他一切理论优势,都是不靠谱的。微内核可以优化到和宏内核一样的数据流效率吗?如果它能够,它就不是微内核了好吧?所以,你让微内核系统如何在市场竞争中活下去?不能在市场竞争中活下去,谁来开发微内核系统?

而且,比如Linux这样的架构,有什么东西阻止你把驱动放到用户态了吗?(否则你以为fuse是什么?)有什么阻止你在其中增加一个优化的进程间通讯吗?什么都没有。换言之,宏内核系统分分钟可以变成微内核系统,而微内核系统是无法回头的。

你要成为一个想Linus那样的好架构师,真要好好学学这个基础的虚心实腹的设计理念。这个理念现在贯穿所有的Linux核心维护者的维护哲学。比如他们基本上,不接受没有硬件支持的代码,不接受概念产品的代码,不接受已经上市产品的代码。这些都是这个基本理念的一脉相承。

热心网友:

我想说,现在没有绝对宏内核,也没有绝对微内核,只是某种形式的杂种

热心网友:

目前得票第二的 @王垠 的答案比较有误导性。所以说明一下。

Micro-kernel 和 kernel 的「动态性」无关。实际上,Linux kernel 内部有大量的动态行为。包括动态地使用文件系统 driver,动态加载 module。只要这些动态行为都发生在 kernel-space,就还是 monolithic-kernel。所以 @王垠 的基本比喻就是错误的。

用类似的比喻,Micro-kernel 的性能问题不在于「问这东西在哪」,而在于必须「把这东西复制一份,外加校验」,从而防止内存 corruption 引起的 bug。

系统越大,bug 越多,这个事实不假。但是 micro-kernel 的拥趸搞错了一件事情:bug 增长的拐点在什么地方。在拐点之前,要用艰苦奋斗修 bug 来解决,拐点之后,才需要加 defensive 机制。否则就是 over-defensive。什么叫 over-defensive?如果你的代码每次访问一个指针都要检查 nullity,不管是高层模块还是底层模块,就是 over-defensive。Over-defensive 不光不能减少 bug,还会把一些在 sanity/smoking test 就能发现的 bug 整成 random failure。事实证明,Unix 内核根据「mechanism, not policy」制定的极为精简的功能需求的复杂度远远在造成 bug 增长的拐点之前。

最后,monolithic-kernel 就是 micro-kernel。谁也不能阻止你把 Linux kernel driver 的 policy 部分挪到 user-space,甚至你可以把 Linux 的 paging policy 也写成 demon。很多 Linux 的 CPU 中断相应调度就是在 user-space 控制的。Micro-kernel 只是强制的 micro-kernel。

大家还关注:

问题推荐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值