CN104364759A - 用于控制计算机系统上硬件资源使用情况的方法、系统以及可执行代码段 - Google Patents
用于控制计算机系统上硬件资源使用情况的方法、系统以及可执行代码段 Download PDFInfo
- Publication number
- CN104364759A CN104364759A CN201380031821.5A CN201380031821A CN104364759A CN 104364759 A CN104364759 A CN 104364759A CN 201380031821 A CN201380031821 A CN 201380031821A CN 104364759 A CN104364759 A CN 104364759A
- Authority
- CN
- China
- Prior art keywords
- service
- api
- code segment
- application program
- calling
- 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
- 238000000034 method Methods 0.000 title claims abstract description 220
- 230000008569 process Effects 0.000 claims abstract description 145
- 230000006870 function Effects 0.000 claims description 64
- 230000007717 exclusion Effects 0.000 claims description 26
- 238000009434 installation Methods 0.000 claims description 4
- 230000000875 corresponding effect Effects 0.000 description 34
- 230000001276 controlling effect Effects 0.000 description 17
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013404 process transfer Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种利用可插入到应用程序的进程的可执行代码段,控制在操作系统上执行的应用程序对计算机系统硬件资源使用情况的方法,所述操作系统包括至少一个在该计算机系统上执行的应用程序编程接口(API)。方法包括:将API服务重定向到包含在代码段中的对应服务;拦截从处理器到API服务的调用;并且基于进程对API服务的调用的拦截,作用于属于该进程的软件实体。
Description
技术领域
本发明涉及一种利用可插入到应用程序的进程的可执行代码段,控制在操作系统上执行的应用程序对计算机系统硬件资源使用情况的方法,所述操作系统包括至少一个在该计算机系统上执行的应用程序编程接口(API)。
本发明还涉及适于实现该方法的系统和可执行代码段。
背景技术
众所周知,近些年来计算机无论是在软件还是在硬件上的发展从未停止。
在硬件水平上,例如处理器越来越快并且融入了新的发展,而易失性和非易失性内存也具有越来越大的存储能力。
类似的,在软件水平上,应用程序(例如操作系统、办公或者计算机辅助画图应用程序,或游戏)变得越来越强大,并且可以实现更多的功能,这些在几年前是意想不到的。
当用户计算机系统硬件资源的性质与同其共同作用的软件的硬件需求失去平衡时,现有情形的主要缺陷就变得明显。到目前,软件是否以这样快的速度发展,由于程序员意识到他们可以得到越来越多的硬件资源,或者硬件是否有必要发展,从而满足不同软件执行的日益增长的需求,尚无定论。如果待使用的软件的硬件需求等于或者高于用户计算机系统的资源性质,这种操作问题就会清楚而明显。此外,必须清楚,某一软件的硬件需求是考虑所述软件在计算机系统中单独执行而得出的,但是这种情况很少发生,因为在后台至少完全有可能有软件在执行,很明显,它们也要消耗系统的硬件资源(例如杀毒、防火墙或者备份软件)。
比较明确的是,软件程序员不习惯去考虑大多数用户计算机系统不具有最先进的硬件资源,以及每一个新的软件或者每一个已经存在的软件的更新都迫使用户去更新这些硬件资源,甚至需要购买新的计算机系统,从而至少可以执行该软件并获得适当的软件执行效果。所有这些最终会给用户带来高昂的经济成本,不仅有获取软件的成本,还包括系统硬件资源更新的成本。
这些问题也出现在服务器类型(应用程序服务器、数据服务器等)的计算机系统中。如果没有提前实现硬件更新的话,服务器软件(例如在更新之后)的硬件需求的增加会导致在那一刻前还在管理所有用户的服务器不能再为所有的用户提供服务。类似地,如果服务器是应用程序服务器的话,例如它管理的应用程序的数量必须减少,从而可以为同样数量的用户提供服务。需要重要指出的是,由于服务器类型的计算机的硬件资源具有更高的成本,因此服务器类型的系统更新硬件资源的成本甚至要比上述情形的更新成本更高。
另一方面,具有给定硬件资源的计算机系统,想要在其上执行更多数量的理论上会执行的应用程序以及/或者同一应用程序的实例,也会出现这种情况。在这种情况下,硬件资源没有改变,因此,有必要使应用程序以及/或者同一应用程序上的不同实例的执行减少对它们所使用的硬件资源的消耗。
当操作系统执行时,上述任何一种情形中的操作系统都不能有效地控制运行应用程序以及/或者同一应用程序的实例的硬件资源的使用,因此,需要一种实现该目的的工具。
发明内容
因此,本发明的目的在于利用适于插入到属于应用程序的进程中间的可执行代码段,提供一种控制正在运行的应用程序对硬件资源的使用情况的方法,该方法可以提高执行应用程序的计算机系统的效率。
该目的通过提供一种利用可以插入到应用程序中的进程的可执行代码段,控制在操作系统中执行的应用程序对计算机系统硬件资源使用情况的方法实现,所述操作系统包括至少一个在计算机系统上执行的应用程序编程接口(API),方法包括:
-拦截属于该应用程序的进程对API服务的调用;
-基于拦截进程对API服务的调用,作用于正在执行的进程的软件实体。
因此,利用插入到进程中的可执行代码段,执行中的应用程序和操作系统间的通信(控制信号和数据通信)被拦截,从而代码段在操作系统的上层执行,并且可以管理或控制属于该进程的软件实体并且通过其减少对硬件资源的使用。
基本上,插入到属于该应用程序的进程内的可执行代码段提供了,通过在计算机系统上执行的应用程序控制该计算机系统上的硬件资源的使用情况的信息。显然,由该代码段执行的控制可以减少硬件资源的应用,但总是保持最低的服务质量。
由于上述原因,降低应用程序对硬件资源的使用可以使这些资源被其他应用程序(或者同一应用程序的若干实例)使用,从而计算机系统中可以有更多的应用程序同时执行,提高了操作系统的效率。
类似地,降低应用程序硬件资源的使用可能会使应用程序执行的硬件需求大于计算机系统所提供的硬件资源应用程序。
需要重要指出的是,表述“服务”、“API”或者“软件实体”分别指代至少一个服务、至少一个API,以及/或者至少一个软件资源。因此,例如可以将同一API的两个服务重定向到两个包含在同一代码段的服务中去,或者将第一API的服务重定向到包含在该代码段中的第一服务以及将第二API的服务重定向到包含在该代码段中的第二服务。同样地,根据重定向服务,该段代码可能作用于一个或多个软件实体,如执行线程、内存或互斥锁。
以一种方式将可执行代码段插入到进程已经被描述过,如在[“Windows NT System-CallHooking”,Mark Russinovich and Bryce Cogswell,Dr.Dobb’s Journal,January 1997]中。
需要重要指出的是,代码段可以插入到进程中,而该进程从休眠状态启动,这可以确保代码段正确运行。在这种情况下,该方法包括唤醒处于休眠状态的进程的执行的步骤。
另一方面,需要重要指出的一点是,术语“拦截”应该理解为从进程到API服务接口的呼叫重定向到包含在该代码段中的服务,从而代码段本身可以控制或者执行属于该进程的软件实体,从而通过该应用程序控制资源的使用。
此外,该方法包括将API服务重定向到包含在代码段的相对应的服务,从而当进程呼叫API服务时,以透明的方式呼叫包含在代码段的相对应的服务。
根据本发明优选实施例,该API服务可以是函数,并且将API服务重定向到包含在代码段内的相对应的服务这一步骤包括:
■将包含待重定向的API的函数的动态链接库加载到内存中;
■在包含在装载的动态链接库中的API函数的函数指针表中,将存储待重定向的API函数的初始内存地址替换为存储包含在代码段中的对应函数的初始内存地址中。
因此每个API的一个或多个函数被重定向到包含在代码段的函数中,从而后者可以通过作用于软件实体,例如执行线程、内存或互斥锁(也称为锁)等,拦截进程对这些函数的调用,进而控制对涉及执行的硬件资源的使用。
将API服务重定向到包含在代码段中的对应服务这一步骤优选包括:将存储重定向的API的函数的初始内存地址存储在第一变量中。因此,如果在应用程序执行过程中有必要,有可能从可执行代码段自身调用API的函数(即初始函数)。
根据本发明另一优选实施例,该API服务可以是对象方法,并且将API服务重定向到包含在代码段内的相对应的服务这一步骤包括:
■将包含重定向对象方法的动态链接库装载到内存中;
■验证与待重定向的方法相关的对象是否是第一次创建;
■如果验证结果为是,
●在包含在装载的动态链接库中的对象方法的方法指针表中,将存储待重定向的对象方法的初始内存地址替换为存储包含在代码段中的对应方法的初始内存地址中。
同函数一样,同样有可能将一个或多个属于对象的方法重定向到包含在代码段中的一个或多个方法,从而后者可以拦截进程对这些方法的调用,进而控制对涉及执行的硬件资源的使用。
如上文所讨论的,既然有可能重定向至少一个API的至少一个服务,就有可能其中一个服务是函数,而另一个服务是方法,从而上述两个实施例在同一个正在执行的应用程序中可以互为补充。
将API服务重定向到包含在代码段中的对应服务这一步骤还优选地包括:将存储待重定向的对象方法的初始内存地址存储在第一变量,从而根据需要,可以从代码段本身调用该方法(即初始方法)。
根据本发明一实施例,API服务可以是与属于该进程的软件实体相关的服务;该服务意在创建一个新的执行线程;软件实体可以是执行线程;并且拦截进程对API服务的调用可包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于生成新的执行线程;
■基于包含在代码段中的对应服务生成新的执行线程;
■保存执行线程的标识符,该标识符由第二变量生成,该变量维持创建的执行线程的寄存器。
根据本发明另一实施例,API服务可以是与属于该进程的软件实体相关的服务;该服务意在创建一个新的执行线程;软件实体可以是执行线程;并且拦截进程对API服务的调用可包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于生成新的执行线程;
■基于存储在第一变量的初始内存地址,调用API服务;
■接收由API的函数产生的新的执行线程的标识符;
■保存执行线程的标识符,该标识符由第二变量生成,该变量维持创建的执行线程的寄存器。
如果可能重定向不止一个与执行线程类型的软件实体相关的服务,上述描述的两个实施例都不是二选其一的,而是可以互为补充的。
更具体地,在描述的第一个实施例中,生成新执行线程的服务包含在代码段本身,而在第二个实施例中,生成新执行线程的服务不包括在代码段中,并且有必要调用应用程序服务的初始服务,从而成功地产生执行线程。为了达到该目的,必须已经将上述API服务(即初始服务)的内存地址存储在第一变量中。尽管存在上文描述,不管执行什么实施例,代码段管理创建的新执行线程的识别符,将其存储在用于维持创建的执行线程的寄存器的变量中。
如果软件实体为执行线程,则基于拦截的进程对API服务的调用,在作用于属于正在执行的进程的软件实体的步骤包括:
■确定正在执行的应用程序的消耗值(yield value);
■检验应用程序的消耗值是否超出阈值;
■如果超出阈值,基于存储在第二变量中的标识符,将执行线程暂停一预设时间,其中该变量维持创建的执行线程的寄存器。
既然代码段管理执行线程的标识符,如果代码段(更具体地,包含在代码段内的算法)检测到应用程序的消耗量(yield)超出了阈值(即,如果应用程序的执行消耗了太多的资源或者不必要的资源),代码段会基于存储在第二变量的执行线程的标识符,暂停执行直到那一刻创建的线程的执行,这意味着线程段可以控制由应用程序消耗的硬件资源的使用。
基于对应用程序硬件资源的使用来确定正在执行的应用程序的消耗量的步骤包括:
●构建API服务作为控制点,当进程执行时,会反复调用该API服务;
●确定进程第一次调用和第二次调用该服务的时间间隔;
●基于确定的时间,得到正在执行的应用程序的消耗值。
可以通过FPS(每秒帧数)度量测量第一次调用和第二次调用作为控制点的服务的时间间隔。
另一方面,任何可以测量维持获得消耗与维持理想消耗所需要的执行时间的差异的算法都可以用于确定执行线程必须暂停的时间。该算法可以包含在代码段中,尽管也可以使该代码段调用外部算法。
如果软件实体涉及内存并且API服务为意在预留存储区域的服务,则拦截进程对API服务的调用这一步骤包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于预留存储区域;
此外,在这种情况下,基于拦截进程对API服务的调用,在作用于属于正在执行的进程的软件实体的步骤包括:
■预留共享存储区域。
因此,当进程调用用于预留存储空间的API服务时,该调用被拦截(即调用被重定向到包含在代码段内的对应服务)并且意在被同一应用程序的不同实例共享的存储区域被分配。
下文详细描述了在应用程序执行时,当软件实体为内存时,代码段是如何控制硬件资源的。
例如如果应用程序执行需要1千兆字节的内存,则该应用程序的第二实例的执行还需要1千兆字节,即两个实例的执行总共需要消耗2千兆字节的内存。如果将本发明的可执行代码段对象插入到应用程序的两个实例中,由于为正在执行的不同的实例分配了共享内存区域,内存消耗会小于2千兆字节。就这一点而言,有必要说明一点,由于在某些存储区域存在的信息一定不能被应用程序的其他实例修改,大多数情况下应用程序的每个示例不可能共享整个内存(在本示例中1千兆字节)。因此,在分配内存区域之前,必须识别出因包含有每个实例的信息特征而不能修改的存储区域。
另一方面,由进程对包含在代码段中的对应服务的调用还有可能涉及从代码段到意在预留存储区域的初始API的函数的调用,该调用是在存储在上述第一变量的内存地址的基础上执行的。
另一方面,如果软件实体为锁或者互斥锁,并且如果API服务为意在干预互斥锁的服务,则拦截进程对API服务的调用这一步骤包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于干预互斥锁;
在这种情况下,基于拦截进程对API服务的调用,在作用于属于正在执行的进程的软件实体的步骤包括:
■修改分配给互斥锁的名称;
有些应用程序(例如一些游戏)不允许在同一计算机系统上执行多于一个应用程序的实例。为了达到该目的,它们使用可为应用程序的实例分配标识符的锁或者互斥锁,并且在生成的所有的新实例接收到相同的标识符的情况下,执行多于一个实例是不可实现的。
鉴于这种情况,并如上文所述,当进程尝试创建与应用程序相关的互斥锁并且调用包含在该代码段的对应服务时(意在执行该行为的初始API服务的指针先前一定要重定向到包含在该代码段的服务),该代码段修改分配给该互斥锁的标识符,从而当该应用程序生成第二个实例,标识符并未互相吻合,从而允许同步执行。
根据本发明另一方面,提供了包含用于执行上述控制计算机系统中硬件资源的方法的指令的可执行代码段;当一应用程序在包括至少一个在这一计算机系统中执行的应用程序编程接口(API)的操作系统上运行时,该可执行代码段适于插入到属于该应用程序的进程中。
该可执行代码段可以存储在物理存储媒介上,如可记录媒介、计算机内存或只读内存,或者可以由载波实现,如电或光载波。
此外,本发明提供了一种在计算机系统上执行应用程序的方法,该方法包括:
-在休眠状态下,初始化与应用程序相关的进程的执行;
-将上述可执行代码段插入到休眠状态下的进程中;
-执行上述的,利用插入到进程的可执行代码段,控制在操作系统上执行的应用程序对计算机系统硬件资源使用情况的方法,所述操作系统包括至少一个在该计算机系统上执行的应用程序编程接口(API)。
因此,当用户请求执行计算机系统上的应用程序时,可以根据上述方法执行该应用程序,目的在于使该代码段控制硬件资源。
根据本发明另一方法,提供了一种控制在操作系统中执行的应用程序对计算机系统硬件资源使用情况的系统,所述操作系统包括至少一个在计算机系统上执行的应用程序编程接口(API),适于向该系统插入属于该应用程序的进程,该系统包括:
-用于拦截从进程到API服务的调用的计算机装置;
-基于拦截进程对API服务的调用,用于作用于属于正在执行的进程的软件实体的计算机装置。
根据另一方面,本发明提供了一种计算机系统,应用程序可以在该计算机系统上执行,该系统包括内存和处理器,可包括存储在内存中的处理器可执行指令,其中该指令可包括以下功能:
-在休眠状态下,初始化与应用程序相关的进程的执行;
-将上述可执行代码段插入到休眠状态下的进程中;
-执行上述的,利用插入到进程的可执行代码段,控制在操作系统上执行的应用程序对计算机系统硬件资源使用情况的方法,所述操作系统包括至少一个在该计算机系统上执行的应用程序编程接口(API)。
说明书和权利要求书通篇,用语“包括”及其变型不表示排除其他技术特征、补充、条目或步骤。本领域技术人员可以从部分说明书以及本发明部分实践推断出本发明进一步的目的、优势以及特征。文中提供的示例和附图仅作描述目的,它们不作为本发明的限制。权利要求中涉及附图并且位于括号内的附图标记只是为了进一步理解该权利要求,不应该理解为限制本发明的保护范围。此外,本发明涉及此处描述的特别及优选实施例的所有可能的组合。
附图说明
为了更好地理解上文描述的内容,用于图示描述仅作为非限制性示例的实施例的附图如下。
附图中:
图1所示为根据现有技术的计算机系统上的应用程序执行层的框图;
图2所示为根据本发明,计算机系统上应用程序的执行层,还包括代表插入到属于该应用程序的进程的可执行代码段的层的框图,该代码段意在控制计算机系统中应用程序对硬件资源的使用情况。
具体实施方式
下文将会描述根据本发明的用于控制计算机系统中应用程序对硬件资源的使用情况的方法和可执行代码段,该应用程序在操作系统中执行,包括至少一个在该计算机系统上执行的应用程序编程接口(API),该代码段适于插入到与应用程序相关的进程中,该应用程序的进程起初为休眠状态。
图1所示为根据现有技术,在计算机系统(例如个人计算机、服务器等)上的应用程序(例如游戏)的执行层的示意图。
在该示意图中,最底层10表示计算机系统的硬件资源,如微处理器(CPU)、内存、图形处理单元(GPU)、键盘或者鼠标等。
在配置为更高级别的第二层11中设置操作系统,该第二层11具有与最底层10的资源双向通信和交互所需的驱动(能够发送和/或接收与这些资源有关的信息,比如控制信号14或数据15)。
在表示操作系统的层11的上方配置的第三层12中,设置有应用程序编程接口(更普遍地称为API),既包括包含在操作系统中的API,还包括由于安装最底层10的资源驱动而产生的API。不管使用什么操作系统,这些API通常以动态链表库的形式实现。包含API的层12和代表操作系统的层11之间的通信也是双向通信,并且都能够交换控制信号14和数据15。
最后,图1还示出了第四层或最高层13,描述执行中的应用程序。在执行过程中,该应用程序对代表API的层12进行访问,交换控制信号和数据。
因此,根据该配置,例如如果正在执行的应用程序13需要在执行该应用程序的计算机系统的显示屏上生成窗口,该应用程序必须访问某些用于生成窗口API 12的服务(函数或方法)。为了能够在屏幕上生成窗口,这些服务需要与操作系统11交换信息(控制信号和数据),该操作系统具有必需的工具(即驱动)用于与屏幕10通信,从而生成所需的窗口。
这些配置的主要的缺点在于根本没有元件或工具可以高效或有效地管理正在被执行的应用程序对计算机系统的硬件资源的使用情况。在上述情况下,应用程序使用其执行所需的资源。
因此,本发明执行一插入到该应用程序相关的进程中的可执行代码段,其中该进程例如起初为休眠状态,从而它可以在被执行时,控制应用程序所使用的硬件资源。
图2所示为基于图1所示示意图的示意图,但其进一步包括代表可执行代码段的层16,当插入到与应用程序关联的进程后,该代码段被配置为在应用程序层13和代表API的层12之间的逻辑层,使得代码段可以拦截应用程序对某些API服务(例如函数和方法)的调用,从而控制应用程序使用的硬件资源,作用于进程的一个或多个软件实体。
更具体地,代码段执行的方法如下:其中必须基于初始的情况来描述,其中当用户执行应用程序时,属于应用程序的进程在休眠状态中启动。在该休眠状态过程中,将可执行代码段插入到进程中。
一旦该段代码插入到进程中,该段代码就会将所有包含具有那些服务(函数或者方法)的应用程序编程接口(API)的动态链接库加载到内存中,其中该动态链接库为应用程序执行时所需要的动态链接库。然后,在操作系统根据存储有不同的API服务的初始内存地址,为装载在内存中的这些服务填充了服务指针表之后,它将指针表中的每个应用程序在执行过程中可能或者会需要的服务的初始内存地址替换为包括该代码段的对应的服务所在的初始内存位置。因此,在执行重定向的基础上,代码段可以拦截进程为了执行服务而对这些相关服务的调用,即由于指针并不指向多个API服务,而是指向包含该代码段的对应的服务,代码段接收到该进程对不同的API的不同的相关服务的调用。
在上述拦截的基础上,该代码段获得了计算机系统上应用程序对硬件资源的使用情况的控制能力,即该代码段以一种对于进程而言透明的方式,控制系统中应用程序对硬件资源的使用情况。
更具体地,当进程尝试通过调用某些API服务访问计算机系统的硬件资源时,该段代码执行它自身的服务(即执行这些调用的拦截)。在拦截的基础上,根据进程调用的服务类型,该段代码作用于某个软件实体。
因此,如果被拦截的API服务是意在创建新的执行线程的服务(即代码段作用的软件实体为执行线程),该拦截步骤包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于生成新的执行线程;
■基于包含在代码段中的对应服务生成新的执行线程;
■保存执行线程的标识符,该标识符在某变量中生成,该变量维持创建的执行线程的寄存器。
对于已经描述的情况(即,被拦截的API服务是意在创建新的执行线程的服务),拦截进程对API服务的调用还可能替换性地包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于生成新的执行线程;
■基于存储在变量中的初始内存地址,调用API的函数,该变量用于存储这种信息;
■接收新的由API服务产生的执行线程的标识符;
■保存执行线程的标识符,该标识符在用于维持创建的执行线程的寄存器的变量中生成。
在任何情况下,如果拦截的API服务为意在创建新的执行线程的服务,作用于软件实体的步骤可包括:
■确定正在执行的应用程序的消耗值;
■检验应用程序的消耗值是否超出阈值;
■如果超出阈值,基于存储在变量中的标识符,将之前创建的执行线程暂停一预设时间,其中该变量维持创建的执行线程的寄存器。
因此,既然执行线程的标识符由代码段管理(所述代码段将标识符存储在它管理的变量中),如果该代码段检测到应用程序的消耗超出了阈值(即,如果应用程序的执行消耗了太多的资源或者不必要的资源),代码段会基于存储在对应变量的执行线程的标识符,暂停执行直到那一刻创建的线程的执行,这意味着线程段可以控制应用程序对硬件资源的使用情况。
上文已描述的正在执行的应用程序的消耗值的确定步骤包括:
●构建API服务作为控制点,当进程执行时,会反复调用该API服务。
●确定进程第一次调用和第二次调用该服务的时间间隔;
●基于确定的时间,得到正在执行的应用程序的消耗值。
如果被拦截的API服务为意在预留存储区域的服务,则拦截进程对API服务的调用这一步骤包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于预留存储区域;
在这种情况下(即被拦截的调用为对意在预留存储区域的服务的调用),在作用于属于正在执行的进程的软件实体这一步骤包括:
■预留共享存储区域。
因此,当进程调用用于预留内存区域的API服务时,该调用被拦截(即调用被重定向到包含在该代码段的对应的服务)并且意在被同一应用程序的不同实例共享的内存区域被分配,即包含在该段代码内的对应服务将由同一应用程序的不同实例共享的内存区域分配给该进程。
最后,如果被拦截的调用对应于意在干预互斥锁的API服务,则拦截进程对API服务的调用这一步骤包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于干预互斥锁;
■修改分配给互斥锁的名称;
而基于拦截进程对API服务的调用,在作用于属于正在执行的进程的软件实体的步骤包括:
■修改分配给互斥锁的名称;
有些应用程序(例如一些游戏)不允许在同一计算机系统上执行多于一个应用程序的实例。为了达到该目的,它们使用可为应用程序的实例分配标识符的锁或者互斥锁,并且在生成的所有的新实例接收到相同的标识符的情况下,执行多于一个实例是不可实现的。
鉴于这种情况,并如上文所述,当进程尝试创建与应用程序相关的互斥锁并且调用包含在该代码段的对应服务时(意在执行该行为的初始API服务的指针先前一定要重定向到包含在该代码段的服务),该代码段修改分配给该互斥锁的标识符,从而当该应用程序生成第二个实例,标识符并未互相吻合,从而允许同步执行。
因此,到目前为止的描述清楚地显示了根据代码段拦截到的对不同类型的API服务的调用,该代码段可以作用于这些类型的服务对应的软件实体,控制应用程序对计算机系统中硬件资源的使用情况。
下文将描述本发明一优选实施例,其中操作系统可以是Windows系列中的任何一个,例如Windows 7;计算机系统是应用程序服务器,更具体地为游戏服务器;并且待执行应用程序为游戏以及/或者同一游戏的不同实例。此外,当执行进程时,用于控制应用程序对硬件资源的使用情况的代码段所干预的软件实体对应于不同的执行线程,该执行线程直到此时已经创建。
更具体地,本优选实施例具有以下操作。本游戏服务器的目的在于使服务用户在他们的移动终端上,如智能手机或平板电脑,玩不同的游戏,或者甚至玩相同的计算机游戏。每个游戏或者同一游戏的每个实例的执行可以通过流技术从游戏服务器发送到用户移动设备。因此,所述用户可以从属于用户的移动设备上选择要玩的游戏,通过在用户移动终端屏幕上显示的图形用户界面上出现的控制元件(例如代表游戏的图标)的触发来请求执行游戏。用户在控制元件上的触发产生发送到游戏服务器的控制信号,使服务器执行所选的游戏。
假如有大量的用户请求执行游戏(即具有大量被执行的游戏),本发明努力控制每个游戏的执行,从而使使用的硬件资源尽可能最少,进而最大数量的游戏可以同步执行,并且从而可以为最大数量的用户提供服务。
因此,当用户从他/她的移动终端请求执行游戏时,在休眠状态中,在游戏服务器中创建正在执行的应用程序(即游戏)的主进程。为此,使用CreateProcess函数,分配CREATE_SUSPENDED值到创建模式参数(CreateFlags)。一旦进程在休眠状态中启动,根据本发明的可执行代码段插入到进程中,其目的在于最优化属于该进程的软件实体。
在重新开始执行进程之前(必须注意进程在休眠状态中启动),插入的代码段重定向被拦截的API函数。根据该优选实施例,有两类函数被拦截:
■利用函数CreateThread用于寄存执行线程的创建;
■当执行进程时用于构建控制点。因此,使用这些控制点,可以通过与进程相关的函数,a priori,以相对于该进程透明的方式测量应用程序的消耗,已知它们会在整个进程的执行过程中被反复调用。因此,例如在图形应用程序中,可通过APIIDXGISwapChain1的方法Present1,将每个屏幕的每个帧的函数构建成控制点,从而可以通过测量每秒显示的画面的数量(FPS)得到应用程序的消耗。目的在于插入代码段,确认应用程序什么时候超出预设消耗阈值,从而防止过度使用计算机系统(即游戏服务器)的硬件资源,并且从而平衡该消耗与其他正在执行的应用程序(即游戏或者同一游戏的实例)的消耗量。如果应用程序的消耗量超出预设阈值,则与该进程相关的执行线程可以根据需要暂停一段时间,从而使消耗量不会超出阈值。
在Windows操作系统,这些所述的多个API通常以多个动态链接库(DLL)的形式执行。因此,该代码段利用函数LoadLibrary,通过库dxgi.dll装载包括要被重定向的函数的库,例如库kernel32.dll的CreateThread以及API IDXGISwapChain1的Present1。基本上,LoadLibrary将库加载到内存中,并且以API函数的内存中的初始地址填充索引地址表(IAT),该表是用于API函数的指针表。必要的指针通过函数RedirectIAT修改,使该指针对应于属于插入到进程的代码段的函数。同时,表的初始内容(即存储函数的最初内存位置的指针)存储在一变量中,以备某个时刻需要调用原函数。
另一方面,既然API IDXGISwapChain1是COM类型的接口,有必要修改该接口的指针表来替换被拦截的方法,例如Present1。用特定的代码对COM类型接口的方法指针表进行修改。例如,Present1与IDXGISwapChain1接口的方法表的位置4对应,并且不得不对其修改,使其指向包含在插入的代码段中的函数。同时,位置的原始内容存储在一变量中,以备某个时刻需要调用原方法。对COM类型接口的指针表的修改只有在该类型的对象第一次创建的时候实施。当服务重定向结束时,即所有必要的API的所有函数和方法已经被重定向,重新执行应用程序的进程。
当进程尝试创建新的执行进程,执行函数CreateThread,用于存储将要被创建的新线程的信息。为了达到该目的,代码段调用初始函数CreateThread,用于执行该函数,并且代码段自身将新的执行线程的标识符存储在变量中,该变量维持直到此时创建的所有线程的寄存器。在本优选实施例中,使用初始函数CreateThread,即基于存储在对应变量(存储初始内存位置的指针的变量,其中每个重定向函数存储在该内存初始位置)内的内存地址,代码段调用初始API函数,但是在代码段包括创建执行线程的函数时也会出现这种情况,不必要调用外部函数。在所有这些情况下,代码段管理创建的执行线程的标识符。
另一方面,如上文所述,还有可能在与应用程序相关的进程每次调用作为控制点的函数时,测量正在执行的应用程序的消耗,例如,在优选实施例中,调用函数Present1。为了达到该目的,从上次调用这个函数的时间间隔可通过特定的算法测量,从而计算消耗,例如利用FPS(每秒的帧数)度量。如果包含在插入的代码段的用于测量消耗的算法显示已经超出预设阈值,则计算必须暂停该执行线程的必要时间。可以通过算法去测量维持实际消耗的必要执行时间与理想消耗所需时间相比的差异去计算该时间。然后,该代码段使直到此时由进程(其标识符已经存储在前述对应的变量中)创建的所有的执行线程(即该代码段作用于软件实体,如执行线程)暂停,暂停时间长度根据计算得到,其中通过函数SuspendThread以及库kernel32.dll的Sleep进行计算。所计算的时间段一过,执行线程就会再次被譬如库kernel32.dll的函数ResumeThread启动。在那一刻之后,进程继续正常执行,直到进程下次再调用控制函数(在本优选实施命名,函数Present1)。
因此,当代码段在涉及作用于执行线程的软件实体时,该代码段控制游戏服务器中应用程序(更具体地,游戏)在其执行时对可用硬件资源的使用情况。
根据本发明另一优选实施例,该代码段还可作用于另一软件实体,例如内存。在这种情况下,该代码段必须重定向所有意在管理存储区域预留的API服务(例如函数以及/或者方法)至包含在代码段自身的服务,从而使包含在代码段内的服务可以分配同一游戏的不同实例的存储区域。因此,执行中的实例可以共享某些存储区域,从而这些实例的内存的使用情况可以显著减少。必须考虑到一点,在有些情况下,每个执行的实例都具有不可以共享的独占存储区域(可包括例如涉及请求执行该实例的用户的数据)。因此,在预留存储区域之前,该代码段必须确定哪些存储区域可以共享,哪些不可以共享。
对于执行线程类型的软件实体,应用程序所需的存储区域还可以通过代码段调用初始API函数分配,其中该代码段控制存储区域,该存储区域必须随时分配。
另一方面,该代码段还可以管理另一种类型的软件实体,如锁或互斥锁,从而可以在同一服务器上执行同一游戏的不止一个实例。程序员通常会在全球计算机游戏(world computergaming)中包含有互斥锁,从而防止用户执行同一计算机系统的游戏的不止一个实例。为了达到该目的,当创建游戏的第一个实例时,互斥锁产生与游戏相关的预设标签(该标签对于每一个游戏是唯一的),从而当用户尝试执行正在执行的游戏的第二个实例时,该互斥锁确定存在正在执行的实例(通过标签的存在判断),并且不允许该游戏的第二个实例执行。
为了克服该缺陷,插入属于该游戏的进程的代码段重定向意在管理互斥锁的API服务到包含在代码段本身内的服务。因此,该代码段可以拦截这些服务,并且修改互斥锁分配给该服务的预设标签,从而当用户尝试执行游戏的第二个示例时,服务不会检测到任何预设标签的示例,从而允许其执行。既然代码段已经插入到对应于每个正在执行的实例的进程,分配到该实例的标签对于每个实例而言均不相同。
尽管已经描述并描绘了本发明的特定实施例,但非常明显的是,本领域技术人员可以进行变型和修改,或者替换其他技术上等同的细节,都不会超出权利要求保护的范围。
虽然文中参考附图描述的实施例包括计算机系统以及在计算机系统中执行的进程,但本发明还覆盖计算机程序或者可执行代码段,更具体地,适于将本发明用于实践的在载体媒体中或上的计算机程序。计算机程序可以是源代码、目标代码或者介于源代码和目标代码之间的中间代码的形式,如部分编译形式,或者适于实现本发明进程的其他形式。该载体媒体可以是任何实体或者可以执行该方案的设备。
例如,载体媒体可以包括存储介质,如ROM,例如CD、ROM或者半导体ROM,或者磁记录介质,例如软盘或硬盘。此外,载体媒体还可以是可传送载体媒体,如可以利用无线电或其他方式通过电线或光纤进行传输的电或者光信号。
当计算机程序包含在可直接通过电缆或其他机构或装置传播的信号中时,该载体媒体可以通过所述电缆或其他机构或装置形成。
或者,载体媒体可以为内嵌计算机系统的集成电路,所述集成电路适于执行,或者用于执行相关进程。
Claims (21)
1.一种利用可插入到属于应用程序的进程的可执行代码,控制在包括至少一个在计算机系统上执行的API的操作系统中执行的应用程序对计算机系统硬件资源使用情况的方法,该方法包括:
-拦截属于该应用程序的进程对API服务的调用;
-基于进程对API服务的调用的拦截,作用于正在执行的进程的软件实体。
2.根据权利要求1所述的方法,包括:
-将API服务重定向到包含在代码段中的对应服务。
3.根据权利要求2所述的方法,其中该API服务是函数,并且其中将API服务重定向到包含在代码段中的相对应的服务包括:
■将包含待重定向的API的函数的动态链接库加载到内存中;
■在包含在装载的动态链接库中的API函数的函数指针表中,将存储待重定向的API函数的初始内存地址替换为存储包含在代码段中的对应函数的初始内存地址。
4.根据权利要求3所述的方法,其中将API服务重定向到包含在代码段中的对应服务包括:
■将存储待重定向的API的函数的初始内存地址存储在第一变量中。
5.根据权利要求2所述的方法,其中该API服务是对象方法,并且其中将API服务重定向到包含在代码段中的相对应的服务包括:
■将包含待重定向的对象方法的动态链接库装载到内存中;
■验证与该待重定向的方法相关的对象是否是第一次创建;
■如果验证结果为是,
●在包含在装载的动态链接库中的对象方法的方法指针表中,将存储待重定向的对象方法的初始内存地址替换为存储包含在代码段中的对应方法的初始内存地址。
6.根据权利要求5所述的方法,其中将API服务重定向到包含在代码段中的对应服务包括:
■将存储待重定向的对象方法的初始内存地址存储在第一变量中。
7.根据权利要求1-6中任一项所述的方法,其中API服务是与属于该进程的软件实体相关的服务;该服务意在创建一个新的执行线程;其中软件实体是执行线程;并且其中拦截进程对API服务的调用包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于生成新的执行线程;
■基于包含在代码段中的对应服务生成新的执行线程;
■保存执行线程的标识符,该标识符在第二变量中生成,该第二变量维持创建的执行线程的寄存器。
8.根据权利要求4-6中任一项所述的方法,其中API服务是与对应于该进程的软件实体相关的服务;该服务意在创建一个新的执行线程;其中软件实体是执行线程;并且其中拦截进程对API服务的调用包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于生成新的执行线程;
■基于存储在第一变量中的初始内存地址,调用API的函数;
■接收由API服务产生的新的执行线程的标识符;
■保存执行线程的标识符,该标识符在第二变量中生成,该第二变量维持创建的执行线程的寄存器。
9.根据权利要求7或8所述的方法,其中基于拦截进程对API服务的调用,在作用于属于正在执行的进程的软件实体的步骤包括:
■确定正在执行的应用程序的消耗值;
■检验应用程序的消耗值是否超出阈值;
■如果超出阈值,基于存储在第二变量中的标识符,将执行线程暂停一预设时间,其中该第二变量维持创建的执行线程的寄存器。
10.根据权利要求9所述的方法,其中基于对硬件资源的使用确定正在执行的应用程序的消耗值包括:
●构建API服务作为控制点,当进程执行时,将反复调用该API服务;
●确定进程第一次调用和第二次调用该服务的时间间隔;
●基于确定的时间,得到正在执行的应用程序的消耗值。
11.根据权利要求1-6中任一项所述的方法,其中API服务是与对应于该进程的软件实体相关的服务;该服务意在预留存储区域;其中软件实体是内存;并且其中拦截进程对API服务的调用包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于预留存储区域。
12.根据权利要求11所述的方法,其中基于拦截进程对API服务的调用,作用于属于正在执行的进程的软件实体包括:
■预留共享存储区域。
13.根据权利要求1-6中任一项所述的方法,其中API服务是与对应于该进程的软件实体相关的服务;该服务意在干预互斥锁;其中软件实体是互斥锁;并且其中拦截进程对API服务的调用包括:
■接收进程对对应服务的调用,该对应服务包含在代码段中,用于干预互斥锁。
14.根据权利要求13所述的方法,其中基于拦截进程对API服务的调用,作用于属于正在执行的进程的软件实体包括:
■修改分配给互斥锁的名称。
15.根据权利要求1-14中任一项所述的方法,其中属于该应用程序的进程在休眠状态中启动,该方法包括:
-唤醒处于休眠状态的进程的执行。
16.一种包含用于执行控制权利要求1-15中任一项所述的计算机系统中硬件资源的方法的指令的可执行代码段;当一应用程序在包括至少一个在这一计算机系统中执行的API的操作系统上运行时,该可执行代码段适于插入到属于该应用程序的进程中。
17.根据权利要求16所述的存储在存储媒介中的代码段。
18.根据权利要求16所述的由载波携带的代码段。
19.一种执行计算机系统中操作系统上的应用程序的方法,包括:
-在休眠状态下,初始化与应用程序相关的进程的执行;
-将权利要求16-18中任一项所述的可执行代码段插入到休眠状态的进程中;
-执行利用插入到进程的可执行代码段,控制在操作系统上执行的应用程序对计算机系统硬件资源使用情况的方法,所述操作系统包括至少一个在该计算机系统上执行的API,其中该方法如权利要求1-15中任一项所述。
20.一种控制在包括至少一个在计算机系统上执行的API的操作系统中执行的应用程序对计算机系统硬件资源使用情况的系统,适于向该系统插入属于该应用程序的进程,系统包括:
-用于拦截从进程到API服务的调用的计算机装置;
-基于拦截进程对API服务的调用,用于作用于属于正在执行的进程的软件实体的计算机装置。
21.一种在其上执行有应用程序的计算机系统,包括存储器和处理器,包含有存储在存储器中的处理器可执行指令,该指令包括以下功能:
-在休眠状态下,初始化与应用程序相关的进程的执行;
-将权利要求16-18中任一项所述的可执行代码段插入到休眠状态的进程中;
-执行方法,其利用插入到进程的可执行代码段,控制在操作系统上执行的应用程序对计算机系统硬件资源的使用情况,所述操作系统包括至少一个在该计算机系统上执行的API,其中该方法如权利要求1-15中任一项所述。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ESP201230580 | 2012-04-19 | ||
ES201230580A ES2439803B1 (es) | 2012-04-19 | 2012-04-19 | Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático |
PCT/ES2013/070248 WO2013156655A1 (es) | 2012-04-19 | 2013-04-18 | Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104364759A true CN104364759A (zh) | 2015-02-18 |
CN104364759B CN104364759B (zh) | 2017-10-27 |
Family
ID=49382970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380031821.5A Active CN104364759B (zh) | 2012-04-19 | 2013-04-18 | 用于控制计算机系统上硬件资源使用情况的方法及系统 |
Country Status (9)
Country | Link |
---|---|
US (1) | US9195505B2 (zh) |
EP (1) | EP2840496B1 (zh) |
JP (1) | JP2015517159A (zh) |
KR (1) | KR102057360B1 (zh) |
CN (1) | CN104364759B (zh) |
DK (1) | DK2840496T3 (zh) |
ES (2) | ES2439803B1 (zh) |
HU (1) | HUE041417T2 (zh) |
WO (1) | WO2013156655A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107547495A (zh) * | 2016-06-24 | 2018-01-05 | 卡巴斯基实验室股份制公司 | 用于保护计算机免受未经授权的远程管理的系统和方法 |
CN109597689A (zh) * | 2018-12-10 | 2019-04-09 | 浪潮(北京)电子信息产业有限公司 | 一种分布式文件系统内存优化方法、装置、设备及介质 |
CN111381879A (zh) * | 2018-12-31 | 2020-07-07 | 华为技术有限公司 | 一种数据处理方法及装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2439803B1 (es) | 2012-04-19 | 2014-10-29 | Universitat Politècnica De Catalunya | Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático |
ES2439804B1 (es) | 2012-04-19 | 2014-10-29 | Universitat Politècnica De Catalunya | Procedimiento, sistema y pieza de código ejecutable para virtualizar un recurso de hardware asociado a un sistema informático |
US20140113705A1 (en) | 2012-10-19 | 2014-04-24 | Nvidia Corporation | Quick-resume gaming |
US11250124B2 (en) * | 2019-09-19 | 2022-02-15 | Facebook Technologies, Llc | Artificial reality system having hardware mutex with process authentication |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974549A (en) * | 1997-03-27 | 1999-10-26 | Soliton Ltd. | Security monitor |
US6823460B1 (en) * | 1999-11-14 | 2004-11-23 | Networks Associates Technology, Inc. | Method and system for intercepting an application program interface |
WO2005106657A2 (en) * | 2004-04-22 | 2005-11-10 | Permeo Technologies, Inc. | System and method for remote application process control |
US20070101435A1 (en) * | 2005-10-14 | 2007-05-03 | Check Point Software Technologies, Inc. | System and Methodology Providing Secure Workspace Environment |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0546568A (ja) * | 1991-08-08 | 1993-02-26 | Internatl Business Mach Corp <Ibm> | 分散アプリケーシヨン実行装置および方法 |
GB0011020D0 (en) * | 2000-05-09 | 2000-06-28 | Ibm | Intercepting system API calls |
US7047337B2 (en) * | 2003-04-24 | 2006-05-16 | International Business Machines Corporation | Concurrent access of shared resources utilizing tracking of request reception and completion order |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
USH2202H1 (en) | 2004-04-28 | 2007-09-04 | Symantec Corporation | Method and apparatus to dynamically hook runtime processes without interrupting the flow of execution |
US7788665B2 (en) * | 2006-02-28 | 2010-08-31 | Microsoft Corporation | Migrating a virtual machine that owns a resource such as a hardware device |
US8042122B2 (en) * | 2007-06-27 | 2011-10-18 | Microsoft Corporation | Hybrid resource manager |
US8255931B2 (en) * | 2008-02-11 | 2012-08-28 | Blue Coat Systems, Inc. | Method for implementing ejection-safe API interception |
US8650570B2 (en) * | 2008-06-02 | 2014-02-11 | Microsoft Corporation | Method of assigning instructions in a process to a plurality of scheduler instances based on the instruction, in which each scheduler instance is allocated a set of negoitaited processor resources |
US8683576B1 (en) * | 2009-09-30 | 2014-03-25 | Symantec Corporation | Systems and methods for detecting a process to establish a backdoor connection with a computing device |
ES2439804B1 (es) | 2012-04-19 | 2014-10-29 | Universitat Politècnica De Catalunya | Procedimiento, sistema y pieza de código ejecutable para virtualizar un recurso de hardware asociado a un sistema informático |
ES2439803B1 (es) | 2012-04-19 | 2014-10-29 | Universitat Politècnica De Catalunya | Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático |
-
2012
- 2012-04-19 ES ES201230580A patent/ES2439803B1/es active Active
-
2013
- 2013-04-18 JP JP2015506270A patent/JP2015517159A/ja active Pending
- 2013-04-18 WO PCT/ES2013/070248 patent/WO2013156655A1/es active Application Filing
- 2013-04-18 US US14/395,488 patent/US9195505B2/en active Active
- 2013-04-18 HU HUE13777888A patent/HUE041417T2/hu unknown
- 2013-04-18 EP EP13777888.2A patent/EP2840496B1/en active Active
- 2013-04-18 CN CN201380031821.5A patent/CN104364759B/zh active Active
- 2013-04-18 KR KR1020147032131A patent/KR102057360B1/ko active IP Right Grant
- 2013-04-18 DK DK13777888.2T patent/DK2840496T3/en active
- 2013-04-18 ES ES13777888T patent/ES2697681T3/es active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974549A (en) * | 1997-03-27 | 1999-10-26 | Soliton Ltd. | Security monitor |
US6823460B1 (en) * | 1999-11-14 | 2004-11-23 | Networks Associates Technology, Inc. | Method and system for intercepting an application program interface |
WO2005106657A2 (en) * | 2004-04-22 | 2005-11-10 | Permeo Technologies, Inc. | System and method for remote application process control |
US20070101435A1 (en) * | 2005-10-14 | 2007-05-03 | Check Point Software Technologies, Inc. | System and Methodology Providing Secure Workspace Environment |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107547495A (zh) * | 2016-06-24 | 2018-01-05 | 卡巴斯基实验室股份制公司 | 用于保护计算机免受未经授权的远程管理的系统和方法 |
CN109597689A (zh) * | 2018-12-10 | 2019-04-09 | 浪潮(北京)电子信息产业有限公司 | 一种分布式文件系统内存优化方法、装置、设备及介质 |
CN109597689B (zh) * | 2018-12-10 | 2022-06-10 | 浪潮(北京)电子信息产业有限公司 | 一种分布式文件系统内存优化方法、装置、设备及介质 |
CN111381879A (zh) * | 2018-12-31 | 2020-07-07 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN111381879B (zh) * | 2018-12-31 | 2022-09-02 | 华为技术有限公司 | 一种数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2013156655A1 (es) | 2013-10-24 |
JP2015517159A (ja) | 2015-06-18 |
ES2439803A1 (es) | 2014-01-24 |
EP2840496A4 (en) | 2015-12-16 |
US20150121402A1 (en) | 2015-04-30 |
US9195505B2 (en) | 2015-11-24 |
CN104364759B (zh) | 2017-10-27 |
HUE041417T2 (hu) | 2019-05-28 |
ES2439803B1 (es) | 2014-10-29 |
EP2840496A1 (en) | 2015-02-25 |
EP2840496B1 (en) | 2018-08-01 |
DK2840496T3 (en) | 2018-11-26 |
ES2697681T3 (es) | 2019-01-25 |
KR102057360B1 (ko) | 2020-01-22 |
KR20150004854A (ko) | 2015-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104364759A (zh) | 用于控制计算机系统上硬件资源使用情况的方法、系统以及可执行代码段 | |
US10074206B1 (en) | Network-optimized graphics library for virtualized graphics processing | |
US10628908B2 (en) | Application-specific virtualized graphics processing | |
US8615579B1 (en) | Managing virtual machine migration | |
US8099548B2 (en) | Power efficient media playback on general purpose portable devices | |
US10198189B2 (en) | Data allocation among devices with different data rates | |
US10255652B2 (en) | Dynamic and application-specific virtualized graphics processing | |
US20130339956A1 (en) | Computer system and optimal arrangement method of virtual machine in computer system | |
CN104731642A (zh) | 用于高度并行作业的回填调度方法和系统 | |
US20120210326A1 (en) | Constrained Execution of Background Application Code on Mobile Devices | |
CN104380256A (zh) | 用于虚拟化与计算机系统关联的硬件资源的方法、系统和执行代码段 | |
CN111124475B (zh) | 存储管理的方法、电子设备和计算机可读存储介质 | |
CN107783833B (zh) | 一种终端后台应用程序的管理方法及装置 | |
US9244825B2 (en) | Managing CPU resources for high availability micro-partitions | |
WO2023160167A1 (zh) | 一种图像处理方法、电子设备及存储介质 | |
US9043575B2 (en) | Managing CPU resources for high availability micro-partitions | |
CN112000439A (zh) | 一种实现云原生应用管理虚拟机的方法 | |
CN111078628A (zh) | 一种多盘并发数据迁移方法、系统、装置及可读存储介质 | |
CN113535251A (zh) | 一种线程管理方法及装置 | |
CN115543551A (zh) | 线程调度方法、装置及电子设备 | |
CN109933358B (zh) | 用于减少计量设备程序升级量的控制方法 | |
CN117075971A (zh) | 休眠方法及其相关设备 | |
CN106127092A (zh) | 一种cos系统应用剥离的智能卡及其工作方法 | |
US9886737B2 (en) | Local-to-remote migration for virtualized graphics processing | |
CN104714924B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |