Binder驱动内存管理方法、装置、设备及存储介质制造方法及图纸

技术编号:36707540 阅读:52 留言:0更新日期:2023-03-01 09:31
本申请公开了一种Binder驱动内存管理方法、装置、设备及存储介质,其中,该方法包括:获取第一进程向第二进程发起的Binder进程间通信指令;响应于Binder进程间通信指令,向内存回收链表请求为第一进程和第二进程分配用于存放通信数据的目标内存空间;响应于内存回收链表中对应第一进程和第二进程的空闲内存空间不足以存放通信数据,向预设内存池请求为第一进程和第二进程分配目标内存空间,其中,预设内存池独立于内存回收链表以及伙伴系统。通过上述方式,本申请能够提升Binder进程间通信中的内存分配速度。中的内存分配速度。中的内存分配速度。

【技术实现步骤摘要】
Binder驱动内存管理方法、装置、设备及存储介质


[0001]本申请涉及
,特别是涉及一种Binder驱动内存管理方法、装置、设备及存储介质。

技术介绍

[0002]整个Android系统架构中,大量采用了Binder机制作为进程间通信(Inter

Process Communication,IPC)方案。Android系统中,每个应用程序都是由Android的四大组件(Activity、Service、Broadcast、ContentProvider)的一或多个组合而成,而这些组件所涉及的进程间的通信非常多,且都是依赖于Binder IPC机制。
[0003]在进程间通信过程中,当“数据发送进程”要将数据发送到“数据接收进程”,Binder驱动会申请一块物理内存缓存区用于存放通信的数据。Binder驱动会优先向Binder Alloc LRU链表申请用于存放通信数据的目标内存空间,当Binder Alloc LRU链表中空闲内存不足时,需要继续向伙伴系统(Buddy System)申请。若伙伴系统空闲内存不足时,则伙伴系统需要通过页面回收来保证分配,会导致内存分配速度较慢。

技术实现思路

[0004]本申请第一方面提供了一种Binder驱动内存管理方法,包括:获取第一进程向第二进程发起的Binder进程间通信指令;响应于Binder进程间通信指令,向内存回收链表请求为第一进程和第二进程分配用于存放通信数据的目标内存空间;响应于内存回收链表中对应第一进程和第二进程的空闲内存空间不足以存放通信数据,向预设内存池请求为第一进程和第二进程分配目标内存空间,其中,预设内存池独立于内存回收链表以及伙伴系统。
[0005]本申请第二方面提供了一种Binder驱动内存管理装置,包括:获取模块,用于获取第一进程向第二进程发起的Binder进程间通信指令;第一分配模块,用于响应于Binder进程间通信指令,从系统的内存回收链表中为第一进程和第二进程分配用于存放通信数据的目标内存空间;第二分配模块,用于响应于内存回收链表中对应第一进程和第二进程的空闲内存空间不足以存放通信数据,从预设内存池中为第一进程和第二进程分配用于存放通信数据的目标内存空间,其中,预设内存池为从伙伴系统中划分出的部分内存空间。
[0006]本申请第三方面提供了一种电子设备,该电子设备包括相互耦接的存储器和处理器,存储器用于存储程序数据,处理器用于执行程序数据以实现前述的方法。
[0007]本申请第四方面提供了一种计算机可读存储介质,该计算机可读存储介质中存储有程序数据,程序数据在被处理器执行时,用以实现前述的方法。
[0008]本申请的有益效果是:区别于现有技术的情况,本申请通过获取第一进程向第二进程发起的Binder进程间通信指令,然后响应于Binder进程间通信指令,向内存回收链表请求为第一进程和第二进程分配用于存放通信数据的目标内存空间;响应于内存回收链表中对应第一进程和第二进程的空闲内存空间不足以存放通信数据,向预设内存池请求为第一进程和第二进程分配目标内存空间,其中,预设内存池独立于内存回收链表以及伙伴系
统。上述方案中,针对Binder驱动内存分配框架,提出了预设内存池,预设内存池独立于内存回收链表以及伙伴系统,在内存回收链表空闲内存空间不足时原本应向伙伴系统请求目标内存空间调整为向预设内存池请求目标内存空间,由此可以避免伙伴系统内存不足需要通过内存回收来保证内存分配的情况,从而可以提升Binder进程间通信中的内存分配速度。
附图说明
[0009]为了更清楚地说明本申请中的技术方案,下面将对实施例描述中所需要的附图作简单的介绍,显而易见地,下面描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
[0010]图1是Binder IPC原生方案的内存分配流程示意图;
[0011]图2是本申请Binder进程间通信过程中目标内存空间的申请和释放流程示意图;
[0012]图3是本申请Binder驱动内存管理方法一实施例的流程示意图;
[0013]图4是本申请Binder驱动内存管理方法另一实施例的流程示意图;
[0014]图5是图3中步骤S12一实施例的流程示意图;
[0015]图6是本申请Binder驱动内存管理方法又一实施例的流程示意图;
[0016]图7是本申请Binder驱动内存管理装置一实施例的结构示意框图;
[0017]图8是本申请电子设备一实施例的结构示意框图;
[0018]图9是本申请计算机可读存储介质一实施例的结构示意框图。
具体实施方式
[0019]在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
[0020]本申请中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0021]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0022]在电子设备上,性能毫无疑问是用户非常看重的一项重要指标。Binder IPC机制比起传统的管道、消息队列、Socket等进程通讯方式有更好的性能,如Binder IPC数据拷贝只需要一次(共享内存),而管道、消息队列、Socket传统的进程通讯方式都需要2次。
[0023]整个Android系统架构中,大量采用了Binder机制作为IPC方案。Android系统中,每个应用程序都是由Android的四大组件(Activity、Service、Broadcast、ContentProvider)的一或多个组合而成,而这些组件所涉及的进程间的通信非常多,且都是依赖于Binder IPC机制。所以更好地优化Binder IPC机制,无疑对提升移动设备的性能有很大的帮助。
[0024]请参阅图1,图1是Binder 本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Binder驱动内存管理方法,其特征在于,包括:获取第一进程向第二进程发起的Binder进程间通信指令;响应于所述Binder进程间通信指令,向内存回收链表请求为所述第一进程和第二进程分配用于存放通信数据的目标内存空间;响应于所述内存回收链表中对应所述第一进程和所述第二进程的空闲内存空间不足以存放所述通信数据,向预设内存池请求为所述第一进程和所述第二进程分配所述目标内存空间,其中,所述预设内存池独立于所述内存回收链表以及伙伴系统。2.根据权利要求1中所述的方法,其特征在于,所述响应于所述Binder进程间通信指令,向内存回收链表请求为所述第一进程和第二进程分配用于存放通信数据的目标内存空间,包括:响应于所述Binder进程间通信指令,向所述内存回收链表申请所述目标内存空间;确定所述内存回收链表中对应所述第一进程和所述第二进程的空闲内存空间,其中,所述内存回收链表用于回收至少一组通信进程通信完成后释放的内存空间;响应于所述内存回收链表中对应所述第一进程和所述第二进程的空闲内存空间大于或等于所述目标内存空间,则从所述内存回收链表中为所述第一进程和所述第二进程分配所述目标内存空间。3.根据权利要求1中所述的方法,其特征在于,所述响应于所述内存回收链表中对应所述第一进程和所述第二进程的空闲内存空间不足以存放所述通信数据,向预设内存池请求为所述第一进程和所述第二进程分配所述目标内存空间,包括:响应于所述内存回收链表中不存在对应所述第一进程和所述第二进程的空闲内存空间,或者所述内存回收链表中对应所述第一进程和所述第二进程的空闲内存空间小于所述目标内存空间,请求所述预设内存池为所述第一进程和所述第二进程分配所述目标内存空间。4.根据权利要求1中所述的方法,其特征在于,所述方法包括:响应于所述预设内存池中的空闲...

【专利技术属性】
技术研发人员:郑堂权
申请(专利权)人:OPPO广东移动通信有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1