[发明专利]控制动态链接库DLL加载状态的方法和系统有效
申请号: | 200810170786.6 | 申请日: | 2008-10-29 |
公开(公告)号: | CN101727345A | 公开(公告)日: | 2010-06-09 |
发明(设计)人: | 刘之育;王华勇;侯锐;王艳琦 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45;G06F9/445 |
代理公司: | 北京市中咨律师事务所 11247 | 代理人: | 于静;杨晓光 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 控制 动态 链接 dll 加载 状态 方法 系统 | ||
技术领域
本发明涉及流应用程序和动态链接库(DLL,Dynamic Linked Library),更具体地,涉及在流应用程序中控制动态链接库的加载和卸载 的装置和方法。
背景技术
动态链接库(DLL)是一个包含可由多个程序同时使用的代码和数据 的库。在现有的操作系统中,大量功能是由动态链接库(DLL)提供的。例 如,在Windows操作系统中,Comdlg32DLL执行与对话框有关的常见函 数。因此,每个程序都可以使用该DLL中包含的功能来实现“打开”对话框。 此外,在操作系统上运行的应用程序的很多功能也可以是由DLL提供的。 例如,某些应用程序可能包含很多不同的模块,而该程序的每个模块都包 含在DLL中并从中分发。
使用DLL有助于促进代码的模块化、代码重用、内存的有效使用和减 少所占用的磁盘空间。因此,操作系统和程序能够更快地加载和运行,并 且在计算机中占用较少的磁盘空间。
在目前的运行模式下,操作系统在一个DLL第一次被调用时将其加 载,在调用该DLL的程序结束时将其卸载,或者直到其后需要内存时才卸 载不再需要的DLL。然而,在多数流式应用程序或流应用程序(streaming application)中,主程序通常是常年运行的。在主程序运行期间,通常会 调用大量的DLL。在这些大量的DLL中,大部分都是周期性调用和激活 (active)的。然而,对于流程序语言来说,由于其不支持分支结构,通常 不能对DLL加载卸载的条件进行定义,因此无法对DLL的加载卸载状态 进行适当的控制。对于操作系统来说,系统只能判断一个程序是否结束, 而无法自己判断一个运行之中的程序所调用的DLL是否需要卸载。因此, 尽管有些DLL在程序运行中已经不再需要,但是系统仍然不能将其识别出 来,因而不能在适当时候对其进行加载或卸载。
不必要的运行DLL对于系统来说会带来一些问题。首先是内存空间的 浪费。通过对系统运行线程的监视,运行DLL时一个线程常常会占用上百 兆的内存空间。其次,对于已经加载的DLL,系统必须定时地核查、监控 该DLL的运行状态以确认其正常运行。因此如果不能适时卸载不需要的 DLL,系统核查这些不再需要的DLL时所需的资源和时间也是一种浪费。
因此,希望提供一种方案,能够对DLL的加载卸载状态进行控制,从 而提高系统的资源利用率。
发明内容
考虑到上述问题,本发明提供一种在流程序中控制DLL加载状态的方 法、编译器和系统。
根据本发明第一方面,提供一种流程序编译器,用于对包括至少一个 操作模块的流程序进行编译,所述至少一个操作模块在所述流程序执行期 间需要调用至少一个DLL,所述编译器包括:关联表生成单元,被配置为 根据用户定义的至少一条规则生成关联表,该关联表包括至少一个条目, 每一个条目指示流程序的一种流分支和该流分支对应的至少一个操作模 块;以及触发器生成单元,被配置为根据所述用户定义的至少一条规则生 成触发器,所述触发器用于判断所述流程序适用的条件,将该条件映射至 流分支,并发出指示该流分支的触发信号。
根据本发明第二方面,提供一种控制流程序中动态链接库(DLL)加 载状态的装置,所述流程序包括至少一个操作模块,所述至少一个操作模 块在所述流程序执行期间需要调用至少一个DLL,所述装置包括控制器, 所述控制器包括:操作模块确定单元,被配置为响应于接收指示流分支的 触发信号,查找记录有流分支和操作模块对应关系的关联表,确定所述流 分支对应的操作模块;以及DLL控制单元,被配置为根据所述流分支对应 的操作模块卸载不使用的操作模块所调用的DLL。
根据本发明第三方面,提供一种控制流程序中DLL加载状态的方法, 所述流程序包括至少一个操作模块,所述至少一个操作模块在所述流程序 执行期间需要调用至少一个DLL,所述方法包括:响应于接收指示流分支 的触发信号,查找记录有流分支和操作模块对应关系的关联表,确定所述 流分支对应的操作模块;以及根据所述流分支对应的操作模块卸载不使用 的操作模块所调用的DLL。
通过本发明以上方面的装置和方法,用户可以通过以流程序定义DLL 的控制逻辑或规则,来实现对DLL加载状态的自由控制,从而节省大量的 计算资源。
附图说明
以下结合附图说明本发明的具体实施例,其中:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810170786.6/2.html,转载请声明来源钻瓜专利网。