04 2022 档案
摘要:前言 iunknown是针对服务和功能的统一对外接口,头文件位于distributedschedule_samgr_lite\interfaces\kits\samgr\iunknown.h。iunknown为系统功能的外部功能提供基类和默认实现。 IUnknown背景 要想清楚的理解IUnknow
阅读全文
摘要:前言 之前说过鸿蒙实现了自己的vector容器,叫做SimpleVector,其代码位于distributedschedule_samgr_lite\interfaces\kits\samgr\common.h,现在来分析下其代码。 头文件分析 1 typedef struct SimpleVect
阅读全文
摘要:前言 在分布式调度框架中,关于轻量级服务管理的代码总体上可以分为四部分,分别是Samgr、Samgr_client、Samgr_endpoint及Samgr_server。本文是对Samgr部分的总体概述,相关代码文件位于distributedschedule_samgr_lite\samgr.后续
阅读全文
摘要:前言 本文是对Samgr部分中子主题Service和Feature的总体概述。服务和功能的耦合度较高,这篇做一个总体概述。 服务和功能概述 在鸿蒙的系统服务管理中,服务(Service)和功能(Feature)是极其重要的基础核心对象。一个服务可以提供零个或多个子功能,它代表一组紧密相关的功能或者操
阅读全文
摘要:前言 本文是对Samgr部分中子主题IUnknown的总体概述,相关代码文件位于distributedschedule_samgr_lite\samgr\source。 IUnknown概述 IUnknown是鸿蒙系统中非常重要的一个概念,作为服务或功能间交互的对外接口。当创建一个服务或功能时,需要
阅读全文
摘要:前言 之前分析了在同一进程内不同服务间采用的通信机制是消息队列。然而,在不同进程间服务的通信机制并不是鸿蒙系统设计的消息队列,而是采用了共享内存。这是因为同一进程内的各个服务的地址空间是共用的,所以消息队列的首地址一旦分配就是唯一的。而不同进程间的各个服务的地址空间是独立的,消息队列就不再适用。并且
阅读全文
摘要:前言 之前介绍了鸿蒙业务模型中的三大概念以及简单的注册过程,相信读者已经对鸿蒙的业务逻辑有了一定的了解。简单的来说,就是将多个子功能注册到服务中,再把服务注册到全局系统功能管理器(Samgr)中。这样,一个服务包含零个或多个功能,而功能又绑定了对外接口,然后我们可以向暴露的接口发送消息,等服务执行特
阅读全文
摘要:前言 在针对鸿蒙分布式任务调度的源代码分析中,发现它业务逻辑的实现围绕着三大概念展开,分别是服务(Service)、功能(Feature)和功能接口API(Iunknown)。所以理解并掌握这三个概念对于我们深入学习鸿蒙底层代码的业务逻辑有极大的帮助。下面将结合前期分析鸿蒙代码的经验,通过图文并茂的
阅读全文
摘要:引言 Reactor模式是处理并发I/O比较常见的一种模式,中心思想是将所有的事件(handler)的具体I/O事件注册到一个多路复用器(epoll)上,同时我们的主线程都阻塞在多路复用器(epoll)上,同时我们的事件有I/O事件触发(文件描述符可读、可写、错误、关闭),多路复用器(epoll)上
阅读全文
摘要:discovery_service.c 前言 分布式软总线是鸿蒙系统的基石,它不仅负责设备间的发现和服务的发布,还要负责实现设备间的数据传输。鸿蒙其他模块,比如设备认证等,都是需要通过软总线来与其他设备进行通信。本篇将基于OpenHarmony(v1.x)对其软总线进行分析。 发布与订阅 概述 分布
阅读全文