JP3955358B2 - 低減されたラン−タイム・メモリ空間要求を有するアーキテクチャ特定コードを実行する方法及びコンピュータ・システム - Google Patents

低減されたラン−タイム・メモリ空間要求を有するアーキテクチャ特定コードを実行する方法及びコンピュータ・システム Download PDF

Info

Publication number
JP3955358B2
JP3955358B2 JP18427697A JP18427697A JP3955358B2 JP 3955358 B2 JP3955358 B2 JP 3955358B2 JP 18427697 A JP18427697 A JP 18427697A JP 18427697 A JP18427697 A JP 18427697A JP 3955358 B2 JP3955358 B2 JP 3955358B2
Authority
JP
Japan
Prior art keywords
code
architecture
run
time memory
computer system
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 - Lifetime
Application number
JP18427697A
Other languages
English (en)
Other versions
JPH10228379A (ja
Inventor
ジー リンドホーム ティモシー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH10228379A publication Critical patent/JPH10228379A/ja
Application granted granted Critical
Publication of JP3955358B2 publication Critical patent/JP3955358B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring 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)

Description

【0001】
【産業上の利用分野】
本発明は、低減されたラン−タイム・メモリ空間要求を有するプログラムを実行する方法及びコンピュータ・システムに関する。特に、本発明は、アーキテクチャ特定コードのラン−タイム・メモリ空間要求が低減されるようにネットワークにわたり伝送されたアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードを実行するネットワークにおける方法及びコンピュータ・システムに関する。
【0002】
【従来の技術】
コンピュータ・システムは、いま、以後ANコードを称する、そのコードがアーキテクチャ・ニュートラル(AN)2進フォーマットであるプログラムの特性を利用すべく構築または構成されている。それゆえに、これらのプログラムのANコードは、コンピュータ・システムの特定アーキテクチャまたはプラットフォームから独立である。
用語アーキテクチャは、一系列のコンピュータ・モデルのオペレーティング特性を意味すべくこの文書の目的に対して定義される。特定のアーキテクチャの例は、マッキントッシュ・コンピュータ、DOSまたはWindowsオペレーティング・システムを用いているIBM PCコンパチブル・コンピュータ、Solarisオペレーティング・システムを走らせているサン・マイクロシステムズ・コンピュータ、及びUnixオペレーティング・システムを用いているコンピュータ・システムを含む。
【0003】
用語アーキテクチャ特定(AS)は、特定のコンピュータ・アーキテクチャを有するコンピュータ・システムでだけの実行のために、以後ASコードと称する、ある一定のプログラムのコードが2進フォーマットにあるという要求を参照すべくこの文書の目的に対して定義される。それゆえに、通常のプログラミング言語(例えば、C言語)で書かれかつ特定のアーキテクチャ(例えば、IBMコンパチブルPC)に対してコンパイルされたコードを有するプログラムは、そのアーキテクチャまたはそのアーキテクチャのエミュレータでだけ走ることができる。
用語アーキテクチャ・ニュートラル(AN)は、そのコンパイルされたコードを異なるアーキテクチャを有する種々のコンピュータ・システムで実行することができるプログラムを参照すべくこの文書の目的に対して定義される。例えば、特定のアーキテクチャを有するコンピュータ・システムは、Java(サン・マイクロシステムズの登録商標)バーチャル・マシン・モジュールで構成することができる。Javaバーチャル・マシン・モジュールは、Javaバーチャル・マシンの命令セットに対して、以後、Javaバイトコードと称する、Javaプログラミング言語で書かれかつバイトコードにコンパイルされたコードを有するプログラムの実行を可能にする。Javaバイトコードは、コンピュータ・システムの特定のアーキテクチャから独立である。
【0004】
ANコードを有するプログラムの重要な特徴は、それらの移植性(ポータビリティ)を含む。例えば、ANコードのプログラムは、コンピュータ・システムの特定アーキテクチャに係わりなくANコードを実行すべく構成されたあらゆるコンピュータ・システムで実行することができるので、これらのプログラムは、一つのコンピュータ・システムから別のコンピュータ・システムにネットワークにわたり容易に移送することができる。例えば、Javaバイトコードにコンパイルされたプログラムは、Javaバーチャル・マシン・モジュールを有するあらゆるコンピュータ・システムで実行することができかつHotJava(サン・マイクロシステムズの登録商標)ネットワーク通信マネージャを用いて一つのコンピュータ・システムから別のコンピュータ・システムにネットワークにわたり容易に移送することができる。
【0005】
更に、Javaバイトコードにコンパイルされたプログラムの移植性に関する別の重要な特徴は、そのようなプログラムの検証可能性である。特に、Javaバーチャル・マシン・モジュールは、これらのプログラムが所定の完全性基準を満足するということを容易に検証することができる。そのような完全性基準は、JavaバイトコードがJavaバーチャル・マシン・モジュールのスタックをオーバフローまたはアンダフローすることができないということ及びJavaバイトコードの全ての命令は、そのデータ型がそれらの命令に対するデータ型制限とマッチするデータだけを利用するということを保証するスタック及びデータ型使用制限を含む。結果として、Javaバイトコードのプログラムは、オブジェクト・ポインタをフォージ(forge) することができずかつ一般にユーザが使用することの許可を明示的に認可したもの以外のシステム資源をアクセスすることができない。
【0006】
これらの理由に対して、コンピュータ・システムは、ネットワークにわたり受け取られるANコードのプログラムの実行のために構成されている。事実、ある場合には、プログラムがコンピュータ・システムのラン−タイム(即ち、実行−時間)メモリ(例えば、ランダム・アクセス・メモリ(RAM))に直接ロードされるので、そのようなコンピュータ・システムは、二次メモリ(例えば、ハード・ディスク)さえも要求しないであろう。結果として、そのようなコンピュータ・システムのユーザは、現在ソフトウェア・プロダクトの典型であるソフトウェア購入、設置、構成及びアップグレーのサイクルから自由される。
ANコードのちょうど説明した特徴は、ネットワークされかつ要求によりANコードでロードされる小さいまたは安いコンピュータ・システムでの使用を特に魅力的にする。例えば、これらの種類のコンピュータ・システムは、ビデオ・ゲーム、パーソナル・ディジタル・アシスタンス(PDAs)、セルラ・フォン、または、他の同様なコンピュータ・システムまたはコンピュータ・オペレーティッド・デバイスでありうる。
【0007】
不運にも、しかしながら、ANコードのプログラムは、ASコードの同じプログラムよりもゆっくり実行される。例えば、Java(登録商標)バーチャル・マシン・モジュールによって実行されるJava(登録商標)コードのプログラムは、一般的にASコードの同等プログラムの2.5から20倍ゆっくり実行される。それゆえに、コンピュータ・システムのユーザは、コンピュータ・システムでの実行のためにASコードにネットワークにわたり受け取ったプログラムのANコードを生成する(即ち、変換する)のが望ましいことを見出しうる。この場合には、コンピュータ・システムは、また、プログラムのANコードの受け取りにより、コンピュータ・システムの特定のアーキテクチャでの実行のために対応ASコードにそれを生成する、コード・ジェネレータを含みうる。
【0008】
ちょうど記述したコンピュータ・システムでは、価格は、非常に重要である。実際には、そのようなコンピュータ・システムを構築することにおける最も重要なコストの一つは、ロードされたプログラムの実行に対して必要なラン−タイム・メモリの量である。従って、そのような低減が強力な競合し得る利点
(効果)を生成するので、これらのコンピュータ・システムによって要求されるラン−タイム・メモリの量を低減することは、非常に重要である。
【0009】
【発明が解決しようとする課題】
残念ながら、ANから生成されたASコードは、オリジナルANコードよりもかなり大きい。例えば、Javaバイトコードから生成されたASコードは、一般的に、Javaバイトコードの大きさの2から5倍である。それゆえに、固定された量のラン−タイム・メモリは、ANコードよりも実質的に少ないコンパイルされたASコードを保持することができる。しかしながら、先に示したように、ASコードは、それがそれから生成されるANコードよりも速くかつ十分な性能を達成するための唯一の方法でありうる。
更に、上記した型のコンピュータ・システムでは、二次メモリにページすることが可能でないかもしれない。この場合には生成されたASコードは、ラン−タイム・メモリキャッシュされかつラン−タイム・メモリにおけるその空間が要求される場合にフラッシュされうる。しかしながら、フラッシュされたプログラムの実行が継続されるべき場合、オリジナルANコードは、ネットワークにわたり再びダウンロードされかつASコードに生成されなければならない。これは、プログラムの実行スピードにかなり影響を及ぼす。更に、二次メモリにページすることが可能なコンピュータ・システムにおいてさえも、二次メモリからASコードを検索するために必要な時間は、あまりにも費用が掛かるであろう。
【0010】
本発明では、ASコードの圧縮そして圧縮解除は、ラン−タイム・メモリにおけるASコードの記憶費用を低減するために用いられる。これは、ASコードをフラッシュしかつそれを再生成することよりも速いので、ASコードの実行スピードは、圧縮及び圧縮解除によってあまり影響を及ぼされない。
本発明の目的は、上記従来の技術における問題点に鑑み、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードにある場合に低減されたラン−タイム・メモリ空間要求でプログラムを実行することができるクライアント・コンピュータ・システム及び方法を提供することである。
【0011】
【課題を解決するための手段】
本発明の上記目的は、アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有するプログラムを実行するクライアント・コンピュータ・システムであって:ラン−タイム・メモリ;アーキテクチャ・ニュートラル・コードのメソッドを受け取るネットワーク通信インターフェイス;受け取った場合にメソッドのアーキテクチャ・ニュートラル・コードをラン−タイム・メモリの利用可能な空間に圧縮しないでロードするネットワーク通信マネージャ;メソッドのロードされたアーキテクチャ・ニュートラル・コードからメソッドの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに生成するコード・ジェネレータ;プログラムの実行を制御し、それによりソッドが呼び出されかつ異なる時間に呼び出されないようにする、実行コントローラ;(A)呼び出されていないメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに圧縮し、それによりラン−タイム・メモリにおいて空間が利用可能になり、かつ(B)メソッドの圧縮解除可能なもの呼び出されうるように該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードをラン−タイム・メモリの利用可能な空間に圧縮解除するための、コード・コンプレッサを備えているクライアント・コンピュータ・システムによって達成される。
【0012】
本発明のクライアント・コンピュータ・システムでは、コード・コンプレッサは、メソッドの圧縮解除可能なもの呼び出されるとすぐに該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除するように構成してもよい。
本発明のクライアント・コンピュータ・システムでは、コード・コンプレッサは、所定の時間間隔後にメソッドの圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除するように構成してもよい。
本発明のクライアント・コンピュータ・システムでは、コード・コンプレッサは、メソッドの圧縮可能なものもはや呼び出されないとすぐに該メソッドの該圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮するように構成してもよい。
【0013】
本発明のクライアント・コンピュータ・システムでは、コード・コンプレッサは、ラン−タイム・メソッドにおける空間が必要であるが利用可能でない場合にメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮するように構成してもよい。
本発明のクライアント・コンピュータ・システムでは、最も古く呼出されたメソッドから最も新しく呼出されたメソッドまでの順番に現在呼び出されていないメソッドのそれらをリストする最も古く呼び出されたリスト;を更に備え、メソッドの圧縮可能なものは、ラン−タイム・メモリの空間が必要であるが利用可能でない場合に圧縮されていないアーキテクチャ特定コードを有する最も古く呼出されたリストにおける最も古く呼出されたメソッドであるように構成してもよい。
【0014】
本発明のクライアント・コンピュータ・システムでは、コード・コンプレッサは、ラン−タイム・メモリが必要であるが利用可能でない場合にメソッドのフラッシュ可能なものの圧縮されたアーキテクチャ特定コードを該ラン−タイム・メモリからフラッシュするように構成してもよい。
本発明のクライアント・コンピュータ・システムでは、二次メモリ;(A)ラン−タイム・メモリの空間が必要であるが利用可能でない場合にメソッドの記憶可能なものの圧縮されたアーキテクチャ特定コードを二次メモリに記憶し、かつ(B)メソッドの検索可能なものの圧縮されたアーキテクチャ特定コードを二次メモリから検索する、コード・コンプレッサ;を更に備えていてもよい。
また、本発明の上記目的は、アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有するプログラムを実行する方法であって:ラン−タイム・メモリを供給し;アーキテクチャ・ニュートラル・コードのプログラムを受け取り;プログラムが受け取られた場合にメソッドのアーキテクチャ・ニュートラル・コードをラン−タイム・メモリの利用可能な空間に圧縮しないでロードし;メソッドのロードされたアーキテクチャ・ニュートラル・コードからメソッドの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに生成し;プログラムを実行し、それによりソッドが呼び出されかつ異なる時間に呼び出されないようにし;呼び出されていないメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに圧縮し、それによりラン−タイム・メモリにおいて空間が利用可能になり;かつメソッドの圧縮解除可能なもの呼び出されうるように該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードをラン−タイム・メモリの利用可能な空間に圧縮解除する段階を具備する方法によって達成される。
【0015】
本発明の方法では、圧縮解除段階は、メソッドの圧縮解除可能なもの呼び出されるとすぐに該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除するように構成してもよい。
本発明の方法では、圧縮解除段階は、所定の時間間隔後にメソッドの圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除するように構成してもよい。
本発明の方法では、圧縮段階は、メソッドの圧縮可能なものもはや呼び出されないとすぐに該メソッドの該圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮することを含むように構成してもよい。
本発明の方法では、圧縮段階は、ラン−タイム・メソッドにおける空間が必要であるが利用可能でない場合にメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮するように構成してもよい。
【0016】
本発明の方法では、最も古く呼出されたメソッドから最も新しく呼出されたメソッドまでの順番に現在呼び出されていないメソッドのそれらをリストする最も古く呼び出されたリストを供給し、メソッドの圧縮可能なものは、ラン−タイム・メモリの空間が必要であるが利用可能でない場合に圧縮されていないアーキテクチャ特定コードを有する最も古く呼出されたリストにおける最も古く呼出されたメソッドであるように構成してもよい。
本発明の方法では、コード・コンプレッサは、ラン−タイム・メモリが必要であるが利用可能でない場合にメソッドのフラッシュ可能なものの圧縮されたアーキテクチャ特定コードを該ラン−タイム・メモリからフラッシュする段階を更に具備するように構成してもよい。
【0017】
本発明の方法では、二次メモリを供給し;ラン−タイム・メモリの空間が必要であるが利用可能でない場合にメソッドの記憶可能なものの圧縮されたアーキテクチャ特定コードを二次メモリに記憶し;かつメソッドの検索可能なものの圧縮されたアーキテクチャ特定コードを二次メモリから検索する、段階を更に具備するように構成してもよい。
【0018】
【作用】
纏めると、本発明は、アーキテクチャ・ニュートラル・コードにおけるメソッドをプログラムに供給するクライアント・コンピュータ・システム及びコンピュータ・ネットワークにおける関連メソッドである。クライアント・コンピュータは、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードにある場合に低減されたラン−タイム・メモリ空間要求でプログラムを実行することができる。クライアント・コンピュータ・システムは、ラン−タイム・メモリ、通信インターフェイス、ネットワーク通信マネージャ、実行コントローラ、コード・ジェネレータ、及びコード・コンプレッサを備えている。
【0019】
ネットワーク通信インターフェイスは、アーキテクチャ・ニュートラル・コードのメソッドを受け取る。ネットワーク通信マネージャは、受け取った場合にメソッドの圧縮されていないアーキテクチャ・ニュートラル・コードをラン−タイム・メモリの利用可能な空間にロードする。
コード・ジェネレータは、次いでラン−タイム・メモリでメソッドのロードされたアーキテクチャ・ニュートラル・コードからメソッドの圧縮されたいないアーキテクチャ特定コードを生成する。実行コントローラは、メソッドが呼び出されかつ異なるときに呼び出されないようにプログラムの実行を制御する。
コード・コンプレッサは、呼び出されないメソッドの圧縮可能なもののアーキテクチャ特定コードをメモリにおいて圧縮する。その結果、空間がラン−タイム・メモリにおいて利用可能にされる。コード・コンプレッサは、また、メソッドの圧縮解除可能なものが呼び出されうるようにメソッドの圧縮解除可能なもののアーキテクチャ特定コードをラン−タイム・メモリの利用可能な空間に圧縮解除する。
【0020】
一実施例では、コード・コンプレッサは、メソッドの圧縮解除可能なものが呼び出されるとすぐにメソッドの圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除する。
別の実施例では、コード・コンプレッサは、所定の時間間隔の後でメソッドの圧縮解除可能なものの圧縮されたアーキテクチャ特定コードを圧縮解除する。
さらに別の実施例では、コード・コンプレッサは、メソッドの圧縮可能なものがもはや呼び出されないとすぐにメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮する。
別の実施例では、コード・コンプレッサは、ラン−タイム・メモリにおける空間が必要であるが利用可能でない場合にメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードを圧縮する。更に、この実施例では、クライアント・コンピュータ・システムは、最も古く呼出されたメソッドから最も新しく呼出されたメソッドの順番に現在呼び出されていないメソッドのそれらをリストする最も古く呼出されたリストを更に備えうる。結果として、メソッドの圧縮可能なものは、ラン−タイム・メモリにおける空間が必要であるが利用可能でない場合に圧縮されていないアーキテクチャ特定コードを有する最も古く呼出されたリストにおける最も古く呼出されたメソッドである。
【0021】
更に別の実施例では、コード・コンプレッサは、ラン−タイム・メモリにおける空間が必要であるが利用可能でない場合にメソッドのフラッシュ可能なものの圧縮されたアーキテクチャ特定コードをラン−タイム・メモリからフラッシュする。
先の実施例に対する代替として、クライアント・コンピュータ・システムは、二次メモリを更に備えうる。この場合には、コード・コンプレッサは、ラン−タイム・メモリにおける空間が必要であるが利用可能でない場合にメソッドの記憶可能なものの圧縮されたアーキテクチャ特定コードを二次メモリに記憶する。コード・コンプレッサは、その圧縮されたアーキテクチャ特定コードが圧縮解除されるべきであるメソッドの検索可能なものの圧縮されたアーキテクチャ特定コードを二次メモリから検索する。
【0022】
本発明の更なる目的及び特徴は、図面を参照することにより以下の詳細の説明及び特許請求の範囲からさらに容易に明らかであろう。
【0023】
【実施例】
図1を参照すると、本発明によるコンピュータ・ネットワーク100が示されている。それは、一つ以上のクライアント・コンピュータ・システム102、一つ以上のサーバ・コンピュータ・システム104、及びネットワーク通信接続106を含む。
クライアント・コンピュータ・システム102は、ネットワーク通信接続106を介してサーバ・コンピュータ・システム104に接続される。ネットワーク通信接続106は、ローカルまたはワイド・エリア・ネットワーク、インターネット、またはネットワーク通信接続の他の型でありうる。
各サーバ・コンピュータ・システム104は、中央処理装置(CPU)110、ユーザ・インターフェイス112、ネットワーク通信インターフェイス116、及びメモリ118を含む。ネットワーク通信インターフェイスは、各サーバ・コンピュータ・システムがネットワーク通信接続106を介してクライアント・コンピュータ・システム102に通信できるようにする。
【0024】
各サーバ・コンピュータ・システム104のメモリ118は、オペレーティング・システム120、ネットワーク通信マネージャ122、及びプログラム145を記憶する。オペレーティング・システム及び通信マネージャは、全てCPU120で走る。オペレーティング・システムは、ユーザ・インターフェイス112でユーザによって発行されかまたはクライアント・コンピュータ・システム102のユーザからネットワーク通信接続106を介してネットワーク通信インターフェイス116によって受け取られたコマンドに応じてネットワーク通信マネージャの走行を制御しかつ統合する。
プログラム145は、メソッド147を備えている。この文書の目的に対して、プログラムの実行の間に種々の時間で呼び出されるかまたは呼び出されないプログラムの離散的フラグメントまたは部分は、メソッドと考えられる。
【0025】
各サーバ・コンピュータ・システム104のメソッド147は、クライアント・コンピュータ・システム102の特定のアーキテクチャ(即ち、プラットフォーム)から独立したアーキテクチャ・ニュートラル(AN)言語のANコードを含む。これらのプラットフォームは、特定のプログラミング言語からANコードにコンパイルされる。好ましい実施例では、これらのプログラムは、Javaプログラミング言語で書かれかつJavaバイトコードにコンパイルされる。更に、これらのプログラムは、オブジェクト指向型メソッドでプログラムされるソフトウェア・プログラムを形成するメソッドを有するオブジェクト・クラスに含まれる。
後で詳述するように、メソッド147は、ネットワーク通信マネージャ122を用いてクライアント・コンピュータ・システム102にユーザ要求により伝送される。それゆえに、これらのメソッドのANコードは、ネットワーク移動コードと考えられる。
【0026】
各クライアント・コンピュータ・システム102は、ビデオ・ゲーム、パーソナル・ディジタル・アシスタント(PDA)、セルラ・フォーン、デスクトップ・コンピュータ、または他のコンピュータ・システムまたは、少量のラン−タイム・メモリを必要とするコンピュータ動作型デバイスでありうる。更に、各クライアント・コンピュータ・システムは、中央処理装置(CPU)126、ユーザ・インターフェイス128、ネットワーク通信インターフェイス132、リード・オンリー・メモリ(ROM)134、及びラン−タイム(即ち、run−time)ランダム・アクセス・メモリ(RAM)136を含む。ネットワーク通信インターフェイスは、クライアント・コンピュータ・システムがネットワーク通信接続106を介してサーバ・コンピュータ・システム104と通信できるようにする。
【0027】
各クライアント・コンピュータ・システム102のRAM136は、オペレーティング・システム138、ネットワーク通信マネージャ140、バーチャル・マシン・モジュール142、コード・ジェネレータ144、及びROM136から全てロードされたコード・コンプレッサ146を記憶する。RAMは、また、ダウンロードされたANコードから生成されたアーキテクチャ特定(AS)コードを含んでいるダウンロードされたANコード及び/又はメソッド148を含んでいるメソッド147を有するプログラム145を記憶する。オペレーティング・システム、ネットワーク通信マネージャ、バーチャル・マシン・モジュール、コード・コンパイラ、コード・コンプレッサ、及びプログラムは、全てCPU126で実行される。オペレーティング・システムは、ユーザ・インターフェイス128でユーザによって発行されたコマンドに応じてネットワーク通信マネージャ、バーチャル・マシン・モジュール、コード・コンパイラ、コード・コンプレッサ、及びプログラムの実行を制御及び統合する。
【0028】
前にほのめかしたように、ANコードを含んでいるメソッド147は、ユーザ要求によりサーバ・コンピュータ・システム104から受け取られる。これらのメソッドは、好ましい実施例では、HotJavaネットワーク通信マネージャである、ネットワーク通信マネージャ140を用いて得られる。ネットワーク通信マネージャは、次いでこれらのメソッドをRAM136にロードする。
バーチャル・マシン・モジュール142のコード・ベリファイヤ151は、ロードされたメソッド147のANコードが所定の完全性基準に一致することを検証する。先に示したように、これは、ロードされたメソッドがバーチャル・マシン・モジュールのスタックをオーバフローまたはアンダーフローすることができないということ及び全ての命令は、そのデータ型がそれらの命令に対するデータ型制限に一致するデータだけを利用するということを保証すべくスタック及びデータ型使用制限を含みうる。好ましい実施例では、バーチャル・マシン・モジュールは、Javaバーチャル・マシン・モジュールである。
【0029】
ASコードを含んでいるメソッド148は、サーバ・コンピュータ・システム104から得られかつネットワーク通信マネージャ140を用いてRAM136にロードされたANコードを初めに含んでいた。しかし、これらのプログラムのオリジナルANコードは、コード・ジェネレータ144によってASコードに生成された。ASコードは、クライアント・コンピュータの特定アーキテクチャで実行可能である。先に示したように、ユーザは、生成されたASコードが対応しているANコードよりも速く実行されうるので、ASコードに生成されたANコードのプログラムを有することを望むであろう。
更に、RAM136に記憶された所定のASコード生成基準150が満足される場合に、ASコードを含んでいるメソッド148は、生成されたそれらのANコードを有する。ASコード生成基準は、ユーザ・インターフェイス128でユーザによって入力され、かつ後でより完全に説明される。
【0030】
バーチャル・マシン・モジュール142の実行コントローラ153は、メソッド147及び/又は148の実行を制御する。特に、エクセキュータは、クライアント・コンピュータ・システム102の特定アーキテクチャでの実行のためにメソッド147のANコードを解釈しかつこれらのメソッドが、特定アーキテクチャでの実行のためにASコードを含んでいるメソッド148を呼出すことができるようにする。メソッドの実行の間に生成された実行149データは、RAM136に記憶される。更に、ネットワーク通信マネージャ140、コード・ジェネレータ144、及び/又はコード・コンプレッサ146がANコードであるならば、実行コントローラは、同様にそれらの実行も制御する。
更に、クライアント・コンピュータ・システム102のRAM空間要求を低く保つために、コード・コンプレッサ146は、種々の時間でメソッド147及び/又は148のコードをRAM136で圧縮及び圧縮解除する。それらがRAM136に記憶されかつユーザ・インターフェイス128でユーザによって入力される所定の圧縮及び圧縮解除基準152及び154をそれぞれ満足するので、これは、圧縮可能及び圧縮解除可能であるメソッドに対して行われる。圧縮及び圧縮解除基準は、後でより完全に説明される。
【0031】
メソッド147及び/又は148の記憶及び呼出し状態は、メソッド(メソッド)状態データ構造155で保守される。メソッド状態データ構造は、ネットワーク通信マネージャ140、実行コントローラ153、コード・ジェネレータ144、及びコード・コンプレッサ146によって更新される。
図2は、メソッド147及び/又は148をRAM136で圧縮及び圧縮解除することにおけるクライアント・コンピュータ・システム102のそれぞれのオペレーションの機能ブロック図を示す。更に、図3及び4は、それぞれ好ましい圧縮及び圧縮解除メソッド300及び400を示す。
図1〜図3を参照すると、ユーザが、クライアント・コンピュータ・システム14の一つのプログラム145の実行を要求する場合、ユーザのクライアント・コンピュータ・システム102は、サーバ・コンピュータ・システムから要求したプログラムの各メソッド147を得る(図3のステップ302)。これは、ユーザが、サーバ・コンピュータ・システムからのプログラムをダウンロードしかつ実行すべくユーザ・インターフェイス128でコマンドを発行する場合に行われる。応答として、オペレーティング・システム120は、そのような要求が行われたということを示しているメッセージを生成するネットワーク通信マネージャ140を呼出す。ネットワーク通信インターフェイス132は、次いで、サーバ・コンピュータ・システムにメッセージを伝送する。
【0032】
サーバ・コンピュータ・システム104のネットワーク通信インターフェイス116は、伝送されたメッセージを受け取る。それに応じて、サーバ・コンピュータ・システムのネットワーク通信マネージャ122は、ユーザのクライアント・オペレーション・システム102にメソッドを次いで伝送するネットワーク通信インターフェイスに要求されたプログラム145のメソッド147を供給する。伝送されたメソッド147は、ユーザのクライアント・コンピュータ・システム102のネットワーク通信インターフェイス132によって受け取られる。それに応じて、ネットワーク通信マネージャ140は、次いで、RAM136において十分な空間が受け取ったメソッドをロードするために利用可能であるかどうかを決定する(図3の意思決定ステップ304)。利用可能であれば、次いでネットワーク通信マネージャは、圧縮されていないこれらのメソッドのANコードをRAMの利用可能な空間)にロードする(図3のステップ306)。結果として、これらのメソッドは、他のプログラム45の先にロードされたメソッド147と一緒にRAMにロードされる。これらのメソッドをロードすることにおいて、ネットワーク通信マネージャは、メソッド及これらのメソッドによって占有されたRAM136におけるメモリ空間に対する対応ポインタを識別すベくメソッド状態データ構造155のメソッド(メソッド)記憶状態表200を更新する。更に、ネットワーク通信マネージャは、メソッドのANコードが圧縮されえいない(U)ことを示すべくメソッド状態表を更新する。
【0033】
ネットワーク通信マネージャ140は、バーチャル・マシン・モジュール142のコード・ベリファイヤ151を次いで呼出す。応答として、コード・ベリファイヤは、ちょうどロードされたメソッド147のANコードが、先に説明した所定の完全性基準と一致することを検証する(図3のステップ307)。
ネットワーク通信マネージャ140は、ちょうどロードされたメソッド147のいずれかのANコードがASコードにコンパイルされるかどうかを次いで決定する(図3の意思決定段階308)。これは、ASコード生成基準に基づいて行われる。当業者が認識するように、ユーザは、広範囲のオプションからかつユーザのクライアント・コンピュータ・システムに特有な多数の条件に基づきASコード生成基準を選択及び/又は同調させうる。例えば、ASコード生成基準は、これらのメソッドがロードされる場合に全てのダウンロードされたメソッドのANコードがASコードに生成されるべきであるということ、またはそれらがロードされる場合にANコードを有するダウンロードされたメソッドの全てがASコードに生成されたそれらのANコードを有さないということ、またはそれらがロードされる場合に特定の大きさまたは型のANコードを有するそれらのダウンロードされたメソッドだけがASコードに生成されたそれらのANコードを有するということを特定しうる。
【0034】
ちょうどロードされたメソッド147のあるものがASコードに生成されたそれらのANコードを有するならば、ネットワーク通信マネージャは、コード・ジェネレータ144を呼出す。コード・ジェネレータは、これらのメソッドのANコードをASコードに生成するためにRAM136に十分な空間があるかどうかを決定する(図3の意思決定ステップ310)。あるならば、コード・ジェネレータは、利用可能な空間にこれらのメソッドのASコードを生成し(図3のステップ312)かつ生成されたASコードによって占有された空間をポイントすべくメソッド記憶状態表200のポインタを更新する。結果として、これらのメソッドは、そのANコードがASコードに生成された他の先にダウンロードされたメソッドと共に、ASコードを含むメソッド148としてRAMに記憶される。
【0035】
ちょうどロードされたANコードを含んでいるメソッド147及び/又はちょうどロードされかつASコードに生成されたASコードを含んでいるメソッド148を有するプログラム145は、次いで、先にロードされたプログラム145と共にエクスキュータの制御下で実行される(図3のステップ314)。先に示したように、実行コントローラは、ユーザのクライアント・コンピュータ・システム102の特定アーキテクチャでの実行のためにメソッド147のANコードを解釈しかつこれらのプログラムが特定アーキテクチャでの実行のためにASコードを含んでいるメソッド148を呼出すことができるようにする。
それがスリープさせられる、等なので、ロードされたメソッド147及び/又は148のそれぞれは、種々の時間で呼び出されないであろう。プログラム実行コントローラがこれが発生したということを決定する場合、それは、現在呼び出されていないということを示すためにメソッド状態データ構造155の最も古く呼出された(LRI)リスト202にメソッドを加える。LRIリストのメソッドは、最も新たらしく呼出されたものから最も古く呼出されたものまでリストされる。
【0036】
先に示したように、RAM136の空間要求を低減するために、所定の圧縮基準152が満足される各ロードされたメソッド147及び/又は148のコードは、コード・コンプレッサ146によって圧縮される。好ましい実施例では、圧縮基準は、圧縮可能メソッド147または148のコードが(1)RAM136の空間が必要であるが利用可能でなく、かつ(2)メソッドが、そのコードがまだ圧縮されていないLRIリスト202のメソッドの最も古く呼び出された、ときに圧縮されるということを特定する。
ネットワーク通信マネージャ140がRAM136の空間がサーバ・コンピュータ・システム104によって受け取られた一つ以上のメソッド147をロードするために利用可能ではないということを決定する場合(図3の意思決定ステップ304)、それは、コード・コンプレッサ146を呼出す。それに応じて、コード・コンプレッサは、十分な空間が利用可能になるまでLRIリスト202の最も古く呼出されたメソッドのコードを圧縮する(図3のステップ316)。コード・コンプレッサは、また、メソッドの圧縮されたコードのメモリ空間への対応ポインタを識別しかつメソッドのコードが圧縮されたということを示すためにメソッド記憶状態表200も更新する(C)。次いでネットワーク通信マネージャは、先に説明したように、利用可能な空間に空間が利用可能にされたメソッドをロードする(図3のステップ306)。
【0037】
コード・コンプレッサ146は、当業者によく知られたあらゆる高速データ圧縮技術を使用しうる。更に、コード・コンプレッサは、メソッド147のANコード及びメソッド148のASコードの最適圧縮に対して個別の圧縮技術を使用しうる。
更に、RAMの空間がちょうどロードされた一つ以上のメソッド147をコンパイルするためにコード・ジェネレータによって要求される場合(図3の意思決定ステップ310)、コード・ジェネレータ144は、コード・コンプレッサ146を呼出す。ちょうどロードされたメソッドの場合におけるように、コード・コンプレッサは、十分な空間が利用可能になるまでLRIリスト202の最も古く実行されたメソッドのコードを圧縮し(図3のステップ318)、かつそのようにすることにより、メソッドの圧縮されたコードのメモリ空間への対応ポインタを識別しかつメソッドのコードが圧縮されたということを示すためにメソッド記憶状態表200を更新する(C)。コード・ジェネレータは、次いで、先に説明したように、空間が利用可能になったメソッドのASコードを利用可能空間に生成する(図3のステップ312)。
【0038】
更に、ロードされたメソッド147及び/又は148が呼び出されると同時に、それらは、実行データを生成する。実行コントローラ153が決定するこれらのメソッドのいずれかが呼び出されることに対し(図3の意思決定ステップ320)かつRAM136の空間が実行データを記憶するために利用可能であることに対して(ステップ322)、実行コントローラは、RAMに実行データを記憶する(図3のステップ324)。
しかしながら、エクセキュータ153が決定するロードされたメソッド147及び/又は148のそれぞれが実行可能であることに対し(図3の意思決定ステップ320)かつRAM136の空間が利用可能ではないが実行データを記憶することが必要であることに対して(意思決定ステップ322)、エクセキュータは、コード・コンプレッサ146を呼出す。RAMにおける空間が必要であるような先の情況におけるように、コード・コンプレッサは、十分な空間が利用可能になるまでLRIリスト202における最も古く実行されたメソッドのコードを圧縮する(図3のステップ326)。そして、先に説明したように、コード・コンプレッサは、メソッドの圧縮されたコードのメモリ空間への対応ポインタを識別しかつメソッドのコードが圧縮されたということを示すためにメソッド記憶状態表200を更新する(C)。次いで、実行コントローラは、先に記述したように、RAMにおいて利用可能になった空間に実行データを記憶し、かつその実行データが記憶されたメソッドを有するプログラムの実行が継続される(図3のステップ314)。
【0039】
更に、図1、2、及び4を参照すると、RAM136の空間が利用可能である場合、圧縮されかつ所定の圧縮解除基準154が満足される各ロードされたメソッド147及び/又は148は、コード・コンプレッサ146によって圧縮解除される。好ましい実施例では、圧縮解除可能なメソッドのコードを圧縮解除するための所定の圧縮解除基準は、メソッドのコードが圧縮されかつメソッドが再び呼び出されるときに圧縮解除されるということを単に特定する。
それゆえに、実行コントローラ153がロードされたメソッド147及び/又は148の一つが呼び出されるということを決定するときにはいつでも(図4の意思決定ステップ402)、それは、このメソッドのコードが圧縮されるかどうかを決定する(図4の意思決定ステップ404)。これは、メソッド記憶状態表200から決定される。メソッドのコードが圧縮されないならば、メソッドは、実行コントローラによって呼び出される(図4のステップ406)。それがもはや呼び出されない場合には、そのコードは、先に説明したメソッドでコード・コンプレッサ146によった圧縮されうる。
【0040】
しかしながら、呼び出されるメソッド147または148のコードが圧縮されるならば、実行コントローラは、メソッドのコードを圧縮解除するためにコード・コンプレッサ146を呼出す。コード・コンプレッサは、メソッドのコードを圧縮解除するためにRAM136において十分な空間が利用可能であるかどうかを決定する(図4の意思決定ステップ408)。十分な空間が利用可能ならば、コード・コンプレッサは、利用可能な空間でメソッドのコードを圧縮解除する(図4のステップ410)。そのようにすることで、それは、圧縮されていないコードのメモリ空間への対応ポインタを識別しかつメソッドのコードがいま圧縮されていないということを示すためにメソッド記憶状態表200を更新する(U)。
【0041】
しかしながら、十分な空間が利用可能でないならば、コード・コンプレッサ146は、空間が利用可能になるまでそのコードがまだ圧縮されていないLRIリスト202の最も古く実行されたメソッドのコードを圧縮する(図4のステップ412)。これは、先に示したメソッドで行われる。空間が利用可能になった後、圧縮解除されるべきメソッド147または148のコードは、利用可能な空間でコード・コンプレッサによって圧縮解除され、そして説明したメソッドで実行コントローラ153によって呼び出される(図4のステップ410及び406)。
前記の観点において、本発明は、実行スピードをセーブすると同時にラン−タイム・メモリ空間における低減を提供するということが明らかである。これは、ロードされたメソッド147及び/又は148を圧縮することによって、それらは、RAMにおける空間が必要な場合にRAM136からフラッシュされかつサーバ・コンピュータ・システム104から再ダウンロードされる必要がなくはないという事実による。更に、ASコードを含んでいるメソッドの場合には、これらのメソッドが再ダウンロード及び再生成される必要がないので、実行スピードは、さらにセーブされる。しかしながら、当業者が認識するように、他の代替実施例は、同様な利益を供給すべくインプリメントすることができる。
【0042】
特に、先に説明した圧縮基準152は、RAM136の空間が必要であったが利用可能でない場合に圧縮されていないコードを有する最も古く呼出されたメソッド147及び/又は148のコードが圧縮されるであろうということを特定した。しかしながら、圧縮基準は、広範囲のオプションからかつユーザのクライアント・コンピュータ・システム102に特有な多数の条件に基づきユーザによって選択されうる。例えば、圧縮基準は、各メソッドのコードがプログラムもはや呼び出されなくなったならば圧縮されるということを単に特定しうる。または、それは、ある一定のメソッドのコードが圧縮するための時間が利用可能なときは遅延させて圧縮されるということを特定しうる。先のいずれかのものの更なる変形として、圧縮基準は、特定の大きさまたは型のメソッドのコードだけが圧縮されるということを特定しうる。
【0043】
更に、先に示したように、圧縮解除基準154は、そのコードが圧縮されたコードであるメソッド147または148が、メソッドが呼び出されるとすぐにそのコードを圧縮解除させるということを特定した。しかしながら、圧縮解除基準は、所定の時間間隔が期限切れ(満了)になった後に圧縮されたコードが圧縮解除されるということを特定できる。この場合には、データ・コンプレッサは、時間間隔を計時するためのタイマを含むことができる。一例では、この技術は、メソッドがこの時間間隔に対して圧縮されそしてそれが目覚めさせられるときのほんの少し前に圧縮解除されるように既知の時間間隔に対してスリープさせられているメソッドに用いることができる。または、別の例では、技術は、それにわたりメソッドが圧縮される時間間隔が データがメソッドに対して利用可能になる場合を予測するように選択されるようなデータを待っているメソッドに用いることができる。
【0044】
別の実施例では、圧縮基準152は、また、ロードされたメソッド147及び/又は148がRAM136からフラシュされる場合を特定しているフラッシング基準も含みうる。例えば、フラッシング基準は、呼び出されないRAMにおいてロードされたメソッドが存在しないならば、圧縮されたコードを有するLRIリスト202の最も古く呼出されたメソッドは、フラッシュ可能でありかつ十分な空間が利用可能になるまでRAM136からフラッシュされるということを示しうる。その結果、メソッドがRAMからフラッシュされそして再び呼び出される場合、ネットワーク通信マネージャは、先に説明したメソッドでメソッドを供給するサーバ・コンピュータ・システム104からメソッドを再ダウンロードしなければならない。実行コントローラ153は、フラシュされたメソッドへの参照を除去することによってメソッド記憶状態表200を更新する。
【0045】
更に、ちょうど説明した実施例に対する変形として、ASコード生成基準150は、それらのANコードがASコードに生成されたメソッド148のANコードが生成されたASコードと共にRAM136に維持されるべきであるということを特定しうる。これは、メソッドのASコードがRAMからフラッシュされなければならない場合にメソッドのANコードがメソッドのASコードに再生成することができるように行われる。これは、サーバ・コンピュータ・システムからメソッドのANコードを再ダウンロードするために必要な時間をセーブする。更に、ANコードは、それがASコードへの再生成に対して必要になるまでRAMに圧縮することができる。
ちょうど説明した実施例の別の変形では、メソッド148のダウンロードされたANコードは、実行コントローラ153の制御下で初めに実行されるであろう。次いで、実行コントローラは、ANコードのラン−タイム挙動に基づき統計を纏めかつ纏められた統計がASコード生成基準150のある一定のしきい値基準を満足するならばANコードをASコードに生成するであろう。例えば、実行コントローラは、ANコードがランする回数の計数を保守しうる。一度この計数がしきい数を通過したならば、実行コントローラは、ANコードをASコードに生成するためにコード・ジェネレータ144を呼出すであろう。
【0046】
RAM136からロードされたメソッド147及び/又は148をフラッシュすることは実行スピードの点で費用が掛かるので、図5及び図6に示すように、二次メモリ500は、さもなければフラッシュされるメソッドを記憶するために用いることができる。この場合には、先に説明した圧縮基準152は、ちょうど説明したフラッシング基準に類似しかつそれらが二次記憶基準を満足するので記憶可能であるメソッドを記憶するために用いられる二次記憶基準156を含む。しかしながら、この場合には、コード・コンプレッサ146は、二次メモリにおけるこれらのメソッドをポイントするためにメソッド記憶状態表200のポインタを更新する。更に、それらのコードが圧縮され、二次メモリに記憶され、かつ圧縮解除されるべきであるように検索可能であるメソッドに対して、メソッドのコードは、二次メモリから検索されそして先に説明したメソッドでRAM136において圧縮解除される。
【0047】
また、クライアント・コンピュータ・システム102が二次メモリ500を含むような実施例(例えば、ネットワーク型デスクトップ・コンピュータ)では、メソッド147は、サーバ・コンピュータ・システム104から二次メモリにダウンロードすることができる。次いで、これらのメソッドは、サーバ・コンピュータ・システム104からではなく二次メモリからRAM136に直接ロードすることができる。更に、そのような実施例では、オペレーティング・システム138、ネットワーク通信マネージャ140、バーチャル・マシン・モジュール142、及びコード・コンプレッサ146は、二次メモリに記憶しかつそこからRAMにロードすることができる。
別の実施例では、オペレーティング・システム138、ネットワーク通信マネージャ140、バーチャル・マシン・モジュール142、コード・ジェネレータ144、及びコード・コンプレッサ146は、サーバ・コンピュータ・システム104の一つからクライアント・コンピュータ・システム102のRAM136にダウンロードすることができる。
【0048】
これは、サーバ・コンピュータ・システムのメソッド147に対して先に説明したものと同様なメソッドで行われる。
そして、本発明は、2〜3の実施例を参照して記述されたが、記述は、本発明の説明のためであり本発明を限定することを企図していない。特許請求の範囲によって定義されたような本発明の真の精神及び範疇から逸脱することなく種々の変更が当業者において生起されうる。
【0049】
【発明の効果】
本発明のクライアント・コンピュータ・システムは、アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有するプログラムを実行するクライアント・コンピュータ・システムであって:ラン−タイム・メモリ;アーキテクチャ・ニュートラル・コードのメソッドを受け取るネットワーク通信インターフェイス;受け取った場合にメソッドのアーキテクチャ・ニュートラル・コードをラン−タイム・メモリの利用可能な空間に圧縮しないでロードするネットワーク通信マネージャ;メソッドのロードされたアーキテクチャ・ニュートラル・コードからメソッドの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに生成するコード・ジェネレータ;プログラムの実行を制御し、それによりソッドが呼び出されかつ異なる時間に呼び出されないようにする、実行コントローラ;(A)呼び出されていないメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに圧縮し、それによりラン−タイム・メモリにおいて空間が利用可能になり、かつ(B)メソッドの圧縮解除可能なもの呼び出されうるように該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードをラン−タイム・メモリの利用可能な空間に圧縮解除するための、コード・コンプレッサを備えているので、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードにある場合に低減されたラン−タイム・メモリ空間要求でプログラムを実行することができる。
【0050】
本発明の方法は、アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有するプログラムを実行する方法であって:ラン−タイム・メモリを供給し;アーキテクチャ・ニュートラル・コードのプログラムを受け取り;プログラムが受け取られた場合にメソッドのアーキテクチャ・ニュートラル・コードをラン−タイム・メモリの利用可能な空間に圧縮しないでロードし;メソッドのロードされたアーキテクチャ・ニュートラル・コードからメソッドの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに生成し;プログラムを実行し、それによりソッドが呼び出されかつ異なる時間に呼び出されないようにし;呼び出されていないメソッドの圧縮可能なものの圧縮されていないアーキテクチャ特定コードをラン−タイム・メモリに圧縮し、それによりラン−タイム・メモリにおいて空間が利用可能になり;かつメソッドの圧縮解除可能なもの呼び出されうるように該メソッドの該圧縮解除可能なものの圧縮されたアーキテクチャ特定コードをラン−タイム・メモリの利用可能な空間に圧縮解除する段階を具備するので、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードにある場合に低減されたラン−タイム・メモリ空間要求でプログラムを実行することができる。
【図面の簡単な説明】
【図1】本発明を組み込んだクライアント・コンピュータ・システムのブロック図である。
【図2】クライアント・コンピュータ・システムのオペレーションの機能ブロック図である。
【図3】クライアント・コンピュータ・システムの圧縮メソッドのフローチャートである。
【図4】クライアント・コンピュータ・システムの圧縮解除メソッドのフローチャートである。
【図5】クライアント・コンピュータ・システムの代替実施例を示す。
【図6】クライアント・コンピュータ・システムの代替実施例のオペレーションの機能ブロック図を示す。
【符号の説明】
100 コンピュータ・ネットワーク
102 クライアント・コンピュータ・システム
104 サーバ・コンピュータ・システム
106 ネットワーク通信接続
110、126 CPU
112、128 ユーザ・インターフェイス
116 通信インターフェイス
118
120、138 オペレーティング・システム
122、140 ネットワーク通信マネージャ
132 ネットワーク通信インターフェイス
134 ROM
136 RAM
142 バーチャル・マシン・モジュール
145 プログラム
146 コード・コンプレッサ
147 メソッド:ANコード
148 メソッド:ASコード
149 実行データ
150、152、154 基準
151 コード・ベリファイヤ
153 実行コントローラ
155 メソッド状態データ構造

Claims (16)

  1. アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有する前記プログラムを実行するクライアント・コンピュータ・システムであって:
    ラン−タイム・メモリ;
    アーキテクチャ・ニュートラル・コードのメソッドを受け取るネットワーク通信インターフェイス;
    受け取った場合に前記メソッドの前記アーキテクチャ・ニュートラル・コードを前記ラン−タイム・メモリの利用可能な空間に圧縮しないでロードするネットワーク通信マネージャ;
    前記メソッドの前記ロードされたアーキテクチャ・ニュートラル・コードから前記メソッドの圧縮されていないアーキテクチャ特定コードを前記ラン−タイム・メモリに生成するコード・ジェネレータ;
    前記プログラムの実行を制御し、それにより記メソッドが呼び出されかつ異なる時間に呼び出されないようにする、実行コントローラ;
    (A)呼び出されていない前記メソッドの圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを前記ラン−タイム・メモリに圧縮し、それにより前記ラン−タイム・メモリにおいて空間が利用可能になり、かつ(B)前記メソッドの圧縮解除可能なもの呼び出されうるように該メソッドの該圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを前記ラン−タイム・メモリの利用可能な空間に圧縮解除するための、コード・コンプレッサを備えていることを特徴とするクライアント・コンピュータ・システム。
  2. 前記コード・コンプレッサは、前記メソッドの前記圧縮解除可能なもの呼び出されるとすぐに該メソッドの該圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを圧縮解除することを特徴とする請求項1に記載のクライアント・コンピュータ・システム。
  3. 前記コード・コンプレッサは、所定の時間間隔後に前記メソッドの前記圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを圧縮解除することを特徴とする請求項1に記載のクライアント・コンピュータ・システム。
  4. 前記コード・コンプレッサは、前記メソッドの前記圧縮可能なものもはや呼び出されないとすぐに該メソッドの該圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを圧縮することを特徴とする請求項1、2または3に記載のクライアント・コンピュータ・システム。
  5. 前記コード・コンプレッサは、前記ラン−タイム・メソッドにおける空間が必要であるが利用可能でない場合に前記メソッドの前記圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを圧縮することを特徴とする請求項1、2または3に記載のクライアント・コンピュータ・システム。
  6. 最も古く呼出されたメソッドから最も新しく呼出されたメソッドまでの順番に現在呼び出されていない前記メソッドのそれらをリストする最も古く呼び出されたリスト;を更に備え、
    前記メソッドの前記圧縮可能なものは、前記ラン−タイム・メモリの空間が必要であるが利用可能でない場合に前記圧縮されていないアーキテクチャ特定コードを有する前記最も古く呼出されたリストにおける前記最も古く呼出されたメソッドであることを特徴とする請求項1から請求項5のいずれか一項に記載のクライアント・コンピュータ・システム。
  7. 前記コード・コンプレッサは、前記ラン−タイム・メモリが必要であるが利用可能でない場合に前記メソッドのフラッシュ可能なものの前記圧縮されたアーキテクチャ特定コードを該ラン−タイム・メモリからフラッシュすることを特徴とする請求項1から請求項6のいずれか一項に記載のクライアント・コンピュータ・システム。
  8. 二次メモリ;
    (A)前記ラン−タイム・メモリの空間が必要であるが利用可能でない場合に前記メソッドの記憶可能なものの前記圧縮されたアーキテクチャ特定コードを前記二次メモリに記憶し、かつ(B)前記メソッドの前記検索可能なものの前記圧縮されたアーキテクチャ特定コードを前記二次メモリから検索する、コード・コンプレッサ;を更に備えていることを特徴とする請求項1から請求項7のいずれか一項に記載のクライアント・コンピュータ・システム。
  9. アーキテクチャ・ニュートラル・コードのメソッドを有するプログラムが設けられているコンピュータ・ネットワークにおいて、メソッドがメソッドのアーキテクチャ・ニュートラル・コードから生成されたアーキテクチャ特定コードである場合に低減されたラン−タイム・メモリ空間要求を有する前記プログラムを実行する方法であって:
    ラン−タイム・メモリを供給し;
    アーキテクチャ・ニュートラル・コードの前記プログラムを受け取り;
    前記プログラムが受け取られた場合に前記メソッドの前記アーキテクチャ・ニュートラル・コードを前記ラン−タイム・メモリの利用可能な空間に圧縮しないでロードし;
    前記メソッドの前記ロードされたアーキテクチャ・ニュートラル・コードから前記メソッドの圧縮されていないアーキテクチャ特定コードを前記ラン−タイム・メモリに生成し;
    前記プログラムを実行し、それにより記メソッドが呼び出され、かつ異なる時間に呼び出されないようにし
    呼び出されていない前記メソッドの圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを前記ラン−タイム・メモリに圧縮し、それにより前記ラン−タイム・メモリにおいて空間が利用可能になり;かつ
    前記メソッドの圧縮解除可能なもの呼び出されうるように該メソッドの該圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを前記ラン−タイム・メモリの利用可能な空間に圧縮解除する段階を具備することを特徴とする方法。
  10. 前記圧縮解除段階は、前記メソッドの前記圧縮解除可能なもの呼び出されるとすぐに該メソッドの該圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを圧縮解除することを含むことを特徴とする請求項9に記載の方法。
  11. 前記圧縮解除段階は、所定の時間間隔後に前記メソッドの前記圧縮解除可能なものの前記圧縮されたアーキテクチャ特定コードを圧縮解除することを含むことを特徴とする請求項9に記載の方法。
  12. 前記圧縮段階は、前記メソッドの前記圧縮可能なものもはや呼び出されないとすぐに該メソッドの該圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを圧縮することを含むことを特徴とする請求項9、10または11に記載の方法。
  13. 前記圧縮段階は、前記ラン−タイム・メソッドにおける空間が必要であるが利用可能でない場合に前記メソッドの前記圧縮可能なものの前記圧縮されていないアーキテクチャ特定コードを圧縮することを特徴とする請求項9、10または11に記載のクライアント・コンピュータ・システム。
  14. 最も古く呼出されたメソッドから最も新しく呼出されたメソッドまでの順番に現在呼び出されていない前記メソッドのそれらをリストする最も古く呼び出されたリストを供給し、
    前記メソッドの前記圧縮可能なものは、前記ラン−タイム・メモリの空間が必要であるが利用可能でない場合に前記圧縮されていないアーキテクチャ特定コードを有する前記最も古く呼出されたリストにおける前記最も古く呼出されたメソッドであることを特徴とする請求項9から請求項13のいずれか一項に記載の方法。
  15. 前記コード・コンプレッサは、前記ラン−タイム・メモリが必要であるが利用可能でない場合に前記メソッドのフラッシュ可能なものの前記圧縮されたアーキテクチャ特定コードを該ラン−タイム・メモリからフラッシュする段階を更に具備することを特徴とする請求項9から請求項14のいずれか一項に記載の方法。
  16. 二次メモリを供給し;
    前記ラン−タイム・メモリの空間が必要であるが利用可能でない場合に前記メソッドの記憶可能なものの前記圧縮されたアーキテクチャ特定コードを前記二次メモリに記憶し;かつ
    前記メソッドの前記検索可能なものの前記圧縮されたアーキテクチャ特定コードを前記二次メモリから検索する、段階を更に具備することを特徴とする請求項9から請求項15のいずれか一項に記載の方法。
JP18427697A 1996-06-05 1997-06-05 低減されたラン−タイム・メモリ空間要求を有するアーキテクチャ特定コードを実行する方法及びコンピュータ・システム Expired - Lifetime JP3955358B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/658500 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
JPH10228379A JPH10228379A (ja) 1998-08-25
JP3955358B2 true JP3955358B2 (ja) 2007-08-08

Family

ID=24641494

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18427697A Expired - Lifetime JP3955358B2 (ja) 1996-06-05 1997-06-05 低減されたラン−タイム・メモリ空間要求を有するアーキテクチャ特定コードを実行する方法及びコンピュータ・システム

Country Status (8)

Country Link
US (1) US5794049A (ja)
EP (1) EP0811910B1 (ja)
JP (1) JP3955358B2 (ja)
KR (1) KR100528844B1 (ja)
CN (1) CN1122228C (ja)
DE (1) DE69724516T2 (ja)
SG (1) SG74591A1 (ja)
TW (1) TW332881B (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 京セラ株式会社 半導体装置

Also Published As

Publication number Publication date
CN1174359A (zh) 1998-02-25
EP0811910A3 (en) 1999-03-10
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
CN1122228C (zh) 2003-09-24
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
JP3955358B2 (ja) 低減されたラン−タイム・メモリ空間要求を有するアーキテクチャ特定コードを実行する方法及びコンピュータ・システム
US5859982A (en) Computer system and method for executing methods of downloaded programs with reduced run-time memory space requirements
KR100453723B1 (ko) 감소된런-타임메모리공간의요구를가지고실행쓰레드들을실행하기위한컴퓨터시스템및방법
CN101719073B (zh) 一种基于智能客户端的按需下载实现方法
US6807559B1 (en) System and method for applet management
US20040230971A1 (en) Method and apparatus for packaging and streaming installation software
WO2004059438A2 (en) System to automatically process components on a device
EP1378822A1 (en) Data processing system and data processing method, information processing device and information processing method, and storage medium
CN106886422A (zh) 软件升级方法及装置、电子设备
US6256714B1 (en) Computer system with efficient memory usage for managing multiple application programs
US7114153B2 (en) Method and apparatus for continuation-passing in a virtual machine
US8533736B2 (en) System and method for adding local resources for use by a mobile agent object
US7191443B2 (en) Digital device, task management method and program therefor
CN110795113A (zh) 一种Redis集群服务的安装方法、服务器和介质
CN113031988B (zh) 应用程序更新方法、装置、设备和存储介质
KR100583544B1 (ko) 모바일 디바이스의 메모리 확장을 위한 자원관리시스템
KR100568999B1 (ko) 동적 파일결합 시스템 및 파일 다운로드 방법
CN117707551A (zh) 一种目标软件包的安装方法及装置
JP2003256219A (ja) 組込み機器におけるプログラム実行方法
CN116932078A (zh) 一种插件首次冷启动优化方法及装置
CN115617416A (zh) 一种防止安卓程序自启动的方法及其系统
JP2000099342A (ja) 効率的なメモリ利用が可能なコンピュ―タシステム
JP2003256218A (ja) 組込み機器におけるプログラム実行方法
JPH04257927A (ja) 高速プログラムロード方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040607

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070502

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110511

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110511

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120511

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130511

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130511

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term