鸿蒙操作系统,华为自主研发的全球首个基于微内核的全场景分布式操作系统。它不仅是一个独立的操作系统,更是一个生态系统,涵盖从手机到电视再到汽车的各种设备。在探讨鸿蒙系统时,我们首先需要理解其背后的创新和自主性,以及它如何在全球科技领域中独树一帜。
### 初识鸿蒙
在国内计算机基础核心领域长期缺乏自主知识产权的情况下,鸿蒙的出现无疑是一股清新的空气。华为通过自主研发鸿蒙,不仅填补了这一空白,更是在全球范围内展示了中国企业的创新精神和技术实力。然而,面对之前诸如“汉芯”等造假事件,公众对国产软件的信任度一度受到冲击。因此,人们不禁要问:鸿蒙是否能够成为例外?
根据官方IDE DevEco Studio的应用模板,我们可以看到鸿蒙支持多种类型的设备,包括手机、平板、电视、手表、汽车甚至小家电等。这显示了鸿蒙技术的广泛适应性和深度。进一步分析,鸿蒙支持的设备按照所需内存大小分为L0至L5六个级别,为不同需求的用户提供了灵活的选择。特别值得注意的是,鸿蒙的核心技术是基于LiteOS,这是一个为特定硬件环境优化的操作系统,意味着其仅适用于配套开发板而非通用操作系统。OpenHarmony作为鸿蒙的开源版本自2020年9月在gitee上发布以来,虽然华为自身的文档较少,但仍然提供了较为详实的开发者文档,这表明华为对于开放共享的态度。
### 鸿蒙的核心
尽管鸿蒙的手机版操作系统并未开源,关于旧版鸿蒙的疑虑也引发了讨论。事实上,鸿蒙的非嵌入式操作系统并没有所谓的旧版问题。这是因为鸿蒙的手机版操作系统同样具备高度的兼容性和广泛的应用前景。未来,我们有理由相信,随着鸿蒙SDK的植入,更多的传统Windows、Linux设备也将能运行鸿蒙应用,使得整个生态更为丰富和多元化。
总的来说,鸿蒙不仅是一款操作系统,更是一种全新的生态系统构建。它旨在通过多设备兼容、卡片式应用等多种创新技术,为用户提供无缝连接的智能体验。华为的这一努力不仅展示了中国科技的实力,也为全球科技创新树立了新标准。
根据提供的内容重构并保持段落结构。
在多设备兼容的基础上带来一致的高性能交互体验,可以理解为跨设备、跨平台、跨网络的轻量Widget。
3. **软总线**
在上述两点的基础上,降低设备间互联互通的门槛。主要基于以下三点改进:
(1)设备间的发现和连接:从手动发现进化到自发现。
(2)多设备互联后的组网技术:软总线组网-异构网络组网。
(3)多设备多协议间的高效传输技术。
4. **通信安全**
要实现设备间的互联互通,那么安全无疑是特别重要的环节。这里的问题是如何保证正确的人使用正确的设备,消费正确的数据。即要解决如下三个问题:
(1)如何保证消费者对设备的鉴权是安全的,保证设备是原厂生产,没有被篡改的?(正确的设备)
(2)如何保证消费者操作设备数据是安全的?(正确的人)
(3)如何保证消费者数据安全?(正确使用数据)
鸿蒙在系统和数据通信安全方面有较为完善的考虑。
三、系统层分析
基于鸿蒙已经开源的openharmony源码统计,openharmony包含C代码2KW行,C++ 500W行。
1. **内核部分**
鸿蒙宣传的微内核,并未说明是哪个鸿蒙,华为目前已经发布的内核包括:
- Linux面向手机(L5级别设备)
- LiteOS-a面向有MMU的设备(≥L1级别)
- LiteOS-m面向无MMU的嵌入式设备(L0级别)
目前行业内对内核进行分类主要是:
微内核优点:
1. 代码量小,可以形式化验证,可以减少bug量,几乎可以0 bug,另外更加方便移植。
2. 各个系统组件或者服务如果存在问题可以直接重启服务,减少核心组件异常对整个系统的破坏,并按需组织系统服务。
3. 各组件可以按需加载(现在宏内核也支持模块动态加载卸载)。
4. 可以规避GPL协议。
微内核缺点:
1. 所有资源获取都需要通过IPC,IPC又必须陷入内核,所以会导致频繁的陷入内核,或者多次拷贝,导致性能下降。当然IPC通信效率随着深入研究与技术发展逐步提高。
2. 对于中断响应,需要映射到用户空间再处理,效率较低。
3. 大量使用某些系统服务的时候,会导致进程上下文切换,增加系统负担。
而目前开源出来的鸿蒙代码 LiteOS-a按照业界对内核分类依旧是宏内核。至于华为是否存在微内核但没有开源,还是在实现鸿蒙过程中,又重新选择了宏内核,我们不得而知。
1.1 LiteOS-M
LiteOS-A是一种基于LiteOS的开源系统,专为cortex-m3、M4和M7等处理器架构设计。该系统与纯粹RTOS(实时操作系统)不同,它在多进程、多核、虚拟内存和IPC(进程间通信)等方面进行了重新封装,并尽量模仿Linux系统以简化内核实现。
### 1.2 LiteOS-A
LiteOS-A基于LiteOS进行演进,在保持其核心功能的同时进行了重大调整,以满足更广泛的应用需求。主要改进包括:
- **多进程**:采用基于task的进程与线程调度机制,支持时间片和FIFO调度,以及简单的进程与线程管理。
- **多核**:通过全局链表和所有CPU共享,允许任务在空闲轮询模式下运行,不支持负载均衡。同时,支持用户设置亲和性来绑定特定CPU核运行。
- **虚拟内存**:内核静态映射,提升虚实转换效率,优化用户空间和内核空间的区间分布。
- **动态链接**:按需加载代码段,支持最小单元为页,符号绑定,并且进程代码段、数据段、堆栈段地址随机化,运行标准ELF文件。
- **进程通信(IPC)**:提供标准的POSIX进程间通信接口,如Mqueue, pipe, fifo.signal,同时添加了Lite IPC,简单高效且安全。
- **系统调用(System Calls)**:通过MUSL支持系统调用API和VDSO API,保证服务与内核分离,增强安全性。
- **权限管理**:基于进程粒度的权限划分与管理,实现DAC访问控制,灵活划分文件资源归属与管控,满足基本的文件共享需求和Posix规范。
- **虚拟文件系统(VFS)**:使用BCache和PCache提升文件系统读写速度。
- **POSIX标准库**:提供POSIX标准库的支持,使得应用开发更加便捷。
### 小结
通过以上分析可以看出,LiteOS-A在继承原LiteOS特性的基础上进行了大幅度的增强,特别是在多进程、多核处理、虚拟内存、IPC通信、系统调用、权限管理和虚拟文件系统等方面的创新,使其更接近于成熟的商业操作系统。这使得LiteOS-A能够适应多样化的应用环境,满足高性能、高安全性的需求。
鸿蒙操作系统基于Linux 419版本内核,引入了CVE补丁、HDF驱动以及binder IPC转发功能等新特性。此外,还支持特定芯片架构驱动补丁(例如Hi3516DV300),并提供了系统基本能力子系统集、基础软件服务子系统集、增强软件服务子系统集和硬件服务子系统集。这些子系统可以根据不同设备形态进行裁剪,每个子系统内部也可以根据功能粒度进行裁剪。多内核支持也是鸿蒙操作系统的一个重要特点。
根据提供的内容,我们可以重构鸿蒙OS中KAL层的功能和其对统一API接口能力的支持。首先,KAL层通过支持POSIX标准(如POSIX 2008规格)和CMSIS标准(Cortex Microcontroller Software Interface Standard),实现了对底层内核的封装和统一。这种封装允许基于上层API编写的程序在各种CPU上编译通用,强调编译通用的重要性。
接着,Musl-libc作为兼容POSIX的库,是GNU C library (glibc)、uClibc或Android Bionic的替代品,用于嵌入式操作系统和移动设备。它遵循POSIX 2008规格和C99标准,采用MIT许可证授权,并被广泛应用于sabotage、bootstrap-linux、LightCube OS等项目,从而确保驱动设备的兼容性。
此外,POSIX是一个可移植操作系统接口(Portable Operating System Interface of UNIX),其标准定义了操作系统为应用程序提供的接口标准。为一个POSIX兼容的操作系统编写的程序,应能在任何其他POSIX操作系统上编译执行,这提高了软件的可移植性。
最后,CMSIS是ARM与微控制器供应商、工具供应商和软件解决方案共同开发的Cortex微控制器软件接口标准。它使得微控制器和软件供应商可以使用一致的软件结构来开发Cortex微控制器的软件。CMSIS-RTOS是CMSIS的一部分,提供了API规范,各厂商可以基于此构建自己的实时操作系统。由于基于CMSIS-RTOS的API是标准化的,因此基于这些API开发的应用软件不需额外移植即可运行在支持CMSIS-RTOS的操作系统上。随着越来越多的基于CMSIS-RTOS的中间件,支持CMSIS-RTOS后的系统也将获得更多的中间件支持。
OpenHarmony驱动在内核态的部署主要采用静态链接方式,与内核子系统一同编译和打包成系统镜像。驱动框架提供了交互流程,包括发布设备服务,在VFS中创建固定的目录或设备节点,并通过HDI进行抽象。适配层使内核支持HDF能力,而统一驱动依赖于这些内核集成的HDF内核支持驱动作为转换层。对于新的内核适配,khdf需要根据具体内核进行移植,这涉及较大的工作量。
此外,鸿蒙OS也尝试将部分驱动移入用户空间,即向微内核(或者混合内核)方向演进。如果使用Linux内核,通常可以采用标准的Linux内核驱动模型编写驱动。但不同设备的CPU与外设可能不同,分别编写可能更加合适。
四、软总线分析显示了鸿蒙提供的标准软件总线框架,主要代码目录分为Lite和Standard两个版本,前者主要关注发现和认证传输,后者添加了组网功能,并以Client(SDK目录)和Server(core目录)的方式设计。当前开源的openharmony方案主要限制在同一局域网下进行软总线互通。目前,开源出来的仍是基于TCP/IP协议建立的局域网。虽然鸿蒙发布会描述了一个极简协议统一层,但我们并未看到这一点。
软总线时序图展示了分布式调度服务等Module,即其他使用软总线的模块。publicService负责对服务进行发布,同时初始化软总线。在上述publicService过程中创建的会话服务CreateSessionServer是后续进行基于session会话服务的基石。调用者无需关心IP等细节,只需使用创建的sessionID进行通信即可。
_sessionMgr->serverListenerMap[i] 用于存储session。
在SessionListenerMap结构中,最重要的是listener成员:onSessionOpened、onSessionClosed和onBytesReceived。其中:
- onSessionOpened是在会话创建时被回调的函数。
- onSessionClosed是在会话结束时被回调的函数。
- onBytesReceived是会话的数据到达的回调函数,注册的模块可以通过这个函数接收会话的报文,按照自己的格式进行解析,并执行会话要求的动作。例如在分布式调度模块中,接收的数据解析后可能是START_FA的命令。
相关的代码:
StartBus()函数会调用StartSession()函数创建基于TCP的socket的会话管理服务。
循环监听服务来连接,数据传输。简单总结就是软总线的传输,是基于COAP发布服务等待超级终端通过softbus的session进行传输。当client要访问某个设备(可以是远程,可以是本地)的服务,首先连接到远程服务的session服务器,并发送数据。远程的session服务通过onBytesRecived接收到数据,并回调给module。然后使用module的目的发送数据调用SendBytes就可以基于sessionID发送。
这个过程中,module也好,还是远程client的应用也好,都不需要知道服务在哪个地方,有软件总线进行处理即可。目前服务的发布只支持WiFi下的COAP。在代码中可以看到,未来支持的软总线设备有BLE, COAP, USB三种类型。我们推测软件总线之下应该还有一个针对复杂设备支持多层连接的适配层,以便屏蔽底层差异(当前只开源了WiFi和BT),包括支持上述设备的组网,路由以便构建一张局域网。根据当前的开源代码来看,主要还是基于wifi的局域网连接,其他形式自组网还未看到,但华为在通信这块有很深的功底,我们这里相信这个目标可以达成。
基于目前公开的信息,软总线架构推测如下图:
其中底层连接协议包括以太网、红外线、4G/5G/WiFi、BT、NFC等各种通信能力。目前NFC主要用于华为Card的认证,协助多设备之间的认证。
### 鸿蒙应用开发的挑战与机遇
华为的DevEco Studio是基于开源IntelliJ IDEA改造的官方IDE,用于本地调试的模拟器仅支持JS应用。尽管它支持远程模拟器(分布式模拟器),但目前只允许Java应用通过这种方式进行调试,而无法直接在本地运行。这种限制导致开发者需要使用华为的账户登录远程模拟器,并通过实名认证上传身份证照片或银行卡资料来验证身份。由于网络和资源分配问题,远程调试过程并不流畅,影响了开发体验的质量。此外,开发鸿蒙应用时还需双重签名认证,这增加了开发流程的复杂度,并引发了对华为未来可能增加开发成本的担忧。
### 应用框架及格式解析
鸿蒙应用分为两种框架:Java框架仅支持鸿蒙Android系统,而JS框架同时支持这两种系统。JS框架提供了类似小程序的渲染环境,使得JS应用能够在鸿蒙Android和嵌入式系统中运行。相比之下,Java框架主要适用于Android系统,其排版能力、扩展性和兼容性相对较弱,更适合信息展示类的应用。
对于代码的最终形式,无论是JS还是Java应用,编译后的结果都是以'hap'为后缀的未压缩格式,可以通过标准的zip解压工具进行解压。这一格式的设计旨在确保应用的可移植性。
### 总结
华为的DevEco Studio及其对开发者提出的要求表明了鸿蒙生态建设的决心。虽然当前存在一些限制和挑战,但同时也为开发者提供了丰富的学习和应用机会。面对这些机遇与挑战,我们期待华为在未来能够提供更为友好的开发环境和更加完善的服务,以促进鸿蒙生态系统的健康发展。
根据文件的命名和功能推测,我们可以对内容进行如下重构,以保持段落结构:
1. **鸿蒙Android应用分析**
- 鸿蒙Android在反编译后的壳代码中主要由HarmonyApplication完成对ability应用运行环境的初始化。这说明鸿蒙Android的设计思路是利用现有的Android系统框架,但在某些核心组件上可能进行定制或优化来满足其独特的需求。
2. **Java应用界面设计**
- 从鸿蒙Android的设计来看,它似乎借鉴了Android与QT、Windows类似的设计理念,即在Android操作系统的基础上搭建一套自己的应用程序框架。这种设计既充分利用了Android现有的技术栈,又试图通过定制化的方式提高开发效率和用户体验。
3. **Js应用开发**
- 基于js开发的Js应用是一种类似小程序的开发方式,首先编译成jsbundle。这种实现方式使得Js应用可以在不同的鸿蒙系统上执行,显示了鸿蒙系统在支持多样化应用生态方面的努力。
- 经过对openharmony代码的分析,发现Js应用在openharmony系统中是以自绘的方式进行渲染,并提供了相当完善的UI组件支持。这表明鸿蒙系统在尝试结合自研和第三方技术,提高系统的灵活性和可用性。
4. **UI组件框架及实现**
- ACE_Engine_Lite项目提供了丰富的UI组件支持,包括列表和动画等复杂控件的实现。这个框架负责维护UI组件的生命周期和事件通信等逻辑层的功能。
- UI组件的显示层主要在graphic_ui工程中实现,其中包含了一些复杂的UIButton绘制示例,这表明该框架在图形用户界面(GUI)开发方面具有较好的可扩展性和灵活性。
综上所述,鸿蒙Android虽然在核心UI部分依赖于Android体系,但在应用开发和系统架构设计上显示出了较高的灵活性和创新性,特别是在支持多样化的开发模式和应用生态方面取得了显著成果。
在鸿蒙Android的工程实践中,开发者选择了一条独特的路径——类似于ReactNative的UI控件转换方案,而不是采用自绘的方式。这种做法与ReactNative使用React语法不同,而是基于Vue的语法,体现了对国内开发者生态的重视。
鸿蒙Android上的Js跨平台渲染框架,采用了C++实现类VUE语法,这在嵌入式设备上进行自绘,而在Android上通过控件转换的方式进行UI渲染。尽管这一框架具有创新性,但遗憾的是其并未开源,使得研究者无法深入探索和研究。
在执行分析中,Js应用在鸿蒙Android上会被转换成为Android UI控件。这些文件主要包括ohos.aafwk.ace.ability.AceAbility完成jsbundle的加载和运行工作。值得注意的是,虽然Java应用和JS应用解压后目录结构相似,名称也类似,但其工作原理有着本质的区别。在Java应用中,class.dex已经是鸿蒙应用的可执行代码。然而,在JS应用中,class.dex仍然只是一层壳,它用于构建执行JS应用的运行环境,真正的业务逻辑存在于app.js中。
在界面布局和显示效果方面,通过dump方式可以观察到Js应用的UI绘制方式。在鸿蒙Android上,UI是以一种非自绘的方式来承载,使用的是Android原生的UI控件。这种设计的优势在于减轻了工作量,组件方面可以复用Android生态中的资源,使得能力更加丰富。然而,这也带来了劣势,即两套方案需要独立维护,且可能面临兼容性问题。从openharmony源码上看,由于渲染层架构的不同,未来的统一性也较低。
总结来说,鸿蒙Android在设计上基于自己的DSL和应用运行框架,采用非自绘的方式渲染,并通过适配层将Android原生控件进行转换。这种做法既减轻了开发工作量,又可以利用已有的Android生态系统,提升了UI的能力。不过,这种做法牺牲了一定的可维护性和未来的一致性可能性。
鸿蒙OS,作为华为构建的全场景、多终端的操作系统,其生态布局不仅着眼于技术的创新与应用,更注重于万物互联时代下的生态系统建设。这一战略定位下,鸿蒙OS及华为AIoT生态的发展蓝图,正在逐步展开。
在近期的技术发展趋势中,微信支付作为一个强大的第三方支付平台,正在热招各类人才,包括开发、技术、后台管理等多个岗位。这不仅反映了微信支付在支付领域的强大实力和广泛的市场需求,也显示了其在技术和创新方面的持续投入。对于有志于从事金融科技行业的人来说,这是一个不容错过的机会。
此外,微信刷脸支付、微信支付分行业应用后台开发以及微信支付行业C++后台开发等职位的开放,表明了微信支付在技术深度和应用广度上的不断探索和深化。这些工作机会不仅为专业人士提供了展示才能的平台,也为微信支付的未来发展注入了新的活力。
随着科技的不断进步和市场的需求日益增长,微信支付及其背后的技术团队正面临着前所未有的挑战和机遇。从技术层面看,如何进一步优化支付系统的安全性、提升用户体验、拓展应用场景,是摆在他们面前的一大课题。从市场角度出发,如何在竞争激烈的支付市场中保持领先地位,实现持续增长,则是另一个需要深思的问题。
综上所述,无论是对科技行业感兴趣的专业人士,还是对支付业务发展充满期待的企业来说,了解微信支付的招聘信息,都是一个值得关注的方向。这不仅是因为它直接关系到个人的职业发展和技能提升,也是因为它代表了金融科技领域内一种积极向前的态度和趋势。