CN1122228C - 减少运行时间存储空间需求的计算机系统和方法 - Google Patents
减少运行时间存储空间需求的计算机系统和方法 Download PDFInfo
- Publication number
- CN1122228C CN1122228C CN97115955A CN97115955A CN1122228C CN 1122228 C CN1122228 C CN 1122228C CN 97115955 A CN97115955 A CN 97115955A CN 97115955 A CN97115955 A CN 97115955A CN 1122228 C CN1122228 C CN 1122228C
- Authority
- CN
- China
- Prior art keywords
- code
- architecture
- those
- working time
- storer
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/445—Program loading or initiating
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
一种计算机网络中的客户计算机系统及其方法,通过该计算机网络以体系结构中性码的形式提供具有方法的程序。当方法是根据方法的体系结构中性码产生的体系结构专用码的形式时,客户计算机能够以减少的运行时间存储空间需求来执行程序。该客户计算机系统包括:网络通信接口、网络通信管理器、代码产生器、执行控制器、代码压缩器。其中代码压缩器分别压缩未调用方法和解压缩调用方法的体系结构专用码以减小运行时间存储器空间需求。
Description
本发明涉及以减少的运行时间存储空间需求执行程序的计算机系统和方法。本发明尤其涉及在网络中执行根据经由网络传送的体系结构中性码产生的体系结构专用码以使对体系结构专用码的运行时间存储空间需求得到减少的计算机系统和方法。
现在建立或配置计算机系统来利用其代码是体系结构中性(AN)二进制格式(以下称为AN码)的程序的特性。于是这些程序的AN码与计算机系统的具体体系结构或平台无关。
本说明书中的术语“体系结构”指一系列型号的计算机的操作特性。特定体系结构的例子包括Macintosh计算机、采用DOS或Windows操作系统的IBM PC兼容计算机、运行Solaris操作系统的Sun Microsystems计算机和采用Unix操作系统的计算机系统。
本说明书中的术语“体系结构专用(AS)”指这样的要求,即二进制格式的某些程序的代码(以后称为AS码)仅在具有特定计算机体系结构的计算机系统上被执行。因此,具有利用普通编程语言(例如C语言)书写并对特定体系结构(例如IBM兼容PC)编译的代码的程序只能在该体系结构或该体系结构的仿真器上运行。
本说明书中的术语“体系结构中性”指其编译代码能够在具有不同体系结构的各种计算机系统上被执行的程序。例如,特定体系结构的计算机系统可以利用Java(Sun Microsystems的商标)虚拟机模块来进行设计。对于Java虚拟机的指令集,Java虚拟机模块能够执行具有利用Java编程语言书写和被编译为字节码的代码(以后称为Java字节码)的程序。Java字节码与计算机系统的特定体系结构无关。
具有AN码的程序的重要特性包括了它们的可移植性。例如,由于AN码形式的程序能够在构成用来执行AN码的任何计算机系统上执行,而不管该计算机系统的具体体系结构如何,所以可以容易地通过网络把这些程序从一个计算机系统移植到另一个计算机系统。例如,编译为Java字节码的程序可以在具有Java虚拟机模块的任何计算机系统上执行,并可容易地利用HotJava(Sun Microsystems的商标)网络通信管理器通过网络从一个计算机系统移植到另一个计算机系统。
此外,与被编译成Java字节码的程序的可移植性有关的另一重要特性是这些程序的可验证性。具体来说,Java虚拟机模块能够容易地验证这些程序满足预定的完整性标准。这种完整性标准包括堆栈和数据类型使用约束,这种约束保证Java字节码不能够上溢或下溢Java虚拟机模块的堆栈,并且Java字节码形式的全部指令只使用其数据类型满足对这些指令的数据类型约束的数据。因此,Java字节码形式的程序不能够伪造目标指针,并且一般来说只能够访问已明确允许用户使用的系统资源。
出于这些原因,把计算机系统设计成执行通过网络接收的AN码形式的程序。实际上,在某些情况下,由于程序被直接装入计算机系统的运行时间(即执行时间)存储器(例如随机存取存储器(RAM)),所以这种计算机系统甚至可以不需要辅助存储器(例如硬盘)。这样一来,这种计算机系统的用户就在软件购买、安装、配置和更新的周期之外,这种周期是软件产品的当前特点。
AN码的上述特点使其特别适合于供被连网和根据需要被装入AN码的小型或廉价计算机系统使用。例如,这种计算机系统可以是视频游戏机、个人数字助理(PDA)、蜂窝电话、或其它类似的计算机系统或计算机操作设备。
但是,遗憾的是AN码形式的程序的运行比AS码形式的相同程序的运行要慢。例如,Java虚拟机模块执行的Java码形式的程序的运行通常比AS码形式的相同程序慢了2.5至20倍。因此,计算机系统的用户可能发觉需要把通过网络接收的程序的AN码生成(即变换为)AS码,以便在计算机系统上执行。在这种情况下,计算机系统可能还包括代码产生器,一旦接收到程序的AN码,该代码产生器就将其生成相应的AS码,以便在计算机系统的特定体系结构上执行。
在上述计算机系统中,价格是极其重要的。实际上,构成这种计算机系统的最主要的成本之一是执行被装入程序所需的运行时间存储器的数量。因此,减少这些计算机系统所需的运行时间存储器的数量是非常重要的,这是因为这种减少提供了竞争性强的优点。
遗憾的是根据AN生成的AS码比原始AN码大得多。例如,根据Java字节码生成的AS码通常是Java字节码大小的2至5倍。于是固定数量的运行时间存储器能够存储的编译AS码要比能够存储的AN码少得多。但是,如上所述,AS码比生成该AS码的AN码快得多,并且AS码也许是获得满足要求的性能的唯一方法。
此外,在上述那样计算机系统中,也许不能够对辅助存储器进行分页。在这种情况下,当需要生成的AS码在运行时间存储器内的空间时,可以在运行时间存储器内对生成的AS码进行高速缓存和冲洗(flush)。但是,一旦要继续执行被冲洗程序,就必需通过网络再次下载原始AN码并将其生成为AS码。这就会显著影响程序的执行速度。此外,即使在能够对辅助存储器进行分页的计算机系统中,从辅助存储器检索AS码所需的时间可能过长。
在本发明中,用AS码的压缩和解压缩来减少AS码在运行时间存储器内的存储成本。由于这要比冲洗AS码和重新产生AS码快得多,所以压缩和解压缩不显著影响AS码的执行速度。
总之,本发明是计算机网络中的客户计算机系统和相关的方法,通过该网络以体系结构中性码的形式提供具有方法的程序。当方法是根据方法的计算机体系结构中性码产生的体系结构专用码的形式时,客户计算机能够以减少的运行时间存储空间需求执行程序。客户计算机系统包括运行时间存储器、通信接口、网络通信管理器、执行控制器、代码产生器以及代码压缩器。
网络通信接口接收体系结构中性码形式的方法。网络通信管理器把接收到的方法的体系结构中性码无压缩地装入运行时间存储器的可用空间。
代码产生器然后根据装入的方法的体系结构中性码在运行时间存储器内产生方法的未压缩体系结构专用码。执行控制器控制程序的执行,以便在不同时刻调用或不调用方法。
代码压缩器在存储器内压缩未被调用方法中的那些可压缩方法的体系结构专用码。这样就在运行时间存储器内得到可用空间。代码压缩器还在运行时间存储器的可用空间内解压缩方法中的那些可解压缩方法的体系结构专用码,以便方法中的那些可解压缩方法可被调用。
在一个实施例中,一旦方法中的那些可解压缩方法要被调用,代码压缩器就解压缩方法中的那些可解压缩方法的压缩体系结构专用码。
在另一实施例中,在预定时间间隔之后,代码压缩器解压缩方法中的那些可解压缩方法的压缩体系结构专用码。
在再一实施例中,一旦方法中的那些可压缩方法不再被调用,代码压缩器就压缩方法中的那些可压缩方法的未压缩体系结构专用码。
在还一实施例中,当需要运行时间存储器内的空间但得不到时,代码压缩器就压缩方法中的那些可压缩方法的未压缩体系结构专用码。此外,在这一实施例,客户计算机系统可以进一步包括一调用顺序表,该调用顺序表按照最早被调用方法至最近被调用方法的顺序列出当前未被调用的那些方法。这样一来,当需要运行时间存储器内的空间但得不到时,方法中的那些可压缩方法就都是在该调用顺序表中的具有未压缩体系结构专用码的最早被调用的方法。
在另一实施例中,当需要运行时间存储器内的空间但得不到时,代码压缩器就将方法中的那些可被冲洗方法的压缩体系结构专用码从运行时间存储器中冲洗出去。
作为以上实施例的一替代实施例,客户计算机系统可进一步包括一辅助存储器。在这种情况下,当需要运行时间存储器内的空间但得不到时,代码压缩器就把方法中的那些可存储方法的压缩体系结构专用码存储在该辅助存储器内。代码压缩器从该辅助存储器中检索方法中的那些其压缩体系结构专用码将要被解压缩的可检索方法的压缩体系结构专用码。
结合附图参看以下详细说明和所附的权利要求书将更容易理解本发明的其它目的和特点,附图中:
图1是采用了本发明的客户计算机系统的方框图。
图2是客户计算机系统的操作的功能方框图。
图3是客户计算机系统的压缩方法的流程图。
图4是客户计算机系统的解压缩方法的流程图。
图5表示客户计算机系统的一替代实施例。
图6表示客户计算机系统的该替代实施例的操作的功能方框图。
参看图1,该图表示本发明的计算机网络100,该计算机网络100包括一个或多个客户计算机系统102、一个或多个服务器计算机系统104和网络通信连接106。
客户计算机系统102通过网络通信连接106与服务器计算机系统104连接。网络通信连接可以是局域网或广域网、互联网(Internet)或某些其它类型的网络通信连接。
每一服务器计算机系统104包括中央处理单元(CPU)110、用户接口112、网络通信接口116和存储器118。网络通信接口使每一服务器计算机系统能够通过网络通信连接106与客户计算机系统102通信。
每服务器计算机系统104的存储器118存储操作系统120、网络通信管理器122和程序145。操作系统和通信管理器都在CPU 120上运行。操作系统响应用户利用用户接口112发送的或网络通信接口116通过网络通信连接106从客户计算机系统102的用户接收的命令,控制并协调网络通信管理器的运行。
程序145包括方法147。在本说明书中,在程序执行期间各个时刻被调用和不被调用的程序的任何分离的段或部分都被看作是方法。
每一服务器计算机系统104的方法147包含独立于客户计算机系统102的具体体系结构(即平台)的AN语言的体系结构中性(AN)码。这些程序被从特定的编程语言编译成为AN码。在最佳实施例中,这些程序用Java编程语言书写,并被编译成为Java字节码。此外,这些程序被包括在组成了按照面向对象方式被编程的软件程序的具有方法的对象类内。
如后面将更详细地说明的那样,一旦用户请求,就利用网络通信管理器122把方法147传送给客户计算机系统102。因此,这些方法的AN码被看作是网络移动码。
每一客户计算机系统102可以是视频游戏机、个人数字助理(PDA)、蜂窝电话、台式计算机、或要求少量运行时间存储器的其它计算机系统或计算机操作设备。此外,每一客户计算机系统包括中央处理单元(CPU)126、用户接口128、网络通信接口132、只读存储器(ROM)134和运行时间(即执行时间)随机存取存储器(RAM)136。网络通信接口使客户计算机系统能够通过网络通信连接106与服务器计算机系统104通信。
每一客户计算机系统102的RAM 136存储操作系统138、网络通信管理器140、虚拟机模块142、代码产生器144以及代码压缩器146,它们都装载自ROM134。该RAM还存储具有方法147和/或方法148的程序145,方法147包含下载AN码,而方法148包含根据下载AN码产生的体系结构专用(AS)码。操作系统、网络通信管理器、虚拟机模块、代码编译器、代码压缩器以及程序都在CPU 126上被运行。操作系统响应用户利用用户接口128发送的命令,控制并协调网络通信管理器、虚拟机模块、代码编译器、代码压缩器以及程序的执行。
如上所述,一旦用户请求,就从服务器计算机系统104接收包含AN码的方法147。利用在最佳实施例中是Hot Java网络通信管理器的网络通信管理器140获得这些方法。该网络通信管理器然后把这些方法装入RAM136。
虚拟机模块142的代码校正程序151验证装入方法147的AN码满足预定的完整性标准。如上所述,这一标准可以包括堆栈和数据类型使用约束,以确保装入方法不上溢或下溢虚拟机模块的堆栈,并且所有指令只使用其数据类型与这些指令的数据类型约束一致的数据。在最佳实施例中,虚拟机模块是Java虚拟机模块。
包含AS码的方法148最初包含利用网络通信管理器140从服务器计算机系统104获得并被装入RAM 136的AN码。但这些程序的原始AN码已被代码产生器144生成AS码。AS码是在客户计算机的特定体系结构上可执行的。如上所述,由于生成的AS码的执行可以比相应的AN码的执行快,所以用户可能希望有被生成AS码的AN码的程序。
此外,当存储在RAM 136内的预定的AS码产生标准150得到满足时,包含AS码的方法148就产生了它们的AN码。AS码产生标准由用户利用用户接口128进行输入,以后将对其作更详细的描述。
虚拟机模块142的执行控制器153控制方法147和/或148的执行。具体来说,执行程序解释方法147的AN码以便在客户计算机系统102的特定体系结构上执行,并使这些方法能够调用包含AS码的方法148以便在该特定体系结构上执行。在方法的执行期间产生的执行数据149存储在RAM 136内。此外,如果网络通信管理器140、代码产生器144和/或代码压缩器146都是AN码,则执行控制器还控制它们的执行。
此外,为了保持低的客户计算机系统102的RAM空间需求,代码压缩器146在各个时刻在RAM 136内压缩和解压缩方法147和/或148的代码。对可压缩和可解压缩的方法这样做,这是因为它们分别满足存储在RAM 136内的、由用户利用用户接口128输入的预定的压缩和解压缩标准152和154。以下将更详细描述压缩和解压缩标准。
利用方法状态数据结构155保持方法147和/或148的存储和调用状态。方法状态数据结构被网络通信管理器140、执行控制器153、代码产生器144和代码压缩器146进行更新。
图2表示各客户计算机系统102在RAM 136内的压缩和解压缩方法147和/或148时的操作的功能方框图。此外,图3和4分别表示优选的压缩和解压缩方法300和400。
参看图1-3,当用户请求执行客户计算机系统104之一中的程序145之一时,用户的客户计算机系统102从服务器计算机系统获得被请求程序的各个方法147(图3的步骤302)。当用户利用用户接口128发出命令来从服务器计算机系统下载并执行程序时就完成了各个方法147的获得。作为响应,操作系统120调用网络通信管理器140,后者产生表示已作出了这种请求的信息。网络通信接口132然后把该信息传送给服务器计算机系统。
服务器计算机系统104的网络通信接口116接收传送的信息。作为响应,服务器计算机系统的网络通信管理器122把被请求程序145的方法147提供给网络通信接口,该网络通信接口然后把方法传送给用户的客户计算机系统102。
传送的方法147被用户的客户计算机系统102的网络通信接口132接收。作为响应,网络通信管理器140则判断在RAM 136内是否有足够的空间用于装入所接收的方法(图3的判断步骤304)。如果有,则网络通信管理器将这些方法的未压缩的AN码装入RAM内的可用空间(图3的步骤306)。这样一来,这些方法就与其它程序45的先前装入的方法147一道被装入RAM。在装入这些方法时,网络通信管理器更新方法状态数据结构155的方法存储状态表200,以便区分方法和被这些方法占据的RAM 136内的存储空间的相应指针。此外,网络通信管理器还更新方法状态表来指出方法的AN码是未被压缩的(U)。
网络通信管理器140然后调用虚拟机模块142的代码校正程序151。作为响应,该代码校正程序验证最近被装入的方法147的AN码满足上述的预定完整性标准(图3的步骤307)。
网络通信管理器140然后判断最近被装入的方法147中的任一方法的AN码是否要被编译成为AS码(图3的判断步骤308)。根据AS码产生标准150进行这种判断。正如本领域的普通技术人员都知道的那样,用户可以从广泛的任选项中并根据用户的客户计算机系统特有的一些条件选择和/或调整AS码产生标准。例如,AS码产生标准可以规定在这些方法被装入时要把所有下载方法的AN码生成AS码,或者规定没有具有AN码的下载方法在它们被下载时要使它们的AN码被生成AS码,或者规定只有那些具有特定大小或类型的AN码的下载方法在它们被下载时才要使它们的AN码被生成AS码。
如果最近被装入的方法147中的任何方法要使它们的AN码被生成AS码,则网络通信管理器就调用代码产生器144。代码产生器判断RAM 136内是否有足够的空间用于把这些方法的AN码生成AS码(图3的判断步骤310)。如果有,则代码产生器就在可用空间内产生这些方法的AS码(图3的步骤312)并更新方法存储状态表200内的指针,以便指向被生成的AS码占据的空间。这样一来,这些方法与其AN码已被生成AS码的其它先前装入方法一道被存储在RAM内作为包含AS码的方法148。
具有最近被装入的包含AN码的方法147和/或最近被装入并被生成AS码的包含AS码的方法148的程序145则与任何先前装入的程序145一道在执行程序的控制下被执行(图3的步骤314)。如上所述,执行控制器解释方法147的AN码以便在用户的客户计算机系统102的特定体系结构上执行,并使这些程序能够调用包含AS码的方法148以便在该特定体系结构上执行。
因为可以使装入方法147和/或148的每一个进入休眠状态等,所以它可以在各个时刻都不被调用。一旦程序执行控制器确认出现了这种情况,它就将该方法加入到方法状态数据结构155的调用顺序表(LRI)202,以便指出该方法目前不被调用。LRI表中的方法按照从最近被调用至最早被调用的次序列出。
如上所述,为了减少RAM 136的空间需求,满足了预定压缩标准152的每一装入方法147和/或148的代码被代码压缩器146进行压缩。在最佳实施例中,压缩标准规定可压缩方法147或148的代码应在(1)需要RAM 136内的空间但得不到时以及在(2)该方法是LRI表202中的尚未使其代码被压缩的最早被调用的方法。
一旦网络通信管理器140确认在RAM 136内没有可用于装入被服务器计算机系统104接收的一个或多个方法(图3的判断步骤304)的空间,它就调用代码压缩器146。作为响应,该代码压缩器就压缩LRI表202中的最早被调用方法的代码,直到有足够的空间为止(图3的步骤316)。代码压缩器还更新方法存储状态表200,以便区分该方法的压缩代码的存储空间的相应指针和指出该方法的代码已被压缩(C)。网络通信管理器然后如上所述地把对其已有可用空间的方法装入到该可用空间(图3的步骤306)。
代码压缩器146可以使用本领域众所周知的任何快速压缩技术。此外,代码压缩器还可以使用单独的压缩技术来对方法147的AN码和方法148的AS码进行最佳压缩。
此外,一旦代码产生器需要RAM内的空间来编译最近装入的一个或多个方法147(图3的判决步骤310),则代码产生器144就调用代码压缩器146。如同在最近装入的方法的情形一样,该代码压缩器压缩LRI表202中的最早被调用方法的代码,直到有足够的空间为止(图3的步骤318),并更新方法存储状态表200,以便区分该方法的压缩代码的存储空间的相应指针和指出该方法的代码已被压缩(C)。如上所述,代码产生器然后在该可用空间内产生对其已有可用空间的方法的AS码(图3的步骤312)。
另外,在装入的方法147和/或148被调用时,它们就产生执行数据。对于被执行控制器153确认为是被调用的(图3的判断步骤320)和在RAM 136内有空间可用来存储执行数据的(判断步骤302)这些方法中的任何方法,执行控制器把执行数据存储在RAM内(图3的步骤324)。
但是,对于被执行程序153确认为是可执行的(图3的判断步骤320)和在RAM内虽没有但需要用来存储执行数据的空间的(判断步骤322)装入方法147和/或148中的每一个,执行程序调用代码压缩器146。如同在需要RAM内的空间的先前情形一样,代码压缩器压缩LRI表202中的最早被执行方法的代码,直到有足够的空间为止(图3的步骤326)。如上所述,代码压缩器更新方法存储状态表200,以便区分该方法的压缩代码的存储空间的相应指针和指出该方法的代码已被压缩(C)。如上所述,执行控制器然后把执行数据存储在RAM的可用空间内(图3的步骤324),并继续具有其执行数据已被存储的方法的程序的执行(图3的步骤314)。
此外,参看图1、2和4,一旦在RAM 136内有可用空间,被压缩的并满足了预定解压缩标准154的每一装入方法147和/或148就被代码压缩器146进行解压缩。在最佳实施例中,解压缩可解压缩方法的代码的预定解压缩标准仅规定:该方法的代码是压缩的,且在该方法要再次被调用时,该方法的代码被解压缩。
因此,每当执行控制器153确认装入方法147和/或148之一要被调用时(图4的判断步骤402),它就判断该方法的代码是否被进行了压缩(图4的判断步骤404)。根据方法存储状态表200进行这种判断。如果该方法的代码没有被压缩,则该方法就被执行控制器调用(图4的步骤406)。当其不再被调用时,其代码就可被代码压缩器146按照上述方式进行压缩。
但是,如果要被调用的方法147或148的代码被进行了压缩,则执行控制器就调用代码压缩器146来解压缩该方法的代码。代码压缩器判断在RAM136内是否有足够的空间用来解压缩该方法的代码(图4的判断步骤408)。如果有足够的空间,代码压缩器就在该可用空间内解压缩该方法的代码(图4的步骤410)。在这样做的时候,它还更新方法存储状态表200,以便区分未压缩代码的存储空间的相应指针和指出该方法的代码现在未压缩(U)。
但是,如果没有足够的空间,则代码压缩器146就压缩LRI表202中的其代码尚未被压缩的最早被执行方法的代码,直到有可用空间为止(图4的步骤412)。按照上述方式进行这种压缩。在有可用空间之后,要被解压缩的方法147或148的代码就按照刚才所描述的方式被代码压缩器在可用空间内进行解压缩,然后被执行控制器153调用(图4的步骤410和406)。
根据以上所述,本发明显然在保持执行速度的同时减小了运行时间存储器的空间。这是因为当需要RAM内的空间时,通过压缩装入方法147和/或148,不需要把它们从RAM 136中冲洗出去和再次从服务器计算机系统104下载的缘故。此外,在包含AS码的方法的情形中,由于这些方法不需要重新下载和再次产生,所以还保持了执行速度。但是,本领域的普通技术人员都懂得,可以用其它替代的实施例来提供相同的优点。
具体来说,上述压缩标准152规定:当需要RAM 136内的空间但得不到时,就压缩具有未压缩代码的最早被调用方法147和/或148的代码。但是,压缩标准可以由用户从广泛的选择范围中进行选择,并且以用户的客户计算机系统102特有的一些条件为基础。例如,压缩标准可简单地规定一旦程序不再被调用就压缩每一方法的代码。或者,可以规定仅在有时间进行压缩时才压缩某些方法的代码。作为上述任一压缩标准的额外的变化,压缩标准可规定只压缩特定大小或类型的方法的代码。
此外,如上所述,解压缩标准154规定了一旦其代码是压缩码的方法147或148要被调用,该方法就使其代码被解压缩。但是,解压缩标准可以规定在预定时间间隔过去之后才解压缩压缩码。在这种情况下,数据压缩器将包括对时间间隔进行计时的定时器。在一个例子中,可将这一技术用于被置于休眠状态一段已知的时间间隔的方法,以便该方法在此时间间隔内被压缩、然后就在其要被唤醒之前被解压缩。或者,在另一个例子中,该技术可用于正在等待数据的方法,即选择压缩该方法的时间间隔以便预测什么时候可将数据提供给该方法。
在另一实施例中,压缩标准152还可以包括规定何时把装入方法147和/或148冲洗出RAM 136的冲洗标准。例如,该冲洗标准可以规定:如果在RAM内再也没有不被调用的装入方法,则LRI表202中的具有压缩码的最早被调用的方法就是可冲洗的并将被从RAM 136中冲洗出去,直到有足够的空间为止。因此,一旦方法被从RAM中冲洗出去并随后被再次调用,网络通信管理器就必需从按照上述方式提供方法的服务器计算机系统104中重新下载方法。执行控制器153通过消除对任何被冲洗方法的引用来更新方法存储状态表200。
此外,作为最近描述实施例的变化,AS码产生标准150可以规定已使它们的AN码被生成AS码的方法148的AN码应当与生成的AS码一道被保留在RAM 136内。这样一来,如果该方法的AS码不得不从RAM中被冲洗出去,该方法的AN码就可被重新生成该方法的AS码。这将节省从服务器计算机系统重新下载该方法的AN码所需的时间。此外,AN码可以在RAM内被压缩,直到需要它被再生成AS码为止。
在最近描述实施例的另一种变化中,方法148的下载AN码一开始将在执行控制器153的控制下被执行。然后,执行控制器将根据AN码的运行时间行为收集统计资料,如果所收集的统计资料满足AS码产生标准150中的某些阈值标准,就将该AN码生成AS码。例如,执行控制器可以保持AN码运行次数的计数值。一旦该计数值超过了阈值次数,执行控制器就调用代码产生器144来把AN码生成AS码。
由于从执行速度的观点来看把装入方法147和/或148冲洗出RAM 136是昂贵的,所以如图5和6所示,用辅助存储器500来存储将要被冲洗的方法。在这种情况下,以上讨论的压缩标准152将包括辅助存储标准156,该标准类似于刚才讨论的冲洗标准,用来存储因满足辅助存储标准而可存储的方法。但是,在这种情况下,代码压缩器146将更新方法存储状态表200内的指针来指向在辅助存储器内的这些方法。此外,对于在这样的意义上是可被检索的方法,即它们的代码被进行了压缩、被存储在辅助存储器内以及要被解压缩,将从辅助存储器中检索这些方法的代码,然后按照上述方式在RAM 136内对它们进行解压缩。
此外,在客户计算机系统102包括辅助存储器500的实施例中(例如连网的台式计算机),可以从服务器计算机系统104中把方法147下载至该辅助存储器。然后,就可以从该辅助存储器而不是从该服务器计算机系统104直接地把这些方法装入RAM 136。此外,在这样的实施例中,操作系统138、网络通信管理器140、虚拟机模块142和代码压缩器146都可以存储在该辅助存储器内,并可从该辅助存储器中被装入RAM。
在还一实施例中,可从服务器计算机系统104之一中把操作系统138、网络通信管理器140、虚拟机模块142、代码产生器144以及代码压缩器146下载至客户计算机系统102的RAM 136。可以按照与以上对于服务器计算机系统的方法147所描述的方式相同的方式进行这种下载。
最后,虽然参照一些具体实施例描述了本发明,但这种描述是对本发明的一种说明而不是对其进行限制。不超出由所附权利要求书所限定的本发明的精神和范围,本领域的普通技术人员可以作出各种改进。
Claims (16)
1.在一计算机网络中,通过该计算机网络以体系结构中性码的形式提供具有方法的程序,当方法是根据方法的体系结构中性码产生的体系结构专用码的形式时,一种客户计算机系统以减少的运行时间存储空间需求来执行程序,该客户计算机系统包括:
运行时间存储器;
接收体系结构中性码形式的方法的网络通信接口;
把接收到的方法的体系结构中性码按未压缩的形式装入运行时间存储器的可用空间的网络通信管理器;
根据装入的方法的体系结构中性码在运行时间存储器内产生方法的未压缩体系结构专用码的代码产生器;
控制程序的执行,由此在不同的时刻调用和不调用方法的执行控制器;
代码压缩器,(A)在运行时间存储器内压缩未被调用方法中的那些可压缩方法的未压缩体系结构专用码,由此在运行时间存储器内得到可用空间,和(B)在运行时间存储器的可用空间中解压缩方法中的那些可解压缩方法的压缩体系结构专用码,以便方法中的那些可解压缩方法可被调用。
2.权利要求1的客户计算机系统,在该系统中,一旦要调用方法中的那些可解压缩方法,代码压缩器就解压缩方法中的那些可解压缩方法的压缩体系结构专用码。
3.权利要求1的客户计算机系统,其中的代码压缩器在预定时间间隔之后解压缩方法中的那些可解压缩方法的压缩体系结构专用码。
4.权利要求1的客户计算机系统,在该系统中,一旦方法中的那些可压缩方法不再被调用,代码压缩器就压缩方法中的那些可压缩方法的未压缩体系结构专用码。
5.权利要求1的客户计算机系统,在该系统中,当需要运行时间存储器内的空间但得不到时,代码压缩器就压缩方法中的那些可压缩方法的未压缩体系结构专用码。
6.权利要求1至5中的任一权利要求的客户计算机系统,其中所述运行时间存储器还包括一存储器,用于存储按照最早被调用方法至最近被调用方法的顺序列出方法中的那些当前未被调用方法的调用顺序表;
其中当需要运行时间存储器内的空间但得不到时,方法中的那些可压缩方法是调用顺序表中的具有未压缩体系结构专用码的最早被调用的方法。
7.权利要求6的客户计算机系统,在该系统中,当需要运行时间存储器内的空间但得不到时,代码压缩器就把方法中的那些可被冲洗方法的压缩体系结构专用码从运行时间存储器中冲洗出去。
8.权利要求6的客户计算机系统,还包括:
辅助存储器;
代码压缩器,(A)当需要运行时间存储器内的空间但得不到时,把方法中的那些可存储方法的压缩体系结构专用码存储在该辅助存储器内,和(B)从该辅助存储器中检索方法中的那些其压缩体系结构专用码将要被解压缩的可被检索的方法的压缩体系结构专用码。
9.在一计算机网络中,通过该计算机网络以体系结构中性码的形式提供具有方法的程序,当方法是根据方法的体系结构中性码产生的体系结构专用码的形式时,一种方法用于以减少的运行时间存储空间需求来执行程序,该方法包括以下步骤:
提供运行时间存储器;
接收体系结构中性码形式的程序;
把接收到的方法的体系结构中性码按未压缩的形式装入运行时间存储器的可用空间;
根据装入的方法的体系结构中性码在运行时间存储器内产生方法的未压缩体系结构专用码;
执行程序,由此在不同的时刻调用和不调用方法;
在运行时间存储器内压缩未被调用方法中的那些可压缩方法的未压缩体系结构专用码,由此在运行时间存储器内得到可用空间;以及
在运行时间存储器的可用空间内解压缩方法中的那些可解压缩方法的压缩体系结构专用码,以便方法中的那些可解压缩方法可被调用。
10.权利要求9的方法,其中的解压缩步骤包括一旦方法中的那些可解压缩方法要被调用,就解压缩方法中的那些可解压缩方法的压缩体系结构专用码。
11.权利要求9的方法,其中的解压缩步骤包括在预定时间间隔之后解压缩方法中的那些可解压缩方法的压缩体系结构专用码。
12.权利要求9的方法,其中的压缩步骤包括一旦方法中的那些可压缩方法不再被调用,就压缩方法中的那些可压缩方法的未压缩体系结构专用码。
13.权利要求9的方法,其中的压缩步骤包括在需要运行时间存储器内的空间但得不到时,就压缩方法中的那些可压缩方法的体系结构专用码。
14.权利要求9至13中的任一权利要求的方法,还包括以下步骤:
提供按照最早被调用方法至最近被调用方法的顺序列出方法中的那些当前未被调用方法的调用顺序表;
当需要运行时间存储器内的空间但得不到时,方法中的那些可压缩方法是调用顺序表中的具有未压缩体系结构专用码的最早被调用的方法。
15.权利要求14的方法,还包括当需要运行时间存储器内的空间但得不到时,就把程序中的那些可被冲洗程序的压缩体系结构专用码从运行时间存储器中冲洗出去的步骤。
16.权利要求14的方法,还包括以下步骤:
提供辅助存储器;
当需要运行时间存储器内的空间但得不到时,把方法中的那些可存储方法的压缩体系结构专用码存储在该辅助存储器内;以及
从该辅助存储器中检索方法中的那些其压缩体系结构专用码将要被解压缩的可检索方法的压缩体系结构专用码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US658500 | 1996-06-05 | ||
US658,500 | 1996-06-05 | ||
US08/658,500 US5794049A (en) | 1996-06-05 | 1996-06-05 | Computer system and method for executing architecture specific code with reduced run-time memory space requirements |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1174359A CN1174359A (zh) | 1998-02-25 |
CN1122228C true CN1122228C (zh) | 2003-09-24 |
Family
ID=24641494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN97115955A Expired - Fee Related CN1122228C (zh) | 1996-06-05 | 1997-06-05 | 减少运行时间存储空间需求的计算机系统和方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US5794049A (zh) |
EP (1) | EP0811910B1 (zh) |
JP (1) | JP3955358B2 (zh) |
KR (1) | KR100528844B1 (zh) |
CN (1) | CN1122228C (zh) |
DE (1) | DE69724516T2 (zh) |
SG (1) | SG74591A1 (zh) |
TW (1) | TW332881B (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6226665B1 (en) * | 1996-09-19 | 2001-05-01 | Microsoft Corporation | Application execution environment for a small device with partial program loading by a resident operating system |
DE69714752C5 (de) * | 1996-10-25 | 2015-08-13 | Gemalto Sa | Verwendung einer hohen programmiersprache in einem mikrokontroller |
US6758755B2 (en) * | 1996-11-14 | 2004-07-06 | Arcade Planet, Inc. | Prize redemption system for games executed over a wide area network |
DE69804708T2 (de) * | 1997-03-29 | 2002-11-14 | Imec Vzw | Verfahren und Gerät für Grössenoptimierung von Speichereinheiten |
US5875336A (en) * | 1997-03-31 | 1999-02-23 | International Business Machines Corporation | Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system |
US6092147A (en) | 1997-04-15 | 2000-07-18 | Sun Microsystems, Inc. | Virtual machine with securely distributed bytecode verification |
US6453334B1 (en) * | 1997-06-16 | 2002-09-17 | Streamtheory, Inc. | Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching |
KR100254200B1 (ko) | 1997-11-20 | 2000-04-15 | 윤종용 | 보코더의 기능 추가를 위한 데이터 다운로드 방법 |
US6292935B1 (en) * | 1998-05-29 | 2001-09-18 | Intel Corporation | Method for fast translation of java byte codes into efficient native processor code |
US6212632B1 (en) | 1998-07-31 | 2001-04-03 | Flashpoint Technology, Inc. | Method and system for efficiently reducing the RAM footprint of software executing on an embedded computer system |
US6425003B1 (en) * | 1999-01-22 | 2002-07-23 | Cisco Technology, Inc. | Method and apparatus for DNS resolution |
GB9921720D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
US6363523B1 (en) * | 1999-11-12 | 2002-03-26 | Sun Microsystems, Inc. | Optimization of N-base typed arithmetic expressions |
US7010786B2 (en) | 1999-11-12 | 2006-03-07 | Sun Microsystems, Inc. | Predictive arithmetic overflow detection |
US8453133B2 (en) * | 1999-11-12 | 2013-05-28 | Oracle America, Inc. | Optimization of N-base typed arithmetic instructions via rework |
US7207037B2 (en) * | 1999-11-12 | 2007-04-17 | Sun Microsystems, Inc. | Overflow sensitive arithmetic instruction optimization using chaining |
US7107581B2 (en) | 1999-11-12 | 2006-09-12 | Sun Microsystems, Inc. | Overflow predictive arithmetic instruction optimization using chaining |
US6549995B1 (en) * | 2000-01-06 | 2003-04-15 | International Business Machines Corporation | Compressor system memory organization and method for low latency access to uncompressed memory regions |
US6684388B1 (en) * | 2000-08-22 | 2004-01-27 | International Business Machines Corporation | Method for generating platform independent, language specific computer code |
US7080120B2 (en) * | 2001-01-19 | 2006-07-18 | Digital Orchid, Inc. | System and method for collaborative processing of distributed applications |
US7155381B2 (en) * | 2001-03-12 | 2006-12-26 | Sun Microsystems, Inc. | Module for developing wireless device applications using an integrated emulator |
US20040015960A1 (en) * | 2001-03-16 | 2004-01-22 | Sanjay Wanchoo | Method for loading and executing an application in an embedded environment |
JP2002318696A (ja) * | 2001-04-23 | 2002-10-31 | Mitsubishi Electric Corp | プログラム実行装置および方法 |
EP2267625A3 (en) * | 2004-04-19 | 2015-08-05 | Lumension Security S.A. | On-line centralized and local authorization of executable files |
WO2005099340A2 (en) * | 2004-04-19 | 2005-10-27 | Securewave S.A. | On-line centralized and local authorization of executable files |
US7149990B2 (en) * | 2004-11-06 | 2006-12-12 | Hewlett-Packard Development Company, L.P. | Architecture specific code |
US7389391B2 (en) * | 2005-04-29 | 2008-06-17 | Mediatek, Inc. | Memory disposition methods and systems |
EP1963966A4 (en) * | 2005-12-24 | 2009-12-30 | Intel Corp | METHOD AND DEVICE FOR EFFICIENT ARRANGING OF PORTABLE EXECUTABLE (PE) PICTURES |
US8239861B2 (en) * | 2008-02-07 | 2012-08-07 | Arm Limited | Software-based unloading and reloading of an inactive function to reduce memory usage of a data processing task performed using a virtual machine |
US20110029761A1 (en) * | 2009-08-03 | 2011-02-03 | Chih-Ta Star Sung | Method and apparatus of reducing CPU chip size |
CN103907327B (zh) * | 2011-11-03 | 2016-12-14 | 瑞典爱立信有限公司 | 电信网络中的不显眼内容压缩 |
CN108762766A (zh) * | 2018-06-08 | 2018-11-06 | 山东超越数控电子股份有限公司 | 一种飞腾1500a平台下银河麒麟系统支持万兆网卡的方法 |
CN112181504A (zh) * | 2020-09-23 | 2021-01-05 | 深圳市奋达智能技术有限公司 | 一种操作系统的调用方法及装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5359713A (en) * | 1989-06-01 | 1994-10-25 | Legato Systems, Inc. | Method and apparatus for enhancing synchronous I/O in a computer system with a non-volatile memory and using an acceleration device driver in a computer operating system |
EP0416767A3 (en) * | 1989-09-08 | 1992-04-29 | Digital Equipment Corporation | Position independent code location system |
WO1991019244A1 (en) * | 1990-06-04 | 1991-12-12 | 3Com Corporation | Method for optimizing software for any one of a plurality of variant architectures |
US5339419A (en) * | 1990-06-25 | 1994-08-16 | Hewlett-Packard Company | ANDF compiler using the HPcode-plus compiler intermediate language |
US5276881A (en) * | 1990-06-25 | 1994-01-04 | Hewlett-Packard Company | ANDF producer using the HPcode-Plus compiler intermediate language |
US5280613A (en) * | 1990-06-25 | 1994-01-18 | Hewlett-Packard Company | ANDF installer using the HPcode-Plus compiler intermediate language |
JPH04105129A (ja) * | 1990-08-24 | 1992-04-07 | Nec Corp | プログラム実行方式 |
US5432937A (en) * | 1993-08-20 | 1995-07-11 | Next Computer, Inc. | Method and apparatus for architecture independent executable files |
US5375242A (en) * | 1993-09-29 | 1994-12-20 | Hewlett-Packard Company | Compiler architecture for cross-module optimization |
GB2284492B (en) * | 1993-12-06 | 1998-05-13 | Graeme Roy Smith | Improvements to computer control units |
JPH07182169A (ja) * | 1993-12-24 | 1995-07-21 | Toshiba Corp | 並列処理型コンピュータ |
AU1447295A (en) * | 1993-12-30 | 1995-08-01 | Connectix Corporation | Virtual memory management system and method using data compression |
JPH07248921A (ja) * | 1994-03-09 | 1995-09-26 | Hitachi Ltd | 並列プロセッサシステムのイニシャルプログラムロード方法 |
US5577230A (en) * | 1994-08-10 | 1996-11-19 | At&T Corp. | Apparatus and method for computer processing using an enhanced Harvard architecture utilizing dual memory buses and the arbitration for data/instruction fetch |
US5701476A (en) * | 1994-11-29 | 1997-12-23 | Intel Corporation | Method and apparatus for dynamically loading a driver routine in a computer memory |
US5590331A (en) * | 1994-12-23 | 1996-12-31 | Sun Microsystems, Inc. | Method and apparatus for generating platform-standard object files containing machine-independent code |
US5692047A (en) * | 1995-12-08 | 1997-11-25 | Sun Microsystems, Inc. | System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources |
JP6657382B2 (ja) * | 2016-04-15 | 2020-03-04 | 京セラ株式会社 | 半導体装置 |
-
1996
- 1996-06-05 US US08/658,500 patent/US5794049A/en not_active Expired - Lifetime
-
1997
- 1997-06-03 TW TW086107638A patent/TW332881B/zh active
- 1997-06-04 DE DE69724516T patent/DE69724516T2/de not_active Expired - Fee Related
- 1997-06-04 SG SG1997001913A patent/SG74591A1/en unknown
- 1997-06-04 EP EP97303812A patent/EP0811910B1/en not_active Expired - Lifetime
- 1997-06-05 KR KR1019970023205A patent/KR100528844B1/ko not_active IP Right Cessation
- 1997-06-05 JP JP18427697A patent/JP3955358B2/ja not_active Expired - Lifetime
- 1997-06-05 CN CN97115955A patent/CN1122228C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1174359A (zh) | 1998-02-25 |
EP0811910A3 (en) | 1999-03-10 |
JP3955358B2 (ja) | 2007-08-08 |
KR980004025A (ko) | 1998-03-30 |
DE69724516T2 (de) | 2004-04-22 |
TW332881B (en) | 1998-06-01 |
DE69724516D1 (de) | 2003-10-09 |
SG74591A1 (en) | 2000-08-22 |
EP0811910B1 (en) | 2003-09-03 |
EP0811910A2 (en) | 1997-12-10 |
KR100528844B1 (ko) | 2006-01-27 |
US5794049A (en) | 1998-08-11 |
JPH10228379A (ja) | 1998-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1122228C (zh) | 减少运行时间存储空间需求的计算机系统和方法 | |
CN1097770C (zh) | 减少运行时间存储空间需求的计算机系统和方法 | |
CN1096636C (zh) | 执行减少运行存贮空间要求执行线程的计算机系统和方法 | |
CN111078318B (zh) | 配置文件的处理方法、装置、系统及存储介质 | |
CN1819576A (zh) | 在客户机和服务器之间分配应用任务的方法以及应用服务系统 | |
CN1918932A (zh) | 在用户身份模块/可移动用户身份模块卡中的优选漫游列表更新 | |
CN1797346A (zh) | 在托管应用程序进程中引发异步行为变化的方法和系统 | |
CN1886976A (zh) | 用于使用动作列表及版本控制对一无线装置执行动作的方法、软件及设备 | |
CN1859174A (zh) | 通信网络中远程设备的升级方法及其系统 | |
CN100346297C (zh) | 本地编译方法、本地编译预处理方法、服务器和通信系统 | |
CN1251541C (zh) | 缩短具有闪存的数字设备的启动时间的方法 | |
US20070283130A1 (en) | Compact Storage Of Program Code On Mobile Terminals | |
US9805045B2 (en) | Method and system for compressing data records and for processing compressed data records | |
CN1529848A (zh) | 进行软件应用的时间优化的替换 | |
EP1665043A4 (en) | METHOD AND DEVICE FOR CONTINUOUS DISTRIBUTION IN A VIRTUAL MACHINE | |
CN1269034C (zh) | 一种嵌入式系统中可执行文件的压缩及其加载方法 | |
CN1474584A (zh) | 将移动电话作为外围装置使用的便携式终端机 | |
EP0905613B1 (en) | Method for storing and using executable programs and apparatus therefor | |
CN113010172B (zh) | 配置文件的处理方法、装置、系统及存储介质 | |
CN1532725A (zh) | 使符合游戏平台标准的游戏运行在不同游戏平台上的方法 | |
CN1680921A (zh) | 用多重加载/存储指令初始化系统全局变量的设备和方法 | |
CN1904826A (zh) | 嵌入式系统带有内存利用的分析局部程序的实现方法 | |
CN101069155A (zh) | 用于执行期间的应用程序升级的方法、软件和装置 | |
JPH10254762A (ja) | 実時間ガーベジコレクション処理装置 | |
WO2007133559A2 (en) | Processing of compact functional differences |
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 | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |