CN1180193A - 执行减少运行存贮空间要求执行线程的计算机系统和方法 - Google Patents
执行减少运行存贮空间要求执行线程的计算机系统和方法 Download PDFInfo
- Publication number
- CN1180193A CN1180193A CN97115953A CN97115953A CN1180193A CN 1180193 A CN1180193 A CN 1180193A CN 97115953 A CN97115953 A CN 97115953A CN 97115953 A CN97115953 A CN 97115953A CN 1180193 A CN1180193 A CN 1180193A
- Authority
- CN
- China
- Prior art keywords
- thread
- data
- execution
- compression
- memory
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Memory System (AREA)
- Executing Machine-Instructions (AREA)
Abstract
执行多个减少存贮空间要求的执行线程的计算机系统和方法。包括存贮器、执行控制器和数据压缩器。执行控制器控制线程的执行使其在不同时间是可执行和非可执行的。当产生执行数据时执行控制器还将未压缩线程的执行数据存贮到运行时间存贮器可用空间中。数据压缩器压缩非可执行可压缩线程的未压缩执行数据。由此可获得运行时间存贮器的空间。数据压缩器还解压缩运行时间存贮器可用空间中可解压线程的压缩执行数据使在线程变成可执行后可以执行其可解压缩部分。
Description
本发明涉及在一种具有减少的运行时间存贮空间要求的多线程环境中执行程序的计算机系统和方法。特别是,本发明涉及一种用于执行多个执行线程的计算机系统和方法,其中,当所述线程非可执行时,该线程的执行数据被压缩,以便减少对存贮空间的要求。
现在的计算机系统被设计或配置成利用其代码为体系结构中性(AN)二进制格式(此后称之为AN码)的程序的特性。因此,这些程序的AN码独立于所述计算机系统的特定结构或平台。
本文中规定的术语“结构”表示一系列型号的计算机的工作特性。特殊结构的例子包括Macintosh计算机,使用DOS或Windows操作系统的IBM个人兼容计算机、运行Solaris操作系统的Sun微系统计算机以及使用Unix操作系统的计算机。
本文中规定的术语“结构特殊(AS)”涉及到要求只在具有特殊计算机结构的计算机系统上执行的某些程序代码为二进制格式,这种码此后称之为AS码。因此,利用传统编程语言(例如:80486汇编语言)编制并为特殊结构编译(例如:IBM兼容个人机)的程序仅能够运行于这种结构或这种结构的仿真器。
本文中规定的术语“结构中性(AN)”涉及到下述程序,这种程序的编译码能够在具有不同结构的多种计算机系统上运行。例如,这种具有特殊结构的计算机系统可以利用Java(Sun微系统的商标)虚拟机模块构成。Java虚拟机模块能够利用使用Java程编语言编制并编译成字节码的代码(此后称之为Java字节码)执行程序,以用于Java虚拟机的指令集。Java字节码独立于计算机系统的特殊结构。
利用AN码的程序的一个重要特性是它们的可移植性。例如,由于利用AN码编制的程序可以在不考虑计算机系统特殊结构的用于执行AN码的任一计算机系统上执行,所以,这些程序可以很容易地在网络上从一个计算机系统传送给另一个计算机系统。例如,被编译成Java字节码的程序可以在任一具有Java虚拟机模块的计算机系统上执行并且可以很容易地使用HotJava(Sun微系统的商标)网络通信管理器在一个网络上从一个计算机系统传送给另一个计算机系统。
此外,涉及到被编译成Java字节码可移植性的程序的另外一个重要特性是这种程序的可检验性。特别是,Java虚拟机模块能够很容易验证这些程序满足预定的完整性标准。这种完整性标准包括保证Java字节码不会从Java虚拟机模块堆栈上溢或下溢并保证利用Java字节码编制的所有指令仅利用其数据类型与用于这些指令的数据类型限制相匹配的数据的堆栈和数据类型用途限制。其结果是利用Java字节码编制的程序不能移动目标指针并不能对除用户已经明确授权它可以使用以外的系统资源进行访问。
由于这个原因,计算机系统被设计成执行在网络上接收并被编译成AN码的程序。事实上,在某些情况下,由于这些程序被直接装载到计算机系统的运行时间(即:执行时间)存贮器(例如:随机存取存贮器(RAM)中,所以,这些计算机系统甚至可以不需要辅助存贮器(例如:硬盘)。因此,用户将不受软件购置、安装、结构以及当前有代表性的软件产品升级的限制。
另外,很多软件程序(即应用程序)可以利用多线程执行方式执行。所述线程能够使程序被更快的响应和运行等等。
根据前面的观点来看,将用AN码编制的多线程程序应用于构成网络并按需要装载AN码的廉价计算机系统是特别有吸引力的。例如,这种计算机系统可以是视频游戏机、个人数字助理(PDA)、蜂窝电话或其它类似的计算机系统或计算机操作装置。
对于这种计算机系统来讲,低价格是极为重要的。特别是,在构成这种计算机系统过程中的最高成本之一是运行软件指令和程序所需要的运行时间(即:执行时间)存贮器的数量。这将与存贮软件指令码和程序所需的静态存贮器加以区分。由于减少前述这种计算机系统所需运行时间存贮器的数量能够产生很强的竞争优势,所以这种减少是非常重要的。
特别是,在多线程环境中,一个线程通常是部分地使用运行时间(即执行时间)存贮器的一个或多个专用区域(即范围)加以实现,所述运行时间存贮器用于存贮执行所述线程所需的执行数据。这些专用区域通常为堆栈、堆或是各个局部线程变量的形式,并表示所述线程的运行时间存贮成本。因此,一个程序的运行时间存贮成本是当程序的堆栈存贮成本是用于存贮它的代码的存贮器量时的所有它的线程运行时间存贮成本的和。因此,希望减少每个线程的平均运行时间存贮成本,以便减少支持一个程序所需的计算机系统的存贮要求。
总之,本发明的目的是提供一种用于在具有减少运行时间存贮空间要求的情况下执行多个执行线程的计算机系统和相关方法。该计算机系统包括一个运行时间存贮器,一个执行控制器和一个数据压缩器。
执行控制器控制线程的执行,以便使所述线程在不同的时间处可被执行或不可被执行。当产生执行数据时,执行控制器还将线程的执行数据未被压缩地存贮在运行时间存贮器可用的空间中。
数据压缩器压缩未被压缩的执行数据或不能执行的线程中可被压缩的部分。结果是在运行时间存贮器中可以获得一个空间。数据压缩器还解压缩运行时间存贮器中可用空间内其执行数据被压缩的线程中的可被解压缩的线程的经过压缩的执行数据或其部分,以便当可解压线程变成可执行时可以执行这些线程。
在一个实施例中,当可解压线程的压缩执行数据一变成可执行的,数据压缩器就对该压缩执行数据解压缩。
在另一个实施例中,数据压缩器在预定的时间间隔之后对可解压线程的压缩执行数据解压缩。
在另一个实施例中,当可解压线程的未压缩执行数据一变成非可执行的时,数据压缩器就对这些未压缩执行数据进行压缩。
在另一个实施例中,数据压缩器当需要运行时间存贮器的空间但又得不到时压缩可压缩线程的未压缩执行数据。在这个实施例中,计算机系统还可以包括一个最近最少执行的表,该表列出了当前尚未根据从最近最少执行的线程到最近最多执行的线程的顺序执行的那些线程。可压缩的线程是当需要运行时间存贮空间但又不可获得时在具有未压缩执行数据的最近最少执行的表中的最近最少执行的线程。
在另一个实施例中,计算机系统还包括辅助存贮器。在这个实施例中,当需要运行时间存贮空间但又得不到时数据压缩器在辅助存储器中存储非可执行线程中可存贮线程的执行数据或这些执行数据的一些部分。然后,数据压缩器从辅助存贮器中提取其被压缩执行数据将在运行时间存贮器中解压缩的所述线程中可提取部分的被压缩执行数据或这些数据一部分。
通过结合附图的下述详细说明和所附权利要求,本发明的目的和特征将变得更加容易理解。
图1的方框图示出了应用本发明的计算机网络。
图2的功能性方框图示出了在所述计算机网络中一个客户计算机系统的操作。
图3示出了所述客户计算机系统的操作流程。
图4示出了应用了本发明的计算机网络的另一个实施例的方框图。
图5的功能方框图示出了在该计算机网络另一个实施例中一个客户计算机系统的操作。
参看图1,该图示出了根据本发明的一个计算机网络100。它包括一个或多个客户计算机系统102、一个或多个服务器计算机系统104,和一个网络通信连接器106。
客户计算机系统102经过网络通信连接器106连接到服务器计算机系统104。网络通信连接器可以是一个局域网或广域网、互联网络或其它类型的网络通信连接器。
每个服务器计算机系统104包括一个中央处理单元(CPU)110、一个用户接口112、一个网络通信接口116和一个存贮器118。网络通信接口使每个服务器计算机系统能够通过网络通信连接器106与客户计算机系统102通信。
每个服务器计算机系统104的存贮器118存贮一个操作系统120、一个网络通信管理程序(或服务程序)122和多线程程序(即:方法)147和/或148。所述操作系统和通信管理程序全部运行于CPU 120。操作系统控制和协调网络通信管理程序的运行,以响应用户利用用户接口112发出的命令或由网络通信接口116经过网络通信连接器106从客户计算机系统102接收的命令。
每个服务器计算机系统104的程序147包含有与客户计算机系统102的特殊结构(即:平台)无关的结构中性(AN)码。这些程序被特殊编程语言编译成AN码。在该最佳实施例中,这些程序利用Java编程语言编写并被编译成Java字节码。另外,这些程序被包括在形成以面向对象方式编程的软件应用的对象分类中。
与程序147不同,每个服务器计算机系统的程序148被编译成结构特殊(AS)码,以用于客户计算机系统102的特殊结构。如在下面将要详细描述的,网络100最好是一个封闭和可信赖网络,在该网络中,这些程序可以保密地发送给具有高置信度的客户计算机102,或者这些程序最好隐藏了能够被验证的数字签名。
如在后面将要详细描述的,程序147和/或148根据用户的要求使用网络通信管理器122传送给客户计算机系统102。由此,这些程序的代码被认为是网络移动码。
每个客户计算机系统102可以是视频游戏机,个人数字助理(PDA),蜂窝电话,台式计算机或其它的计算机系统或需要少量运行时间存贮器的计算机操作装置。另外,每个客户计算机系统包括一个中央处理单元(CPU)126、一个用户接口128、一个网络通信接口132、一个只读存贮器(ROM)134和一个运行时间随机存取存贮器(RAM)136。所述网络通信接口使客户计算机系统能够通过网络通信连接器106与服务器计算机系统104通信。
每个客户计算机系统102的RAM 136存贮均从ROM 134装载的操作系统138、网络通信管理程序142、虚拟机模块142、以及数据压缩器146。所述RAM还存贮从服务器计算机104下加载的以AN码编程的程序147以及以结构特殊(AS)码编程的程序148。操作系统、网络通信管理程序、虚拟机模块、数据压缩器和程序都由CPU 126执行。操作系统响应用户利用用户接口128发出的命令控制和协调网络通信管理程序、虚拟机模块,数据压缩器以及程序的执行。
如上所述,程序147和/或148是根据用户请求从服务器计算机系统104接收的,使用网络通信管理程序140获得这些程序,在最佳实施例中,所述网络通信管理程序140是Hot Java网络通信管理程序。然后,网络通信管理程序将这些程序装载到RAM 136中。
在使用AN码编程的装载的程序147的情况下,虚拟机模块142的代码验证器151验证被装载程序的AN码是否满足规定的完整性标准。如前所述,这可以包括堆栈和数据类型使用限制,以保证被装载的程序不会从虚拟机模块的堆栈中上溢或下溢,并保证所有程序指令仅使用其数据类型与用于这些程序指令的数据类型限制相匹配的数据。
但是,在使用AS码编程的被装载程序148的情况下,代码验证器151不能被用于直接验证它们的完整性。因此,为了间接验证它们的完整性,网络100可以是一个封闭和可信赖的网络,在该网络中,这些程序可以被保密地发送给具有高置信度的客户计算机102。另外,如果网络100不是保密的,这些程序可能隐藏了数字签名,这些数字签名使网络通信管理程序140能够验证它们是来自可信赖的源。
虚拟机模块142的执行控制器153控制被装载时程序147和/或148的执行。特别是,执行控制器对在客户计算机系统102特殊结构上执行的程序147的AN码进行译码,并使得这些程序能够调用具有将被在所述特殊结构上执行的AS码的程序148。另外,如果网络通信管理程序140,和/或数据压缩器146本身被编译成AN码,那么,执行控制器也将控制它们的执行。
由于刚刚被装载的程序147或148是多线程的,所以,执行控制器153建立用于这些程序的执行线程,这些线程与任何另外装载的程序147和/或148的线程一起都是由执行控制器控制执行的。
虚拟机模块142被编译成AS码,用于客户计算机102的特殊结构。所述虚拟机模块可以是由C语言写成并编译成AS码的Java虚拟机模块。
另外,为了使对客户计算机系统102的RAM空间需求较低,数据压缩器146在RAM 136中在执行线程期间的各个时间处压缩和解压缩所述线程的执行数据。当每个线程的执行数据未被压缩时,它被存贮在所述RAM中未被压缩数据库158中,而当它已经被压缩时,则被存贮在已压缩据的数据库157中。线程的执行和存贮状态被保持在线程执行和存贮状态数据结构155中。对于那些由于满足存贮在RAM 136中预定压缩和解压缩标准152和154而可分别压缩和解压缩的线程,线程的执行数据被进行压缩和解压缩。在本发明的某些实施例中,下面将要详述的压缩和解压缩标准可由用户根据一组预定的存贮器管理策略来选择和/或调谐(使用用户接口128)。
在最佳实施例中,预定的压缩标准152规定可压缩线程的执行数据在下述时间时被压缩:(1)需要但得不到RAM 136中的空间时;(2)可压缩线程是尚不具有它自己被压缩的执行数据的最近最少执行的线程时。另外,在最佳实施例中,用于解压缩一个可被解压缩线程的执行数据的预定解压缩标准154简单地规定在可解压线程变得可执行时,所述可解压线程的执行数据被压缩并将被解压缩。
参看图2,线程200中的每一个是由执行控制器153利用AS码(ASC)堆栈和AN码(ANC)堆栈实现的。特别是,执行控制器在ASC堆栈中存贮用于执行它的AS码的执行数据,所以它能够控制所述线程的执行。类似的,执行控制器在ANC堆栈中存贮用于执行线程的ANC码和由AN码调用的任一AS码的执行数据。在虚拟机模块142用C语言写成并被编译成AS码的情况下,与通常执行用C语言写成的程序一样,每个ASC堆栈可以是固定尺寸相连堆栈(例如:128K)。另外,在程序147被编码成Java字节码的情况下,ANC堆栈是一个可变尺寸的不相连Java堆栈,该堆栈可以根据RAM空间需求扩展和缩小(例如:至少4K和以4K为增量的增加和减少)。
为了建立每个线程200的ASC和ANC堆栈,未压缩数据库158包括ASC存贮区204的存贮池202和ANC存贮区域208的存贮池206。另外,线程存贮状态数据结构155包括线程存贮状态表210、ASC存贮区域204的空闲列表212和ANC存贮区域208的空闲列表214。这些空闲列表分别列出了在ASC和ANC存贮区域中那些可以利用(即空闲)区域和与这些可以利用存贮区域相对应的指针。
图3示出了本发明根据前述最佳压缩和解压缩标准152和154的压缩和解压缩方法的流程图。参看图2和3,当利用执行控制器153建立线程200中的一个(图3的步骤302)时,确定在未压缩数据库158中是否有可用存贮空间去执行该线程(图3中步骤304)。这是通过根据空闲列表212和214确定是否具有可用的ASC存贮区域204和可用的ANC存贮区域208执行的。
如果可以得到存贮空间,执行控制器153分配存贮空间并将未压缩执行数据存贮到这些存贮空间中,以便在产生未压缩执行数据时执行线程200(图3步骤306)。换言之,如果ASC存贮区域204和ANC存贮区域208都可以得到,那么,执行控制器将可用ASC和ANC存贮区域分配作为线程的ASC和ANC堆栈,并将该线程的未压缩执行数据存贮在所述堆栈中。在上述操作过程中,执行控制器更新线程存贮状态表210以识别所述线程,并更新形成ASC堆栈的所分配的ASC存贮区域以及形成ANC堆栈的所分配的ANC存贮区域。另外,执行控制器更新线程存贮状态表以便识别指向ASC和ANC存贮区域的指针,所述指针分别被用作指向ASC和ANC堆栈底部的指针。类似地,执行控制器更新线程存贮状态表以便识别在ASC和ANC存贮器中执行数据末尾的指针,所述指针分别用作指向ASC和ANC堆栈顶点的指针。因此,所分配的ASC和ANC存贮区域一起提供所述线程的存贮空间。执行控制器还更新所述线程存贮状态表,以便指出在线程存贮空间中的执行数据是未被压缩数据(U)并从相应的空闲列表中去除所分配的ASC和ANC存贮区域。
在各时间点,线程200中的每一个是可执行的(即:可使用或可运行的)或非可执行的。由于一个线程已经被置入休眠状态,正等待数据,未被调度等,所以当前这个线程可能是非可执行的。线程状态数据结构155包括列出了当前非可执行的每个线程的LRE表216。LRE表以从最近最少执行到最近最多执行的顺序列出了所述线程。
但是,如果不能在未压缩数据库120中获得用于执行线程200的存贮空间,那么,执行控制器153调用数据压缩器146。数据压缩器压缩LRE表中所列最近最少所执行线程的执行数据并将其置于压缩数据库157中(图3步骤308)。特别是在线程存贮状态表210中所识别的分配给所述线程的ASC和ANC存贮区域中的压缩执行数据被放置在压缩数据库157的相应被压缩数据(CD)存贮区域218中。数据压缩器还更新线程存贮状态表,以更新形成所述线程ASC和ANC堆栈的相应CD存贮区域,指向CD存贮区域的相应指针以及指向CD存贮区域中压缩执行数据末尾的相应指针。它还更新线程存贮状态表以便指出已经被压缩的线程的存贮空间(C)。数据压缩器146可以使用本专业技术人员公知的任何快速数据压缩技术。
当所生成的线程200可以被执行时,执行控制器153在适当的时间将在执行期间产生的未压缩执行数据放到ASC和ANC堆栈上和从这些堆栈中移出。在这个过程中,执行控制器更新到相应ASC和ANC堆栈顶部的指针。
另外,当这个处理发生时(图3步骤310),控制器153以与前述用于向所生成线程分配存贮空间相类似的方式增加执行期间所述线程需要更多的存贮空间时(图3步骤312)线程存贮空间的尺寸(步骤304-308)。特别是,每当线程需要附加存贮空间以存贮用于运行以结构中性语言编程的线程的执行数据时,必需通过向它分配未压缩数据库120的其它部分来增加ANC堆栈的尺寸。在该处理过程中,执行控制器通过更新线程存贮状态表210为线程分配空闲列表212中所列的另一ANC存储区208,以识别作为ANC堆栈一部分的所分配的ANC存贮区域、识别指向被分配ANC存贮区域的指针、和识别指向用作到ANC堆栈顶部的指针的被分配ANC存贮区域中执行数据末尾的指针。另外,执行控制器从空闲列表中删除所分配的ANC存贮区域(或如果只有一部分可获得的ANC存贮区域被分配给所述线程、则减小它的尺寸)。
类似地,当线程200是可执行的时(图3步骤310),每当它不再需要其存贮空间的一部分时(图3步骤314),通过重新分配它不需要的部分来减少该线程的存贮空间(图3步骤316)。特别是,在执行过程中无论什么时候当所述线程需要较少存贮空间时,ANC堆栈的尺寸都被减小。例如,如果存贮器以4K字节块进行分配,当该线程所使用的ANC堆栈的一部分被减少到足以允许重新分配4K字节块(即:到ANC堆栈顶部的指针指向所述ANC堆栈的前4K字节块)时,所述ANC堆栈的尺寸被减少一个4K字节块,这是通过重新分配不再需要的ANC堆栈ANC存贮区域208而进行的。在重新分配ANC存贮区域的过程中,执行控制器更新线程存贮状态表210,以从中删除ANC存贮区域并不再将其识别为是ANC堆栈的一部分。
当线程200变得非可执行时(图3步骤310),执行控制器153将其加到LRE表216的末端(图3步骤318)。当这个线程仍然是非可执行的时候(图3步骤320),执行控制器确定其它的线程是否需要其存贮空间的任一部分(图3步骤322)。如前所述,这发生在其它线程被建立(图3步骤302)或需要附加存贮空间(图3步骤312),在未压缩数据库120中没有足够的其它线程可用的存贮空间,以及需要存贮空间的线程是一个在还不具有其被压缩执行数据的LRE表216中的最近最少执行的线程的时候。
如果另外的线程需要存贮空间,那么,利用数据压缩器以上面所讨论的方式(图3步骤308)对需要其存贮空间的线程200的执行数据进行压缩(图3步骤324)。重复这个处理(图3步骤320-324),直到该线程再次变成可执行的为止(图3步骤320)。
当所述线程200再次变为可执行的时,执行控制器153确定该线程的执行数据是否已被压缩(图3步骤326)。如果它还没有被压缩,则执行控制器从LRE表216中删除该线程(图3步骤328),结果是在该线程再次变成非可执行之前其执行数据将不被压缩(图3步骤310),该线程被加到LRE表上(图3步骤318),和该线程的存贮空间被另一线程所需要(图3步骤322)。
但是,当该线程200再次变成可执行但却不具有它的被压缩执行数据时,则执行控制器153确定在未压缩数据库120中是否可以得到用于对该线程执行数据进行解压缩的存贮空间(图3步骤330)。这是通过与上述用于生成的线程(图3步骤304)的类似的方式执行的。
如果没有可用于对线程200的执行数据进行解压缩的足够存贮空间,那么,在LRE表216中的一个或多个最近最少执行的线程的执行数据被压缩,以使得能够获得存贮空间。这是通过以与上述方式(图3步骤308和324)类似的方式执行的。
当已经获得了足够的存贮空间或当通过对一个或多个其它线程的执行数据进行压缩获得了足够的存贮空间时,执行控制器153分配对线程200的执行数据解压缩所需的存贮空间(图3步骤334)。这是通过与前述用于生成的线程(图3步骤306)的类似方式执行的,从而对ASC和ANC存贮区域204和208进行分配以形成线程的ASC和ANC堆栈。
然后,利用数据压缩器146对线程20的执行数据解压缩,并放置在可以获得的存贮器空间中(图3步骤336)。特别是,在线程存贮状态表210中被识别为分配给所述线程的CD存贮区域218中的执行数据被解压缩并放置在由执行控制器153分配的相应ASC和ANC存贮区域204和208中。在这个过程中,数据压缩器更新程序存贮状态表210以识别指向形成所述线程的ASC和ANC堆栈的相应ASC和ANC存储区域的指针和指向ASC和ANC堆栈顶部的指针。如上所述,在线程再次变得非可执行(图3步骤310)之前,该线程的执行数据将不被压缩,该线程被加到LRE表216上(图3步骤318)且该线程的存贮空间被另一线程所需要(图3步骤322)。
鉴于前文所述,很清楚,本发明提供了一种减少用于执行线程的运行时间存贮空间的手段。但是,如本技术领域内的技术人员所了解的,可以使用其它的实施例提供类似的优点。
特别是,前述的压缩标准152规定当需要RAM 136中的空间但得不到时应当压缩具有未压缩执行数据的最近最少执行的线程200。但是,所述压缩标准可以由用户从一个很宽的选择范围并根据规定给用户的客户计算机系统102的条件的数量进行选择。例如,所述压缩标准可以简单地规定为线程一旦变得非可执行时就要对每个线程的执行数据执行压缩。或者可以规定无论在什么时候只要时间允许这么做就可以缓慢地对某些线程的执行数据进行压缩。最后,作为前述任一种变化,所述压缩标准可以规定为,只有特定尺寸或类型线程的执行数据可以被压缩。
另外,如前所述,压缩标准154规定线程一旦再次变成可执行的,具有被压缩执行数据的线程200就应当用数据压缩器146解压缩它的执行数据。但是,解压缩标准可规定在经过一个预定时间间隔之后解压缩被压缩的执行数据。在这种情况下,数据压缩器应当包括一个用于对时间间隔计时的定时器。在另外一个例子中,这种技术可应用于这样一个线程,该线程被置于休眠状态一段已知时间间隔以便使该线程的执行数据在这段时间间隔内被压缩,然后,正好在该线程被唤醒之前进行解压缩。或者,在另外一个例子中,这种技术被用于一个线程,该线程等待一个数据,其中,可以选择对线程执行数据进行压缩的时间间隔,以便预测什么时候可以获得用于该线程的被等待数据。
另外,如本领域技术人员所了解的,压缩标准152可以规定将要被压缩的执行数据可以是不可压缩线程200的整个执行数据,或简单地为一个片断或其中的一部分。在这种情况下,被压缩执行数据的数量可以根据另一线程所需的存贮空间。例如,如果另一线程需要ANC存贮区域208,并且不能够得到更多的ANC存贮区域,那么,只有在所需要的非可执行线程的ANC存贮区域中的执行数据可以被压缩,以使得可以获得这个ANC存贮区域。
在另外一个实施例中,即使ANC存贮区域208中的每一个可能当前并没有存贮线程的任何执行数据,它也总是被分配作为相应线程200的ANC堆栈的一部分。这样,当分配给一个线程的一个ANC存贮区域不再被那个线程需要去存贮数据时,执行控制器153仍然保留分配给所述线程的ANC存贮区域。这是由于在其执行过程的后一时刻所述线程可能将再次需要另一ANC存贮区域。为保持ANC存贮区域分配给这个线程,执行控制器更新线程存贮状态表210以识别指向ANC堆栈顶部的指针(将位于ANC堆栈的另一个ANC存贮区域中)。在这种方式下,建立可用ANC存贮区域的虚拟空闲列表,其中,所有的可用ANC存贮区域被分配给多个线程但不包含执行数据。这样,当一个线程需要另外一个ANC存贮区域时,执行控制器将以如上所述相同的方式向这个其它的线程重新分配一个不存储执行数据的可用的ANC存贮区域。
另外,参考图4和图5,辅助存贮器400可用于存贮由于满足辅助存贮标准而可被存贮的线程200的被压缩的执行数据。在这种情况下,辅助存贮标准应当包括在上面讨论的压缩标准152中并且可规定被压缩的执行数据或它的一部分在它被压缩时将被存贮在辅助存贮器之内,或可规定只有在需要存贮空间时,它才被存贮在辅助存贮器中。在这二种情况中的任一种情况下,数据压缩器146将存贮在CD存贮区域218中的压缩数据移动并存贮到辅助存贮器400中的相应CD存贮区域500中。另外,数据压缩器更新程序存贮状态表210中的指针指向辅助存贮器中执行数据。另外,对于那些存贮在辅助存贮器中并需要被解压缩的由于它们的执行数据或这些数据的一部分被压缩而可恢复的线程来讲,将从辅助存贮器中恢复所述执行数据,然后以上述方式在RAM 136中解压缩。
再有,在客户计算机系统102包括辅助存贮器400(即网络台式计算机)的实施例中,程序147和/或148可从服务器计算机系统104下装载到辅助存贮器上。这样,可利用虚拟机模块142直接从辅助存贮器而不是从服务器计算机系统104将这些程序装载到RAM 136中。另外,在这样一个实施例中,操作系统138、网络通信管理程序140、虚拟机模块142和数据压缩器146可存贮在辅助存贮器中并从这里装载到所述RAM中。
在另外的一个实施例中,操作系统138、网络通信管理程序140、虚拟机模块142和数据压缩器146可从一个服务器计算机系统104下装载到客户计算机系统系统102的RAM 136中。其执行方式类似于前述用于服务器计算机系统的程序147和/或148的方式。
在另外的一个实施例中,虚拟机模块142实际是由硅芯片构成的并被用作客户计算机系统102的CPU 126。在这种情况下,用AN码编制的程序147不被译码用于特殊结构而是被直接执行。在这个实施例中,不利用由AS码编制的程序148。
最后,虽然已参照少数几个特定实施例对本发明进行了描述,这种描述仅是示意性的并不构成对本发明的限制。在不脱离由所附权利要求规定的本发明的实质精神和范围的前提下,本专业技术领域内的普通技术人员可以作出多种改变。
Claims (14)
1.一种计算机系统,用于执行具有减少的运行时间存贮空间要求的多个执行线程,所述计算机系统包括:
运行时间存贮器;
执行控制器,该执行控制器(A)执行线程,借此使所述线程在不同的时间为可执行的和非可执行的,和(B)当产生执行数据时,将所述线程未被压缩的执行数据存贮到运行时间存贮器中的可用空间内;和
数据压缩器,该数据压缩器(A)压缩运行时间存贮器中非可执行线程中可压缩线程的未压缩执行数据或这些数据的一些部分,和(B)将所述线程中可解压缩线程的压缩的执行数据解压缩到运行时间存贮器中的可用空间内,从而在所述线程变得可执行之后可执行该线程中可解压缩的那些。
2.如权利要求1的计算机系统,其特征在于所述线程中可解压缩的那些一旦变成可执行的,数据压缩器就对可解压缩线程的压缩执行数据解压缩。
3.如权利要求1的计算机系统,其特征是在预定的时间间隔之后,数据压缩器对可解压缩线程的压缩执行数据解压缩。
4.如权利要求1、2或3的计算机系统,其特征是所述线程中的可压缩的那些一旦变成非可执行的,数据压缩器就对可压缩线程的未压缩执行数据或该数据的一些部分进行压缩。
5.如权利要求1、2或3的计算机系统,其特征是当需要运行时间存贮器中的空间而又得不到时,数据压缩器压缩所述线程中可压缩线程的未压缩执行数据或该数据的一部分。
6.如权利要求5的计算机系统,还包括:
最近最少执行表,该表按照从最近最少执行的线程到最近最多执行的线程的顺序列出了当前非可执行的那些线程;
当需要运行时间存贮器的空间而又得不到时,线程中可压缩的那些是在具有未压缩执行数据的最近最少执行表中的最近最少执行的线程。
7.如权利要求1到6中的任何一个的计算机系统,还包括:
辅助存贮器;
数据压缩器,用于(A)当需要运行时间存贮器中的空间而得不到时,将所述线程中可存贮的那些的压缩执行数据或该数据的一些部分存贮到辅助存贮器中;和
(B)恢复其被压缩的执行数据将在运行时间存贮器中被解压缩的线程中可恢复的那些线程的压缩执行数据或该数据的一些部分。
8.一种用于执行具有减少的运行时间存贮空间要求的多个执行线程的方法,包括如下步骤:
提供一个运行时间存贮器;
执行所述线程,以使所述线程在不同的时间是可执行的或非可执行的;
当产生执行数据时,将未压缩的所述线程的执行数据存贮到运行时间存贮器的可用空间中;
压缩非可执行线程中可压缩的那些的未压缩执行数据或该数据的一些部分,借此获得运行时间存贮器中的空间;和
将所述线程中可解压的那些的压缩执行数据解压缩到运行时间存贮器的可用空间中,从而使在所述线程中可解压的那些变成可执行之后可以执行这些线程。
9.如权利要求8的方法,其特征是所述解压步骤包括所述可解压线程一旦变成可执行的,就对可解压线程的压缩执行数据解压缩。
10.如权利要求8的方法,其特征是所述解压缩步骤包括在一个预定时间间隔之后对所述可解压线程的压缩执行数据解压缩。
11.如权利要求8、9或10的方法,其特征是所述压缩步骤包括在所述线程中可压缩的那些变成非可执行时对所述可压缩线程的未压缩执行数据进行压缩。
12.如权利要求8、9或10的方法,其特征是所述压缩步骤包括当需要运行时间存贮器的空间而又得不到时,压缩所述可压缩线程的未压缩执行数据。
13.如权利要求12的方法,还包括如下步骤:
提供一个最近最少执行表,该表按照从最近最少执行的线程到最近最多执行的线程的顺序列出了当前非可执行的那些线程;
所述线程中可压缩的那些是当需要运行时间存贮器中的空间而又得不到时在具有未压缩执行数据的最近最少执行表中的最近最少执行的线程。
14.如权利要求8到13中任一个的方法,还包括如下步骤:
提供辅助存贮器;
当需要运行时间存贮器中的空间而又得不到时,将所述线程中可存贮的那些线程的压缩执行数据或该数据的一些部分存贮到辅助存贮器中,和
从辅助存贮器恢复其压缩的执行数据需要在运行时间存贮器中被解压缩的线程中可恢复的那些线程的压缩执行数据或该数据的一些部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/658,501 US5765157A (en) | 1996-06-05 | 1996-06-05 | Computer system and method for executing threads of execution with reduced run-time memory space requirements |
US658,501 | 1996-06-05 | ||
US658501 | 2003-09-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1180193A true CN1180193A (zh) | 1998-04-29 |
CN1096636C CN1096636C (zh) | 2002-12-18 |
Family
ID=24641497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN97115953A Expired - Fee Related CN1096636C (zh) | 1996-06-05 | 1997-06-05 | 执行减少运行存贮空间要求执行线程的计算机系统和方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US5765157A (zh) |
EP (1) | EP0811915B1 (zh) |
JP (1) | JP3863967B2 (zh) |
KR (1) | KR100453723B1 (zh) |
CN (1) | CN1096636C (zh) |
DE (1) | DE69721634T2 (zh) |
SG (1) | SG74590A1 (zh) |
TW (1) | TW357319B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1310135C (zh) * | 2001-08-27 | 2007-04-11 | 英特尔公司 | 具有基于活动线程号的寄存器分配的多线程微处理器 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6298422B1 (en) * | 1996-06-17 | 2001-10-02 | Network Associates, Inc. | Method for reducing the memory requirements for an application program executing in a multi-tasking environment |
US5937187A (en) * | 1996-07-01 | 1999-08-10 | Sun Microsystems, Inc. | Method and apparatus for execution and preemption control of computer process entities |
JPH1049381A (ja) * | 1996-07-04 | 1998-02-20 | Internatl Business Mach Corp <Ibm> | 複数のデータ処理要求の処理方法及び処理システム、プログラムの実行方法及びシステム |
US6938254B1 (en) * | 1997-05-06 | 2005-08-30 | Microsoft Corporation | Controlling memory usage in systems having limited physical memory |
US6125382A (en) * | 1997-07-25 | 2000-09-26 | International Business Machines Corporation | Distributed thread mechanism and method |
US6256637B1 (en) * | 1998-05-05 | 2001-07-03 | Gemstone Systems, Inc. | Transactional virtual machine architecture |
US6453460B1 (en) | 1999-04-26 | 2002-09-17 | Hewlett-Packard Company | Computer system with single processing environment for executing multiple application programs |
US6714958B1 (en) * | 1999-07-28 | 2004-03-30 | International Business Machines Corporation | Detecting and causing latent deadlocks in multi-threaded programs |
US7024363B1 (en) * | 1999-12-14 | 2006-04-04 | International Business Machines Corporation | Methods and apparatus for contingent transfer and execution of spoken language interfaces |
US6598143B1 (en) | 2000-02-24 | 2003-07-22 | International Business Machines Corporation | Method to increase performance of acquiring free memory pages |
US6647480B1 (en) | 2000-03-31 | 2003-11-11 | International Business Machines Corporation | Data block update utilizing flash memory having unused memory size smaller than the data block size |
US20020016878A1 (en) * | 2000-07-26 | 2002-02-07 | Flores Jose L. | Technique for guaranteeing the availability of per thread storage in a distributed computing environment |
US6892298B2 (en) | 2000-07-26 | 2005-05-10 | Times N Systems, Inc. | Load/store micropacket handling system |
US6675277B2 (en) | 2000-07-26 | 2004-01-06 | Tns Holdings, Inc. | Method and apparatus for demand usable adapter memory access management |
US6782440B2 (en) | 2000-07-26 | 2004-08-24 | T.N.S. Holdings, Inc. | Resource locking and thread synchronization in a multiprocessor environment |
US20020013822A1 (en) * | 2000-07-26 | 2002-01-31 | West Karlon K. | Shared as needed programming model |
US6665777B2 (en) | 2000-07-26 | 2003-12-16 | Tns Holdings, Inc. | Method, apparatus, network, and kit for multiple block sequential memory management |
US6715059B2 (en) | 2000-07-26 | 2004-03-30 | Tas Holdings, Inc. | Methods and systems for a shared memory unit with extendable functions |
US6968557B1 (en) | 2000-12-18 | 2005-11-22 | Stratum8 Corporation | Reducing stack memory resources in a threaded computer system |
US6738832B2 (en) | 2001-06-29 | 2004-05-18 | International Business Machines Corporation | Methods and apparatus in a logging system for the adaptive logger replacement in order to receive pre-boot information |
US7409517B2 (en) * | 2001-10-01 | 2008-08-05 | Oracle International Corporation | Dynamic and automatic memory management |
US7499960B2 (en) * | 2001-10-01 | 2009-03-03 | Oracle International Corporation | Adaptive memory allocation |
AU2003903652A0 (en) * | 2003-07-16 | 2003-07-31 | Infology Pty Ltd | Muvium |
US8037476B1 (en) * | 2005-09-15 | 2011-10-11 | Oracle America, Inc. | Address level log-based synchronization of shared data |
US8055970B1 (en) * | 2005-11-14 | 2011-11-08 | Raytheon Company | System and method for parallel processing of data integrity algorithms |
US8782436B2 (en) | 2006-05-31 | 2014-07-15 | International Business Machines Corporation | Method and system for transformation of logical data objects for storage |
US8868930B2 (en) | 2006-05-31 | 2014-10-21 | International Business Machines Corporation | Systems and methods for transformation of logical data objects for storage |
JP4888166B2 (ja) * | 2007-03-13 | 2012-02-29 | 日本電気株式会社 | 情報処理装置及びプロセス圧縮方法並びにプログラム |
US8930670B2 (en) * | 2007-11-07 | 2015-01-06 | International Business Machines Corporation | Partition redispatching using page tracking |
WO2011041269A2 (en) * | 2009-09-30 | 2011-04-07 | Samplify Systems, Inc. | Enhanced multi-processor waveform data exchange using compression and decompression |
US9507637B1 (en) * | 2013-08-08 | 2016-11-29 | Google Inc. | Computer platform where tasks can optionally share per task resources |
KR102114388B1 (ko) * | 2013-10-18 | 2020-06-05 | 삼성전자주식회사 | 전자 장치의 메모리 압축 방법 및 장치 |
US10303235B2 (en) * | 2015-03-04 | 2019-05-28 | Qualcomm Incorporated | Systems and methods for implementing power collapse in a memory |
CN114328373A (zh) * | 2020-09-29 | 2022-04-12 | 伊姆西Ip控股有限责任公司 | 管理文件系统的方法、电子设备和计算机程序产品 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3208160B2 (ja) * | 1991-10-24 | 2001-09-10 | シャープ株式会社 | コンピュータにおける記憶管理方式 |
JPH0628150A (ja) * | 1992-07-08 | 1994-02-04 | Funai Techno Syst Kk | プログラム容量圧縮方法 |
US5483622A (en) * | 1992-09-03 | 1996-01-09 | Hewlett-Packard Company | Page printer having automatic font compression |
US5479587A (en) * | 1992-09-03 | 1995-12-26 | Hewlett-Packard Company | Page printer having adaptive data compression for memory minimization |
US5559978A (en) * | 1992-10-14 | 1996-09-24 | Helix Software Company, Inc. | Method for increasing the efficiency of a virtual memory system by selective compression of RAM memory contents |
US5450562A (en) * | 1992-10-19 | 1995-09-12 | Hewlett-Packard Company | Cache-based data compression/decompression |
US5638498A (en) * | 1992-11-10 | 1997-06-10 | Adobe Systems Incorporated | Method and apparatus for reducing storage requirements for display data |
JP2505980B2 (ja) * | 1993-04-16 | 1996-06-12 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 静的辞書作成方法及びコンピュ―タ実行システム |
JPH06348490A (ja) * | 1993-06-08 | 1994-12-22 | Hitachi Ltd | 演算処理方法、及びマイクロコンピュータ |
GB2284492B (en) * | 1993-12-06 | 1998-05-13 | Graeme Roy Smith | Improvements to computer control units |
US5446740A (en) * | 1993-12-17 | 1995-08-29 | Empire Blue Cross/Blue Shield | Method of and apparatus for processing data at a remote workstation |
JP3696901B2 (ja) * | 1994-07-19 | 2005-09-21 | キヤノン株式会社 | 負荷分散方法 |
US5572209A (en) * | 1994-08-16 | 1996-11-05 | International Business Machines Corporation | Method and apparatus for compressing and decompressing data |
-
1996
- 1996-06-05 US US08/658,501 patent/US5765157A/en not_active Expired - Lifetime
-
1997
- 1997-06-04 SG SG1997001912A patent/SG74590A1/en unknown
- 1997-06-04 EP EP97303813A patent/EP0811915B1/en not_active Expired - Lifetime
- 1997-06-04 JP JP14668097A patent/JP3863967B2/ja not_active Expired - Lifetime
- 1997-06-04 TW TW086107704A patent/TW357319B/zh active
- 1997-06-04 DE DE69721634T patent/DE69721634T2/de not_active Expired - Fee Related
- 1997-06-05 KR KR1019970023204A patent/KR100453723B1/ko not_active IP Right Cessation
- 1997-06-05 CN CN97115953A patent/CN1096636C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1310135C (zh) * | 2001-08-27 | 2007-04-11 | 英特尔公司 | 具有基于活动线程号的寄存器分配的多线程微处理器 |
Also Published As
Publication number | Publication date |
---|---|
SG74590A1 (en) | 2000-08-22 |
KR980004056A (ko) | 1998-03-30 |
DE69721634D1 (de) | 2003-06-12 |
TW357319B (en) | 1999-05-01 |
US5765157A (en) | 1998-06-09 |
JPH10124334A (ja) | 1998-05-15 |
EP0811915B1 (en) | 2003-05-07 |
KR100453723B1 (ko) | 2004-12-17 |
CN1096636C (zh) | 2002-12-18 |
EP0811915A1 (en) | 1997-12-10 |
DE69721634T2 (de) | 2004-03-25 |
JP3863967B2 (ja) | 2006-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1096636C (zh) | 执行减少运行存贮空间要求执行线程的计算机系统和方法 | |
EP0811910B1 (en) | Computer system and method for executing architecture specific code with reduced run-time memory space requirements | |
Lemire et al. | Consistently faster and smaller compressed bitmaps with roaring | |
US7587569B2 (en) | System and method for removing a storage server in a distributed column chunk data store | |
US20050132161A1 (en) | Creation of virtual memory space in a memory | |
EP1492001A2 (en) | Software image creation in a distributed build environment | |
US20240004838A1 (en) | Quality score compression for improving downstream genotyping accuracy | |
CN1119756C (zh) | 用于进行静态初始化的方法和系统 | |
EP0811911B1 (en) | Computer system and method for executing network mobile code with reduced run-time memory space requirements | |
EP1577766A2 (en) | Side-by-side drivers | |
US20050188368A1 (en) | Method and apparatus for reducing the storage overhead of portable executable (PE) images | |
CN1716250A (zh) | 将最佳实施集成进数据库设计 | |
CN1329309A (zh) | 操作系统的多语言用户接口 | |
CN112783558B (zh) | 一种加快Linux内核启动的自解压阶段的方法 | |
CN113609090A (zh) | 数据存储方法及装置、计算机可读存储介质、电子设备 | |
US9805045B2 (en) | Method and system for compressing data records and for processing compressed data records | |
CN101063939A (zh) | 可更新操作系统程序的嵌入式装置及其方法 | |
CN1269034C (zh) | 一种嵌入式系统中可执行文件的压缩及其加载方法 | |
CN112162780B (zh) | 应用运行控制方法、装置及电子设备 | |
CN1703675A (zh) | 加速多媒体内容 | |
US6442556B1 (en) | Decompression software package that can store files in assigned storage device | |
EP1008045B1 (en) | File system primitive allowing reprocessing of i/o requests by multiple drivers in a layered driver i/o system | |
US20030066046A1 (en) | Java virtual machine with non-volatile memory | |
US20030037066A1 (en) | Delegating sort tasks between heterogeneous computer systems | |
CN113031988A (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 | ||
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 |