为什么80%的码农都做不了架构师?>>>   

不是所有的新功能都可以进入内核,本章节展现了进入Linux内核崎岖的道路。
  对Linux的商业用户来说,Linux内核的开发可能非常复杂神秘,因为由几十个人维护着不同的部分,有几百名志愿者提交代码,你很难判断新功能的走向。

  从本质上来说Linux的开发也没有线路图。要一窥全豹,以下是7个值得关注的开发热点,基于对开发人员和内核维护人员的采访。不是所有的新功能都进展顺利,下文展现了各新功能进入内核的崎岖之道。

  1虚拟化

  认识到虚拟化在这十年里日益成为“大趋势”,Linux内核维护者把它作为优先考虑的功能,加快了虚拟化技术添加到内核的进程。由初创公司Qumranet的Avi Kivity提供的KVM虚拟管理程序,就包含在2006年末发布的内核中并在上个月的发布中继续升级。这个例子很好地展现了快速内核发布和缓慢企业版进展之间矛盾。

  Novell公司的副总裁霍尔格•杜尔夫(Holger Dryoff)表示“我们认为KVM还不适合企业使用。”他补充说,在KVM能被加到SUSE Linux之前,它需要在内核子系统包括调度器的交互上经过更多的测试。

  最近被Citrix Systems耗费5千万美元收购的商业开源虚拟化公司XenSource,一直在游说想把自己架构的Xen虚拟机管理程序(Hypervisor)加入到内核里。内核维护人员认为添加这种虚拟化功能会大大增加维护工作量。最终XenSource的工程师放弃了,但仍继续调整Xen以配合内核的运行。它暂时还进不了内核,只能先增加了一些支持,使Linux在运行虚拟环境时可以识别它。

  其他的虚拟化功能发展迅速,包括KVM和Lguest。Lguest是由IBM工程师Rusty Russell开发的一个只有5000行代码的精简hypervisor(虚拟机管理程序),它已经包括在最近版本的内核里了。和KVM相似,它支持Intel和AMD芯片的最新虚拟化技术。但又与VMware公司的ESX Server不同,在Lguest创建的虚拟机里的操作系统知道自己是被虚拟出来的。所以在调用CPU周期时它可以直接向真正的硬件发出请求,而不是作为中间媒介而降低了效率,因此这种架构大大提高了效率。

  2实时操作

  Linux在实时操作上获得了长足的提升,因为现在它常常被用作手机和其它设备上的嵌入式系统。但最近发布的2.6.23内核显示它在实时操作上“稍有退步”,商业嵌入式Linux厂商MontaVista 的首席技术长官(CTO)和创始人吉姆•瑞尔迪(Jim Ready)抱怨说。这个新的进程调度器更强调“公平”——这意味着要由最终用户告诉处理器哪些待处理的任务可以获得更高的优先级。

  “实时用户不需要公平,”瑞尔迪认为,因为实时要求无论CPU在做什么,都可以插入一个新的优先级以中断操作。一个简单的例子是,在医疗设备里监控病人呼吸的软件在发现病人呼吸停顿时,能发送一个即时警告,软件无论在处理什么任务都要先中断停下来。瑞尔迪表示,除非实时性能有改善,否则MontaVista不会把新的内核整合到自己的产品中来。Gartner分析师乔治•维斯(George Weiss)预测标准版的Linux要到2008年才能成为有竞争力的实时系统。

  3中断处理

  维斯那样说其中一个原因是因为内核开发人员正致力于使进程调度器具有实时功能。操作系统的关键环节是中断的管理——它决定了哪些任务能获得CPU的处理权,如何排列不同行为之间的优先级。如果所有的中断处理器都可以被结合到自己的线程中去,那个线程就可以被调度并设置优先级,而不是无法预知地运行和延迟的实时响应。

  过去三年来这样的努力一直没有停歇过。MontaVista的斯文•托斯滕•迪特里奇(Sven-Thorsten Dietrich)在2004年就提交了代码,希望防止中断处理程序为了常规任务而中断内核,因为它们干扰了实时响应。但这些代码的破坏性太大,以致无法获得内核调度领域的专家Ingo Molnar的认可。这些代码影响了一个关键内核功能自旋锁(spinlock),当进程在等待需要的数据或事件时,它可以锁定CPU。许多进程依赖于自旋锁。Dietrich的代码把几百个自旋锁减少到30个;Molnar的修订保留了90个自旋锁,比前者破坏性要来得少些。

  把中断处理器集合到一个统一的独立线程的想法看来已开始成熟并准备进入内核了。“Ingo替换了我们的做法,但他做得很棒,” 瑞尔迪说道。MontaVista并不在乎自己的努力是否能获得更多的荣誉,瑞尔迪理解这就是开源合作的方式,因此他接受正在进入内核的实时功能的修改。

  4安全

  人人都希望有个更安全的系统。Novell在发布SUSE Linux Enterprise Server 10的同时一起发布了AppArmor,它是一个限定应用程序可以访问操作系统哪些资源的软件,这样可以限制应用因非法授权访问而造成的危害。然而在近期内它还不太可能会被加进内核。

  Linux安全的权威专家、另一套安全机制SELinux 的开发人员斯蒂芬•斯玛莱(Stephen Smalley)则认为AppArmor不能被加进内核是因为它的保护机制是基于“路径名称”的方式,它本质上就是一个白名单设置,AppArmor只允许应用程序访问在名单上的文件,所有其他的文件都不能访问了。根据去年乔纳森•科贝特(Jonathan Corbet)的一份报告,斯玛莱认为一个狡猾的入侵者可以利用合法路径名称而猜出其他的名字,制造不必要的暴露。

  内核维护人员安德鲁•莫顿同意是因为这种路径名机造成AppArmor不能进入内核的根本原因。“我不是个安全程序员,”他说。“我不知道可以怎样解决这个问题。”

  5系统诊断

  Solaris可以使用DTrace工具检测操作系统核心的运行状况,但Linux缺乏用户界面友好的检测工具。目前仅有的几个工具之一是ptrace,该程序可以让一个进程跟踪另一个进程的行为。但ptrace使用起来非常笨拙并容易发生错误,现在有了替代品utrace,它已经进入Morton的内存管理代码树,即将会被提交给李纳斯•托沃兹。当Utrace被一个程序执行时它可以跟踪该进程的行为,却没有ptrace的那些问题,但它仍然会导致内核里的锁问题。科贝特预测在下一版本的内核里仍然不可能包含该工具。

  6文件系统

  Reiser4文件系统已被考虑额外增加到内核里去,内核现在已经包含30多种文件系统。Reiser4是一个大型的文件管理系统,根据汉斯•瑞塞尔(Hans Reiser)的文档,它的优势在于只需要最少的磁盘空间,就能处理数量众多的小文件。

  该文件系统要求对文件的操作要不就完成,要不就放弃,以避免文件操作完成到一半导致文件被破坏。这对许多Linux应用看起来很完美,但经过多年的争辩,Reiser4还是没能加入内核。它与内核的某些部分配合不好,而且最重要的开发人员瑞塞尔本人已经退出了项目。“要使它成为Linux主流的一部分,它需要一个新的带头人,”科贝特在本月早些时候预测它的前景时说。

  ZFS是Sun Microsystems的128位文件系统,它可以乘数方式扩展 Linux的地址空间,远超现在系统的最大使用需求。它的支持者认为它应该被加进内核。但它目前的授权与Linux GPL不兼容。

  7电源管理

  Linux 在电源管理上相对落后,而Windows笔记本上的电源管理则令人刮目相看,这刺激了Intel工程师内核开发人员Molnar和托马斯•格雷赛纳尔(Thomas Gleixner)以及其它人推动电源管理的改进。一年前,内核加入“tick-less idle”机制,当没有工作需要完成的时候通知处理器处于空闲状态。如果没有它CPU的时钟就会每秒向内核发出1000次询问,查看是否有工作要完成,白白浪费了电力。

  Intel的首席Linux技术员德克•亨德尔预计在电源管理上会有进一步的改进。但内核和系统时钟里的任何改动都会影响许多其他的交互。他认为,“这些事情可能会困难重重,需要花费很长的时间,但是我肯定这个发展方向是正确的。”

转载于:https://my.oschina.net/jtihj/blog/1973

Linux有待提高的七个领域相关推荐

  1. 人工智能(17)----人工智能视频监控 实用性有待提高

    人工智能视频监控 实用性有待提高 截至目前,人工智能的成就一直都是趣味性大于实用性.相信随着2018年的到来,人工智能还会有很多激动人心的进展出现,尤其是在视频监控方面.不过,随着时间的推移,除了在医 ...

  2. Linux操作系统中的七件超厉害的武器

    Linux是一套免费使用和自由传播的类UNIX操作系统,主要用于基于Intel x86系列CPU的计算机上.Linux系统是由全世界各地的成千上万的程序员设计和实现的,其目的是建立不受任何商品化软件的 ...

  3. Linux操作系统中的七种武器

    Linux是一套免费使用和自由传播的类UNIX操作系统,主要用于基于Intel x86系列CPU的计算机上.Linux系统是由全世界各地的成千上万的程序员设计和实现的,其目的是建立不受任何商品化软件的 ...

  4. 成为 Linux 终端高手的七种武器

    成为 Linux 终端高手的七种武器 2017-03-23 17:34:31     来源:    点击:0 inux 终端不仅是一个键入命令的地方.如若你能熟谙这些基础技巧,那么你会在绝大多数 Li ...

  5. linux桌面效率提高,ElementaryOS:使用这个轻量级 Linux 桌面提高工作效率

    原标题:ElementaryOS:使用这个轻量级 Linux 桌面提高工作效率 ElementaryOS 提供了一个快速.轻量.高效的桌面,让你在新的一年里保持工作效率. 在前几年,这个年度系列报道了 ...

  6. Linux系统编程(七)消息队列

    Linux系统编程(七)消息队列 一.什么是消息队列 二.消息队列内部原理 三.实现消息队列的收发 1.发送消息队列 2.接收消息队列 四.消息队列与命名管道的比较 一.什么是消息队列 消息队列提供了 ...

  7. 十天学Linux内核之第七天---电源开和关时都发生了什么

    十天学Linux内核之第七天---电源开和关时都发生了什么 原文:十天学Linux内核之第七天---电源开和关时都发生了什么 说实话感觉自己快写不下去了,其一是有些勉强跟不上来,其二是感觉自己越写越差 ...

  8. 提高linux运行速度,提高Linux操作系统的运行速度

    我们以前介绍了通过优化配置桌面环境来提高系统速度的方法,其实在其他的一些方面,我们一样可以精心配置来提高系统速度. 一.提升硬盘和光驱的数据传输性能 我们可以使用命令"hdparm 参数 设 ...

  9. Linux与云计算——第二阶段Linux服务器架设 第七章:网站WEB服务器架设—日志分析平台...

    Linux与云计算--第二阶段Linux服务器架设 第七章:网站WEB服务器架设-日志分析平台 日志分析:AWstats 安装AWstats分析http日志信息. [1] Install AWstat ...

  10. linux协议栈学习 第七节 GRO的实现

    linux协议栈学习 第七节 GRO的实现 GRO (generic receive offload) 概述: GRO是在协议栈接收报文时进行减负的一种处理方式,该方式在设计上考虑了多种协议报文.主要 ...

最新文章

  1. OSChina 周三乱弹 ——我求婚,你敢答应吗
  2. Android10.0 Binder通信原理(六)-Binder数据如何完成定向打击
  3. Nadron的Sping配置文件学习
  4. python汽车行驶工况_什么叫车辆行驶工况
  5. 基于VHDL语言的数字秒表实现
  6. Java 面向对象编程的三大特性——封装、继承、多态
  7. 这是AI?这是爱?这是能全方位监控学生的“智能校服”
  8. mysql query generator_mybatis generator生成连接mysql与sqlserver的区别
  9. 拖拽动态生成网页-VvvebJs
  10. 用 c 写 CGI 程序简要指南
  11. paip.获取当前实际北京时间API
  12. 知瓜数据丨月入过亿的品牌“李宁”,如何成为直播营销的领头羊
  13. 什么是mysql 的冗余备份_什么是数据库中的“数据冗余”?
  14. 处理海量数据的方法与思路
  15. 魔兽争霸无法在这个计算机,W7系统魔兽争霸3不能初始化DirectX怎么办
  16. java文字云_在线文字云制作工具
  17. textarea内容换行,textarea中换行符br失效
  18. 高一计算机专业班主任工作总结,计算机班主任工作总结
  19. 微信小程序调用腾讯地图API进行驾车路线规划
  20. Instant economics 即时经济 经济学人中英双语对照精读笔记

热门文章

  1. initramfs文件解压方法
  2. (转)vpp feature node使用分析总结(snat)
  3. L3-015 球队“食物链” (30 分)
  4. 3806. 最小化字符串-AcWing题库
  5. Coins(HDU2844)
  6. 科学计算库BLAS LAPACK ATLAS OpenBLAS MKL EIGEN等之间的关系
  7. 求整数n次方以及矩阵n次方快速解法
  8. SqlServer Convert函数 日期格式化
  9. python3.7.2安装教程不成功_centos 7.2更新python 3.7、3.5.2的过程及出错的解决方法
  10. active mq topic消费后删除_天天在用消息队列,却不知道为啥要用 MQ ,这就尴尬了...