首页 > 其他分享 >OK Labs公司的故事(1):从头开始

OK Labs公司的故事(1):从头开始

时间:2023-05-04 19:32:43浏览次数:55  
标签:从头开始 OK 虚拟化 Labs L4 Linux 高通 modem 我们


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,L4,Linux,高通,modem,我们
From: https://blog.51cto.com/u_16097040/6244258

相关文章

  • lombok的@Builder注解
    lombok的@Builder注解:链式构建一个对象Student.builder().sno("001").sname("admin").sage(18).sphone("110").build();......
  • 解决上传md文件时出现的“<Fault 401: '请配置正确的用户名与访问令牌(access token),
    使用的工具:pycnbolg下载地址:https://github.com/dongfanger/pycnblog具体操作按这位大神的博客:如何在博客园上传markdown文件-NotYourferry-博客园(cnblogs.com)出现报错如图:偶然看到这两位的评论:于是我将config.yaml中的password改成了我的令牌,就上传成功了。......
  • 关于OKD(OpenShift)中组件资源介绍和命令行操作的一些笔记
    写在前面参加考试,会陆续分享一些OpenShift的笔记博文内容为openshift常见API资源对象介绍,包括所特有的Route,IS,DC,BC等。学习环境为openshiftv3的版本,有些旧这里如果专门学习openshift,建议学习v4版本理解不足小伙伴帮忙指正傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心......
  • 手拿把掐session、token、cookie
    发展以前的web很单一,就是用来浏览文档,服务器也不需要记住谁在某个时间段浏览了什么文档,每一次请求都是一个新的http协议,就是请求加响应,不需要记住是谁发了http请求。随着交互式web的兴起,比如需要登录的网站、在线购物等等,就面临了一个问题,就是要管理会话,必须要记住哪些人登录系......
  • Ansible之playbook剧本
    1.playbook的组成playbooks本身由以下各部分组成(1)Tasks:任务,即通过task调用ansible的模板将多个操作组织在一个playbook中运行(2)Variables:变量(3)Templates:模板(4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作(5)Roles:角色2.剧本示例test12.1剧本制作 [......
  • Facebook 登陆
    Facebook登陆说句题外话:其实知道怎么写以后,写代码是相较简单的,比较难得地方是不知道该去哪找参考资料,如果遇见问题或者是难点去哪解决,所以每次写博客的时候尽量详细写一些找资料的过程,代码部分反而是其次的。接下来就开启我们的Facebook登陆之旅官方文档首先登陆官方的开发者......
  • 从0开始构建一个Oauth2Server服务 <19> Token 编解码
    Token编解码令牌提供了一种通过在令牌字符串本身中编码所有必要信息来避免将令牌存储在数据库中的方法。这样做的主要好处是API服务器能够验证访问令牌,而无需对每个API请求进行数据库查找,从而使API更容易扩展。OAuth2.0BearerTokens的好处是应用程序不需要知道您决定如......
  • Ansible之playbook剧本
    一、playbook1.什么是playbookplaybook是ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的tasks,可以让远端主机达到预期的状态。playbook是由一个或多个”play”组成的列表。当对一台机器做环境初始化的时候往往需要不止做一件事情,这时使用playboo......
  • 《SQLi-Labs》02. Less 6~10
    目录Less-6知识点题解Less-7题解Less-8题解Less-9知识点题解Less-10题解sqli。开启新坑。Less-6知识点布尔盲注。与Less-5基本相同。这里只简略写大致步骤。length()函数:返回字符串所占的字节数。ascii()函数:返回字符串最左字符的ASCII值。如果是空字符串,返回0。如......
  • [网络安全]sqli-labs Less-2 解题详析
    往期回顾:[[网络安全]sqli-labsLess-1解题详析](https://blog.csdn.net/2301_77485708/article/details/130410800?spm=1001.2014.3001.5502)判断注入类型GET1and1=1,回显如下:GET1and1=2,没有回显:说明该漏洞类型为整型注入。判断注入点个数GET1orderby3,回显如下:GE......