Ten Years

十年一剑!
-------------------------------------------------
Operating System Research / Technique

Tuesday, February 26, 2008

(HotOS'05 Note)Are Virtual Machine Monitors Microkernels Done Right?

Are Virtual Machine Monitors Microkernels Done Right?
Steven Hand, Andrew Wareld, Keir Fraser, Evangelos Kotsovinos, Dan Magenheimery

HotOS'05

看到作者列表中熟悉的名字,就知道这是来自"The Xen guys"的声音。Xen的大获成功毫无疑问大大提高了他们的影响力,更多的人愿意聆听他们对OS的理解;当然,也有少数人不愿意听到这样的理解(如Heiser)。

2000年,Rob Pike发表"
Systems Software Research is Irrelevant",痛斥System研究者不思进取,所做的研究在学术界外毫无影响力,再无80-90年代初那种轰轰烈烈的创新。3年以后,Xen横空出世,2年的飞速发展及在工业界的巨大影响力,让Hand等人有了底气。

本文对VMM和Microkernel的一些异同点进行了对比,提出:"We argue that modern VMMs present a practical
platform which allows the development and deployment of innovative systems research: in essence, VMMs are microkernels done right."

首先,文章从历史的角度指出两者有很多共性,特别是在目标上;很多时候两者的界限非常模糊,比如denali是VMM,但uDenali可以属于Microkernel;L4开始时Microkernel,但后来发展成可以运行多个不同的OS。

两者不同的地方有以下三点:

  1. Avoid Liability Inversion: Microkernel itself depends on application level components, such as pagers, to make forward progress. Various inelegant timeout and fallback mechanisms were required to avoid deadlock.
  2. Make IPC Performance Irrelevant: First, since VMMs hold isolation to be a key goal, IPC between virtual machines is considerably less common in general. Secondly, we have determined that a clear separation between control and data path operations allows us to optimize for the common case.
  3. Treat OS as Component: Guest OS need few/none changes. Compatibility.
Microkernel有很多优点,而VMM也可以实现:
  1. Narrow interfaces between system components providing easy extensibility of device and OS functionality. Indeed, it seems very likely that the exploration of how services and management will be structured in a multi-OS VMM system will continue to present many exciting research opportunities.
  2. A small code base that can guarantee security more easily than monolithic kernels. Several groups have expressed interest in developing these ideas for Xen, using concepts from projects such as the Flask-derived SELinux.
  3. Strong isolation providing opportunities for improved manageability. recently by VMMs has been to explore less performance-centric aspects of systems development. (e.g. migration, log&replay)
最后总结:Microkernel的许多优点,VMM也都能实现;而VMM能够运行商业OS的特性,对现有应用提供更好的兼容性使得其走出学院,更多地在工业界发挥影响力,这是Microkernel所不具备的。

马上,就会有一篇激烈的文章来反驳Hand,作者就是L4的开发人员,来自澳大利亚的Heiser。
  • At 2:12 PM, Anonymous Anonymous said…

    Good day, sun shines!
    There have been times of hardship when I felt unhappy missing knowledge about opportunities of getting high yields on investments. I was a dump and downright pessimistic person.
    I have never thought that there weren't any need in big starting capital.
    Nowadays, I feel good, I started to get real money.
    It's all about how to choose a proper partner who utilizes your money in a right way - that is incorporate it in real deals, parts and divides the income with me.

    You can get interested, if there are such firms? I'm obliged to answer the truth, YES, there are. Please be informed of one of them:
    http://theinvestblog.com [url=http://theinvestblog.com]Online Investment Blog[/url]
     

Post a Comment

Tuesday, January 30, 2007

AF_INET和PF_INET的区别

在写网络程序的时候,建立TCP socket一般是这样的:
   sock = socket(PF_INET, SOCK_STREAM, 0);
然后在绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address family时一般设置为AF_INET,即使用IP。

问题是AF_INET和PF_INET到底有什么区别,甚至很多参考书上都是混用。今天查了一下相关头文件的定义,找到了答案。

AF = Address Family
PF = Protocol Family
AF_INET = PF_INET

所以,理论上建立socket时是指定协议,应该用PF_xxxx,设置地址时应该用AF_xxxx。当然AF_INET和PF_INET的值是相同的,混用也不会有太大的问题。

Post a Comment

Thin-Clien Computing论文阅读指南 -- 3 WBT系统

3. WBT系统

WBT系统就是Windows终端,基于RDP协议。RDP是Windows远程协助、远程桌面的基础。WBT在服务器端需要Windows终端服务,通信使用RDP协议。

Citrix Systems, Citrix MetaFrame 1.8 Backgrounder, Technical White Paper, Fort Lauderdale, FL, June 1998.
Citrix公司的MetaFrame是最早的在Windows NT上支持多用户图形化登录的系统,后来核心功能卖给了M$,于是诞生了Windows NT 4.0, Terminal Server Edition(TSE),M$之后就有了Terminal Server的产品线(现在是Server版的标准功能,甚至XP里也有,只不过只支持1个用户)。这篇文章还介绍了当时Citrix当时和M$的协议。MetaFrame使用ICA(Independent Computing Architecture)协议,现在也依赖于Windows终端服务,可以看作RDP的高级版。

Microsoft Corporation, Microsoft Windows NT Server, Terminal Server Edition, Version 4.0: An Architectural Overview, Technical White Paper, Redmond, WA, 1998.
前面提到了NT 4.0 TSE,第一个Terminal Service。对终端服务的结构有比较细致的描述。(推荐阅读)

Microsoft Corporation, Microsoft Windows Server 2003: Technical Overview of Terminal Services, Technical Article, Redmond, WA, 2004.
Windows 2003版的,不过M$是越来越抠门了,实质性的内容比上一篇更少。

Databeam Corporation, A Primer on the T.120 Series Standard, Technical White Paper, Lexington, KY, May 1997.
RDP协议最初基于T.128(用于NetMeeting),属于T.120协议族,这篇文章有些基本的介绍。

ITU-T Recommendation T.128: Multipoint Application Sharing. Telecommunication Standardization Sector of International Telecommunication Union (ITU), 1998.
T.128标准,RDP 4和T.128很相似。如果要实现分析RDP协议,这篇文档很有帮助。

Performance and Sizing of Compaq Servers with Microsoft Windows NT Server 4.0, Terminal Server Edition. Compaq Computer Corporation, Houston, TX, 1998.
HP NetServer Performance and Sizing Guidelines: Microsoft Windows NT 4.0 Server, Terminal Server Edition. Hewlett-Packard Company, Cupertino, CA, 1999.
Windows Server 2003 Terminal Server Capacity and Scaling. Microsoft Corporation, Redmond, WA, 2003.
关于Windows终端服务的性能规划问题,内容大同小异。

H.L. Yu, W.M. Zhen, and M.M. Shen, Extending the Power of Server Based Computing, Proceedings of the 4th International Conference on Computational Science (ICCS2004), June 2004, pp. 242-249.
清华的朋友写的,关于NC的实现,可以看作国内CPU+NC开发工作的一个典型。也提到了本地解码支持视频播放。(推荐阅读)

Thin-Clien Computing论文阅读指南 -- 2 Thin-client应用

2. Thin-client应用

先说说thin-client的应用,这些文章一般都在IT应用的会议和期刊,主要是关于thin-client的优劣势问题,可以帮助理解thin-client。但是说对研究thin-client有什么作用,似乎主要是增加reference数量和完整性:-)

Don McIntosh and Rich Bom, Server-Based Computing: Back to the Future Solves Enterprise Desktop Problems, Proceedings of the IEEE International Conference on Management of Innovation and Technology (ICMIT), Volume 2, November 2000, pp. 732-737.

Andrej Volchkov, Server-Based Computing Opportunities, IEEE IT Professional, Volume 4, Issue 2, March-April 2002, pp. 18-23.

Thin-Clien Computing论文阅读指南 -- 1 概念

(注:由于内容比较多,现在没有那么多时间一下写完,先来个连载吧。)

 

Thin-client computing不是一个范围很广的主题,这里尝试针对这个主题给出一个快速阅读指南。

1. 概念

Thin-client computing是将计算任务集中在服务器端从而使用简单的(“瘦”的)客户端访问桌面计算环境的一种技术。代表性的thin-client有Windows终端(Windows Based Terminal,简称WBT)、Sun Ray、VNC等。某种意义上说,thin-client是大型主机(mainframe)时代的文本终端的现代图形化版本。按照其定义来讲,使用telnet的远程终端(或者SSH终端)也是符合thin-client定义的,因为所有计算都是在远程主机(remote host)上完成。不过,现在通常在说thin-client时,都隐含了使用图形界面的意思。由于thin-client computing的关键之一是远程访问图形界面,X终端有时也被当作thin-client,尤其是在进行比较的时候,因为X Window本质上就是网络透明的,可以从远程访问桌面环境,例如通过XDMCP。但是X Server实在是太“胖”了(注意是X server运行在X终端一边!),而且缺少stateless特性(前面列举的thin-client的重要特性),最重要的是X在设计时并有thin-client方面的考虑,所以我认为除了在分析远程显示机制时,不应当将X终端当作thin-client。

一个相关的概念是网络计算机(Network Computer, NC)。国内对NC的概念提的比较多,尤其是伴随着国产CPU纷纷选择thin-client应用作为重要的应用模式。NC的概念最早由Oracle和Sun等公司于1995年提出,并制定了NC参考标准(Network Computer Reference Profile)。最初NC是基于Java技术的,只能运行Java编写的程序,应用受到了很大的限制。现实一点的说法是最初NC概念伴随着Java OS等技术的失败而夭折了。(也许Java OS的概念太前驱了吧,我有朋友有幸参与到Java OS的开发,虽然大家尽了最大的努力,但是还是……我对Java OS没有偏见,也许是生不逢时吧,看看最近很火的VMM,也许有一天人们还会想起它。)后来,随着Windows终端服务的普及,基于Windows远程桌面协议(Remote Desktop Protocol, RDP)的WBT开始广泛应用,NC的概念开始和thin-client等同起来,也包括国内的大多数所谓“NC”(可以看看“北大众志NC”哦:P)。目前的现状是国外的论文一般使用thin-client,国内NC用的比较多。

由于典型的thin-client系统都是把计算任务集中在服务器端的,客户端只负载输入和显示等,一些文章也使用server centric computing, server based computing等术语表示和thin-client computing相似的概念。我的理解是强调了不同的方面,一般可以互换,但thin-client可能还是广泛些,因为从概念上讲没有说计算一定是server based。总之,在检索文献时也可以查查server centric/server based。另外,thin client有时也指一种设计模式,如在面向对象的设计环境中,不过似乎在2000年之后的就专指现在的概念了。

Wednesday, January 24, 2007

(Paper Note)The Design of a Transport Protocol for On-Demand Graphical Rendering

Albert F. Harris, III and Robin Kravets
NOSSDAV 2002

为远程传输3D模型数据开发了一种传输协议——OGP(On-Demand Graphic Transport Protocol)。

关键是根据应用的特点,设计partial ordering,partial reliability的传输协议,介于TCP和UDP的特性之间。3D模型数据可以表示为一个树形结构,每个子树的根节点描述了一个区域,子节点是对该区域的细化描述。所以子节点是依赖于父节点的,但由于兄弟节点表示的区域之间没有重叠,兄弟节点之间没有依赖关系。所以半序的传输是可以接受的。同时,丢失一个子树只影响到一个区域,传输不必是完全可靠的。

OGP对于模型节点进行封装(节点都较小,小于MTU),然后传输,在封装时要注意保证半序性。封装后的包进行传输,拥塞控制采用TCP New-Reno方案,但由于其特性比TCP更简单。重传不是必须的,当用户不关心相应区域时可以不进行重传。

这篇文章从传输内容的特点出发设计专用的传输协议,类似用RTP传输视频流,有一定借鉴意义。相关工作部分也提到了Video streaming的传输问题。

写点什么吧

前一段时间一直在忙论文,有一段事件没有更新blog了。其实更重要的是主要的时间都花在写论文上了,没有什么时间看新的东西,自然也就没有什么好写在blog上的了。不过这一段时间也感觉到自己的脑子像被倒空了一样,需要再补充一下了!

总之,今天开始更新blog~~~~~~~

Sunday, December 24, 2006

投中DCC'07 POSTER,纪念一下

今天是平安夜,一个好日子。下午收邮件,DCC commitee的邮件早早就到了,他们23号下午就发出来了,还挺快的。结果还算不错,中了POSTER,“A Fast Lossless Codec of Continuous-Tone Images for Thin Client Computing”。3个reviewer,一个给3.5 - Definitely as poster, weak as paper,一个给4.0 - Accept as paper,还有一个只给了1.5 - Borderline accept as poster。这篇paper是投的第一篇,本来也没有抱有很大的希望,只是觉得review速度比较快,能有些review意见就好,可以帮助改paper。能中POSTER也算喜出望外吧:-)

另外,还有一个教训,就是图表一定要清晰!给3分的那个reviewer的意见如下:
The paper is generally well written, though the english needs to be improved and the figures are ugly/blurry/unprofessional. The complexity results look very good.
Please define all acronyms when you introduce them.
The nomenclature in Figure 2 should be improved; for example, sensitivity and selectivity.
Figure 4 is very hard to read - consider putting this information in a table instead of in a figure.
说不定图表搞得好点,就可以中full paper了,呵呵!以后可要吸取教训,一定要把图中的文字大小调整好,插入的格式也得注意,要保证最终图像的清晰!

Post a Comment

Saturday, November 18, 2006

一些学术会议信息的网络资源

Upcoming Conferences
  1. Operating Systems (and some relevant Systems and Architecture) Conferences (Livio Baldini Soares, University of Toronto): http://www.eecg.toronto.edu/~livio/os/conferences.shtml
  2. WWW Computer Architecture Page (Architecture Group at the University, Wisconsin-Madison): http://www.cs.wisc.edu/arch/www/conferences.htm
  3. Computer Science Related Conferences (BITS, Pilani, India): http://www.bits-pilani.ac.in:12356/facultypage/conflist.htm
  4. Networking conference dates (Tim Moors, University of New South Wales): http://www.ee.unsw.edu.au/~timm/netconf/
  5. Call for Papers (华中科技大学 网格计算平台): http://grid.hust.edu.cn:8080/call/cfp.jsp
Impact of conferences
  1. Estimated impact of publication venues in Computer Science (higher is better) - May 2003 (CiteSeer): http://citeseer.ist.psu.edu/impact.html
  2. Computer Science Conference Rankings (Guofei Gu, Georgia Tech): http://www-static.cc.gatech.edu/~guofei/CS_ConfRank.htm
  3. Networking Conferences Statistics(Kevin C. Almeroth, UCSB): http://www.cs.ucsb.edu/%7Ealmeroth/conf/stats/

Friday, November 03, 2006

导师谈博士研究(2): 读论文、写论文

 

1 目前大家的一些通病

    目前大家做论文时的一个通病就是急躁,不能把自己的工程实践和论文发表很好的结合起来。老师提了以下建议。

注意平时积累,整理工作日志,记录好临时产生的思想火花。阅读到好的内容、段落要记录,多考虑哪些内容可以加以利用。

b 加强paper阅读,尤其是经典的范例论文,要注意写读后感。注意论文被引用时的别人对它的评价。

c 不要人云亦云,加强回溯,对基本概念要清晰,要追溯,要追问。

2 写论文的几个注意

    经常被人引用的论文一定要仔细读,至少读三遍。第一遍读,要忘掉自己,以欣赏的眼光来读,读懂论文内容;第二遍读,要细读,仔细对基本概念、核心思想等进行逐字逐句的阅读,可能一些内容反复琢磨也不甚了了,不要紧;然后要放下,读其它的文章,放上几天,第三遍读,要有针对性的读,针对以前自己比较含糊的部分,以及读其它论文的感悟进行,这一次结合已经阅读的其它论文,尤其是别人的评论,会有更多的感悟,常常有“原来是这样的”感觉。

    写论文时,不要过于求新求大,不要想所有内容都有所创新,那是不可能的。一篇论文有70%都是已有的东西,只有30%是创新的内容。只在一两个点上“打人”,不要全面开花攻击别人已有的工作。一篇好的论文,关键是三点:新颖、可信、实用。所以,论文关键要写清楚为什么做(motivation),怎么做的以及为什么这么做,其中为什么最为重要!

    写论文,其实很简单,难是难在做实验和研究,在形成文章时要像高考一样,限定deadline,一气呵成。建议找一段比较安静的时间(比如晚上),花六、七个小时一口气完成初稿,不要拖泥带水,就好比高考作文,到点就要交,限定时间完成初稿。当然改文章无论如何都是比较痛苦的,必须要细致,有耐心。跳出来,站在reader的角度,站在reviewer的角度多考虑。

导师谈博士研究(1): 综合考试与开题

 

(推出《导师谈博士研究》系列!根据我的导师对我的博士研究的指导进行整理。)

 

1 什么是博士综合考试,什么叫开题

综合考试:考察基础课程是否已经学好,是否有进一步培养的潜力,是否有理论和实践相结合的能力。重点是考察在实践基础上思考的能力

开题工作:就是预研工作,主要考察研究的基础是否已经具备。包括:a 选题的意义是否已经具备,包括理论意义和时间意义;b 是否源于现实,高于现实;c 是否具有把握国际定向的能力。关键点在于:对所研究的领域有比较充分全面的认识,上至起源,下至热点,以及为了五年到十年内的主要问题等都要有比较好的把握。所以,要注意:既不能太虚太大,也不能太具体太细节。

已有论文情况:对相关领域已有论文及其引用情况的了解,是开题工作中的重要部分。在完成开题工作时,对如下三类论文必须有较为全面细致的了解。

  • a 学科环境和条件。对于一个学科的基本外部环境和研究条件,应当有全面的认识,对相关的基本概念和结论,要有正确的认识和把握,应该熟悉相关的经典文献。例如,在做芯片设计时,必须对对基本概念有准确的把握,对工艺技术的发展有一定了解,包括:亚微米、深亚微米、超深亚微米等概念,国际半导体工艺的发展和预期路线(ISTR)等。只有读透最权威的论文,才能厚积薄发。要注意这些学科环境和条件在大时间尺度上发生的特殊变化,了解原因,分析对自己研究工作的影响。例如:分析微电子工艺发展趋势对设计中性能、功耗目标有何影响,分析为什么2000年后最新的工艺首先要应用在微处理器制造,而不是之前的DRAM制造等等。同时,相关的产业趋势及发展速度也是需要关注的一个问题,这从一个侧面反映了相关领域研究的重要性和发展前途。
  • b 具体研究领域之综述。对于自己从事的具体研究领域,要认真分析和总结相关的综述性文献。了解和分析该领域的起源、重大历史事件等,对相关背景、变革和需求等要深入思考背后的原因。
  • c 有代表性的博士论文。除了代表性博士论文本身的技术路线和研究内容以外,还应当重点分析文中给出的背景、动机和相关工作,并结合自己的工作进行分析和比较,对自己的研究进行拔高。关键在于要能够分析出论文的作者是怎样做出这些工作的,以及和自己工作状况的异同点。对于related works,要重点分析各个工作解决的问题和存在的问题,尤其是存在的问题,很可能就是自己工作的突破点。对于存在的问题,可以着重从假设的正确性等入手,从原文中的评论(drawbacks部分)和他人引用时的评论中分析和提取。

开题报告:主要包括如下内容。

  1. 简介
  2. 背景
  3. 相关工作
  4. 研究动机
  5. 技术路线(技术思路、实验设计、数据分析方法等)
  6. 进度安排

2 杂项话题

关于做博士研究:要立志于做胡杨而不时做灌木。关键在于自信,而自信源坚韧不拔和脚踏实地态度。

关于做报告:做报告的人要努力让听众易于理解,听报告的人要积极的提出建议,尤其是全局性的建议。

关于说服:写论文,是要说服别人,在说服别人之前,先要说服自己。这要求将自己放在公正客观的角度去审视自己的工作。关键在于point of view。

关于思路:一定要有开放的思路,要open。仔细思考别人为什么做、怎么做,想透之后再推翻别人的结论。要采用“改进->refine->创新”的思路来做工作。

Thursday, October 19, 2006

X下视频显示支持方式

(主要截取自FreeBSD的文档。)

在X11下有几种可以显示图像的方式。 到底哪个能工作很大程序上依赖于硬件。 首先,下边描述的每一种方法在不同的硬件上都会有不同的品质。 其次,在X11里的图像显示近来引起普遍的关注, 随着 XorgXFree86 的每一个版本,都会有很大的突破。

  常见图像接口列表:

  1. X11: 一般性的使用共享内存的X11输出。
  2. XVideo: 一种X11接口扩展,支持任何X11图像的可拖拉。
  3. SDL: 简单直接媒体层。
  4. DGA: 直接图片存取。
  5. SVGAlib: 低层次掌控图片层。

XVideo
XorgXFree86 4.X 有种扩展叫做XVideo (或称Xvideo, Xv, xv),它可以通过一个特殊的加速器直接把图像显示在可拖拉的对象里。 即使在低端的计算机 (例如PIII 400 Mhz膝上电脑), 这个扩展也提供了很好的播放质量。要了解这一扩展是否在正常工作, 可以使用 xvinfo 命令。


SDL
简单直接媒体层(SDL),原意是做为 Microsoft® Windows®、BeOS 以及 UNIX® 之间的端口层,允许跨平台应用发展,更高效地利用声卡和图形卡。SDL 层可以在低层访问硬件,有时这样做就比 X11 接口层更为高效。


DGA
直接图形存取 (Direct Graphics Access) 是一种 X11 扩展, 通过它, 应用程序能够绕过 X 服务, 并直接修改画面缓存 (framebuffer)。 由于它依赖一种底层的内存映射来实现其功能,因此使用它的程序必须以 root 身份来执行。DGA 扩展可以通过dga(1) 来完成测试和性能测量。 运行 dga 时, 它将随按键改变现实的颜色。按 q 退出这个程序。