由第一计算平面迁移到第二计算平面,也就是由原来的X86架构迁移到ARM架构,必将成为中国IT行业发展历史上的重要里程碑。当性能和安全摆在企业面前,让我们选择时,安全当然是被放在第一的位置。但是ARM架构处理器的性能本身还是非常优秀,最早ARM架构的处理器多由于军工领域和民用的视频音频解压缩处理领域。现在华为获得ARM的授权,在鲲鹏处理器研发上不断推出处理器,解决了服务器最核心的CPU国产化问题,初步建立了鲲鹏生态环境,已经具备由X86架构迁移到ARM架构的技术支撑,例如web应用服务由Nginx、Apache、Tomcat,中间件由Memcached、Redis、Kafka支持,数据库由Mysql、Mariadb和PostgreSQL支持,大数据由Hadoop、Hive、HBase支撑,开发语言则支持C、C++、Java、Ruby、Python、Perl、JavaScript、Go语言,操作系统则由CentOS、Ubuntu、openEuler、中标麒麟、UOS等支持。

整个迁移过程根据企业原来的应用系统的技术架构不同,决定了不同的难度和工作量。我曾经经历建设银行的新一代业务系统迁移,是整个架构的迁移,包括了数据库、应用软件两者都需要改造和迁移。也经历过中国人寿由于Informix厂家不再提供技术支持而不得不迁移到Oracle数据库的过程。都需要消耗巨大的物力、财力和工作量进行迁移工作。这里面如何保证业务不受影响或对业务影响最小,保证业务连续性,以及迁移前后业务如何切换方案是需要经过非常周密的规划设计的。迁移期间除了数据库设计、数据迁移、代码改造之外,工作量最大的就是验证测试工作,验证迁移工具的正确性,迁移前后数据的一致性、完整性、连续性等,以及对应用系统业务功能、性能、安全等方面的测试验证。今天我简单介绍一下代码迁移过程中如何保证代码本身安全的问题。

最近看了华为鲲鹏开发套件的设计者张汝涛的研究资料《如何实现从 x86 到鲲鹏平台 90%C/C++ 代码自动迁移》,因为Java、Python等由JVM解释执行或CPU解释执行的开发语言,只要不依赖C和C++语言开发的公共组件,java语言直接更换JVM即可,而Python需要更换安装相应的Python解释器即可。而如果涉及到C和C++语言,则需要对代码进行适当修改,并进行重新编译。根据张汝涛介绍,华为在鲲鹏社区提供了大量的兼容鲲鹏计算平台的开源软件包供开发者下载直接使用,但是这些开源软件包的安全性如何保证呢?根据Gartner统计,每年开源软件中暴露出4000个以上的安全漏洞,而且这个数字还在快速增长。对于开源软件包的管理需要引起足够重视。

下图是华为给出的C/C++程序迁移过程:

在软件评估阶段,首先使用Dependency Advisor对软件进行扫描,需要用户提供程序源代码以及依赖的第三方库,扫描完成给出可移植性评估报告。在这个过程中,可以借助工具进行代码成分分析和安全漏洞分析,分析引用的第三方库软件版本以及是否存在安全漏洞,为下一步更换相应的第三方库做准备。

在软件移植阶段,华为提供了Porting Advisor工具,该工具会检查用户软件代码并提供修改建议。开发人员对代码进行修改完成后,编译通过并不代表软件代码中没有缺陷,由于当前负责代码修改的工程师很可能已经不是原来开发该代码的工程师了,如果只是局部的修改代码,则很可能会影响整个代码的安全。这时候,我们建议通过工具绘制出的控制流图和函数调用图,帮助代码维护人员快速熟悉代码结构,指针变量、全局变量和局部变量的关系等。当修改代码后,使用工具进行代码的快速扫描检测,发现代码由于修改可能导致的缺陷和安全漏洞。

性能优化阶段,通过Tuning Kit进行CPU、内存、磁盘IO、网络IO等资源采集,以发现程序性能瓶颈。如果发现代码性能瓶颈,则可以借助工具协助进行整个程序的函数调用关系、函数调用次数、循环嵌套深度等分析,快速发现代码中的瓶颈并进行修复。

在代码移植过程中,如果对代码自主研发比率感兴趣,可以借助工具分析一下到底代码中有多少比例是自主开发的,多少是引用的第三方库。如果程序代码有多个版本,借助工具中的两个程序代码对比功能,可以快速的发现版本之间的代码差别,可以定位到行级。相对开发人员常用的WinDiff等单文本比较工具,对比工具应该能够从项目工程视角,进行文件级和函数级对比分析。

面向X86架构到ARM架构的迁移,客户移植过程中的客户需求必定是多样化的,这就为基于代码检测分析的工具厂商提供了可以发挥的空间。快速的代码自动化迁移、扫描、检测、性能优化等是必然趋势。

关注安全  关注作者

迁出X86架构,你准备好了吗?相关推荐

  1. 【华为云技术分享】最终,我决定将代码迁出x86架构!

    如今,我们几乎所有软件都建立在 x86 架构之上 ,在互联网漫长的演进过程中,各大公司拼尽全力在迭代上层架构.优化整体性能,开发者们该用的.能用的招儿想必都用上了,接下来呢?如果底层架构不出现大的革新 ...

  2. 【Android 逆向】Android 进程注入工具开发 ( 远程调用 | x86 架构的返回值获取 | arm 架构远程调用 )

    文章目录 前言 一.x86 架构的返回值获取 二.ARM 架构远程调用 前言 在之前的博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 ...

  3. 赠书 | 读懂 x86 架构 CPU 虚拟化,看这文就够了

    作者 | 王柏生.谢广军 导读:本文摘自于王柏生.谢广军撰写的<深度探索Linux系统虚拟化:原理与实现>一书,介绍了CPU虚拟化的基本概念,探讨了x86架构在虚拟化时面临的障碍,以及为支 ...

  4. 读懂 x86 架构 CPU 虚拟化,看这文就够了 | 赠书

    作者 | 王柏生.谢广军 导读:本文摘自于王柏生.谢广军撰写的<深度探索Linux系统虚拟化:原理与实现>一书,介绍了CPU虚拟化的基本概念,探讨了x86架构在虚拟化时面临的障碍,以及为支 ...

  5. 读懂 x86 架构 Linux 系统虚拟化,这文不容错过

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 关注订阅号「程序员小乐」,收看更多精彩内容 每日英文 What is a m ...

  6. 揭密X86架构C可变参数函数实现原理

    前两天公司论坛有同事在问C语言可变参数函数中的va_start,va_arg 和 va_end 这些接口怎么实现的?我毫不犹豫翻开箱底,将多年前前(算算有十年了)写的文章「亲密接触C可变参数函数」发给 ...

  7. 探秘X86架构CPU流水线

    http://ee.ofweek.com/2013-07/ART-11001-2805-28704745.html 导读:CPU 是如何工作的呢?一条指令执行需要多长时间?当我们讨论某个新款处理器拥有 ...

  8. x86架构手机_都是芯片,为什么电脑CPU不能用在手机里?

    手机性能现在一代比一代强,很大程度上要归功于内部CPU处理器的不断升级,从单核到多核,低频到高频,经过这么多年的发展,甚至逐渐摸到了一些电脑处理器性能的边缘,这时候会有萌新小白同学发问,既然电脑CPU ...

  9. android x86 三星,三星主刀 X86架构Android4.X手机CES见

    下面这条情报是关于Intel的Android手机的.据了解,三星.美国运营商Sprint以及Intel将会在1个月后的CES大会上面展示一台搭载Android4.X冰淇淋三明治系统的智能手机,这台手机 ...

最新文章

  1. RabbitMQ 官方NET教程(二)【工作队列】
  2. Redis 初探-安装与使用
  3. Java环境搭建若干问题
  4. 虚拟运营商人工服务器,四大必想之事:倒闭、价格、网络
  5. (JSP)关于手机端(尤其是苹果手机)pdf文件无法打开的解决方案
  6. )类 新建javafx程序时_JavaFX 类 RadioButton用法及代码示例
  7. python将字典写入txt文件_将一个字典写入txt文件并将其读回来?
  8. linux怎么下载ftp文件夹,命令行 - 如何在Linux上通过FTP递归下载文件夹
  9. python数据可视化matplotlib之grid
  10. Udacity课程脉络-统计学基础(二)- t分布
  11. 网上处方药物手册Rxlist 及其药学信息资源
  12. 实现国产化转型,ZStack Cloud 助力中铁财务数字化转型!
  13. 【U8】固定资产模块卡片管理栏目设置中没有“凭证号”栏目
  14. VR全景看家装,让家装不再“纸上谈兵”
  15. 对计算机专业学生的七个建议(作者:Joel Spolsky)
  16. 全志D1-H裸奔工具XFEL
  17. 实际蒸散发和潜在蒸散发
  18. 中国菜刀能在linux上运行吗,【Web Shell】- 技术剖析中国菜刀
  19. win10内存占用率过高怎么办_如果你的CPU占用率过高 或跟Win10累积更新有关
  20. 容器云系列之Kubernetes基本架构介绍

热门文章

  1. 如何与人进行有效沟通
  2. 基于Python3的科学运算与常用算法-第1,2章
  3. 中国联通今年5G投资350亿元!附2019业绩PPT全文
  4. 电子数据取证之网站分析和重构基础
  5. OKL4虚拟化技术跟踪
  6. (给自己看)51单片机AT24C02
  7. Android Android Studio 集成豌豆荚App墙广告
  8. Poco库使用:事件通知
  9. FPGA开发基础——基于multisim以及Quartus实现的交通灯电路
  10. 江南电子计算机研究所,我的中国“芯” | 江南计算所SW1600:国产超算“神威蓝光”的“心脏”-控制器/处理器-与非网...