Kernel:
Linux-2.6.20准备引入虚拟机模块--KVM。这是一家以色列公司开发的,由于用到了Linux的现有的代码资源(客户机运行在qemu修改过来的代码上,和内核模块通信),所以结构简单,便于整合入内核。与Xen虚拟机制不同的是不支持泛虚拟化,这意味着需要CPU硬件上支持,比如Intel的VT技术,并且性能应该不敌Xen的泛虚拟化工作模式。
从稳定性来看,虽然Xen的Hypervisor的代码精炼了虚拟必要的进程调度,内存管理(最底层的,Linux的内核等相应机制运行于之上,而KVM直接使用了内核机制,所以它仅仅是内核的一个模块!!!),容易确保代码的质量,但是Xen的其他虚拟机的运行依赖于特权的管理域的内核,当这个内核崩溃时,整个虚拟系统也就崩溃了。KVM的虚拟己相当于一个普通进程,这样比较来看,这两套虚拟解决的稳定性是相同的。
Imaging:未来Linux的虚拟方案应该是多级虚拟的,比如,如果一台服务器上同时运行的多个Linux OS,可以采用泛虚拟化来提高性能,运行其他的OS可以利用硬件支持全虚拟化,实现不需要修改第三方OS代码就能运行的第三方的OS。Xen的Hypervisor的特点是把虚拟系统运行的必要最少代码提炼,并且运行于最高权限.缺点是不能利用内核相关的已有代码,存在切换的冗余,而KVM则不。考虑两者的的结合:把Linux的调度、内存管理的最少必要代码独立出来,形成一个Hypervisor,(当然就要修改各组件的通信)。这个结构非常类似微内核的结构了。从现有网上消息来看,如果要开发一个新的Linux2.7的分叉,分布式和虚拟化的支持是这样作的主要动力。事实上微内核在分布式领域的有着自身的优势。
另外一个问题也就是CPU与将来出现的xPU(或者说协处理器)的内核支持。目前的来看,CPU将发展为一个负责全局统筹的器件(也就是说操作系统的核心代码只能运行在CPU上),而其他的xPU则负责计算。这也许也是推动微内核化的一个动力。xPU将由模块驱动在user space)。
总结:如果分叉2.7内核,期待内核结构的变化。
UI:
人机界面的进化。什么样的人机界面才算是优秀的。现在业界的答案是3D化的。诚然,3D与2D的界面比起来,表现的空间更大了,理论上有一定的优势。事实上,这仅仅是表象上的。可以观察一下,电影大作中,特别是科幻电影大作中,计算机的人机界面大部分是字符界面为主的。从实际使用来看,字符界面非常干净,(在这个各种表现元素混杂的GUI年代,一个干净的UI非常亲切),并且非常酷(比如终端下使用mplayer播放媒体,看到播放数据的输出,比那些视觉化的特效有趣的多了)
这里并不是倒GUI的苦水。而是说明当前UI发展的一个误区--只注重表现,而不注重各个UI元素的内在逻辑(包括人体工程学方面的逻辑)结构。计算机编程中,文件的作用就是抽象了各个设备的差异,提供了统一的操作接口。现在UI同样需要这样一个接口:定义UI元素的逻辑作用,自动处理内在的逻辑关系,并且映射到具体的UI控件上(widget),不管是3D的,2D的还是字符的,只要存在这个映射就行了。从程序员的角度,代码中将能在各种映射的UI中使用,并且独立于具体的UI的实现部分(这样,比如当UI实现的库升级为3D了,只要存在相应映射,程序的代码不经修改也呈现的3D的效果)。当然,由于现实UI的复杂性,UI的接口也将有继承,形成一些类别。目前Adobe的ASL库似乎做了这方面一些有趣的工作。
另外一点,表现形式上被忽视的一点:动态表现。目前GTK的控件似乎没有动态行为。在firefox以及eclipse新版均出现提示动态出现。动态表现的好处是能够吸引使用者的眼球,可以表现当前的紧急信息。将来可以考虑增加一个动态特效实现的库,就像现在的cairo被加入一样,甚至可以考虑GEGL的并入。
总结:一个逻辑的UI接口
开发环境:
从某种意义上来说,对于入门使用某些开源库开发而言,还是比较辛苦的。事实上,有的程序库是潜在形成了自己的语言。这里所谓语言的,指的是文法。文法是定式的固化。这里偏指了GObject,用C语言实现了面对对象的库。当定义类时,很多代码是定式,逻辑上可以等同于C++中的几小句。当使用特定文法时,代码精简,含义清晰。当然已经有宏语言(GOB2)实现了这个过程。使用时通过GOB的预处理,替代为C语言。更为方便的工具--如可视化操作控件实现则还没有实用的。
Imaging:库带上可视化的开发使用环境。这个意义上来说类似UML。
总结:每个足够复杂的库,创建一个可视化的开发使用工具(以及作这种工作的自动化工具?)。
其他当前的消息:
在IBM developerworks上提到m17n库,在国际化处理方面的优势。目前m17n官方想进一步整合到Linux下常用的各个库中(比如GTK的pango,还有更底层的X库以及还要更底层的库),似乎人手不足,并且其他项目(比如GTK)也没有给予关注。开发者希望中国政府能够出面给予推广(开发者是日本的程序员,由于中日韩三国有开源软件的合作计划,大概是这么一回事...)
EGL方面也没有新的消息,不过值得高兴的是在OpenGL2.0发布两年以后,Mesa3D对2.0的支持终于基本完成了,现在需要内测。
开发中的GCC的4.2版将增加OpenMP的处理过程,对程序实现编译器的多线程自动优化。GCC4.3版的增加了对酷睿2的优化。当前GCC的工作重心似乎集中在了编译的中到后端的转化上。前端变化不带,笔者希望能够各个端独立出库来,方便更多应用。
Firefox3.0的alpha版,将重拾2.0发布时丢弃的功能。其中一点:使用cairo库矢量图形输出。