0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

相比其他系统的内核设计Linux是否已经过时?

马哥Linux运维 2017-11-29 17:25 次阅读

Linux 多年来取得的成绩毋庸多言。但最近,reddit 上有人发起了一个话题,想知道 Linux 的内核设计是否已经过时,并得到了一些有趣的答案。

这位Ronis_BR的用户提问大致如下:

Linux 是在 1992 年启动的,一些特性到现在都没有改变。我猜想最新操作系统内核设计技术(如果存在…)应该较之前有很大的进步。那 Linux 内核是否已经过时?

与 Windows、macOS、FreeBSD 内核的设计相比,Linux 内核的设计有没有在哪些方面比较先进?(注意,重点是设计的先进,而不是哪一个更好)。

该话题引起了近 400 条回复,大家纷纷发表了自己对内核设计的看法,节选几条不同的观点:

ExoticMandibles:

“过时”?不存在的。Linux kernel 对现代内核的设计其实是非常了解的,只是它选择了保持传统的形式。

内核设计的核心在于“安全/稳定”和“性能”之间的关系。Microkernels(微内核)以性能为代价保证安全。如果你有极小的微内核,那么它将具有相对较小的 API surface,使其难以被攻击。而且当你有一个错误的文件时,驱动程序崩溃而不占用内核,可以无损重启。优越的稳定性!优越的安全性!一切很美好。

但这种方案的缺点是所有 IPC 永远且不可避免的开销。如果你的程序想从文件加载数据,则必须访问文件系统驱动,这意味着 IPC 要处理进程上下文切换和两次 ring transitions 。然后,文件系统驱动要求内核与硬件通信,这也意味着两次 ring transitions。然后文件系统驱动发送其回复,这意味着又一轮的两次,以及另一次上下文切换。总开销:两次上下文切换,两次 IPC 调用和六次 ring transitions。非常贵!

宏内核将所有设备驱动合拢到内核中。所以当出现一个错误的图形驱动,就可以占用内核,或者如果它有一个安全漏洞,那么可能被用来危及系统。但是,如果你的程序需要从磁盘加载某些东西,则会调用内核,进行 ring transitions,与硬件通话,计算结果,并返回结果,进行另一个 ring transitions。总开销:两次 ring transitions。便宜得多,也快得多!

简而言之,微内核是:“放弃性能来提高安全性和稳定性”;宏内核是:“保持性能,只要修复安全和稳定性问题就可以了”。而目前,大家更愿意接受后者。

Scandalousmambo:

开发一个和Linux kernel 相同的系统,从本质上决定了它一旦设计出来就会“过时”。

KugelKurt:

尽管这里讨论的大部分内容都是关于微内核与宏内核的关系,但是最近的研究还涉及到编程语言。如果你今天启动一个全新的内核,那么就可能不会用 C 去写。微软的 Singularity 和 Midori 项目探讨了用 C#托管代码内核的可行性。

Daemonpenguin:

有一些概念,在理论上可以提供更好的内核设计。比如,理论上微内核也有一些非常好的设计选择,使得它们具有便携性、可靠性和潜在的自我修正能力。

然而,无论理论多么好,人们总是会根据实际情况进行设计。Linux 内核拥有如此多的硬件支持,那么多公司支持开发,其他内核(不管设计得多炫酷)都不太可能赶得上。

例如,MINIX 具有良好的设计和一些很棒的功能,但硬件支持很少,几乎没有人为此平台开发。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10974

    浏览量

    206670

原文标题:Linux kernel 的设计是否已经过时?

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问如何给STM32MP157上Linux5.4.31打实时内核补丁?

    版本对应的实时内核补丁。不知道Atmel公司是否有做好的实时内核补丁,可以供用户使用呢?如果没有对应的版本,我是否可以使用其他
    发表于 03-11 06:09

    RZ/G2L Linux系统如何添加新的内核模块

    RZ/G2L Linux系统的镜像基于yocto构建,本篇介绍如何添加新的内核模块。
    的头像 发表于 01-04 12:19 922次阅读
    RZ/G2L <b class='flag-5'>Linux</b><b class='flag-5'>系统</b>如何添加新的<b class='flag-5'>内核</b>模块

    获取Linux内核源码的方法

    (ELF1/ELF1S开发板及显示屏)Linux内核是操作系统中最核心的部分,它负责管理计算机硬件资源,并提供对应用程序和其他系统组件的访问
    的头像 发表于 12-13 09:49 283次阅读
    获取<b class='flag-5'>Linux</b><b class='flag-5'>内核</b>源码的方法

    Linux内核UDP收包为什么效率低

    栈收包效率真的很低,这是为什么?有没有办法去尝试着优化?而不是动不动就DPDK。 我们从最开始说起。 Linux内核作为一个通用操作系统内核,脱胎于UNIX那一套现代操作
    的头像 发表于 11-13 10:38 237次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>UDP收包为什么效率低

    如何优化Linux内核UDP收包效率低

    真的很低,这是为什么?有没有办法去尝试着优化?而不是动不动就DPDK。 我们从最开始说起。 Linux内核作为一个通用操作系统内核,脱胎于UNIX那一套现代操作
    的头像 发表于 11-10 10:51 270次阅读
    如何优化<b class='flag-5'>Linux</b><b class='flag-5'>内核</b>UDP收包效率低

    Linux内核时钟系统和定时器实现

    Linux内核时钟系统和定时器实现 Linux 2.6.16之前,内核只支持低精度时钟,内核定时
    的头像 发表于 11-09 09:12 569次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>时钟<b class='flag-5'>系统</b>和定时器实现

    千兆光模块和万兆光模块已经过时了吗?

    领域。本文从千兆和万兆光模块的技术特点和市场趋势分析入手,探讨它们是否已经过时,以及它们是否可以适应未来网络的发展趋势。
    的头像 发表于 10-09 10:00 248次阅读

    Linux内核之LED子系统(一)

    Linux内核的LED子系统是一种重要的框架,用于管理和控制设备上的LED指示灯。在嵌入式系统和物联网设备中,LED子系统发挥着关键作用,为
    发表于 10-02 16:53 256次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>之LED子<b class='flag-5'>系统</b>(一)

    linux内核源代码详解

     在安装好的Linux系统中,内核的源代码位于/ust/src/linux.如果是从GNU网站下载的Linux
    发表于 09-06 17:01 2次下载

    Linux内核如何使用结构体和函数指针?

    我将结合具体的Linux内核驱动框架代码来展示Linux内核如何使用结构体和函数指针。
    的头像 发表于 09-06 14:17 554次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>如何使用结构体和函数指针?

    Tripwire在有人经过时自动最小化选项卡

    电子发烧友网站提供《Tripwire在有人经过时自动最小化选项卡.zip》资料免费下载
    发表于 07-06 15:11 0次下载
    Tripwire在有人<b class='flag-5'>经过时</b>自动最小化选项卡

    Linux内核Linux系统中到底处于一个什么样的地位

    Linux操作系统是当今世界上最为广泛使用的开源操作系统之一,内核则是一个操作系统的核心和灵魂所在。
    的头像 发表于 07-06 11:48 794次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>在<b class='flag-5'>Linux</b><b class='flag-5'>系统</b>中到底处于一个什么样的地位

    Linux内核的作用

    Linux操作系统是当今世界上最为广泛使用的开源操作系统之一,内核则是一个操作系统的核心和灵魂所在。对于一名
    发表于 07-06 11:46 1195次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>的作用

    Linux系统内核概述

    Linux 内核Linux 操作系统的主要组件,也是计算机硬件与其进程之间的核心接口。它负责两者之间的通信,还要尽可能高效地管理资源。
    发表于 06-09 09:29 339次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统</b><b class='flag-5'>内核</b>概述

    什么是Linux内核 Linux内核体系结构

    如果Windows已经安装了所有可用的驱动程序,而您只需要打开所需的驱动程序怎么办?这本质上就是内核模块为Linux所做的。内核模块,也称为可加载
    发表于 06-01 09:59 900次阅读
    什么是<b class='flag-5'>Linux</b><b class='flag-5'>内核</b> <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>体系结构