|
|
用户名:cee1 笔名:cee1-千鸟 地区: 南京-杭州 行业:其他 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
常用链接
(作者置顶)
写在2007年之前
Imaging:The Future Linux(2)
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内核,期待内核结构的变化。
人机界面的进化。什么样的人机界面才算是优秀的。现在业界的答案是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库矢量图形输出。
gtk_utility (flex_toolbar)alpha测试


Linux未来一瞥(1)
Linux未来一瞥(1)
以Linux为代表的开源世界,每时每刻都有很多新的点子,站长收集了一些这方面的材料,就出来整理整理。欢迎大家和我一起讨论:cee1.F@yeah.net
随着SLED(Suse Linux Enterprise Desktop)10.0的发布,广大Linux掀起一股XGL热。确实XGL的效果称的上是非常华丽。这里有个例外,RedHat不采用这个技术。作为Novell(SUSE)的竞争对手,RedHat推出的是AIGLX,一个修改原来的Xserver协议来获得3D的窗口显示方式。X-window窗口系统是采用Client-Server模型,Xserver就是对底层显示系统的封装。Novell认为现在的Xsever不能够高效地承载未来3D显示窗口的需求,所以重写了Xserver:XGL,就是X over OpenGL的意思。
窗口系统使用OpenGL来渲染(不是使用CPU仿真,而是用过显卡驱动来完成渲染)除了效果及其绚丽,性能也会有很极大地提升,比如纹理可以压缩,节省内存。又比如不是每个窗口都需要很多颜色(终端窗口就是这样一个例子),如果用Index色就会节省颜色的存储。更多的好处可参见www.freedesktop.org->software->xgl。
现在的XGL仅仅是一个演示版。这里先说明一下OpenGL。OpenGL与DirectX不同之一:OpenGL是一个标准,可以理解为规定了API的函数名,具体的实现有很多不同的软件,在Linux下OpenGL的实现主要是Mesa(mesa3d),最新开发版本是6.5.1,实现了OpenGL1.3(OpenGL最新的标准是2.1)。OpenGL的标准设计原则是简单就是美,这就决定了OpenGL不能独立的存在。OpenGL需要一个窗口系统(通过一个库)来管理3D渲染之外的,比如在windows,这个库就是wgl。在X-window下就是glx,Apple下是agl。前面说过,XGL是运行于OpenGL之上的Xserver,而OpenGL的又运行于Xserver之上(需要调用Xserver的glx库)。这就导致目前的XGL的两层Xserver结构,如图1:

图1:当前XGL的两层Xserver结构
从构架上来看,这个结构有点ugly,优点就是既能2D显示,又能3D显示。
在XGL的计划中,OpenGL将运行于一个叫作EGL(E代表embedding,嵌入式)的接口之上(EGL初始是为了嵌入式设备(如手机的)能够3D渲染,采用OpenGL ES(用于嵌入系统3D显示的API),所以是非常精简(嵌入系统的存储空间有限)。)这是个非常精简类似于glx的库,现在也由mesa小组开发。XGL未来的结构如图2:

图2:XGL的设计构架
XGL以及相应窗口管理器日趋稳定。EGL的开发似乎非常缓慢。主要的原因还是设备的3D驱动的编写。目前Linux下的显卡3D驱动加速还很不完善,最主要的是主要的图形厂商除了Intel(Intel的集成显卡是市场占有第一的)之外,Nvidia和AMD(ATI)都没有开放驱动源代码的计划,这就使得不能利用社区的力量,是EGL的开发不利之一。
另外,似乎有安于目前XGL的趋势出现,比如Mandriva的Xorg负责人曾说,Mandriva将跳过对目前的XGL的支持,直接支持EGL为基础的XGL。而Mandriva2007发布的时候,已经支持XGL和AIGLX。
portland工程的成果xdg已经发布,这是个能让程序跨KDE和GNOME环境运行的标准接口。
据说2.12版将集成XML界面文件导入功能。这个原来是通过libglade实现的。即通过RAD工具Glade绘制界面,生成glade文件(XML文件),然后由libglade导入。
基于OpenGL的3D渲染?Gkt+通过底层GDK来在不同的平台上运行,(如GDK-X11,GDK-WIN32...)目前另外的小组(开发者大概是来自日本)GTK+开发了GDKGLAREA,通过OpenGL渲染。其实在XGL下,由于整个X系统运行于OpenGL之上,目前常用的GDK-x11也就通过X系统自然运行于OpenGL之上了。
gnome-print将会被淘汰,转而使用GTK+的print方面功能。
bonobo将被淘汰,转而使用DBUS库。这是个用于桌面的软件之间通信的库。
gnome-vfs将被改写,开发者认为目前gnome-vfs的已经到极限了。
其他好玩的东东:
gimmie(后文还将谈到)相关网址:www.beatniksoftware.com/gimmie/
leaftag...
GIMP是一个类似Photoshop的光栅画图处理软件。其下一代核心GEGL代码目前由开发者展示,编译需要ruby语言支持。相关网址:pippin.gimp.org/gegl/
日月光华--媲美卡巴的国产杀毒软件
专业性能测试后记(产品出错花絮)
如果由于参测软件出现异常退出,临时将出错文件转移至D盘后继续,待测完此款软件后恢复。异常退出明显影响了测试的进度,其中海量扫描的出错退出的次数为:
瑞星 4次;江民 9次;金山 37次(其中有一次只有重装系统才能够继续测试);微软 2次;
安博士 1次;卡巴斯基 1次;诺顿 1次(扫描到压缩文件时十个小时没有响应,硬盘灯一直亮)
瑞星“脱壳”明显在考验我们的耐心,经过四天的扫描还没有完成…
安博士打开日志文件用了6小时后还没有打开…
卡巴斯基扫描文件时失去响应,重起后C盘空间为0字节
江民安装后,网络共享目录写入异常
金山查看报告时异常退出,界面显示混乱;而且升级后变成日文(反盗版?),再次启动正常。
半月记
站长周记:
章鱼考察鸟他们制作动画的报告在此。不管成功与否,都是迈出了第一步了…
2006年的幸福生活已经开始了:
首先是:Linux下的桌面整合环境:GNOME的2.16版发布。前一个版本GNOME2.14主要通过升级底层执行库Glib,通过新的memory slice机制,大大增加了性能。这次从技术上说,做主要是底层的二维矢量图形库cairo升级到1.2版,新版的pango(处理文字显示的库)和gtk+(图形控件)建立于其上,而gnome基于GTK+套件,所以在矢量显示上更加出色了。更让站长高兴得是站长的整合显卡(i855G啦)居然支持尚在开发中的暗藏窗口管理器的混合显示效果(估计和XGL的效果差不多,就是类似vista的效果呢)。同样幸运的还有使用镭7000的朋友,nvidia的显卡目前还不支持。(这有可能是nvidia偏向于支持更加革命的XGL,而Intel不久前开放了显卡驱动的源代码)(PS:现在还真是开源的时代啊,不仅软件,SUN连他的8核,32线程的CPU的设计源码也开放了)
GNOME2.16另一个重要的变化就是开始集成了mono库。mono库是.NET在Linux上的实现(目前C#拉),站长用过基于mono库的软件,一个字慢,卡机。所以严重敌视,一度在Gentoo的USE的关键字给出-mono,-beagle,还在portage.mask中mask掉了mono。不过为了一个基于mono的便笺软件,超好用的tomboy(这种小程序当然不卡!!!),解放了对mono的封锁(虽然看到.exe,.dll还是很不爽)。这次GNOME出于和站长相同目的,为了引进Tomboy,所以带了mono进来。基于mono的程序还有F-spot(数码相机图片管理软件),Bansee(还基于Gstreamer和helix技术,一个音乐播放器,站长使用时发现居然会自动下载显示唱片的封面),beagel(一个目前站长认为糟糕搜索软件,为了实现apple的spotlight搜索功能,但是让我觉得伤硬盘又搜不到信息的软件)
更多参见:www.gnome.org, www.gnome-cn.org
二、10月份火狐2.0发布。站长知道的消息是主要是用户界面的改进。据说还准备用cairo矢量输出(使用win的朋友委屈了,呵呵)
三、章鱼透露,《夏娜》的剧场版大概会在年底发布,站长看到其OVA版11月吧。老实说,这部动漫最让站长深刻的还是其描述的“存在”的概念,开头通过平井(悠二应该是对她有好感的)的消失非常残酷地揭示了一条设定。
四、12份将至的能够播放wmv,wma的Realplayer(这个倒不算什么,以前方播放wma和wmv有法律的风险,不过RealNetwork好像和Microsoft有协议,所以这样就没有法律上的问题了),看来很可能支持ALSA音频输出,这样就不会像现在那样使用陈旧OSS输出,同时只能打开一个软件放音乐了。
五、明年初,flashplayer9 for Linux发布,开始使用Linux一些“新”(不算新了,是以前开发方太不重视了)特性。
画蝶
