CN103019813A - 获取基于SaaS的交互式程序的交互强度的方法 - Google Patents
获取基于SaaS的交互式程序的交互强度的方法 Download PDFInfo
- Publication number
- CN103019813A CN103019813A CN2012104776686A CN201210477668A CN103019813A CN 103019813 A CN103019813 A CN 103019813A CN 2012104776686 A CN2012104776686 A CN 2012104776686A CN 201210477668 A CN201210477668 A CN 201210477668A CN 103019813 A CN103019813 A CN 103019813A
- Authority
- CN
- China
- Prior art keywords
- subprocess
- subprocesss
- type
- calls
- vspace
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种获取基于SaaS的交互式程序的交互强度的方法,本发明的方法通过截获软件即服务系统SaaS平台中用于主入口程序创建子进程的核心系统调用、与端口相关的第一系统调用和用于读取数据的第二系统调用,从而获取SaaS系统中主入口程序创建的至少两个子进程的相关信息,并根据至少两个子进程的相关信息而最终获取各子进程的当前交互强度,以使SaaS系统能够根据各子进程的交互强度合理的分配资源,从而提高SaaS资源的利用率。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种获取基于SaaS的交互式程序的交互强度的方法。
背景技术
随着移动互联网用户数量的爆炸式增长,导致应用软件使用的需求量急剧增加,但是由于用户的接入终端受到配置和计算能力的限制,因此一个终端无法承载所有的应用软件、存储众多类型的资源,基于此,一种新的软件应用模式软件即服务(Software as a Service,简称SaaS)应运而生,SaaS是一种通过Internet提供软件的模式,由提供商将应用软件统一部署在自己的服务器上,用户则可以根据自己的实际需求,通过各种不同的终端访问互联网以向提供商定购所需的应用软件服务,而且用户无需对软件进行维护,服务提供商会全权管理和维护软件。对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。
但是,在SaaS软件服务中,大部分程序都具有很强的人机交互特性,一个应用程序很可能在一段时间内交互较强,一段时间内交互较弱,而在现有技术中并没有能够获知SaaS系统中交互式程序的交互强度的方法。
发明内容
本发明的目的在于提供一种获取基于SaaS的交互式程序的交互强度的方法,以获取基于SaaS的交互式程序的交互强度。
本发明提供了一种获取基于SaaS的交互式程序的交互强度的方法,包括:
截获软件即服务系统SaaS中用于主入口程序创建子进程的核心系统调用;
根据所述核心系统调用获取所述主入口程序生成的至少两个子进程以及所述至少两个子进程对应的进程号、进程名、父进程号以及窗口号;
根据所述至少两个子进程中各子进程是否发起与端口相关的第一系统调用,确定各子进程的进程类型;
根据所述至少两个子进程对应的进程号、进程名、父进程号、窗口号以及进程类型,确定所述至少两个子进程之间的关系;
若所述至少两个子进程中的一个子进程发起用于读取数据的第二系统调用,则确定所述发起第二系统调用的子进程的当前交互强度,并根据所述至少两个子进程之间的关系确定与所述发起第二系统调用的子进程有关系的各子进程的当前交互强度。
采用上述本发明技术方案的有益效果是:通过截获软件即服务系统SaaS平台中的核心系统调用、第一系统调用和第二系统调用,从而获取SaaS系统中主入口程序创建的至少两个子进程的相关信息,进而根据至少两个子进程的相关信息而最终获取各子进程的当前交互强度。
附图说明
图1为本发明实施例一提供的一种获取基于SaaS的交互式程序的交互强度的方法的流程示意图;
图2为本发明实施例一中Switch算法执行图;
图3为本发明实施例一中Back_T算法执行图。
具体实施方式
由于近年流行的虚拟化技术对SaaS也有很大影响,将应用软件运行在独有的虚拟环境中,称为应用软件的虚拟化,软件虚拟化消除了运行环境共享带来的多种弊端,同时得益于可迁移等特性,因此可以更加灵活地使用SaaS运营商的计算资源。而虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化计算系统可以更加充分合理地利用计算资源,满足日益多样的计算需求,使人们能够透明、高效、可定制地使用计算资源,从而真正实现灵活构建、按需计算的理念。
虚拟机是计算系统虚拟化的基础,将虚拟化技术与SaaS技术相结合,将软件作为服务提供,并且通过虚拟化技术可以使得软件的显示和执行分离,并将不同平台和机器的应用显示融合,通过分离可以在轻量级、移动客户端上访问应用,较Web-based(基于网页)应用而言具有更好的用户交互体验。因此为了保证软件的服务质量,软件的用户体验,提高资源的利用率以及并发处理用户请求的能力,需要具有一套良好的监控调度系统,跟踪系统中的实时进程,并对系统中的突发事件做出及时、恰当的处理,例如,当一个交互式应用程序交互较弱时,由于其不会占用计算资源,因此,可以释放其所占用的资源或降低其调度优先级;而当一个交互式应用程序交互较强时,则可以为其分配计算资源并提高其调度优先级。
图1为本发明实施例一提供的一种获取基于SaaS的交互式程序的交互强度的方法的流程示意图,如图1所示,所述方法可以包括如下步骤:
步骤101,截获软件即服务系统SaaS中用于主入口程序创建子进程的核心系统调用;
步骤102,根据所述核心系统调用获取所述主入口程序生成的至少两个子进程以及所述至少两个子进程对应的进程号、进程名、父进程号以及窗口号;
步骤103,根据所述至少两个子进程中各子进程是否发起与端口相关的第一系统调用,确定各子进程的进程类型;
步骤104,根据所述至少两个子进程对应的进程号、进程名、父进程号、窗口号以及进程类型,确定所述至少两个子进程之间的关系;
步骤105,若所述至少两个子进程中的一个子进程发起用于读取数据的第二系统调用,则确定所述发起第二系统调用的子进程的当前交互强度,并根据所述至少两个子进程之间的关系确定与所述发起第二系统调用的子进程有关系的各子进程的当前交互强度。
首先,需要说明的是系统调用的原理,例如,在Linux系统中,其系统调用一般通过int 80h实现,用系统调用号来区分入口函数。操作系统实现系统调用的基本过程是:应用程序调用库函数应用程序编程接口(ApplicationProgramming Interface,简称API),API将系统调用号存入通用扩展累加器(Extended accumulator register,简称EAX),然后通过中断调用使系统进入内核态;内核中的中断处理函数根据系统调用号,调用对应的内核函数(即系统调用);系统调用完成相应功能,并将返回值存入EAX,返回到中断处理函数;中断处理函数返回到API中;API将EAX返回给应用程序,从而实现系统调用的全过程。另外,交互式程序可以是用户敲击键盘,移动鼠标的事件所产生的进程,同时观看视屏,音频也可以是认为是一种交互,这些信息都需要与计算机硬件交流。而在SaaS平台中用户通过虚拟网络计算机(Virtual NetworkComputing,简称VNC)与显示节点(对应于linux下真实进程Xvnc,处理用户桌面的显示,其中,第一显示节点对应于一个用户)通信,从用户发起交互到得到回显信息,中间参与的一系列进程都会发起read(linux下读操作系统调用)或readv(linux下另一种读操作系统调用)系统调用,而与这些进程相关的子进程,大多都通过管道,消息队列或伪终端进行进程间通信,这些通信机制都有read或readv系统调用的参与,所以对read和readv系统调用的截获可以直接反应用户的交互情况。
在本发明实施例中,执行主体可以是监控调度系统,其可以部署在SaaS平台中,以获取SaaS平台上的各交互式程序的交互强度,从而为后续的资源分配以及优先级调度提供有效的依据。由于在SaaS平台中每个计算节点对应于一个linux虚拟机,也可以认为是一个真实的物理机,都有一个计算资源的统一分配入口,所有的计算资源请求都是通过主入口程序分配的。而Linux系统提供了一个很强大的用于跟踪目标进程的系统调用sys_ptrace,父进程可以在用户态观察和控制其子进程的执行,并允许父进程检查和替换子进程的内核镜像(包括寄存器)的值。其基本原理是:当使用了ptrace跟踪后,大多数发送给被跟踪的子进程的信号,都会被转发给父进程,而子进程则会被阻塞,这时子进程的状态就会被系统标注为被跟踪标记TASK_TRACED,而父进程收到信号后,就可以对停止下来的子进程进行检查和修改,然后让子进程继续运行。
因此,本发明实施例可以通过ptrace的系统调用来跟踪主入口程序,但是,ptrace却无法跟踪主入口程序产生的子进程。又由于主入口程序创建大部分子进程时都是通过sys_fork(linux下系统调用创建子进程,复制父进程内容)或sys_vfork(linux下系统调用,暂时共享父进程空间,写时创建子进程空间)这两个核心系统调用来完成的,而这两个系统调用并没有复制父进程的状态信息,所以父进程的跟踪标志无法被子进程捕获,从而父进程无法继续跟踪和控制其子进程的执行。然而linux还提供了另一个用于主入口程序创建子进程的系统调用sys_clone(linux下系统调用,子进程复制父进程所有标志属性),该系统调用可以复制父进程的状态信息,因此,本实施例通过ptrace截获SaaS中用于主入口程序创建子进程的核心系统调用,当捕捉到父进程即主入口程序的系统调用为sys_fork或sys_vfork时,则修改寄存器的系统调用号,将系统调用sys_fork或sys_vfork替换为sys_clone,这样就可以获得所有通过主入口程序所产生的至少两个子进程的执行信息了,如至少两个子进程对应的进程号、进程名、父进程号以及窗口号等,同时这样的替换只影响标志位,不影响程序的实际执行。
由于上述实施例中可以通过ptrace以及sys_clone截获主入口程序所创建的至少两个子进程的执行信息,但是,却不能确定这些子进程的类型,因此,在本实施例中,需进一步通过ptrace以及sys_clone对至少两个子进程进行跟踪,即根据至少两个子进程中各子进程是否发起与端口相关的第一系统调用,从而确定各子进程的进程类型,具体的:
若至少两个子进程中的一个子进程发起与端口相关的第一系统调用,且与端口相关的第一系统调用为分配端口的系统调用sys_bind,则根据sys_bind获取当前发起sys_bind的子进程的端口号,并确定当前子进程的类型为展现进程Vspace_Process、进程名为Xvnc;
若至少两个子进程中的一个子进程发起与端口相关的第一系统调用,且与端口相关的第一系统调用为连接端口的系统调用sys_connect,则根据sys_connect获取当前发起sys_connect的子进程的端口号,并确定当前子进程的类型为执行进程Vprocess_Process、进程名为Xclient;
若至少两个子进程中的一个子进程未发起与端口相关的第一系统调用,且未发起第一系统调用的子进程与另一个进程名为Xvnc的子进程具有相同的窗口号,则确定未发起第一系统调用的子进程为Xvnc子进程的辅助进程;若辅助进程的进程名在预设的第一白名单内,则确定所述辅助进程的进程类型为第一展现辅助进程Vspace_Like_Process;若所述辅助进程的进程名不在预设的第一白名单内,则确定所述辅助进程的进程类型为第二展现辅助进程Vspace_Relate_Process;
若至少两个子进程中的一个子进程未发起与端口相关的第一系统调用,且未发起第一系统调用的子进程的父进程号与另一个进程名为Xclient的子进程的进程号相同,则确定所述未发起第一系统调用的子进程为Xclient子进程的辅助进程;若所述辅助进程的进程名在预设的第二白名单内,则确定所述辅助进程的进程类型为第一执行辅助进程Vprocess_Like_Process;若辅助进程的进程名不在预设的第二白名单内,则确定所述辅助进程的进程类型为第二执行辅助进程Vprocess_Relate_Process。
进一步的,在本实施例中,根据至少两个子进程对应的进程号、进程名、父进程号、窗口号以及进程类型,确定至少两个子进程之间的关系具体为:
若至少两个子进程中的两个子进程均为Vprocess_Process类型,且所述两个子进程分别对应的父进程号、进程名、端口号均相同,则确定两个Vprocess_Process类型的子进程为兄弟进程;
若至少两个子进程中的一个Vspace_Process类型的子进程与另一个Vprocess_Process类型的子进程的端口号相同,则确定Vprocess_Process类型的子进程为Vspace_Process类型的子进程的辅助进程;
若至少两个子进程中的一个Vprocess_Relate_Process类型的子进程的父进程号与另一个Vprocess_Process类型的子进程的进程号相同,且具有相同的窗口号,则确定Vprocess_Relate_Process类型的子进程为Vprocess_Process类型的子进程的辅助进程;
若至少两个子进程中不存在与Vprocess_Process类型的子进程的端口号相同的Vspace_Process类型的子进程,则新建一个进程类型为虚拟展现进程Fake_Vspace_Process的子进程,并将Fake_Vspace_Process类型的子进程的端口号设置为Vprocess_Process类型的子进程的端口号,则Vprocess_Process类型的子进程为Fake_Vspace_Process类型的子进程的辅助进程;
若至少两个子进程中的两个子进程均为Vspace_Process类型或Fake_Vspace_Process类型或两个子进程中的一个子进程为Vspace_Process类型、另一子进程为Fake_Vspace_Process类型,且该两个子进程对应的父进程号相同,则确定该两个子进程为兄弟进程;
若至少两个子进程中的两个子进程均为Vspace_Relate_Process类型或Vprocess_Relate_Process类型,且该两个子进程对应相同的窗口号,则确定该两个子进程为兄弟进程;
若至少两个子进程中的两个子进程均为Vspace_Like_Process类型或Vprocess_Like_Process类型,则确定该两个子进程为兄弟进程。
在本实施例中,确定各子进程的类型后,可以初始化各子进程的交互强度,例如,可以将各子进程的交互强度置为初始值,通常,初始值为0。
进一步的,若至少两个子进程中的一个子进程发起用于读取数据的第二系统调用,则确定发起第二系统调用的子进程的当前交互强度,并根据至少两个子进程之间的关系确定与发起第二系统调用的子进程有关系的各子进程的当前交互强度具体为:
截获至少两个子进程中的一个子进程发起的用于读取数据的第二系统调用,若读取数据的第二系统调用为sys_read或sys_readv,且发起第二系统调用的子进程的交互强度小于预设的阈值,则将发起第二系统调用的子进程的交互强度增加预设的步进值,本实施例中,预设的阈值可以是根据实际需要设置的不为0的自然数,例如可以是30、50、或100等。
需要说明的是,在本实施例中,与发起第二系统调用的子进程有关系的各子进程为发起第二系统调用的子进程的兄弟进程、以及发起第二系统调用的子进程的兄弟进程的辅助进程。因此,首先确定发起第二系统调用的子进程的兄弟进程,若兄弟进程的交互强度大于预设的初始值,则对兄弟进程的交互强度减去步进值;若兄弟进程的交互强度为初始值,则将兄弟进程的辅助进程的交互强度置为初始值。例如,若初始值为0,首先根据上述关系确定发起第二系统调用的子进程的兄弟进程,如果存在交互强度大于0的兄弟进程,则将该兄弟进程的交互强度减去步进值;如果存在交互强度为0的兄弟进程,则以该兄弟进程为节点逐一置零该兄弟进程的所有辅助进程的交互强度。每个进程的交互强度即可以认为是它当前的活跃度,也可以认为是它对未来活跃度的信心指数,当一个进程交互活跃时会提高它本身的交互信心指数也就是当前交互强度,而当其它进程活跃时则会逐渐降低该进程的信心指数。
在本实施例中,通过截获SaaS平台中的核心系统调用、第一系统调用和第二系统调用,从而获取SaaS系统中主入口程序创建的至少两个子进程的相关信息,并根据至少两个子进程的相关信息而最终获取各子进程的当前交互强度,以使SaaS系统能够根据各子进程的交互强度合理的分配资源,从而提高SaaS资源的利用率。
进一步的,在本实施例中,若至少两个子进程中的一个子进程发起用于读取数据的第二系统调用之后,还可以包括:
根据发起第二系统调用的子进程的进程类型更新上一次发起第二系统调用的子进程的交互强度,具体为:
若发起第二系统调用的子进程的进程类型为Vprocess_Process、Vspace_Relate_Process、Vprocess_Like_Process或Vprocess_Relate_Process,则将上一次发起第二系统调用的子进程的交互强度减去步进值。在发起第二系统调用的子进程的进程类型为Vprocess_Process、Vspace_Relate_Process、Vprocess_Like_Process或Vprocess_Relate_Process的场景下,通常当前发起第二系统调用的子进程与上一次发起第二系统调用的子进程之间是一种切换关系,即一旦从当前发起第二系统调用的子进程切换到上一次发起第二系统调用的子进程,当前发起第二系统调用的子进程将会出现零交互,此时交互强度的获取可以通过Switch算法实现,图2为本发明实施例的Switch算法执行图,如图2所示,若本实施例中设置的步进值为1,P1、P2的初始值均为0,则沿着时间轴X,子进程P1先发起读取数据的系统调用即P1先有交互,随着交互操作的累积,P1的交互强度随着发起读取数据的系统调用的次数逐渐增加步进值,即P1第一次交互后其交互强度为1,此时P2没有交互,其交互强度为初始值0不变,第二次交互后其交互强度为2,此时P2还没有交互,其交互强度依旧为初始值0不变,随着交互操作的累积,P1的交互强度到达最大值MAX,随后子进程P2也发起读取数据的系统调用即P2开始交互,在Switch算法中,P1、P2之间反映的是一种切换关系,所以一旦从P1切换到P2,子进程P1将会出现零交互,此时,则随着P2的交互次数增加P2的交互强度,同时减小P1的交互强度,最后随着P2的交互,P1的交互强度降低为0,P2的交互强度增加到Max。当然有可能会出现,从子进程P1切换到P2后,又很快切换回P1,对于这种情况,P1之前的交互强度就起到了作用,之前的交互强度提供了对于P1交互活跃的信心,这样当切换回P1时,由于P1的活跃指数并没有降到很低,所以,进程的交互强度,一方面可以认为是进程当前的可能活跃度,同时也是对未来活跃度的一种预估。
若发起第二系统调用的子进程的进程类型为Vspace_Process、Vspace_Like_Process或Fake_Vspace_Process,且上一次发起第二系统调用的子进程在预设的时间阈值内未发起第二系统调用,则将上一次发起第二系统调用的子进程的交互强度减去步进值;若上一次发起第二系统调用的子进程在预设的时间阈值内有发起第二系统调用,则保持上一次发起第二系统调用的子进程的交互强度不变。在发起第二系统调用的子进程的进程类型为Vspace_Process、Vspace_Like_Process或Fake_Vspace_Proces的场景下,通常当前发起第二系统调用的子进程与上一次发起第二系统调用的子进程之间是一种竞争关系,此时交互强度的获取可以通过Back T算法实现,图3为本发明实施例一中Back_T算法执行图,如图3所示,例如,沿着时间轴X,子进程P1先发起读取数据的系统调用即P1先有交互,随着交互操作的累积,P1的交互强度随着发起读取数据的系统调用的次数逐渐增加步进值,若本实施例中设置的步进值为1,P1、P2的初始值均为0,则P1第一次交互后其交互强度为1、第二次交互后其交互强度为2。随后子进程P2也发起读取数据的系统调用即P2开始交互,Back_T算法中,P1、P2之间反映的是一种竞争关系。因为在SaaS多用户的情况下,每个用户的操作是随机的,多个用户的随机操作结合到一起就形成一个无序交替随机序列,因此,当P2开始交互时,P2的交互强度也增加一个步进值,即由初始值0增加为1,同时设置了一个时间阈值即回馈时间T,并检测在回馈时间T内上一次发起读取数据的系统调用的子进程P1是否有交互,由图2可知,在回馈时间T内发现P1有交互即P1的第二次交互,则保持P1的交互强度2不变;接着,P1进行了第三次交互,P1的交互强度则增加一个步进值,则P1的交互强度为3,而P1在第三次交互时发现在回馈的时间T内,P2有交互即P2的第一次交互,所以P2的交互强度1不变;然后,P2进行了第二次交互,P2的交互强度增加一个步进值,则P2的交互强度也为2,但在P2进行第二次交互时,在回馈的时间T内没有发现P1有交互,此时,将P1的交互强度降低一个步进值,则P1的交互强度为2。
对于Switch算法,思路很简单,当出现切换时,当前进程自然很可能在将来的一段时间内保持活跃,所以有必要不断提高当前活跃进程的交互强度,同时迅速降低上一次活跃进程的交互强度,从而使当前活跃进程获得更高的调度优先级,如果用户只是暂时的进程切换,由于上一次活跃进程的交互强度的存在,切换前该进程的交互强度不会立刻降得很低。Back_T算法则主要基于对多个进程在一段时间间隔内无序交替活跃进行观察,因为在多用户的情况下,每个用户的交互操作是随机的,多个用户的随机操作结合到一起就形成一个无序交替随机序列。如果对于竞争关系也继续采用Switch算法,则某用户短时间的密集操作,会很快降低其他用户的交互强度,而且对于一个交互操作频率较高的用户会也会严重影响其他交互操作频率较低的用户的交互强度。一个用户频繁的发起交互操作,从用户心理学分析来说,该用户往往也更加强烈的希望获得较好的交互响应,为此应该对Swicth算法做出改进,每当活跃进程去调整上一次的活跃进程的交互密度值时,并不是直接降低上一次的活跃进程的交互密度,而是回馈一定时间,如果在一定时间内上一次的活跃进程有交互,则不去改变上一次的活跃进程的交互强度,如果上一次的活跃进程的最后一次交互时间超过了回馈时间,则直接降低上一次的活跃进程的交互强值,因为有回馈时间T的存在,算法也因此得名。
上述两个算法的相似点是当捕捉到一个进程有交互时,先判断当前进程的交互强度是否达到预先定义的最大交互强度,如果没有达到,则增加当前进程的交互强度,如果达到则不作处理,继续后续流程。另外,两种算法都是在有活跃进程存在时来调整自己和兄弟进程节点的交互强度的,当没有活跃进程存在时,进程的信心指数就无法调整了,这种情况都是通过交互超时来复位交互强度(未来交互信心指数)的,即当一定的时间内所有的进程都没有交互时,可以对所有进程的交互强度进行递归置0或直接置0,因为,当没有交互活跃进程存在时,也可以认为是该计算节点当前没有用户参与,自然进程的响应时间不在敏感,调度优先级也不再重要,无需立刻判断交互密度;而且,超时置零的方法也比较简单实用,易于代码实现。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种获取基于SaaS的交互式程序的交互强度的方法,其特征在于,包括:
截获软件即服务系统SaaS中用于主入口程序创建子进程的核心系统调用;
根据所述核心系统调用获取所述主入口程序生成的至少两个子进程以及所述至少两个子进程对应的进程号、进程名、父进程号以及窗口号;
根据所述至少两个子进程中各子进程是否发起与端口相关的第一系统调用,确定各子进程的进程类型;
根据所述至少两个子进程对应的进程号、进程名、父进程号、窗口号以及进程类型,确定所述至少两个子进程之间的关系;
若所述至少两个子进程中的一个子进程发起用于读取数据的第二系统调用,则确定所述发起第二系统调用的子进程的当前交互强度,并根据所述至少两个子进程之间的关系确定与所述发起第二系统调用的子进程有关系的各子进程的当前交互强度。
2.根据权利要求1所述的方法,其特征在于,所述截获软件即服务系统SaaS中用于主入口程序创建子进程的核心系统调用,具体包括:
通过进程跟踪的系统调用ptrace截获SaaS中用于主入口程序创建子进程的核心系统调用。
3.根据权利要求1所述的方法,其特征在于,所述根据所述核心系统调用获取所述主入口程序生成的至少两个子进程以及所述至少两个子进程对应的进程号、进程名、父进程号以及窗口号,包括:
若所述用于主入口程序创建子进程的核心系统调用为sys_fork或sys_vfork,则将所述sys_fork或sys_vfork替换为sys_clone;
根据所述sys_clone获取所述主入口程序生成的至少两个子进程以及所述至少两个子进程对应的进程号、进程名、父进程号以及窗口号。
4.根据权利要求1~3任一项所述的方法,其特征在于,所述根据所述至少两个子进程中各子进程是否发起与端口相关的第一系统调用,确定各子进程的进程类型,包括:
若所述至少两个子进程中的一个子进程发起与端口相关的第一系统调用,且所述与端口相关的第一系统调用为分配端口的系统调用sys_bind,则根据所述sys_bind获取当前发起所述sys_bind的子进程的端口号,并确定所述子进程的类型为展现进程Vspace_Process、进程名为Xvnc;
若所述至少两个子进程中的一个子进程发起与端口相关的第一系统调用,且所述与端口相关的第一系统调用为连接端口的系统调用sys_connect,则根据所述sys_connect获取当前发起所述sys_connect的子进程的端口号,并确定所述子进程的类型为执行进程Vprocess_Process、进程名为Xclient。
5.根据权利要求4所述的方法,其特征在于,还包括:
若所述至少两个子进程中的一个子进程未发起与端口相关的第一系统调用,且所述未发起第一系统调用的子进程与另一个进程名为Xvnc的子进程具有相同的窗口号,则确定所述未发起第一系统调用的子进程为所述Xvnc子进程的辅助进程;
若所述辅助进程的进程名在预设的第一白名单内,则确定所述辅助进程的进程类型为第一展现辅助进程Vspace_Like_Process;
若所述辅助进程的进程名不在预设的第一白名单内,则确定所述辅助进程的进程类型为第二展现辅助进程Vspace_Relate_Process。
6.根据权利要求5所述的方法,其特征在于,还包括:
若所述至少两个子进程中的一个子进程未发起与端口相关的第一系统调用,且所述未发起第一系统调用的子进程的父进程号与另一个进程名为Xclient的子进程的进程号相同,则确定所述未发起第一系统调用的子进程为所述Xclient子进程的辅助进程;
若所述辅助进程的进程名在预设的第二白名单内,则确定所述辅助进程的进程类型为第一执行辅助进程Vprocess_Like_Process;
若所述辅助进程的进程名不在预设的第二白名单内,则确定所述辅助进程的进程类型为第二执行辅助进程Vprocess_Relate_Process。
7.根据权利要求6所述的方法,其特征在于,所述根据所述至少两个子进程对应的进程号、进程名、父进程号、窗口号以及进程类型,确定所述至少两个子进程之间的关系,包括:
若所述至少两个子进程中的两个子进程均为Vprocess_Process类型,且所述两个子进程分别对应的父进程号、进程名、端口号均相同,则确定所述两个Vprocess_Process类型的子进程为兄弟进程;
若所述至少两个子进程中的一个Vspace_Process类型的子进程与另一个Vprocess_Process类型的子进程的端口号相同,则确定所述Vprocess_Process类型的子进程为所述Vspace_Process类型的子进程的辅助进程;
若所述至少两个子进程中的一个Vprocess_Relate_Process类型的子进程的父进程号与另一个Vprocess_Process类型的子进程的进程号相同,且具有相同的窗口号,则确定所述Vprocess_Relate_Process类型的子进程为所述Vprocess_Process类型的子进程的辅助进程;
若所述至少两个子进程中不存在与所述Vprocess_Process类型的子进程的端口号相同的Vspace_Process类型的子进程,则新建一个进程类型为虚拟展现进程Fake_Vspace_Process的子进程,并将所述Fake_Vspace_Process类型的子进程的端口号设置为所述Vprocess_Process类型的子进程的端口号,则所述Vprocess_Process类型的子进程为所述Fake_Vspace_Process类型的子进程的辅助进程;
若所述至少两个子进程中的两个子进程均为Vspace_Process类型或Fake_Vspace_Process类型或所述两个子进程中的一个子进程为Vspace_Process类型、另一子进程为Fake_Vspace_Process类型,且所述两个子进程对应的父进程号相同,则确定所述两个子进程为兄弟进程;
若所述至少两个子进程中的两个子进程均为Vspace_Relate_Process类型或Vprocess_Relate_Process类型,且所述两个子进程对应相同的窗口号,则确定所述两个子进程为兄弟进程;
若所述至少两个子进程中的两个子进程均为Vspace_Like_Process类型或Vprocess_Like_Process类型,则确定所述两个子进程为兄弟进程。
8.根据权利要求7所述的方法,其特征在于,所述若所述至少两个子进程中的一个子进程发起用于读取数据的第二系统调用,则确定所述发起第二系统调用的子进程的当前交互强度,并根据所述至少两个子进程之间的关系确定与所述发起第二系统调用的子进程有关系的各子进程的当前交互强度,包括:
截获所述至少两个子进程中的一个子进程发起的用于读取数据的第二系统调用;
若所述读取数据的第二系统调用为sys_read或sys_readv,且发起第二系统调用的子进程的交互强度小于预设的阈值,则将所述发起第二系统调用的子进程的交互强度增加预设的步进值;
更新所述发起第二系统调用的子进程的兄弟进程以及所述发起第二系统调用的子进程的兄弟进程的辅助进程的交互强度。
9.根据权利要求8所述的方法,其特征在于,所述更新所述发起第二系统调用的子进程的兄弟进程以及所述发起第二系统调用的子进程的兄弟进程的辅助进程的交互强度,包括:
确定所述发起第二系统调用的子进程的兄弟进程,若所述兄弟进程的交互强度大于预设的初始值,则对所述兄弟进程的交互强度减去所述步进值;
若所述兄弟进程的交互强度为所述初始值,则将所述兄弟进程的辅助进程的交互强度置为所述初始值。
10.根据权利要求8所述的方法,其特征在于,若所述至少两个子进程中的一个子进程发起用于读取数据的第二系统调用之后,还包括:
根据所述发起第二系统调用的子进程的进程类型更新上一次发起所述第二系统调用的子进程的交互强度,具体为:
若所述发起第二系统调用的子进程的进程类型为Vspace_Process、Vspace_Like_Process或Fake_Vspace_Process,且所述上一次发起所述第二系统调用的子进程在预设的时间阈值内未发起所述第二系统调用,则将所述上一次发起所述第二系统调用的子进程的交互强度减去所述步进值;若所述上一次发起所述第二系统调用的子进程在预设的时间阈值内有发起所述第二系统调用,则保持所述上一次发起所述第二系统调用的子进程的交互强度不变;
若所述发起第二系统调用的子进程的进程类型为Vprocess_Process、Vspace_Relate_Process、Vprocess_Like_Process或Vprocess_Relate_Process,则将所述上一次发起所述第二系统调用的子进程的交互强度减去所述步进值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210477668.6A CN103019813B (zh) | 2012-11-21 | 2012-11-21 | 获取基于SaaS的交互式程序的交互强度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210477668.6A CN103019813B (zh) | 2012-11-21 | 2012-11-21 | 获取基于SaaS的交互式程序的交互强度的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103019813A true CN103019813A (zh) | 2013-04-03 |
CN103019813B CN103019813B (zh) | 2015-05-20 |
Family
ID=47968444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210477668.6A Active CN103019813B (zh) | 2012-11-21 | 2012-11-21 | 获取基于SaaS的交互式程序的交互强度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103019813B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572314A (zh) * | 2013-10-22 | 2015-04-29 | 华为技术有限公司 | 一种进程间的通信方法及装置 |
CN104932900A (zh) * | 2015-06-30 | 2015-09-23 | 北京奇虎科技有限公司 | 容器进程控件的构建方法及装置 |
CN107479954A (zh) * | 2017-07-31 | 2017-12-15 | 广东欧珀移动通信有限公司 | 进程管理方法、装置、存储介质及电子设备 |
CN109144745A (zh) * | 2018-06-29 | 2019-01-04 | Oppo(重庆)智能科技有限公司 | 进程间通信的监控方法、电子装置以及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158914A (zh) * | 2006-10-06 | 2008-04-09 | 国际商业机器公司 | 在用户空间中进行系统调用截取的方法和系统 |
CN101923507A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 基于驱动的虚拟机通用监控系统 |
CN102438049A (zh) * | 2011-12-31 | 2012-05-02 | 东软集团股份有限公司 | SaaS应用系统的系统资源配置方法及装置 |
-
2012
- 2012-11-21 CN CN201210477668.6A patent/CN103019813B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158914A (zh) * | 2006-10-06 | 2008-04-09 | 国际商业机器公司 | 在用户空间中进行系统调用截取的方法和系统 |
CN101923507A (zh) * | 2010-07-30 | 2010-12-22 | 华中科技大学 | 基于驱动的虚拟机通用监控系统 |
CN102438049A (zh) * | 2011-12-31 | 2012-05-02 | 东软集团股份有限公司 | SaaS应用系统的系统资源配置方法及装置 |
Non-Patent Citations (1)
Title |
---|
杨建新: "SAAS现状分析与前景展望", 《软件导刊》, vol. 11, no. 1, 31 January 2012 (2012-01-31) * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572314A (zh) * | 2013-10-22 | 2015-04-29 | 华为技术有限公司 | 一种进程间的通信方法及装置 |
CN104572314B (zh) * | 2013-10-22 | 2018-04-10 | 华为技术有限公司 | 一种进程间的通信方法及装置 |
CN104932900A (zh) * | 2015-06-30 | 2015-09-23 | 北京奇虎科技有限公司 | 容器进程控件的构建方法及装置 |
CN104932900B (zh) * | 2015-06-30 | 2018-10-09 | 北京奇虎科技有限公司 | 容器进程控件的构建方法及装置 |
CN107479954A (zh) * | 2017-07-31 | 2017-12-15 | 广东欧珀移动通信有限公司 | 进程管理方法、装置、存储介质及电子设备 |
US11157315B2 (en) | 2017-07-31 | 2021-10-26 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for process management and electronic device |
CN109144745A (zh) * | 2018-06-29 | 2019-01-04 | Oppo(重庆)智能科技有限公司 | 进程间通信的监控方法、电子装置以及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103019813B (zh) | 2015-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10841236B1 (en) | Distributed computer task management of interrelated network computing tasks | |
CN107479990A (zh) | 一种分布式软件服务系统 | |
US20160218950A1 (en) | Proactive identification of hotspots in a cloud computing environment | |
US10739956B2 (en) | Information processing method, terminal, server, and computer storage medium | |
US9900264B1 (en) | Adaptive balancing of application programming interface calls of cloud tenants | |
US20070186123A1 (en) | Application software initiated speedup | |
CN107463434B (zh) | 一种分布式任务处理方法与设备 | |
CN110008018A (zh) | 一种批量任务处理方法、装置及设备 | |
US9588813B1 (en) | Determining cost of service call | |
Caviglione et al. | Deep reinforcement learning for multi-objective placement of virtual machines in cloud datacenters | |
CN111143039B (zh) | 一种虚拟机的调度方法、装置及计算机存储介质 | |
US9762466B2 (en) | Predictive cloud provisioning based on human behaviors and heuristics | |
CN103930874A (zh) | 使用经调度资源组转变通过对便携式计算装置的工作负载估计而节省功率 | |
US11750711B1 (en) | Systems and methods for adaptively rate limiting client service requests at a blockchain service provider platform | |
CN111124668A (zh) | 内存释放方法、装置、存储介质及终端 | |
CN103019813B (zh) | 获取基于SaaS的交互式程序的交互强度的方法 | |
US7925755B2 (en) | Peer to peer resource negotiation and coordination to satisfy a service level objective | |
US9473572B2 (en) | Selecting a target server for a workload with a lowest adjusted cost based on component values | |
CN107391274A (zh) | 离线消息的处理方法及装置 | |
Anglano et al. | Prometheus: A flexible toolkit for the experimentation with virtualized infrastructures | |
US11755379B2 (en) | Liaison system and method for cloud computing environment | |
Sadeghian et al. | {UnFaaSener}: Latency and Cost Aware Offloading of Functions from Serverless Platforms | |
CN114610485A (zh) | 资源处理系统以及方法 | |
CN113641476A (zh) | 一种任务调度方法、游戏引擎、设备及存储介质 | |
CN114816032B (zh) | 一种数据处理方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210129 Address after: 100085 Digital Technology Plaza, 9 shangdijiu street, Haidian District, Beijing Patentee after: DIGITAL CHINA HOLDINGS Ltd. Address before: 100191 No. 37, Haidian District, Beijing, Xueyuan Road Patentee before: BEIHANG University |