CN116089110B - 控制进程交互的方法及相关装置 - Google Patents

控制进程交互的方法及相关装置 Download PDF

Info

Publication number
CN116089110B
CN116089110B CN202210764722.9A CN202210764722A CN116089110B CN 116089110 B CN116089110 B CN 116089110B CN 202210764722 A CN202210764722 A CN 202210764722A CN 116089110 B CN116089110 B CN 116089110B
Authority
CN
China
Prior art keywords
frequency
calling
binder
memory
threshold
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210764722.9A
Other languages
English (en)
Other versions
CN116089110A (zh
Inventor
肖名鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202210764722.9A priority Critical patent/CN116089110B/zh
Publication of CN116089110A publication Critical patent/CN116089110A/zh
Application granted granted Critical
Publication of CN116089110B publication Critical patent/CN116089110B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephone Function (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本申请实施例提供控制进程交互的方法及相关装置,涉及终端技术领域。方法包括:确定第一进程调用第二进程;判断第一进程调用第二进程的频率是否符合预设的高频调用条件;当第一进程调用第二进程的频率符合高频调用条件时,向第一进程返回调用失败的信息。这样,可以在第一进程调用第二进程过于频繁时,终止第一进程对第二进程的调用,改善因第一进程对第二进程频繁调用使得binder内存耗尽产生的***卡死现象。

Description

控制进程交互的方法及相关装置
技术领域
本申请涉及终端技术领域,尤其涉及一种控制进程交互的方法及相关装置。
背景技术
随着终端技术的发展,终端设备中能够支持的应用程序(application,APP)越来越多。终端设备中的***服务与应用程序之间、不同应用程序之间等可以基于进程进行通信。例如,IPC(inter-process communication,进程间通信)是一种在不同进程之间传播或交换信息的一种通信方式。
一些实现中,binder是IPC的重要环节,例如,进程A调用进程B的信息时,进程A可以基于binder机制中的binder通信和binder驱动实现对进程B的调用。
但是上述实现中,会存在导致终端设备的***卡死的现象。
发明内容
本申请实施例提供一种控制进程交互的方法及相关装置,可以在第一进程调用第二进程过于频繁时,终止第一进程对第二进程的调用,改善因第一进程对第二进程频繁调用使得binder内存耗尽产生的***卡死现象。
第一方面,本申请实施例提供一种控制进程交互的方法,应用于运行有第一进程和第二进程的终端设备,方法包括:确定第一进程调用第二进程;判断第一进程调用第二进程的频率是否符合预设的高频调用条件;当第一进程调用第二进程的频率符合高频调用条件时,向第一进程返回调用失败的信息。这样,可以在第一进程调用第二进程过于频繁时,终止第一进程对第二进程的调用,改善因第一进程对第二进程频繁调用使得binder内存耗尽产生的***卡死现象。
一种可能的实现方式中,判断第一进程调用第二进程的频率是否符合预设的高频调用条件,包括:判断第一进程调用第二进程中同一接口的频率是否大于第一频率阈值;和/或,判断第一进程调用第二进程的任意接口的频率是否大于第二频率阈值。因为正常情况下,进程之间通常不会对一个接口频繁调用,也不会对某进程的接口频繁调用,因此这样的判断第一进程调用第二进程的频率是否符合预设的高频调用条件的方式,能排除掉较大部分异常调用。
一种可能的实现方式中,第一频率阈值与第二频率阈值相同或不同;第一频率阈值与第一进程的应用类型有关,和/或,第一频率阈值与第一进程所调用的接口类型有关;第二频率阈值与第一进程的应用类型有关,和/或,第二频率阈值与第一进程所调用的接口类型有关。这样,频率阈值的设置更能符合应用运行的规律,使得应用进程控制更为准确有效。
一种可能的实现方式中,判断第一进程调用第二进程的频率是否符合预设的高频调用条件之前,还包括:判断第一进程调用第二进程是否为异步binder调用;当第一进程调用第二进程为异步binder调用时,判断距离上次触发第二进程的内存警告的时长是否大于第一时长阈值;当距离上次触发第二进程的内存警告的时长小于第一时长阈值时,向第一进程返回调用失败的信息;判断第一进程调用第二进程的频率是否符合预设的高频调用条件,包括:当距离上次触发第二进程的内存警告的时长大于或等于第一时长阈值时,判断第一进程调用第二进程的频率是否符合预设的高频调用条件。这样,当距离上次触发第二进程的内存警告的时长小于第一时长阈值时,向第一进程返回调用失败的信息,可以改善因第二进程的内存占用过大而引起***卡死的现象。
一种可能的实现方式中,还包括:当第一进程调用第二进程的频率不符合高频调用条件时,第一进程基于binder驱动实现对第二进程调用;当binder驱动确定第二进程发生内存警告时,binder驱动向第一进程上报内存警告。这样,后续第一进程调用第二进程时,触发内存告警的时间间隔将会得到更新,并基于更新后的触发内存告警的时间间隔执行相应的准确的判断。
一种可能的实现方式中,确定第一进程调用第二进程之后,还包括:判断第一进程向第二进程传输的数据大小是否大于第一阈值;当第一进程向第二进程传输的数据大小大于第一阈值时,计算第二进程的binder内存的剩余空间;当第二进程的binder内存的剩余空间大于第二阈值时,第一进程基于binder驱动实现对第二进程调用,第二阈值大于或等于第一阈值。这样,在第一进程向第二进程存在较大数据传输时,可以终止第一进程对第二进程的调用,改善因第一进程单次传输数据过大使得binder内存耗尽产生的***卡死现象。
一种可能的实现方式中,还包括:当第二进程的binder内存的剩余空间小于或等于第二阈值时,判断第一进程调用第二进程是否为异步binder调用;当第一进程调用第二进程为异步binder调用时,向第一进程返回调用失败的信息。因为异步binder调用中,第一进程不需要等待第二进程的响应,因此可以当第一进程调用第二进程为异步binder调用时,向第一进程返回调用失败的信息,节约计算资源。
一种可能的实现方式中,还包括:当第一进程调用第二进程为同步binder调用时,将此次第一进程调用第二进程的通信挂起,直到挂起时长达到第二时长阈值时,第一进程再次调用第二进程。这样可以使得同步binder调用,可能在一段时间后实现正常调用,且不用有新的指令产生,节约指令资源。
一种可能的实现方式中,判断第一进程向第二进程传输的数据大小是否大于第一阈值之前,还包括:判断第一进程向第二进程传输的数据大小是否大于第三阈值;第三阈值大于第二阈值;判断第一进程向第二进程传输的数据大小是否大于第一阈值,包括:当第一进程向第二进程传输的数据大小小于或等于第三阈值时,判断第一进程向第二进程传输的数据大小是否大于第一阈值。这样,可以先排除数据过大的单次传输,节约后续进一步判断binder空间是否够用的计算资源。
一种可能的实现方式中,还包括:当第一进程向第二进程传输的数据大小大于第三阈值时,向第一进程返回调用失败的信息。这样,当第一进程向第二进程传输的数据大小大于第三阈值时,向第一进程返回调用失败的信息,可以减少***卡死现象的发生。
第二方面,本申请实施例提供一种控制进程交互的装置,该控制进程交互的装置可以是终端设备,也可以是终端设备内的芯片或者芯片***。该控制进程交互的装置可以包括处理单元和集成电路IC处理单元用于实现第一方面或第一方面的任意一种可能的实现方式中与处理相关的任意方法。当该控制进程交互的装置是终端设备时,该处理单元可以是处理器。该控制进程交互的装置还可以包括存储单元,该存储单元可以是存储器。该存储单元用于存储指令,该处理单元执行该存储单元所存储的指令,以使该终端设备实现第一方面或第一方面的任意一种可能的实现方式中描述的一种方法。当该控制进程交互的装置是终端设备内的芯片或者芯片***时,该处理单元可以是处理器。该处理单元执行存储单元所存储的指令,以使该终端设备实现第一方面或第一方面的任意一种可能的实现方式中描述的一种方法。该存储单元可以是该芯片内的存储单元(例如,寄存器、缓存等),也可以是该终端设备内的位于该芯片外部的存储单元(例如,只读存储器、随机存取存储器等)。
示例性的,处理单元,用于确定第一进程调用第二进程;判断第一进程调用第二进程的频率是否符合预设的高频调用条件;当第一进程调用第二进程的频率符合高频调用条件时,向第一进程返回调用失败的信息。
一种可能的实现方式中,处理单元,具体用于判断第一进程调用第二进程中同一接口的频率是否大于第一频率阈值;和/或,判断第一进程调用第二进程的任意接口的频率是否大于第二频率阈值。
一种可能的实现方式中,第一频率阈值与第二频率阈值相同或不同;第一频率阈值与第一进程的应用类型有关,和/或,第一频率阈值与第一进程所调用的接口类型有关;第二频率阈值与第一进程的应用类型有关,和/或,第二频率阈值与第一进程所调用的接口类型有关。
一种可能的实现方式中,处理单元,还用于判断第一进程调用第二进程是否为异步binder调用;当第一进程调用第二进程为异步binder调用时,判断距离上次触发第二进程的内存警告的时长是否大于第一时长阈值;当距离上次触发第二进程的内存警告的时长小于第一时长阈值时,向第一进程返回调用失败的信息;当距离上次触发第二进程的内存警告的时长大于或等于第一时长阈值时,判断第一进程调用第二进程的频率是否符合预设的高频调用条件。
一种可能的实现方式中,处理单元,还用于当第一进程调用第二进程的频率不符合高频调用条件时,第一进程基于binder驱动实现对第二进程调用;当binder驱动确定第二进程发生内存警告时,binder驱动向第一进程上报内存警告。
一种可能的实现方式中,处理单元,还用于判断第一进程向第二进程传输的数据大小是否大于第一阈值;当第一进程向第二进程传输的数据大小大于第一阈值时,计算第二进程的binder内存的剩余空间;当第二进程的binder内存的剩余空间大于第二阈值时,第一进程基于binder驱动实现对第二进程调用,第二阈值大于或等于第一阈值。
一种可能的实现方式中,处理单元,还用于当第二进程的binder内存的剩余空间小于或等于第二阈值时,判断第一进程调用第二进程是否为异步binder调用;当第一进程调用第二进程为异步binder调用时,向第一进程返回调用失败的信息。
一种可能的实现方式中,处理单元,还用于当第一进程调用第二进程为同步binder调用时,将此次第一进程调用第二进程的通信挂起,直到挂起时长达到第二时长阈值时,第一进程再次调用第二进程。
一种可能的实现方式中,处理单元,还用于判断第一进程向第二进程传输的数据大小是否大于第三阈值;第三阈值大于第二阈值;当第一进程向第二进程传输的数据大小小于或等于第三阈值时,判断第一进程向第二进程传输的数据大小是否大于第一阈值。
一种可能的实现方式中,处理单元,还用于当第一进程向第二进程传输的数据大小大于第三阈值时,向第一进程返回调用失败的信息。
第三方面,本申请实施例提供一种电子设备,括处理器和存储器,存储器用于存储代码指令,处理器用于运行代码指令,以执行第一方面或第一方面的任意一种可能的实现方式中描述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的控制进程交互的方法。
第五方面,本申请实施例提供一种包括计算机程序的计算机程序产品,当计算机程序在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的控制进程交互的方法。
第六方面,本申请提供一种芯片或者芯片***,该芯片或者芯片***包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行第一方面或第一方面的任意一种可能的实现方式中描述的控制进程交互的方法。其中,芯片中的通信接口可以为输入/输出接口、管脚或电路等。
在一种可能的实现中,本申请中上述描述的芯片或者芯片***还包括至少一个存储器,该至少一个存储器中存储有指令。该存储器可以为芯片内部的存储单元,例如,寄存器、缓存等,也可以是该芯片的存储单元(例如,只读存储器、随机存取存储器等)。
应当理解的是,本申请的第二方面至第六方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请实施例提供的一种电子设备的结构示意图;
图2为本申请实施例提供的一种电子设备进程间调用的简单示意图;
图3为本申请实施例提供的一种控制进程交互的的流程示意图;
图4为本申请实施例提供的一种控制进程交互的的具体流程示意图;
图5为本申请实施例提供的另一种控制进程交互的具体流程示意图;
图6为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,以下,对本申请实施例中所涉及的部分术语和技术进行简单介绍:
1、Binder:是安卓(Android)***中进程间通讯(IPC)的一种方式,也是Android***中重要的特性之一。Android***中不同的App等可以运行在不同的进程中,Binder是这些进程间通信的桥梁。具体的,Android***中包括四大组件:界面(Activity),服务(Service),广播(Broadcast)和内容(Content),Binder可以把***中各个组件粘合在一起,基于各组件实现进程间的通信。
2、异步调用:应用向binder驱动发送数据后不需要挂起线程等待binder驱动的回复,而是直接结束。例如,客户端(Client端)调用IPlayer.start(),而且服务端(Server端)的启动(start)需要执行2秒,由于定义的接口是异步的,Client端可以快速的执行IPlayer.start(),不会被Server端拖延2秒。
3、同步调用:应用向binder驱动发送数据后需要挂起线程等待binder驱动的回复。例如,Client端调用IPlayer.getVolume(),而且Server端的getVolume需要执行1秒,由于定义的接口是同步的,Client端在执行IPlayer.getVolume()的时候,会被Server端拖延1秒。
4、其他术语
在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一芯片和第二芯片仅仅是为了区分不同的芯片,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a--c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
5、终端设备
本申请实施例的终端设备也可以为任意形式的电子设备,例如,电子设备可以包括具有图像处理功能的手持式设备、车载设备等。例如,一些电子设备为:手机(mobilephone)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、蜂窝电话、无绳电话、会话启动协议(session initiation protocol,SIP)电话、无线本地环路(wireless local loop,WLL)站、个人数字助理(personal digital assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,5G网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,PLMN)中的终端设备等,本申请实施例对此并不限定。
作为示例而非限定,在本申请实施例中,该电子设备还可以是可穿戴设备。可穿戴设备也可以称为穿戴式智能设备,是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,例如:智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。
此外,在本申请实施例中,电子设备还可以是物联网(internet of things,IoT)***中的终端设备,IoT是未来信息技术发展的重要组成部分,其主要技术特点是将物品通过通信技术与网络连接,从而实现人机互连,物物互连的智能化网络。
本申请实施例中的电子设备也可以称为:终端设备、用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置等。
在本申请实施例中,电子设备或各个网络设备包括硬件层、运行在硬件层之上的操作***层,以及运行在操作***层上的应用层。该硬件层包括中央处理器(centralprocessing unit,CPU)、内存管理单元(memory management unit,MMU)和内存(也称为主存)等硬件。该操作***可以是任意一种或多种通过进程(process)实现业务处理的计算机操作***,例如,Linux操作***、Unix操作***、Android操作***、iOS操作***或windows操作***等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用。
示例性的,图1示出了电子设备的结构示意图。
电子设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备的具体限定。在本申请另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备的结构限定。在本申请另一些实施例中,电子设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电子设备通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
电子设备可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备的各种功能应用以及数据处理。例如,可以执行本申请实施例的控制进程交互的方法。
可以理解的是,图1是对电子设备的结构作示意,电子设备可以包括更少或更多的结构,本申请实施例对电子设备不作具体限定。
在终端设备运行时,除了需要上述图1所示的部分或全部硬件支持,还需要加载在终端设备中的软件支持。加载在终端设备中的软件可以包括***软件,还可以包括依赖于***软件实现的APP,一些APP在运行时,可能调用其它APP的信息。
应用之间调用时,可以采用binder机制。示例性的,如图2所示,以应用A对应于进程A,应用B对应于进程B为例,说明进程间基于binder通信时的大概过程示意。可以理解的是,一个进程可以对应于一个或多个应用,本申请实施例对进程中具体对应的应用个数等不作具体限定。
如图2所示,应用层中,进程A与进程B分别可以对应有各自的代理,例如代理包括IPC Thread State Tranasct binder通信实例。内核层,binder驱动可以作为各进程通信的桥梁,binder驱动可以为每个进程准备各自的内核缓冲区,映射到进程的虚拟地址空间和内核地址空间。在进程A与进程B进行binder通信时,进程A可以基于进程A的IPC ThreadState Tranasct binder通信实例与binder驱动通信,binder驱动将进程A的数据基于进程B的IPC Thread State Tranasct binder通信实例传递到进程B。可以理解,如果进程A与进程C,或进程B与进程C之间进行binder通信时,也可以采用类似的方式,不再赘述。
一些实现中,某APP的应用进程可能频繁产生网络请求,导致进程间频繁进行binder通信。例如,地图应用可能存在频繁查询域名***(domain name system,DNS)的情况,每个DNS查询都会引起binder跨进程调用,并将调用结果传递给***服务进程(systemserver进程),这样会使得地图应用的应用进程频繁向okhttp DNS发送网络请求,okhttpDNS基于套接字(socket)向Netd进程查询DNS,Netd进程会与***服务进程(system server进程)的网络管理服务(network management service)频繁异步binder通信。
而binder通信的机制中,binder驱动为每个进程准备内核缓冲区通常较小,例如4M,且该4M的内核缓冲区,应用层能用到的可能只有8k-1M,其他供内核层使用。
因为system server进程的binder空间有限,应用进程频繁的调用使得不断有信息进入system server进程的binder空间,导致system server进程的binder空间被占满,其他***调用无法执行,出现***卡死的现象。
另一些实现中,应用进程在相互调用时,可能一次性传输较大数据,这样该单次较大数据也可能导致binder空间被占满,出现***卡死的现象。
有鉴于此,本申请实施例中,在第一进程调用第二进程过于频繁或第一进程调用第二进程存在较大数据传输时,终止第一进程对第二进程的调用,改善因第一进程对第二进程频繁调用或单次传输数据过大使得binder内存耗尽产生的***卡死现象。
下面通过具体的实施例对本申请实施例的控制进程交互的方法进行详细说明。下面的实施例可以相互结合或独立实施,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
示例性的,图3示出了本申请实施例一种控制进程交互的方法。方法包括:
S301:确定第一进程调用第二进程。
本申请实施例中,第一进程和第二进程均可以是运行在终端设备中的任意进程,第一进程可以理解为调用方进程,第二进程可以理解为被调用进程。
本申请实施例对第一进程调用第二进程的时机以及作用不作限定。示例性的,在终端设备中新安装应用时,终端设备中的***进程可以调取该新安装应用的组件信息,以实现对该新安装应用的设置或管理等。或者例如,在应用A运行时,需要用到应用B中的信息,则应用A的第一进程可以调用应用B的第二进程。
需要说明的是,S301的确定第一进程调用第二进程可以理解为第一进程发起调用第二进程,并不是第一进程已实现对第二进程的调用,第一进程是否能实现对第二进程的调用还需要通过后续步骤的进一步判定。
S302:判断第一进程调用第二进程的频率是否符合预设的高频调用条件。
本申请实施例中,第一进程调用第二进程的频率是否符合预设的高频调用条件可以包括,第一进程调用第二进程的频率是否大于高频阈值。
高频阈值可以是基于经验设置的常量,例如经统计若进程间调用的频率如果超过某值,则容易出现***卡死的情况,则可以将该某值设置为高频阈值,
示例性的,在地图应用查询DNS的场景中,该高频阈值可以设置为2次/秒至20次/秒的任意值,例如6次/秒。
可以理解的是,不同进程间调用,可以对应相同的高频阈值,也可以对应不同的高频阈值,本申请实施例不作具体限定。
S303:当第一进程调用第二进程的频率符合高频调用条件时,向第一进程返回调用失败的信息。
本申请实施例中,当第一进程调用第二进程的频率符合高频调用条件时,说明第一进程调用第二进程过于频繁,可能导致binder空间被占满而发生***卡顿的现象,则向第一进程返回调用失败的信息,终止第一进程调用第二进程,这样,可以减小binder空间中被短时间存入大量数据的现象发生,减少***卡死现象。
示例性的,第一进程调用第二进程的频率符合高频调用条件可以包括:第一进程调用第二进程的频率高于高频阈值。
综上,本申请实施例中,在第一进程调用第二进程过于频繁时,终止第一进程对第二进程的调用,改善因第一进程对第二进程频繁调用使得binder内存耗尽产生的***卡死现象。
可选的,在图3的实施例的基础上,图4示出了本申请实施例一种具体的控制进程交互的方法的流程示意图。如图4所示,方法包括:
S401:确定第一进程调用第二进程。
S402:判断第一进程调用第二进程是否为异步binder调用。
可以理解的是,异步binder调用中,当某进程的binder空间占用比例大于一定值时,binder驱动会向应用层发出内存告警,以提示内存占用较大。其中,该一定值可以为40%-95%之间的任意值,例如50%或80%等。同步binder调用中,没有内存告警机制。
S403:当第一进程调用第二进程为异步binder调用时,判断距离上次触发第二进程的内存警告的时长是否大于第一时长阈值。
本申请实施例中,第一时长阈值可以为预设的常量,例如,第一时长阈值可以为1秒(s)-10s的任意值,比如2s、5s或8s等。
可以理解的是,如果第一进程异步调用第二进程时,距离上次触发第二进程的内存告警的时长较短,那么第二进程的binder内存可能存在不能及时清理而占用较大的情况,如果允许第一进程调用第二进程,那么第一进程将基于binder驱动继续向第二进程的binder内存中存入信息,这样可能导致第二进程的内存占用过大而引起***卡死,因此当距离上次触发第二进程的内存警告的时长小于第一时长阈值时,向第一进程返回调用失败的信息。
如果第一进程异步调用第二进程时,距离上次触发第二进程的内存告警的时长较长,那么第二进程的binder内存可能已经得到清理,允许第一进程调用第二进程,也不会导致第二进程的内存占用过大。因此,当距离上次触发第二进程的内存警告的时长大于或等于第一时长阈值时,可以结合其他条件判断是否允许第一进程调用第二进程,例如,继续执行S404或后续的步骤。
需要说明的是,如果第一进程调用第二进程不是异步binder调用,例如第一进程调用第二进程是同步binder调用,那么在S402之后,可以继续执行S404的步骤,省略S403的判断。
当然,一些实现中,也可以省略S402和S403,在第一进程调用第二进程时,执行如S404或后续的步骤,本申请实施例不作具体限定。
S404:判断第一进程调用第二进程中同一接口的频率是否大于第一频率阈值。
本申请实施例中,第一进程调用第二进程中同一接口的频率可以理解为第一进程在一段时间内调用第二进程中某具体接口的频率,该某具体接口可以是第二进程对应的任意接口。例如,第一进程在一段时间内调用第二进程的应用程序接口(applicationprogram interface,API)API 1的次数为N次,API 1可以是任意接口。
示例性的,N可以为基于binder调用索引表的信息统计得到的,binder调用索引表可以在进程建立时生成,在进程退出时清空。例如,表1示出了一种binder调用索引表。
表1
对象 接口 调用方式 是否内存告警 调用时间
handle code oneway spam timestamp
如表1所示,binder调用索引表可以包括发起调用的对象,调用的接口,调用方式,是否有内存告警以及调用时间等。对象可以是函数名,接口可以是接口标识,调用方式可以包括异步或同步,是否内存告警可以采用标志位表示,例如设置用于表示是内存告警的标志位和/或用于表示不内存告警的标志位。
可以理解的是,binder调用索引表中可以包括一条或多条“对象-接口-调用方式-是否内存告警-调用时间”的对应关系,例如,可以设置binder调用索引表中所能存储的对应关系的条数阈值,在binder调用索引表中的对应关系条数达到条数阈值时,如果有新的对应关系需要存储,可以按照时间顺序将最早存储的对应关系替换为新的对应关系。当然,binder调用索引表的对应关系条数也可以不作限制,本申请实施例对此不做具体限定。
终端设备可以统计binder调用索引表中各接口被调用的次数,任一接口被调用的次数达到次数阈值,可以理解为第一进程调用第二进程中同一接口的频率大于第一频率阈值。
一种可能的实现中,对于任意进程,第一频率阈值的值均是相同的,这样可以简化代码实现,节约终端资源。
另一种可能的实现中,第一频率阈值与第一进程的应用类型有关,和/或,第一频率阈值与第一进程所调用的接口类型有关。
本申请实施例中,应用类型可以包括***应用或第三方应用等,可能的实现中,应用类型可以基于应用的类型标志位确定。接口类型可以包括查DNS接口、多媒体接口或调设备信息接口等,可能的实现中,接口类型可以基于接口的标识确定。
可以理解的是,一些类型的应用在运行时调用进程的调用频率较高,另一些类型的应用在运行时调用进程的调用频率较高,这与应用本身的特性有关,因此,将运行时调用进程的调用频率较高的应用对应的第一频率阈值设置为较高值,将运行时调用进程的调用频率较低的应用对应的第一频率阈值设置为较低值,更能符合应用运行的规律,则终端设备在判断第一进程调用第二进程中同一接口的频率是否大于第一频率阈值时,可以先确定第一进程对应的应用类型,然后选择该应用类型对应的第一频率阈值。
当然,也有一些类型的接口在运行时的调用频率较高,另一些类型的接口在运行时的调用频率较高,这与接口本身的特性有关,因此,将运行时调用频率较高的接口对应的第一频率阈值设置为较高值,将运行时调用频率较低的接口对应的第一频率阈值设置为较低值,更能符合接口运行的规律,则终端设备在判断第一进程调用第二进程中同一接口的频率是否大于第一频率阈值时,可以先确定第一进程对应的接口类型,然后选择该接口类型对应的第一频率阈值。
可能的实现中,终端设备也可以建立应用类型、接口类型与第一频率阈值的关系,终端设备在判断第一进程调用第二进程中同一接口的频率是否大于第一频率阈值时,可以先确定第一进程对应的应用类型和接口类型,然后选择该应用类型和接口类型对应的第一频率阈值。
本申请实施例中,如果判断第一进程调用第二进程中同一接口的频率大于第一频率阈值,则可能是因为第一进程调用第二进程时发生了故障,导致第一进程频繁重复调用,则可以向第一进程返回调用失败的信息,不允许第一进程调用第二进程。该调用失败的信息例如可以包括:FAILED_TRANSACTION。
如果判断第一进程调用第二进程中同一接口的频率小于或等于第一频率阈值,则可以结合其他条件判断是否允许第一进程调用第二进程,例如执行S405或后续的步骤。
S405:判断第一进程调用第二进程的任意接口的频率是否大于第二频率阈值。
本申请实施例中,第一进程调用第二进程中同一接口的频率可以理解为第一进程在一段时间内调用第二进程的全部接口的频率。例如,第一进程在一段时间内调用第二进程的API 1的次数为N次,API 2的次数为M次,API 3的次数为L次。则可以理解为第一进程在该段时间内调用第二进程的次数为N+M+L次,频率为(N+M+L)/该段时间的时长。
本申请实施例的第一频率阈值与第二频率阈值相同或不同;第二频率阈值可以为固定的常量,或者,第二频率阈值可以与其他内容有关,例如第二频率阈值与第一进程的应用类型有关,和/或,第二频率阈值与第一进程所调用的接口类型有关。
可以理解的是,第二频率阈值可以与第一频率阈值的定义类似,具体可以参照S404的描述,在此不作赘述。
本申请实施例中,如果判断第一进程调用第二进程的任意接口的频率大于第二频率阈值,则可能是因为第一进程调用第二进程时发生了故障,导致第一进程频繁调用,则可以向第一进程返回调用失败的信息,不允许第一进程调用第二进程。该调用失败的信息例如可以包括:FAILED_TRANSACTION。
如果判断第一进程调用第二进程的任意接口的频率小于或等于第二频率阈值,则可以结合其他条件判断是否允许第一进程调用第二进程,例如执行S406或后续的步骤。
需要说明的是,S404和S405均可以为判断第一进程调用第二进程的频率是否符合预设的高频调用条件的具体实现,S404和S405的顺序可以互换,S404和S405也可以任意省略其中一个,本申请实施例对此不作具体限定。
可以理解的是,S404中是判断具体某一个接口的调用频率是否大于一定频率阈值,因为正常情况下,进程之间通常不会对一个接口频繁调用,将S404设置在S405之间执行,可以排除掉较大部分异常调用,从而可以节约S405执行时的计算资源。S405是判断全部接口的调用频率是否大于一定频率阈值,因此能够排除掉除了对某具体接口调用的异常调用外的其它异常调用,使得判断高频调用的准确度更高。
S406:当第一进程调用第二进程的频率不符合高频调用条件时,第一进程基于binder驱动实现对第二进程调用。
本申请实施例中,第一进程调用第二进程的频率不符合高频调用条件可以理解为第一进程没有对第二进程频繁调用,则第一进程可以基于binder驱动实现对第二进程调用。
S407:当binder驱动确定第二进程发生内存警告时,binder驱动向第一进程上报内存警告。
本申请实施例中,第一进程实现对第二进程的调用时,binder驱动会向第二进程的binder空间写入第一进程有关的数据,这样有可能会触发第二进程发生内存告警,因此,binder驱动可以持续监控第二进程的binder内容,当binder驱动确定第二进程发生内存警告时,binder驱动可以在binder调用索引表中记录一条内存告警的对应关系,binder驱动还可以向第一进程上报内存警告,则后续第一进程调用第二进程时,S403中的触发内存告警的时间间隔将会得到更新,并基于更新后的触发内存告警的时间间隔执行相应的判断。
综上,本申请实施例在第一进程调用第二进程时,可以结合第一进程调用第二进程的方式、第一进程调用第二进程的同一接口或任意接口的频率等方式准确的判断是否可能引起***卡死,从而采用更准确的进程调用控制。
可以理解的是,在进程间调用时,除了调用频率过高可能使得binder内存耗尽产生的***卡死现象。单次进程调用时传输的数据过大,也可能使得binder内存耗尽产生的***卡死现象。
示例性的,S501、S503、S504和S506示出了本实施例一种控制进程交互的方法,用于管控单次进程调用时传输的数据过大的情况。需要说明的是,S501、S503、S504和S506的实施例,与图3或图4对应的实施例可以结合实现,也可以独立实现,本申请实施例不作具体限制。
S501:确定第一进程调用第二进程。
需要说明的是,本申请实施例中,S501也可以替换为确定第二进程调用第一进程,第一进程基于第二进程的调用向向第二进程传输数据。
也就是说,第一进程向第二进程传输数据可以是第一进程主动调用第二进程时传输的,也可以是第一进程基于第二进程的调用被动传输的,本申请实施例不作具体限定。
S503:判断第一进程向第二进程传输的数据大小是否大于第一阈值。
本申请实施例中,第一阈值可以为基于经验得到的任意值。例如,以传输的数据为组件信息为例,通常的APP的组件信息数量不超过1000个时,单次调用不会引起***卡死,每个组件信息大小约为0.3KB,则第一阈值可以设置为0.3KB*1000=300KB。
可以理解的是,第一阈值的大小也可以与不同进程或***对应的binder空间的大小有关。例如,进程对应的binder空间越大,第一阈值可以为越大的值,进程对应的binder空间越小,第一阈值可以为越小的值,本申请实施例不作具体限定。
可能的实现中,第一进程向第二进程传输数据时,可以携带数据的基本信息,基本信息中包括数据大小,因此可以基于基本信息判断第一进程向第二进程传输的数据大小是否大于第一阈值。
当第一进程向第二进程传输的数据大小小于或等于第一阈值时,通常不会出现单次调用导致的binder占用过大的情况,第一进程与第二进程可以正常binder接口调用通信。
S504:当第一进程向第二进程传输的数据大小大于第一阈值时,计算第二进程的binder内存的剩余空间。
本申请实施例中,第二进程的binder内存的剩余空间可以是binder驱动计算之后传到应用层的,具体的计算方式本申请实施例不作限定。
S506:当第二进程的binder内存的剩余空间大于第二阈值时,第一进程基于binder驱动实现对第二进程调用,第二阈值大于或等于第一阈值。
可以理解的是,即使第一进程向第二进程传输的数据较大,如果第二进程的binder内存能够满足单次数据传输的需求,例如第二进程的binder内存的剩余空间依然足够,那么仍然可以支持第一进程与第二进程可以正常binder接口调用通信。
示例性的,当第二进程的binder内存的剩余空间大于第二阈值时,则允许第一进程基于binder驱动实现对第二进程调用。
其中,第二阈值可以等于第一阈值,第二阈值也可以为比第一阈值大一定余量的值,例如第二阈值与第一阈值的差大于预设值,该预设值本申请实施例不作具体限定,比如,第一阈值为300KB时,第二阈值可以为350KB等。
一种可能实现中,当第二进程的binder内存的剩余空间小于或等于第二阈值时,则无法支持第一进程向第二进程的binder内存传入数据,因此可以向第一进程返回调用失败的信息。
综上,本申请实施例中,在第一进程向第二进程存在较大数据传输时,可以终止第一进程对第二进程的调用,改善因第一进程单次传输数据过大使得binder内存耗尽产生的***卡死现象。
可选的,图5示出了本申请实施例一种具体的控制进程交互的方法的流程示意图。如图5所示,方法包括:
S501:确定第一进程调用第二进程。
S502:判断第一进程向第二进程传输的数据大小是否大于第三阈值;第三阈值大于第二阈值。
本申请实施例中,第三阈值可以为接近binder空间最大值的值,当第一进程向第二进程传输的数据大小大于第三阈值时,无论binder空间中剩余多少空间,都可能出现***卡死的现象,本申请实施例对第三阈值的具体值不作限定,例如800KB等。
当第一进程向第二进程传输的数据大小大于第三阈值时,向第一进程返回调用失败的信息,可以减少***卡死现象的发生。
当第一进程向第二进程传输的数据大小小于或等于第三阈值时,单次调用可能不会引起binder空间占满导致的***卡死,可以进一步判断第一进程向第二进程传输的数据大小是否大于第一阈值。
需要说明的是,S502也可以省略或者在S503之后执行,本申请实施例不作具体限定。
S503:判断第一进程向第二进程传输的数据大小是否大于第一阈值。
S504:当第一进程向第二进程传输的数据大小大于第一阈值时,计算第二进程的binder内存的剩余空间。
S505:判断第二进程的binder内存的剩余空间是否大于第二阈值。
S506:当第二进程的binder内存的剩余空间大于第二阈值时,第一进程基于binder驱动实现对第二进程调用,第二阈值大于或等于第一阈值。
S507:当第二进程的binder内存的剩余空间小于或等于第二阈值时,判断第一进程调用第二进程是否为异步binder调用。
可以理解的是,异步binder调用中,第一进程不需要等待第二进程的响应,因此可以当第一进程调用第二进程为异步binder调用时,向第一进程返回调用失败的信息,节约计算资源。
S508:当第一进程调用第二进程为同步binder调用时,将此次第一进程调用第二进程的通信挂起,直到挂起时长达到第二时长阈值时,第一进程再次调用第二进程。
当第一进程调用第二进程为同步binder调用时,第一进程需要等待第二进程的响应,因此,可以将此次第一进程调用第二进程的通信挂起,直到挂起时长达到第二时长阈值时,第一进程再次调用第二进程,重新计算第二进程的binder内存剩余空间是否符合调用需求。
一种可能的实现中,在第一进程再次调用第二进程时,第二进程的binder内存已经得到清理,第二进程的binder内存剩余空间大于第二阈值,则可以实现第一进程对第二进程的调用。
另一种可能的实现中,在第一进程再次调用第二进程时,第二进程的binder内存仍然没有得到清理,第二进程的binder内存剩余空间小于或等于第二阈值,则可以向第一进程返回调用失败的信息。
综上,本申请实施例在第一进程向第二进程传输数据时,可以结合待传输的数据的大小以及binder内存剩余空间大小准确的判断是否可能引起***卡死,从而采用更准确的进程调用控制。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的方法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对实现控制进程交互的方法的装置进行功能模块的划分,例如可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图6示为本申请实施例提供的一种芯片的结构示意图。芯片600包括一个或两个以上(包括两个)处理器601、通信线路602、通信接口603和存储器604。
在一些实施方式中,存储器604存储了如下的元素:可执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
上述本申请实施例描述的方法可以应用于处理器601中,或者由处理器601实现。处理器601可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器601中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器601可以是通用处理器(例如,微处理器或常规处理器)、数字信号处理器(digitalsignal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门、晶体管逻辑器件或分立硬件组件,处理器601可以实现或者执行本申请实施例中的公开的各处理相关的方法、步骤及逻辑框图。
结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。其中,软件模块可以位于随机存储器、只读存储器、可编程只读存储器或带电可擦写可编程存储器(electricallyerasable programmable read only memory,EEPROM)等本领域成熟的存储介质中。该存储介质位于存储器604,处理器601读取存储器604中的信息,结合其硬件完成上述方法的步骤。
处理器601、存储器604以及通信接口603之间可以通过通信线路602进行通信。
在上述实施例中,存储器存储的供处理器执行的指令可以以计算机程序产品的形式实现。其中,计算机程序产品可以是事先写入在存储器中,也可以是以软件形式下载并安装在存储器中。
本申请实施例还提供一种计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。例如,可用介质可以包括磁性介质(例如,软盘、硬盘或磁带)、光介质(例如,数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本申请实施例还提供一种计算机可读存储介质。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
作为一种可能的设计,计算机可读介质可以包括紧凑型光盘只读储存器(compactdisc read-only memory,CD-ROM)、RAM、ROM、EEPROM或其它光盘存储器;计算机可读介质可以包括磁盘存储器或其它磁盘存储设备。而且,任何连接线也可以被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,DSL或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘(CD),激光盘,光盘,数字通用光盘(digital versatile disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。
本申请实施例是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

Claims (11)

1.一种控制进程交互的方法,其特征在于,应用于运行有第一进程和第二进程的终端设备,所述方法包括:
确定所述第一进程调用所述第二进程;
判断所述第一进程调用所述第二进程是否为异步binder调用;
当所述第一进程调用所述第二进程为异步binder调用时,判断距离上次触发所述第二进程的内存警告的时长是否大于第一时长阈值;当距离上次触发所述第二进程的内存警告的时长大于或等于所述第一时长阈值时,判断所述第一进程调用所述第二进程的频率是否符合预设的高频调用条件;
当所述第一进程调用所述第二进程的频率符合所述高频调用条件时,向所述第一进程返回调用失败的信息;
所述判断所述第一进程调用所述第二进程的频率是否符合预设的高频调用条件,包括:
判断所述第一进程调用所述第二进程中同一接口的频率是否大于第一频率阈值,和/或,判断所述第一进程调用所述第二进程的任意接口的频率是否大于第二频率阈值。
2.根据权利要求1所述的方法,其特征在于,所述第一频率阈值与所述第二频率阈值相同或不同;
所述第一频率阈值与所述第一进程的应用类型有关,和/或,所述第一频率阈值与所述第一进程所调用的接口类型有关;
所述第二频率阈值与所述第一进程的应用类型有关,和/或,所述第二频率阈值与所述第一进程所调用的接口类型有关。
3.根据权利要求1所述的方法,其特征在于,还包括:
当距离上次触发所述第二进程的内存警告的时长小于所述第一时长阈值时,向所述第一进程返回调用失败的信息。
4.根据权利要求3所述的方法,其特征在于,还包括:
当所述第一进程调用所述第二进程的频率不符合所述高频调用条件时,所述第一进程基于binder驱动实现对所述第二进程调用;
当所述binder驱动确定所述第二进程发生内存警告时,所述binder驱动向所述第一进程上报所述内存警告。
5.根据权利要求1-4任一项所述的方法,其特征在于,确定所述第一进程调用所述第二进程之后,还包括:
判断所述第一进程向所述第二进程传输的数据大小是否大于第一阈值;
当所述第一进程向所述第二进程传输的数据大小大于所述第一阈值时,计算所述第二进程的binder内存的剩余空间;
当所述第二进程的binder内存的剩余空间大于第二阈值时,所述第一进程基于binder驱动实现对所述第二进程调用,所述第二阈值大于或等于所述第一阈值。
6.根据权利要求5所述的方法,其特征在于,还包括:
当所述第二进程的binder内存的剩余空间小于或等于第二阈值时,判断所述第一进程调用所述第二进程是否为异步binder调用;
当所述第一进程调用所述第二进程为异步binder调用时,向所述第一进程返回调用失败的信息。
7.根据权利要求6所述的方法,其特征在于,还包括:
当所述第一进程调用所述第二进程为同步binder调用时,将此次第一进程调用所述第二进程的通信挂起,直到挂起时长达到第二时长阈值时,所述第一进程再次调用所述第二进程。
8.根据权利要求6-7任一项所述的方法,其特征在于,所述判断所述第一进程向所述第二进程传输的数据大小是否大于第一阈值之前,还包括:
判断所述第一进程向所述第二进程传输的数据大小是否大于第三阈值;所述第三阈值大于所述第二阈值;
所述判断所述第一进程向所述第二进程传输的数据大小是否大于第一阈值,包括:当所述第一进程向所述第二进程传输的数据大小小于或等于所述第三阈值时,判断所述第一进程向所述第二进程传输的数据大小是否大于第一阈值。
9.根据权利要求8所述的方法,其特征在于,还包括:
当所述第一进程向所述第二进程传输的数据大小大于所述第三阈值时,向所述第一进程返回调用失败的信息。
10.一种终端设备,其特征在于,包括:存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序,以执行如权利要求1-9任一项所述的控制进程交互的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如权利要求1-9任一项所述的控制进程交互的方法。
CN202210764722.9A 2022-07-01 2022-07-01 控制进程交互的方法及相关装置 Active CN116089110B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210764722.9A CN116089110B (zh) 2022-07-01 2022-07-01 控制进程交互的方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210764722.9A CN116089110B (zh) 2022-07-01 2022-07-01 控制进程交互的方法及相关装置

Publications (2)

Publication Number Publication Date
CN116089110A CN116089110A (zh) 2023-05-09
CN116089110B true CN116089110B (zh) 2023-11-21

Family

ID=86205113

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210764722.9A Active CN116089110B (zh) 2022-07-01 2022-07-01 控制进程交互的方法及相关装置

Country Status (1)

Country Link
CN (1) CN116089110B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106656959A (zh) * 2016-09-28 2017-05-10 腾讯科技(深圳)有限公司 访问请求调控方法和装置
CN107659566A (zh) * 2017-09-20 2018-02-02 深圳市创梦天地科技股份有限公司 对服务器异常访问的识别频率确定方法、装置及服务器
CN108400963A (zh) * 2017-10-23 2018-08-14 平安科技(深圳)有限公司 电子装置、访问请求控制方法和计算机可读存储介质
CN109117279A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 电子装置及其限制进程间通信的方法、存储介质
CN109117280A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 电子装置及其限制进程间通信的方法、存储介质
CN114153621A (zh) * 2022-02-09 2022-03-08 荣耀终端有限公司 ***进程调控方法、装置、电子设备及可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9910979B2 (en) * 2014-06-24 2018-03-06 International Business Machines Corporation Intercepting inter-process communications

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106656959A (zh) * 2016-09-28 2017-05-10 腾讯科技(深圳)有限公司 访问请求调控方法和装置
CN107659566A (zh) * 2017-09-20 2018-02-02 深圳市创梦天地科技股份有限公司 对服务器异常访问的识别频率确定方法、装置及服务器
CN108400963A (zh) * 2017-10-23 2018-08-14 平安科技(深圳)有限公司 电子装置、访问请求控制方法和计算机可读存储介质
CN109117279A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 电子装置及其限制进程间通信的方法、存储介质
CN109117280A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 电子装置及其限制进程间通信的方法、存储介质
CN114153621A (zh) * 2022-02-09 2022-03-08 荣耀终端有限公司 ***进程调控方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN116089110A (zh) 2023-05-09

Similar Documents

Publication Publication Date Title
CN111679921B (zh) 内存共享方法、内存共享装置及终端设备
CN109214632B (zh) 一种风险控制方法及设备
EP3018919B1 (en) Method of transmitting and receiving data of electronic device and electronic device using the method
CN110007936B (zh) 数据处理方法和装置
WO2018188278A1 (zh) 一种内存资源的分配方法及终端设备
WO2019047708A1 (zh) 资源配置方法及相关产品
CN116860391A (zh) Gpu算力资源调度方法、装置、设备和介质
CN106603125B (zh) 一种与蓝牙设备进行数据交互的方法及装置
CN110083466B (zh) 一种小程序的数据传输方法和装置
CN116089110B (zh) 控制进程交互的方法及相关装置
CN106547485B (zh) 数据迁移方法及装置
CN106933646B (zh) 一种创建虚拟机的方法及装置
CN115202902B (zh) 控制进程交互的方法及相关装置
CN115623057A (zh) 基于rdma的建连方法、装置、设备及存储介质
CN111078233B (zh) 一种应用推广的实现方法、装置、设备及存储介质
CN104899730B (zh) 一种移动终端数据处理方法、终端及***
CN108093093B (zh) 一种更新源设备中目的设备地址表的方法及装置
CN116737104B (zh) 音量调节方法和相关装置
CN116737258B (zh) 卸载应用的方法及相关装置
CN116737405B (zh) 一种快应用卡片的数据通信的方法及相关设备
US9980132B2 (en) Method for detecting messages and call request and electronic device adapted thereto
CN117858279A (zh) 一种sim卡业务处理的方法及相关装置
CN116737404B (zh) 用于应用接续的方法及终端设备
CN117891647B (zh) 日志处理方法、电子设备和计算机可读存储介质
CN115397033B (zh) 无线通信方法、装置、无线通信模组、介质及程序产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant