译至:http://microkerneldude.wordpress.com/2014/08/29/ok-labs-story-1-the-beginning/

译者注:seL4背景的补充材料

上周,我答应讲一下开放式内核实验室的历史。 这是第一部分。

这一切都始于十几年前,当有一天早上我接到凯文的电话,他说他是高通公司的一个知识产权律师。 当你知道他们的讼棍的本性的话,这通常会让你的脊椎发凉。 但是,谈话是非常友好的,他想知道我们的L4微内核的IP状态的详细信息,我们的L4微内核是嵌入式Pistachio,有基于开源BSD的许可证(June'08的发布仍然存在)。 这是我们从卡尔斯鲁厄的Pistachio内核fork出来的,我们早先移植到多种架构上,包括ARM。 这个分支的特别之处是在于,它对资源受限的嵌入式系统应用进行了优化。

当我在接到电话后走进实验室并告诉我的学生,哈维立刻联想到一个使用雅虎地址的叫埃里克的家伙,已经在邮件列表上问了非常详细的技术问题。

这个电话是在2004年5月,高通明显对我们的内核很感兴趣。总之几个星期后我去了美国,在六月初,我在圣迭戈拜访了他们,带有一个保密协议(很久之前就过期了)。 我花了几个小时与副总裁和一个高级工程师(Eric)做了相当激烈的技术性讨论,其结果是,在8月上旬我又去了一次,加上我的学生本诺,提供一个为期三天的L4设计课程,原理和用法(按咨询价格支付,包括商务舱的航班)。 听众是来自高通的一打左右的工程师,再加上一些客户。

课程很顺利,9月我们得到了一个合同来提供咨询服务帮助高通的工程师做样机的研制。 最初,这项工作是由本诺和卡尔完成,但随着时间的推进扩大到约为6名全职员工。 仅仅半年后,也就是大约2005年2月,我们在相当长一段时间对此一无所知,高通决定把L4投入生产,作为它们的modem固件和BREW操作系统之下的内核。 第一台运行L4的手机(东芝W47T)在2006年的下半年开始在日本出货。

这一切背后的技术原因,我们只是随着时间的推移才知晓。 事实证明,高通在当时有两个问题。 之一是他们的modem堆栈的平面地址空间的设计和高度集成的BREW操作系统。 这已增长到数百万行的代码,调试这样一个没有内存保护的野兽是一场噩梦。随着在那个(前智能手机)时代应用程序的扩散显然​​变得更加严重。 它显然不可能支持一个开放的环境(使用任意第三方应用程序)的这种方式。 还有一个要模块化modem堆栈的需求。

高通的A计划是改造保护成REX,他们自己的RTOS。 有些人预见到这一努力要失败,并正在寻找一个B计划(显然我们是计划B.2,我从来没有发现B.1是什么。)失败一定是非常引人注目的,这致使从评估到部署L4惊人的快速转变(虽然埃里克在他们找到我们之前显然做了一些原型的工作)。

还有第二个原因驱使他们做出这个选择:摩托罗拉已作出以Linux作为自己的手机操作系统的战略举措,基于Linux的摩托罗拉手机已经在中国出货。 他们想在在Linux的手机使用高通的芯片。高通又不想Linux(或者任何GPL软件)在它们的核心IP附近的任何地方。 为了出售芯片给摩托罗拉,他们需要一种方法来以IP方式来看能够使它们的IP与Linux相隔离。 总之,他们正在寻找一个虚拟化的解决方案,而我们能在我们的L4内核中运行较早的Linux版本。 他们在找满足他们的要求的各种各样的候选,需要满足:

  1. 支持虚拟化的Linux,
  2. 具有高效率地运行他们的modem堆栈的能力,并
  3. 运行于ARM处理器。

他们发现,我们已经最接近这个目标,尽管没有一个人(包括我们!)声称我们具备产品级的质量。 所以,他们基本上和我们签合同来达到这个目标,我的学生们确实做到了。

讽刺的是,虚拟化的Linux并没有太大的影响。 在摩托罗拉的一侧无休止的延期,部分原因是内部斗争,以及它能否提供所需的性能的质疑(来自L4以外的工作组)。这种怀疑,虽然不合理,在某种程度上是可以理解的。 那时(基于ARMv5的架构)使用的ARM9核具有虚拟索引,虚拟标记的高速缓存。 这意味着该硬件不能区别属于不同的地址空间的数据,因此Linux(以及其他的操作系统,如Windows CE)在每个上下文切换时都要清除高速缓存。 由于在虚拟化设置中,Linux运行在它自己的地址空间,调用Linux的系统调用需要上下文切换(从系统调用返回时还需要另一个)。即使在本地Linux,很多时候缓存也经常被清除,Linux的表现并不好,人们会合理地认为虚拟化将使这更糟糕。

事实上,它是倒过来:在ARM9处理器上,在L4上运行虚拟化的Linux速度比原生的更快! 这是由于一个相当漂亮对硬件的功能的利用,这使我们在L4下能够使上下文切换非常快(高达50倍!),我们实际上已经发表这个“快速地址空间切换”(FASS)的技巧 ,却没有一个人我们的竞争对手把它捡起来,它似乎已经超出了他们的能力(这并不奇怪,因为我们经过一段时间的竞争发现这个事实,但我会在下次说这个话题)。 我们已经在Linux中实现了原来的FASS,我们已经提供给主线,但维护人员拒绝了因为它过于复杂。 50倍算得了什么?
在L4上开发的专业的摩托罗拉工程师最终得到了一个基于ARM9,虚拟化的Linux手机投入市场(Motorola Evoke)。 我用过它,它很好用,无缝集成了基于Linux的和基于BREW的应用程序。 远远超过了痛苦的缓慢HTC TyTN-II,虽然它有一个更强大的ARM11处理器运行Windows Mobile。 但为时已晚。 到那时,智能手机需要比这样的低端处理器可能提供的性能更高的性能(即使没有虚拟化和与处理器共享modem),所以趋势就分开了,功能强大的应用处理器。 “统一”的手机的时代,同时运行应用程序与实时操作系统(支持modem堆栈)在同一处理器上时代,已经胎死腹中了。

OK Labs公司的故事(1):从头开始相关推荐

  1. Topaz Gigapixel AI 中文汉化版是一款由Topaz Labs公司开发的图片无损放大软件

    Topaz Gigapixel AI 中文汉化版是一款由Topaz Labs公司开发的图片无损放大软件,第一个也是唯一一个使用人工智能功能扩展图像的桌面应用程序,同时添加自然细节以获得惊人的效果.使用 ...

  2. 微软 Deis Labs 的传奇故事

    微软历史上收购合并过无数的产品.公司和团队,很多产品或公司甚至在被收购前已经是家喻户晓的品牌(比如 LinkedIn,Github,最近的暴雪动视),而我们这一期的主角 Deis Labs 纯粹是微软 ...

  3. 中介公司的故事(一)-Java静态代理

    小育是国内某省会城市211流大学毕业的计算机系学生.毕业后通过中介钟么办在一个叫链表家的中介公司租到了房子.链表家的老板肖坡廉想把这中介公司发展成一家互联网中介公司.租房子的时候看上了小育计算机系毕业 ...

  4. 公司的故事之老板的平衡术

    1,处理矛盾时,首先要站各方的利益的角度想问题,宁可自己吃点亏,也要尽量以平衡各方利益为主导. 2,遇事要冷静,抓住双方争论的"核心理由",将计就计,让双方都没话说. 3,在生意上 ...

  5. 15.IGame游戏公司的故事

    1 讨论会 话说有一个叫IGame的游戏公司,正在开发一款ARPG游戏(动作&角色扮演类游戏,如魔兽世界.梦幻西游这一类的游戏).一般这类游戏都有一个基本的功能,就是打怪(玩家攻击怪物,借此获 ...

  6. 依赖注入那些事儿【1】 之 IGame游戏公司的故事

    1.1 讨论会 话说有一个叫IGame的游戏公司,正在开发一款ARPG游戏(动作&角色扮演类游戏,如魔兽世界.梦幻西游这一类的游戏).一般这类游戏都有一个基本的功能,就是打怪(玩家攻击怪物,借 ...

  7. Game游戏公司的故事

    一.讨论会   有一个Game的游戏公司,正准备开发一款ARPG游戏(动作&角色扮演类游戏,如魔兽世界.梦幻西游这一类游戏).这类游戏都有一个基本功能,就是打怪(玩家通过攻击怪物,借此获得经验 ...

  8. 不是所有的GMO都相等

    Everyone seems to have an opinion on genetically modified organisms (GMOs). They're either the savio ...

  9. 颤振稳定性叶瓣图_用3d设计颤振

    颤振稳定性叶瓣图 I had the pleasure design two vignettes for our Google Flutter Vignette Showcase. What made ...

最新文章

  1. CSV合规的矫枉过正
  2. innodb一页为什么要存储两行记录_InnoDB中的页合并与分裂
  3. mysql+date+范围+性能_MySQL性能优化的最佳20+条经验
  4. xftp连接海康摄像头报错:sftp子系统申请已拒绝 请确保ssh连接的sftp子系统设置有效
  5. gitolite 踩坑记
  6. pandas之groupby分组与pivot_table透视
  7. 关系数据库——关系数据语言
  8. 嵌入式操作系统内核原理和开发(等值block内存池设计)
  9. JavaScript不采用prototype和new来实现继承机制的方式
  10. missingno库—缺失值可视化
  11. insert同时添加两张表_Q语言——表的高级查询语言(一)
  12. 数据库系统 图书管理系统 C语言
  13. matlab powergui在哪儿,powergui模块在哪
  14. 资料分享:TI AM5708平台特点和典型应用
  15. 大型软件工作站计算机性能配置要求,推荐配置7.3万元的高性能服务器计算机工作站(全文)...
  16. IDEA中HTML文档快速制作table表格快捷键方法
  17. CCF-CSP认证知识要求
  18. 爆聚美优品售假货,中国老龄商城有话说
  19. All flavors must now belong to a named flavor dimension.
  20. 麻省理工学院计算机博士奖学金,获麻省理工博士全额奖学金录取的经验分享

热门文章

  1. win10系统时提示找不到恢复环境变量怎么办 WIN10如何恢复环境变量方法
  2. 布尔型盲注Python脚本
  3. 小白也能看懂的c语言队列入门问题——舞伴问题
  4. 小觅深度版-realsense系列,深度相机对比
  5. KOH、TMAH 和 EDP 对硅表面的影响
  6. iOS版本检测更新2018
  7. 能否构成三角形的条件代码_灵活运用全等三角形寻找线段间的数量关系
  8. Java深度克隆对象
  9. qt:textEdit中cusor使用方法
  10. 微信白名单服务器ip地址,调用接口的IP地址不在白名单中