在 OPPO 做技术也要有用户驱动设计理念

近几年 OPPO ColorOS 系统体验突飞猛进,用户口碑也是一路飙升,ColorOS 在每次更新都能在带来全新功能的同时,性能与流畅度也有不同程度的提升,目前已经逐渐成为人们口中的第一档手机操作系统。我们都知道 Android 系统是基于 Linux 内核打造的,这就让我们对 ColorOS 背后的技术产生了浓厚的兴趣,为了进一步了解 ColorOS 成功背后在内核工作上的探索。近日,CSDN 采访了 OPPO ColorOS 三位 Linux 内核技术专家,听听他们在 ColorOS 工作的背后故事。

CSDN:非常高兴能够邀请到三位来做一个专访,首先请三位老师简单介绍一下自己的职业背景以及最近正在做的事情?

崔晓刚:我叫崔晓刚,本硕就读于东南大学微电子系,2012 年硕士毕业后加入高通公司。在高通先后负责文件系统、Debug 功能的开发以及 CPU 调度调频等工作。2017 年,我加入了 OPPO 公司,先后参与 OPPO 性能功耗的引擎开发,早期产品 CPU 的评估与选型、CPU 调度器及调频器以及 CPU Cache、软硬件垂直整合等工作,目前主要负责 OPPO CPU 调度技术团队。

李培锋:我叫李培锋,之前也是在芯片原厂做软件开发。主要包括稳定性、内核休眠唤醒等相关工作。来到 OPPO 以后主要投入在性能相关的开发工作,目前负责内存相关的开发工作。

郭维超:加入 OPPO 之前我先后接触过分布式存储、文件系统、云存储相关的工作。目前在 OPPO 主要做软硬件垂直整合,同时尝试做终端存储的扩展,比如设备与设备之间,以及端云之间的存储融合。

CSDN:相比普通开发,Linux 内核是更具挑战性的工作,吸引三位老师从事 Linux 内核开发相关工作的原因是什么?普通开发者如何能够成为 Linux 内核开发者,其关键的因素有哪些?

崔晓刚:我从事 Linux 内核相关开发的原因主要是机遇和兴趣。学生时代正是安卓系统比较火热的阶段,在这样的环境下,我接触了 Linux、Android、嵌入式,从芯片上的 Linux 驱动开发开始自此就一直在做 Linux 内核相关的开发工作。

我认为 Linux 内核开发者和普通的应用开发者相比还是有很大的区别,相对于上层的应用开发还是有非常多不一样的地方。从操作系统软硬件结合的角度上看 Linux 内核开发者考虑问题需要更全面,而且对编程效率的要求也会比较高。

李培锋:我选择内核这条路主要也是好奇心和兴趣使然,在大学学习Linux 驱动的过程中,我对某些内核接口的实现方式非常感兴趣,为了研究这些接口的实现方式就慢慢走上了内核开发这条路,然后毕业后从芯片原厂到 OPPO 一直坚持至今,坦率的讲,做内核开发对我来说是一件很有成就感的事情。

我觉得普通开发者要成为 Linux 内核开发者,需要不断的阅读代码。但是很多 Linux 代码比较枯燥,因此需要开发者可以耐得住寂寞沉下心。同时做内核开发并不像功能开发,坚持十天半个月就可以看到功能和初步成果,很多时候开发很久、阅读很多枯燥的代码后仍然没有任何结果,在这样的环境下能够坚持下去,也是非常考验开发者心态的。

郭维超:我最早接触 Linux 内核是在研究生阶段,当时正在做现在我们手机厂商都已经有的内存扩展特性。慢慢然后开始接触内核,去看相关的代码,发现这个内核还是挺厉害的。开始工作之后,就具体到文件系统模块的实实在在开发工作,因为你的一个改动可能会影响很多其他部分的功能,慢慢地也养成了全局性的思维,这时已经觉得这个工作是挺有成就感的。

而且在拥有 Linux 内核开发经验之后,你会发现,很多企业即便是大公司,它业务系统的代码也是很粗糙的,远没有内核那么优雅,Linux 内核的代码是经过很多人讨论、打磨、不断优化的产物。因此,我也认为在 Linux 内核领域及 OPPO 这样一个大的平台从事开发工作是非常具有吸引力的。

总之,内核开发者吸引我的原因主要有以下几点。首先,像 OPPO 这样的大平台;其次必须是有挑战性的工作,可以解决各种难题得到想要的结果,并最终获得很深远的影响。

CSDN:在 OPPO ColorOS 做内核开发的体验是什么样的?最大的收获是什么?

崔晓刚:相比我在高通的工作,在 OPPO 做开发更贴近用户,一方面编写的代码可以运行在百万级起的手机上,成就感非常大;另一方面 OPPO 本身对产品的质量要求非常严格,尤其是我们做 Linux 内核开发,每一行代码的影响都非常大,不像简单的应用开发,修改的代码仅局限于某个应用的某个功能,因此代码审核上必须非常严格。

此外,我在 OPPO 这里的另一收获就是认识到操作系统不是万能的,在这样的基础上作为手机厂商的 Linux 开发者,我们会去对 Linux Kernel 进行定制化优化,在 CPU 调度、内存管理、系统管理做很多的优化工作提供给用户。

李培锋:我在 OPPO 的收获主要有两点,第一,OPPO 引导我们的是,技术要基于用户体验去做,使用新技术要在确保能为用户带来良好的体验下进行。第二,就是将内核审核的工作做到极致,如晓刚所说,内核每一行代码的修改都可能影响到整个操作系统的正常运作,因此,无论是开发还是测试,审核与管控一定是最严格的。

郭维超:我最大的收获就是如刚才两位所说,做内核开发的同时,能够考虑到更大的用户面,能够做更充分的系统设计。此外,OPPO 近几年在开源上的投入也是逐渐变多,也鼓励内部开发者参与开源与社区互动,目前我们现在已经有很多模块贡献给社区。做开源的正确态度心态上首先是要开放的,我觉得 OPPO 在开源上的状态也是很好的。

CSDN:在 OPPO 多年项目开发的过程中,有没有哪些里程碑的事件可以分享?

郭维超:最近几年,我们也做了很多技术课题,陆陆续续在发布会上有所提及。我个人觉得比较有成就感的就是内存扩展技术,第一版我负责开发的。其实我在研究生时期就有过类似的想法,但是当时受制于闪存寿命、功耗等问题一直难以落地。

随着近几年硬件能力的提升以及技术上的改进,一方面闪存性能及寿命都有明显的提升,不会因为过多过大的使用而快速损坏。不过这也不意味着可以无限制进行使用,软件上还是需要设计一些解决方案,来确保对闪存寿命的消耗是可控的。

总的来说,这一技术终于成功在手机上落地,目前也成为了各家智能手机系统的标配,是我认为可以称为里程碑的事情。

崔晓刚:我的里程碑事件那还要追溯到刚进入 OPPO 的时候,届时产品使用的芯片比较低端,安卓系统远不如现在完善,Linux 操作系统也存在一些缺陷。许多用户都会抱怨应用启动慢、交互动画卡顿。因此,我与同事一起设计并开发了 OPPO 第一版性能功耗的一个引擎,基于用户交互的感知场景进行控制,包括任务的调度调频等都可以实现。这一功能使得系统等整体性能有了很大的提升,直观感受就是交互动画不再卡顿,同时功耗也得到了很好的控制,不消耗更多资源的同时,极大提升用户交互及体验,这是我认为比较有成就感的事情。

李培锋:我觉得做 Linux 开发工作从解决项目的问题,到社区提交代码都是比较容易获得一些成就感的,如果说在 OPPO 的里程碑,我认为还是我深耕多年的内存领域。之前我们团队发现内存问题可能会先开一个课题或者做一个解决方案,去年我们转换了思路,从用户角度出发,研究更快速地将相关度更高的线程分配给用户,做到零卡顿。即从点对点的问题改为从目的出发、从用户出发,提供更完善的方案将所有的问题点都覆盖到。

CSDN:除了攻克技术难关,向社区推广需要更多的沟通与布道,OPPO 现在也在积极回馈社区,那么在深入社区与贴近业务方面,三位老师有哪些经验可以分享?

李培锋:首先我日常坚持的一件事就是经常逛社区,关注社区的伙伴在做什么,关注所处领域的新颖技术等,一方面避免重复造轮子,另一方面也希望可以学习更多前辈的技术理念进而用在我们的产品之上。第二,我喜欢去查看一些好项目代码历史 Commit 提交的信息,虽然一开始可能遇到看不懂的情况,但慢慢地从完整了解一个从诞生到成功的项目 Commit 记录之后,就能充分意识到这个项目经过了怎样的变化,进而发现其中的设计细节,理解优秀设计的精髓。

崔晓刚:首先,我们希望在跟社区的沟通过程中将 OPPO 对于手机操作系统定制优化的思路与社区进行交流。如刚才培锋所言,社区有很多代码,你可能是看不懂的,每一笔代码提交的背后都有复杂的逻辑和模型。因此我们希望可以在与社区沟通的过程中,一方面输入我们对操作系统及产品的思考,另一方面得到社区对我们产品的反馈。同时,与不同厂商的内核开发者进行广泛的交流。

另外,过去几年,OPPO 一直在深耕技术,没有在社区进行过多的推广,后续我们希望可以通过深入社区,基于我们对产品对技术的里脊,开发出更多优质的模块回馈社区,为开源做贡献。

郭维超:我同意两位的看法,我希望可以从基础的事情起步,关注社区的开发动态,提供一些优化和改进的方案。然后在深入交流之后,我认为开发者应该做好社区与业务之间的沟通桥梁,跳出厂商的角度,以社区的思维方式考虑问题,比如考虑“如何更好地实现内核的某个特性”类似问题,同时,针对厂商的业务痛点问题及新特性、新场景做更紧密的贴合。

CSDN:把一个领域做好做精,需要投入大量的时间和精力,三位作为资深的专家,对于想要从事 Liunx 内核开发的年轻程序员,都有哪些建议?

崔晓刚:保持兴趣和好奇心是最重要的。其实很多接触 Linux 开发的工程师基本上都是从一些简单的驱动开始上手,相比整个 Linux 的驱动模型这只是很小的一个部分。而足够的好奇心,可以驱使开发者在这个探索的过程中不断摄入新的知识,从简单驱动开始,到内存管理、内存分配不断抽丝剥茧不断学习一步一步去窥探整个 Linux 的全貌。

郭维超:我非常同意晓刚的说法,保持好奇心很重要。另外我觉得也很重要的一点就是敢于交流。比如说看代码的过程中,发现一些很小很细节的不合理改动,又或者是拼写错误之类的情况,都可以发邮件提补丁,开源社区拥有非常热心的技术大佬,他们很乐意提供帮助。因此我们的开发者需要从这些小的细节开始,不断锻炼自己的交流能力,而且现在很多开源社区也面临新老交替的问题,急需新生力量的加入。所以我认为开发者需要敢于提问、交流、保持好奇心。

李培锋:我非常认同两位的看法,最后补充几点,第一就是要能够耐得住寂寞,第二要学会阅读源码,最后就是涉足更多的领域,不要把自己局限到某一个单一的领域,即便你希望深耕某一个基础领域比如内存,但你也不能停止对 CPU ,存储等软件领域的了解。就是要站在更高更宏观的位置看待问题。

CSDN:最后一个问题,未来 1-3 年,三位老师在个人成长或者公司项目的规划是什么样的?

崔晓刚:做技术的几年经历确实让我的想法发生了一些改变,尤其是在 OPPO 这样的公司,各个技术领域的专家非常多,如何将他们的能力全部发挥出来就需要设计完整的架构设计与技术规划。因此,回到我个人,一方面我希望自己可以更多地进行向上思考,虽然我的工作是 Linux 内核开发,但是未来也希望可以更多了解上层领域并向其进行拓展。熟悉业务领域的想法及技术方案,熟悉他们希望如何与底层操作系统进行配合一起使用的逻辑。只有这样,才能让底层的机制更完美发挥其应用的能力。

另一方面,就是在硬件层更进一步。我发现 Linux 兼容性很强,在兼容性很强带来更多好处的同时,也忽略了硬件本身的一些特性。因此我也希望能够自己能够在往上发展之外,更深入了解 CPU 硬件执行的原理。

李培锋:我未来主要也会集中两个方向。第一,可以更精准的发现问题,提升用户体验。如刚才所说,针对“在系统分配内存时如何得到更快的响应让用户感觉不到卡顿”等相关问题进行深入研究,提供更好的用户体验。其次,我希望自己可以更深入了解硬件底层各个模块、各个领域的知识,从底层做好技术支撑,进而为用户提供更好的体验。

郭维超:我接下来的规划是希望自己可以做好一个传承者或者叫转换者的角色。立足 Linux 内核这样的技术领域,做好 OPPO 与开源社区及高校之间的联系。OPPO 目前与很多高校进行深度合作,将他们创新的想法,通过我们的技术落地到我们的产品中,同时,我认为在这个过程中,也会产生很多优质的内容可以被开源到社区,进而最终实现三赢的结果。此外我也希望自己能够从技术出发,作为企业员工能够更多地关注产品、关注用户需求。

最后也希望能够在技术之外,进一步提升自己。

采访嘉宾:

崔晓刚 OPPO ColorOS CPU 调度团队负责人

李培锋 OPPO ColorOS 内存高级工程师

郭维超 OPPO ColorOS 存储专家

国产安卓 OS 顶梁柱 ColorOS 背后的内核技术工作者相关推荐

  1. 氢os android 7.0,迄今最干净的国产安卓7.0系统 氢OS体验

    原标题:迄今最干净的国产安卓7.0系统 氢OS体验 在两三年前,国内曾一度掀起UI风,各大厂商都推出自己的UI,有些即使没有自己手机产品,也依旧推出自己的UI,但是好景不长,到如今大多数都销声匿迹.现 ...

  2. 申请android11xColorOS,零时差适配安卓11!ColorOS 11升级公测版体验:丝滑顺畅

    原标题:零时差适配安卓11!ColorOS 11升级公测版体验:丝滑顺畅 一.写在前面:安卓11正式发布后 ColorOS抢先秒级推送 北京时间9月9日凌晨1点10分,谷歌悄无声息地放出安卓11的正式 ...

  3. 论机智,还是国产安卓旗舰花样多,从2999到10999元,各有各的“开窍点”

    萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 赶在春节前,各家国产安卓旗舰机陆续上市,从小米12 Pro.荣耀Magic V.iQOO 9 Pro,到一加10 Pro.realme真我GT2 ...

  4. android os于8.1区别,Android-x86 8.1-rc2发布 运行于x86 PC上的安卓OS

    ­ Android-x86 8.1-rc2 发布了,Android-x86 即运行于 x86 PC 上的 Android 操作系统,它的主要目的在于为 x86 平台提供一套完整的 Android 系统 ...

  5. 鸿蒙内核手机,华为和安卓说再见,推出鸿蒙内核手机,不再更新安卓

    原标题:华为和安卓说再见,推出鸿蒙内核手机,不再更新安卓 安卓操作系统是目前占据市场份额最多的一款操作系统,安卓系统其实不仅仅只是应用到智能手机上,甚至其他很作智能产品上也都使用安卓系统.为什么安卓系 ...

  6. 一加手机换鸿蒙os,一加手机支持氢OS和ColorOS一键切换?官方辟谣:太假了

    原标题:一加手机支持氢OS和ColorOS一键切换?官方辟谣:太假了 继OPPO发布了基于安卓11的Color11和华为发布了最新的EMUI11(并且传闻首批更新该系统的包括荣耀的机型可能将首批更新鸿 ...

  7. vivo是安卓手机吗_Android 11 Beta发布,这10款国产安卓手机可升级,有你的机型吗...

    经过数月的开发者测试之后,谷歌正式推送Android 11 Beta,谷歌Pixel 2系列及以上机型已率先升级.国产手机方面也很迅速,OPPO宣布会第一时间升级基于Android 11 Beta版本 ...

  8. 追平iPhone!搭载IFAA人脸识别黑科技,这款国产安卓手机厉害了

    2017年9月,iPhone X上市带动了无数个Face ID相关的话题.苹果Face ID技术采用的是3D结构光技术,由于苹果收购了提供该技术的以色列公司,使得iPhone X 的Face ID拥有 ...

  9. Docker背后的内核知识:命名空间资源隔离

    Docker背后的内核知识:命名空间资源隔离 Docker这么火,喜欢技术的朋友可能也会想,如果要自己实现一个资源隔离的容器,应该从哪些方面下手呢?也许你第一反应可能就是chroot命令,这条命令给用 ...

最新文章

  1. Deep Learning回顾#之LeNet、AlexNet、GoogLeNet、VGG、ResNet
  2. 一个android记事本的学习过程记录! (一)
  3. 从民工到CCNA-献给想考认证的朋友
  4. Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API
  5. boost::hana::keys用法的测试程序
  6. java中的几种泛型类——HashSet、HashMap、TreeSet、TreeMap,遍历map,排序,HashTable比较
  7. kax格式怎么导入不了pr_pr如何导入.mogrt文件 pr模板导入教程
  8. php中如何滚动文字,HTML_网页HTML代码:滚动文字的制作,制作滚动文字 通过本章前面 - phpStudy...
  9. Android漫游记(1)---内存映射镜像(memory maps)
  10. 一个简单的问题,为什么我要搞得复杂绕一大圈
  11. java snap7_Snap7 referance manual PDF 下载
  12. xy转utm坐标(个人推算)
  13. SIM900A更改波特率
  14. 如何编写一份合格的架构设计文档
  15. ue4 本地化要点详解
  16. 硬盘格式化后数据还可以恢复吗?格式化硬盘的恢复方法
  17. access_ok函数
  18. Ubuntu16.04添加Pycharm快捷方式在启动器并修复问号图标问题
  19. 高效能程序员的修炼札记:创建和管理社区
  20. CVE-2018-1273漏洞复现日志+IDS规则编写

热门文章

  1. 第三讲 文件和文件夹的命名规则、隐藏与显示
  2. 首小时单品破亿、总销售破1.9亿,德施曼双十一首日再获全网第一
  3. 一维高斯分布与多维高斯分布及 matlab 实现
  4. 显示HWC合成(hwc_display_contents_1_t,hwc_layer_1_t数据结构关系)
  5. oracle通过 表名、列名、字段名、注释 找到所在库 或者所在表
  6. 【教程】EasyConnect 在 20.04.1-Ubuntu 安装实战
  7. mosquitto auth http 安全认证
  8. playwright 操作录制脚本
  9. 网络基础--静态路由和RIP
  10. 计算几何入门 1.1:凸包的概念