JPH10124334A - 低減されたラン−タイム・メモリ空間要求を有する実行のスレッドを実行する方法及びコンピュータ・システム - Google Patents

低減されたラン−タイム・メモリ空間要求を有する実行のスレッドを実行する方法及びコンピュータ・システム

Info

Publication number
JPH10124334A
JPH10124334A JP9146680A JP14668097A JPH10124334A JP H10124334 A JPH10124334 A JP H10124334A JP 9146680 A JP9146680 A JP 9146680A JP 14668097 A JP14668097 A JP 14668097A JP H10124334 A JPH10124334 A JP H10124334A
Authority
JP
Japan
Prior art keywords
thread
execution data
data
run
execution
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
Application number
JP9146680A
Other languages
English (en)
Other versions
JP3863967B2 (ja
Inventor
Timothy G Lindholm
ジー リンドホーム ティモシー
William N Joy
エヌ ジョイ ウィリアム
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 JPH10124334A publication Critical patent/JPH10124334A/ja
Application granted granted Critical
Publication of JP3863967B2 publication Critical patent/JP3863967B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

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

(57)【要約】 (修正有) 【課題】 記憶要求を低減するために各スレッドの平均
ラン−タイム記憶費用を低減する方法及びコンピュータ
・システムを提供する。 【解決手段】 実行コントローラは、スレッドが異なる
時間で実行可能或は実行不可能であるように制御し、ま
た、実行可能データが生成されるときにスレッドの実行
データをラン−タイム・メモリの利用可能空間に圧縮し
ないで記憶する。データ・コンプレッサは、実行不可能
であるスレッドの圧縮可能なもので圧縮されていない実
行データを圧縮する。その結果、空間は、ラン−タイム
・メモリにおいて利用可能になる。データ・コンプレッ
サは、また、スレッドの圧縮解除可能なものが実行可能
になった後で実行されうるようにスレッドの圧縮解除可
能なものの圧縮された実行データをラン−タイム・メモ
リの利用可能な空間で圧縮解除する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、低減されたラン−タイ
ム・メモリ空間要求を有する多重スレッド環境における
プログラムを実行する方法及びコンピュータ・システム
に関する。特に、本発明は、メモリ空間要求を低減する
ようにスレッドが実行不能であるときにスレッドの実行
データが圧縮されるような実行のスレッドを実行する方
法及びコンピュータ・システムに関する。
【0002】
【従来の技術】コンピュータ・システムは、いま、その
コードが、以後ANコードと呼ぶ、アーキテクチャ・ニ
ュートラル(AN)2進フォーマットで表されるプログ
ラムの特性を利用すべく構築または構成されている。そ
れゆえに、これらのプログラムのANコードは、コンピ
ュータ・システムの特定のアーキテクチャまたはプラッ
トフォームに独立である。用語アーキテクチャは、コン
ピュータ・モデルのファミリーのオペレーティング特性
を意味すべくこの文書の目的に対して定義される。特定
のアーキテクチャの例は、マッキントッシュ(Macintos
h) ・コンピュータ、DOSまたはWindowsオペ
レーティング・システムを用いているIBM PCコン
パチブル・コンピュータ、Solaris オペレーティング・
システムを走らせているサン・マイクロシステムズ(Sun
Microsystems)コンピュータ、及びユニックス(Unix)オ
ペレーティング・システムを用いているコンピュータ・
システムを含む。
【0003】用語アーキテクチャ特定(AS)は、ある
一定のプログラムのコードが、特定のコンピュータ・ア
ーキテクチャを有するコンピュータ・システムでのみの
実行のために、ASコードと以下で呼ばれる、2進フォ
ーマットである要求(事項)を参照すべくこの文書の目
的に対して画定される。それゆえに、通常のプログラミ
ング言語(例えば、80486 アセンブラ言語)で書かれか
つ特定のアーキテクチャ(例えば、IBMコンパチブル
PC)に対してコンパイルされたコードを有するプログ
ラムは、そのアーキテクチャまたはそのアーキテクチャ
のエミュレータでのみ走らせることができる。用語アー
キテクチャ・ニュートラル(AN)は、そのコンパイル
されたコードが異なるアーキテクチャを有する種々のコ
ンピュータ・システムで実行することができるプログラ
ムを参照すべくこの文書の目的に対して定義される。例
えば、特定のアーキテクチャを有するコンピュータ・シ
ステムは、Java(サン・マイクロシステムズの登録商
標)仮想マシン・モジュールで構成することができる。
Java仮想マシン・モジュールは、Javaプログラミング言
語で書かれ、かつ Java仮想マシンの命令セットに対し
て、以後Javaバイトコードと呼ぶ、バイトコードにコン
パイルされたコードを有するプログラムの実行が可能で
ある。Javaバイトコードは、コンピュータ・システムの
特定のアーキテクチャに独立である。
【0004】ANコードを有するプログラムの重要な特
徴は、それらの小型性(portability) を含む。例えば、
ANコードのプログラムは、コンピュータ・システムの
特定アーキテクチャに係わりなくANコードを実行すべ
く構成されたあらゆるコンピュータ・システムで実行す
ることができるので、これらのプログラムは、一つのコ
ンピュータ・システムから別のコンピュータ・システム
にネットワークにわたり容易に移送することができる。
例えば、Javaバイトコードにコンパイルされたプログラ
ムは、Java仮想マシン・モジュールを有するあらゆるコ
ンピュータ・システムで実行することができかつHot Ja
va(サン・マイクロシステムズの登録商標)ネットワー
ク通信マネージャを用いて一つのコンピュータ・システ
ムから別のコンピュータ・システムにネットワークにわ
たり容易に移送することができる。
【0005】更に、Javaバイトコードにコンパイルされ
たプログラムの小型性に関する別の重要な特徴は、その
ようなプログラムの確認性である。特に、Java仮想マシ
ン・モジュールは、これらのプログラムが所定の完全性
基準(integrity criteria)を満足するということを容易
に確認することができる。そのような完全性基準は、Ja
vaバイトコードがJava仮想マシン・モジュールのスタッ
クをオーバーフローまたはアンダーフローすることがで
きずかつJavaバイトコードの全ての命令がそのデータ型
がそれらの命令に対するデータ型制限に一致するデータ
だけを用いるということを確実にするスタック及びデー
タ型(stack and data type) 使用制限を含む。結果とし
て、Javaバイトコードのプログラムは、オブジェクト・
ポインタをフォージ(forge) することができずかつ一般
的にユーザが用いるべき許可をそれに明示的に与えるも
の以外のシステム資源をアクセスすることができない。
【0006】これらの理由で、コンピュータ・システム
は、ネットワークにわたり受信されるANコードにコン
パイルされたプログラムの実行に対して構成されてい
る。事実、ある場合には、プログラムがコンピュータ・
システムのラン−タイム(即ち、実行−時間)メモリ
(例えば、ランダム・アクセス・メモリ(RAM))に
直接ロードされるので、そのようなコンピュータ・シス
テムは、二次メモリ(例えば、ハード・ディスク)さえ
も要求しないであろう。その結果、そのようなコンピュ
ータ・システムのユーザは、ソフトウェア製品で現在一
般的であるソフトウェア購入、設置、構成及びアップグ
レードのサイクルから解放される。更に、多くのソフト
ウェア・プログラム(即ち、アプリケーション)は、実
行の多重スレッドで実行されうる。スレッドは、プログ
ラムをよりレスポンシブにさせ、高速で走らせる、等の
ために用いることができる。
【0007】上記の観点から、ANコードのマルチ・ス
レッド・プログラムは、ネットワークされかつ要求に応
じてANコードでロードされる安いコンピュータ・シス
テム用に特に魅力的である。例えば、これらの種類のコ
ンピュータ・システムは、ビデオ・ゲーム、パーソナル
・ディジタル・アシスタント(PDAs)、セルラー電
話機、または他の類似するコンピュータ・システムまた
はコンピュータ動作型デバイスでありうる。そのような
コンピュータ・システムに対して、低価格は、非常に重
要である。実際に、そのようなコンピュータ・システム
を構築することにおける最も重要な費用の一つは、ソフ
トウェア・インフラストラクチャ及びプログラムを走ら
せるために必要なラン−タイム(即ち、実行−時間)メ
モリの量である。これは、ソフトウェア・インフラスト
ラクチャ及びプログラムのコードを記憶するために必要
である静的メモリから区別されるべきである。そのよう
な低減が強力な競合利点を生成するので、ちょうど説明
した種類のコンピュータ・システムによって要求される
ラン−タイム・メモリの量を低減することは、非常に重
要である。
【0008】
【発明が解決しようとする課題】特定的に、多重スレッ
ド環境では、スレッドは、一般に、スレッドを実行する
ために必要な実行データを記憶すべくラン−タイム(即
ち、実行−時間)メモリの一つ以上の専用領域(即ち、
範囲)を用いて一部インプリメントされる。これらの専
用領域は、一般に、スタック(stacks)、ヒープ(heaps)
、または個別スレッド−ローカル変数の形でありかつ
スレッドのラン−タイム記憶費用を表す。それゆえに、
プログラムのラン−タイム記憶費用は、全てのそのスレ
ッドのラン−タイム記憶費用の合計であり、プログラム
の静的記憶費用は、そのコードを記憶するために用いら
れるメモリの量である。それゆえに、プログラムを支援
するために必要なコンピュータ・システムの記憶要求を
低減するために各スレッドの平均ラン−タイム記憶費用
を低減することが望ましい。
【0009】本発明の目的は、上記従来技術における問
題点に鑑み、記憶要求を低減するために各スレッドの平
均ラン−タイム記憶費用を低減する方法及びコンピュー
タ・システムを提供することである。
【0010】
【課題を解決するための手段】本発明の上記目的は、低
減されたラン−タイム空間要求を有する実行の複数のス
レッドを実行するコンピュータ・システムであって、ラ
ン−タイム・メモリ; (A)スレッドを実行し、それによりスレッドが異なる
時間で実行可能及び実行不能であり、かつ(B)実行デ
ータが生成されるときにスレッドの実行データをラン−
タイム・メモリの利用可能空間に圧縮しないで記憶する
実行コントローラ;及び(A)実行不能であるスレッド
の圧縮可能なものの圧縮されていない実行データまたは
その部分をラン−タイムメモリで圧縮し、それにより空
間がラン−タイム・メモリにおいて利用可能になり、か
つ(B)スレッドの圧縮解除可能なものが実行可能にな
った後で実行されうるようにスレッドの圧縮解除可能な
ものの圧縮された実行データをラン−タイム・メモリの
利用可能空間に圧縮解除するデータ・コンプレッサを備
えているコンピュータ・システムによって達成される。
【0011】本発明のコンピュータ・システムでは、デ
ータ・コンプレッサは、スレッドの圧縮解除可能なもの
が実行可能になったならばスレッドの圧縮解除可能なも
のの圧縮された実行データを圧縮解除するように構成し
てもよい。本発明のコンピュータ・システムでは、所定
の時間間隔後にスレッドの圧縮解除可能なものの圧縮さ
れた実行データを圧縮解除するように構成してもよい。
本発明のコンピュータ・システムでは、データ・コンプ
レッサは、スレッドの圧縮可能なものが実行不能になっ
たならばスレッドの圧縮可能のものの圧縮されていない
実行データまたはその部分を圧縮するように構成しても
よい。本発明のコンピュータ・システムでは、データ・
コンプレッサは、ラン−タイム・メモリが必要であるが
利用可能でないときにスレッドの圧縮可能なものの圧縮
されていない実行データまたはその部分を圧縮するよう
に構成してもよい。
【0012】本発明のコンピュータ・システムでは、最
も古く実行されたスレッドから最も新しく実行されたス
レッドの順で現在実行不能であるスレッドのそれらをリ
ストする最も古く実行されたリスト;を更に備え、スレ
ッドの圧縮可能なものは、ラン−タイム・メモリの空間
が必要であるが利用可能でないときに圧縮されていない
実行データを有する最も古く実行されたリストの最も古
く実行されたスレッドであってもよい。本発明のコンピ
ュータ・システムでは、二次メモリ;(A)ラン−タイ
ム・メモリの空間が必要であるが利用可能でないときに
スレッドの記憶可能なものの圧縮された実行データまた
はその部分を二次メモリに記憶し、かつ(B)その圧縮
された実行データがラン−タイム・メモリで圧縮解除さ
れるべきであるようなスレッドの検索可能なものの圧縮
された実行データまたはその部分を検索するデータ・コ
ンプレッサ;を更に備えてもよい。
【0013】また、本発明の上記目的は、低減されたラ
ン−タイム・メモリ空間要求を有する実行の複数のスレ
ッドを実行する方法であって、ラン−タイム・メモリを
供給し;スレッドを実行し、それによりスレッドが異な
る時間で実行可能及び実行不能であり;実行データが生
成されたときにスレッドの実行データをラン−タイム・
メモリの利用可能な空間に圧縮しないで記憶し;実行不
能であるスレッドの圧縮可能なものの圧縮されていない
実行データまたはその部分を圧縮し、それにより空間が
ラン−タイム・メモリで利用可能になり;かつスレッド
の圧縮解除可能なものが実行可能になった後に実行され
うるようにスレッドの圧縮解除可能なものの圧縮された
実行データをラン−タイム・メモリの利用可能な空間に
圧縮解除する段階を具備する方法によって達成される。
【0014】本発明の方法では、圧縮解除段階は、スレ
ッドの圧縮解除可能なものが実行可能になったならばス
レッドの圧縮解除可能なものの圧縮された実行データを
圧縮解除する段階を含むようにしてもよい。本発明の方
法では、圧縮解除段階は、所定の時間間隔後にスレッド
の圧縮解除可能なものの圧縮された実行データを圧縮解
除する段階を含むようにしてもよい。本発明の方法で
は、圧縮段階は、スレッドの圧縮可能なものが実行不能
になったならばスレッドの圧縮可能のものの圧縮されて
いない実行データを圧縮することを含むようにしてもよ
い。本発明の方法では、圧縮段階は、ラン−タイム・メ
モリが必要であるが利用可能でないときにスレッドの圧
縮可能なものの圧縮されていない実行データを圧縮する
ことを含むようにしてもよい。
【0015】本発明の方法では、最も古く実行されたス
レッドから最も新しく実行されたスレッドの順で現在実
行不能であるスレッドのそれらをリストする最も古く実
行されたリストを供給する段階を更に具備し;スレッド
の圧縮可能なものは、ラン−タイム・メモリの空間が必
要であるが利用可能でないときに圧縮されていない実行
データを有する最も古く実行されたリストの最も古く実
行されたスレッドであってもよい。本発明の方法では、
二次メモリを供給し;ラン−タイム・メモリの空間が必
要であるが利用可能でないときにスレッドの記憶可能な
ものの圧縮された実行データまたはその部分を二次メモ
リに記憶し;かつその圧縮された実行データがラン−タ
イム・メモリで圧縮解除されるべきであるようなスレッ
ドの検索可能なものの圧縮された実行データまたはその
部分を二次メモリから検索する段階を更に具備するよう
にしてもよい。
【0016】
【作用】纏めると、本発明は、低減されたラン−タイム
・メモリ空間要求を有する実行の複数のスレッドを実行
するためのコンピュータ・システム及び関連方法であ
る。コンピュータ・システムは、ラン−タイム・メモ
リ、実行コントローラ、及びデータ・コンプレッサを備
えている。実行コントローラは、異なる時間にスレッド
が実行可能及び実行不能であるようにスレッドの実行を
制御する。実行コントローラは、また、実行データが生
成されるときにときにスレッドの実行データをラン−タ
イム・メモリの利用可能空間に圧縮しないで記憶する。
データ・コンプレッサは、実行不能であるスレッドの圧
縮可能なものの圧縮されていない実行データまたはその
部分を圧縮する。結果として、空間は、ラン−タイム・
メモリで利用可能になる。データ・コンプレッサは、ま
た、それらが実行可能になるときにスレッドの圧縮解除
可能なものが実行されうるようにその実行データが圧縮
されるスレッドの圧縮解除可能なものの圧縮された実行
データまたはその部分をラン−タイム・メモリの利用可
能な空間で圧縮解除する。
【0017】一実施例では、データ・コンプレッサは、
それらが実行可能になると即にスレッドの圧縮解除可能
なものの圧縮された実行データを圧縮解除する。別の実
施例では、データ・コンプレッサは、所定の時間間隔後
にスレッドの圧縮解除可能なものの圧縮された実行デー
タを圧縮解除する。さらに別の実施例では、データ・コ
ンプレッサは、それらが実行不能になると即にスレッド
の圧縮可能なものの圧縮されていない実行データを圧縮
する。また別の実施例では、データ・コンプレッサは、
ラン−タイム・メモリにおける空間が必要であるが利用
可能でないときにスレッドの圧縮可能なものの圧縮され
ていない実行データを圧縮する。この実施例では、コン
ピュータ・システムは、最も古くく(least recently)実
行されたスレッドから最も新しく実行されたスレッドの
順に現在実行不能であるスレッドのそれらをリストする
最も古く(leastrecently)実行されたリストを更に備え
うる。スレッドの圧縮可能なものは、ラン−タイム・メ
モリの空間が必要であるが利用可能でないときに圧縮さ
れていない実行データを有する最も古く実行されたリス
トの最も古く実行されたスレッドである。
【0018】更なる実施例では、コンピュータ・システ
ムは、また、二次メモリを備えている。この実施例で
は、データ・コンプレッサは、ラン−タイム・メモリの
空間が必要であるが利用可能でないときに実行不能であ
るスレッドの記憶可能なものの圧縮された実行データま
たはその一部分を二次メモリに記憶する。データ・コン
プレッサは、次いで、その圧縮された実行データがラン
−タイム・メモリで圧縮解除されるべきであるスレッド
の検索可能なものの圧縮された実行データまたはその一
部分を二次メモリから検索する。本発明の更なる目標及
び特徴は、図面と一緒に以下の詳細な説明及び特許請求
の範囲から容易に明らかであろう。
【0019】
【実施例】図1を参照すると、本発明によるコンピュー
タ・ネットワーク100が示されている。それは、一つ
以上のクライアント・コンピュータ・システム102、
一つ以上のサーバ・コンピュータ・システム104、及
びネットワーク通信接続106を含む。クライアント・
コンピュータ・システム102は、ネットワーク通信接
続106を介してサーバ・コンピュータ・システム10
4に接続されている。ネットワーク通信接続は、ローカ
ルまたはワイド・エリア・ネットワーク、インターネッ
ト、またはある他の型のネットワーク通信接続でありう
る。各サーバ・コンピュータ・システム104は、中央
処理装置(CPU)110、ユーザ・インターフェイス
112、ネットワーク通信インターフェイス116、及
びメモリ118を含む。ネットワーク通信インターフェ
イスは、各サーバ・コンピュータ・システムがネットワ
ーク通信接続106を介してクライアント・コンピュー
タ・システム102と通信できるようにする。
【0020】各サーバ・コンピュータ・システム104
のメモリ118は、オペレーティング・システム12
0、ネットワーク通信マネージャ(またはサーバ)12
2、及びマルチ・スレッド・プログラム(即ち、メソッ
ド)147及び/又は148を記憶する。オペレーティ
ング・システム及び通信マネージャは、全てCPU12
0で走る。オペレーティング・システムは、ユーザ・イ
ンターフェイス112でユーザによって発行されたかま
たはクライアント・コンピュータ・システム102のユ
ーザからネットワーク通信接続106を介してネットワ
ーク通信インターフェイス116によって受信されたコ
マンドに応じてネットワーク通信マネージャの走行を制
御しかつコーディネートする。各サーバ・コンピュータ
・システム104のプログラム147は、クライアント
・コンピュータ・システム102の特定のアーキテクチ
ャ(即ち、プラットフォーム)に独立であるアーキテク
チャ・ニュートラル(AN)コードを含む。これらのプ
ログラムは、特定のプログラミング言語からANコード
にコンパイルされる。好ましい実施例では、これらのプ
ログラムは、Javaプログラミング言語で書かれかつ
Javaバイトコードにコンパイルされる。更に、これ
らのプログラムは、オブジェクト指向型方法でプログラ
ムされたソフトウェア・アプリケーションを形成するオ
ブジェクト・クラスに含まれる。
【0021】プログラム147とは異なり、各サーバ・
コンピュータ・システムのプログラム148は、クライ
アント・コンピュータ・システム102の特定アーキテ
クチャに対するアーキテクチャ特定(AS)コードにコ
ンパイルされる。後で詳述するように、ネットワーク1
00が、これらのプログラムが高度の信頼請求性でクラ
イアント・コンピュータ102へ確実に送られうるよう
なクローズされ(closed)かつトラストされた(trusted)
ネットワークであるかまたはこれらのプログラムが確認
することができるディジタル署名を組み込んでいること
が好ましい。後で詳述するように、プログラム147及
び/又は148は、ネットワーク通信マネージャ122
を用いてクライアント・コンピュータ・システム102
へのユーザ要求により伝送される。それゆえに、これら
のプログラムのコードは、ネットワーク移動コードと考
えられる。
【0022】各クライアント・コンピュータ・システム
102は、ビデオ・ゲーム、パーソナル・ディジタル・
アシスタント(PDA)、セルラー電話機、デスクトッ
プ・コンピュータ、または他のコンピュータ・システム
または少量のラン−タイム・メモリを必要とするコンピ
ュータ動作型デバイスでありうる。更に、各クライアン
ト・コンピュータ・システムは、中央処理装置(CP
U)126、ユーザ・インターフェイス128、ネット
ワーク通信インターフェイス132、読み取り専用メモ
リ(ROM)134、及びラン−タイム・ランダム・ア
クセス・メモリ(RAM)136を含む。ネットワーク
通信インターフェイスは、クライアント・コンピュータ
・システムがネットワーク通信接続106を介してサー
バ・コンピュータ・システム104と通信できるように
する。
【0023】各クライアント・コンピュータ・システム
102のRAM136は、ROM134から全てロード
されたデータ・コンプレッサ146、仮想マシン・モジ
ュール142、ネットワーク通信マネージャ140、オ
ペレーティング・システム138を記憶する。RAM
は、また、サーバ・コンピュータ104からダウンロー
ドされたアーキテクチャ特定(AS)コードのプログラ
ム148及びANコードのプログラム147を記憶す
る。オペレーティング・システム、ネットワーク通信マ
ネージャ、仮想マシン・モジュール、データ・コンプレ
ッサ、及びプログラムは、全てCPU126で実行され
る。オペレーティング・システムは、ユーザ・インター
フェイス128でユーザによって発行されたコマンドに
応じてネットワーク通信マネージャ、仮想マシン・モジ
ュール、データ・コンプレッサ、及びプログラムの実行
を制御しかつコーディネートする。
【0024】先に示したように、プログラム147及び
/又は148は、ユーザ要求によりサーバ・コンピュー
タ・システム104から受信される。これらのプログラ
ムは、好ましい実施例では、HotJava ネットワーク通信
マネージャである、ネットワーク通信マネージャ140
を用いて取得される。ネットワーク通信マネージャは、
次いで、RAM136にこれらのプログラムをロードす
る。ANコードでロードされたプログラム147の場合
には、仮想マシン・モジュール142のコード・ベリフ
ァイヤ151は、次いで、ロードされたプログラムのA
Nコードが所定の完全性基準に一致することを確認す
る。先に示したように、これは、ロードされたプログラ
ムが仮想マシン・モジュールのスタックをオーバーフロ
ーまたはアンダーフローすることができないしかつ全て
のプログラム命令がそのデータ型がそれらのプログラム
命令に対するデータ型制限に一致するデータだけを利用
するということを確実にすべくスタック及びデータ型使
用制限を含みうる。
【0025】しかしながら、ASコードでロードされた
プログラム148の場合には、コード・ベリファイヤ1
51は、それらの完全性を直接確認するために用いるこ
とができない。それゆえに、それらの完全性を間接的に
確認するために、ネットワーク100は、これらのプロ
グラムが高度な信頼性でクライアント・コンピュータ1
02へ確実に送られうるようなクローズされかつトラス
トされたネットワークでありうる。代替的に、ネットワ
ーク100が安全(確実)でないならば、これらのプロ
グラムは、ネットワーク通信マネージャ140がそれら
がトラストされた資源からであるということを確認でき
るようにするディジタル署名を組み込みうる。仮想マシ
ン・モジュール142の実行コントローラ153は、そ
れらがロードされたときにプログラム147及び/又は
148の実行を制御する。特に、実行コントローラは、
クライアント・コンピュータ・システム102の特定ア
ーキテクチャでの実行に対してプログラム147のAN
コードを変換(翻訳)しかつこれらのプログラムが特定
のアーキテクチャで実行されるべきASコードを有する
プログラム148を呼出すことができるようにする。更
に、ネットワーク通信マネージャ140、及び/又はデ
ータ・コンプレッサ146は、それら自身がANコード
にコンパイルされるならば、実行コントローラは、それ
らの実行も制御する。
【0026】ちょうどロードされたプログラム147及
び/又は148は、マルチ・スレッドされるので、実行
コントローラ153は、これらのプログラムに対する実
行のスレッドを生成する。これらのスレッドの実行は、
他のロードされたプログラム147及び/又は148の
スレッドと一緒に、実行コントローラによって制御され
る。仮想マシン・モジュール142は、クライアント・
コンピュータ・システム102の特定アーキテクチャに
対してASコードにコンパイルされる。仮想マシン・モ
ジュールは、C言語で書かれかつASコードにコンパイ
ルされたJava仮想マシン・モジュールでありうる。
更に、クライアント・コンピュータ・システム102の
RAM空間要求をローに保つために、データ・コンプレ
ッサ146は、それらの実行中に種々の時間でスレッド
の実行データをRAM136で圧縮及び圧縮解除する。
各スレッドの実行データは、それが圧縮されないときに
RAMの圧縮されていないデータ・リポジトリ158に
記憶されかつそれが圧縮されるときにRAMの圧縮され
たデータ・リポジトリ157に記憶される。スレッドの
実行及び記憶状態は、スレッド実行及び記憶状態データ
構造155に維持される。スレッドの実行データは、そ
れらがRAM136に記憶される所定の圧縮及び圧縮解
除基準152及び154を満たすのでそれぞれ圧縮可能
及び圧縮解除可能であるスレッドに対して圧縮及び圧縮
解除される。本発明のある実施例では、後でより完全に
説明する、圧縮及び圧縮解除基準は、一組の所定のメモ
リ・マネージメント戦略から(ユーザ・インターフェイ
ス128を用いて)ユーザ選択可能及び/又は調整可能
である。
【0027】好ましい実施例では、所定の圧縮基準15
2は、圧縮可能スレッドの実行データが(1)RAM1
36の空間が必要であるが利用可能でなく、かつ(2)
圧縮可能スレッドが、その実行データがまだ圧縮されて
いないスレッドの最も古く実行されたときに圧縮される
ことを特定する。また、好ましい実施例では、圧縮解除
可能なスレッドの実行データを圧縮解除するための所定
の圧縮解除基準154は、圧縮解除可能なスレッドの実
行データが圧縮されかつ圧縮解除可能なスレッドが実行
可能になったときに圧縮解除されるべきであることを単
に特定する。図2を参照すると、スレッド200のそれ
ぞれは、ASコード(ASC)スタック及びACコード
(ANC)スタックで実行コントローラ153によって
インプリメントされる。特定的に、実行コントローラ
は、それがスレッドの実行を制御できるようにそのAS
コードを実行するための実行データをASCスタックに
記憶する。同様に、実行コントローラは、スレッドのA
NCコード及びANコードによって呼出されたあらゆる
ASコードを実行するための実行データをANCスタッ
クに記憶する。仮想マシン・モジュール142がC言語
で書かれかつASコードにコンパイルされる場合には、
ASCスタックは、C言語で書かれたプログラムのイン
プリメンテーションで一般的に行われるような、固定サ
イズの連続性スタック(例えば、128K)でありう
る。更に、プログラム147がJavaバイトコードにコン
パイルされる場合には、ANCスタックは、RAM空間
要求により拡張及び収縮される(例えば、少なくとも4
Kでかつ4Kインクリメントで増大または減少される)
可変サイズ非連続性Javaスタックである。
【0028】スレッド200のそれぞれのASC及びA
NCスタックを生成するために、圧縮されていないデー
タ・リポジトリ158は、ASCメモリ・エリア204
のプール202及びANCメモリ・エリア208のプー
ル206を含む。更に、スレッド記憶状態データ構造1
55は、スレッド記憶状態テーブル210、ASCメモ
リ・エリア204のフリー・リスト、及びANCメモリ
・エリア208のフリー・リスト214を含む。フリー
・リストは、利用可能である(即ち、フリー)ASC及
びANCメモリ・エリアのそれら及び利用可能メモリ・
エリアへの対応ポインタをそれぞれリストする。図3
は、先に説明した好ましい圧縮及び圧縮解除基準152
及び154による本発明の圧縮及び圧縮解除方法300
のフローチャートを示す。図2及び図3を参照すると、
スレッド200の一つが実行コントローラ153によっ
て生成されるとき(図3のステップ302)、それは、
スレッドをインプリメントすべく圧縮されていないデー
タ・リポジトリ158に利用可能なメモリ空間が存在す
るかどうかを決定する(図3のステップ304)。これ
は、利用可能なASCメモリ・エリア204及び利用可
能なANCメモリ・エリア208が存在するかどうかを
フリー・リスト212及び214から決定することによ
って行われる。
【0029】メモリ空間が利用可能であれば、実行コン
トローラ153は、メモリ空間を割り当てかつ圧縮され
ていない実行データが生成されるときにスレッド200
をインプリメントすべく圧縮されていない実行データを
それに記憶する(図3のステップ306)。換言する
と、ASCメモリ・エリア204及びANCメモリ・エ
リア208の両方が利用可能であれば、実行コントロー
ラは、スレッドのASC及びANCスタックとして利用
可能なASC及びANCメモリ・エリアを割り当てかつ
スレッドの圧縮されていない実行データをそれらに記憶
する。そのようにして、実行コントローラは、スレッ
ド、ASCスタックを形成する割り当てられたASCメ
モリ・エリア、及びANCスタックを形成する割り当て
られたANCメモリ・エリアを識別すべくスレッド記憶
状態テーブル210を更新する。更に、実行コントロー
ラは、ASC及びANCスタックの底部へのポインタと
してそれぞれサーブするASC及びANCメモリ・エリ
アへのポインタを識別すべくスレッド記憶状態テーブル
を更新する。割り当てられたASC及びANCメモリ・
エリアは、従って一緒に、スレッドのメモリ空間を供給
する。実行コントローラは、また、スレッドのメモリ空
間の実行データが圧縮されていない(U)ことを示すべ
くスレッド記憶状態テーブルを更新しかつ対応フリー・
リストから割り当てられたASC及びANCメモリ・エ
リアを除去する。
【0030】スレッド200のそれぞれは、種々の時間
で実行可能(即ち、使用可能または走行可能)及び実行
不能でありうる。それが眠らされ、データを待ち、計画
解除される、等であるので、スレッドは、現在実行可能
ではないであろう。スレッド状態データ構造155は、
現在実行可能ではない各スレッドをリストするLREリ
スト216を含む。LREは、最も古く実行されたもの
から最も新しく実行されら順にスレッドをリストする。
しかしながら、圧縮されていないデータ・リポジトリ1
20のメモリ空間がスレッド200をインプリメントす
べく利用可能でないならば、実行コントローラ153
は、データ・コンプレッサ146を呼出す。データ・コ
ンプレッサは、LREリストにリストされた最も古く実
行されたスレッドの実行データを圧縮しかつ圧縮された
データ・リポジトリ157にそれを配置する(図3のス
テップ308)。特定的に、スレッドに割り当てられた
ようにスレッド記憶状態テーブル210で識別されたA
SC及びANCメモリ・エリアの圧縮された実行データ
は、圧縮されたデータ・リポジトリ157の対応してい
る圧縮されたデータ(CD)メモリ・エリア218に配
置される。データ・コンプレッサは、また、スレッドの
ASC及びANCスタックを形成する対応しているCD
メモリ・エリアを識別すべくスレッド記憶状態テーブ
ル、及びCDメモリ・エリアの圧縮された実行データの
エンドへの対応しているポインタを更新する。それは、
また、スレッドのメモリ空間が圧縮されている(C)こ
とを示すためにスレッド記憶状態テーブルを更新する。
データ・コンプレッサ146は、当業者に周知のあらゆ
る高速データ圧縮技術を用いうる。
【0031】生成されたスレッド200が実行可能であ
ると同時に、実行コントローラ153は、実行中に生成
される圧縮されていない実行データを適切なときにAS
C及びANCスタックに配置しかつASC及びANCス
タックから除去する。そのようにして、実行コントロー
ラは、ASC及びANCスタックの頂部へのポインタを
それぞれ更新する。更に、これが発生している間に(図
3のステップ310)、実行コントローラ153は、生
成されたスレッドにメモリ空間を割り当てるための先に
記述されたものと同じ方法で実行中にスレッドがさらな
るメモリ空間を必要とするときに(図3のステップ31
2)スレッドのメモリ空間のサイズを増大する(ステッ
プ304〜308)。特定的に、スレッドがアーキテク
チャ・ニュートラル言語でスレッドを走らせるための実
行データを記憶すべくさらなるメモリ空間を必要とする
度毎に、ANCスタックのサイズは、それに圧縮されて
いないデータ・リポジトリ120の別の部分を割り当て
ることによって増大されなければならない。これによ
り、実行コントローラは、ANCスタックの一部である
として割り当てられたANCメモリ・エリアを識別し、
割り当てられたANCメモリ・エリアへのポインタを識
別し、かつANCスタックの頂部へのポインタとしてサ
ーブする割り当てられたANCメモリ・エリアの実行デ
ータのエンドへのポインタを識別すべくスレッド記憶状
態テーブル210を更新することによってフリー・リス
ト212にリストされた別のANCメモリ・エリア20
8をスレッドに割り当てる。更に、実行コントローラ
は、フリー・リストから割り当てられたANCメモリ・
エリアを除去する(または利用可能ANCメモリ・エリ
アの部分がスレッドに割り当てられたならばそのサイズ
を減少する)。
【0032】同様に、スレッド200が実行可能である
間に(図3のステップ310)、それがもはやそのメモ
リ空間の部分を必要としない度毎に、(図3のステップ
314)、スレッドのメモリ空間は、それが必要としな
い部分を割り当て解除することによって減少される(図
3のステップ316)。特定的に、ANCスタックのサ
イズは、それよりも少ないものがその実行中にスレッド
によって要求されるときにはいつでも減少される。例え
ば、メモリが4Kバイト・ブロックに割り当てられてお
り、スレッドによって用いられるANCスタックの部分
が、4Kバイト・ブロックの割り当て解除を許容すべく
十分に減少されるとき(即ち、ANCスタックへの頂部
へのポインタがANCスタックの先行する4Kブロック
における位置をポイントする)、ANCのサイズは、一
つの4Kバイト・ブロックによって減少される。これ
は、もはや必要でないANCスタックのANCメモリ・
エリア208を割り当て解除することによって行われ
る。このANCメモリ・エリアを割り当て解除すること
で、実行コントローラは、ANCメモリ・エリアがそれ
から除去されかつANCスタックの一部であるとしても
はや識別されないようにスレッド記憶状態テーブル21
0を更新する。
【0033】スレッド200が実行不能になるとき(図
3のステップ310)、実行コントローラ153は、L
REリスト216のエンドにそれを加える(図3のステ
ップ318)。このスレッドがまだ実行不能である間
(図3のステップ320)、実行コントローラは、その
メモリ空間のあるものが別のスレッドによって供給され
るかどうかを決定する(図3のステップ322)。これ
は、先に記述したように、他方のスレッドが生成される
か(図3のステップ302)またはさらなるメモリ空間
を必要とする(図3のステップ312)し、他のスレッ
ドに利用可能な圧縮されていないデータ・リポジトリ1
20十分なメモリ空間が存在しないときに、発生し、か
つそのメモリ空間が必要とされるスレッドは、その実行
データがまだ圧縮されていないLREリスト216の最
も古く実行されたスレッドである。
【0034】メモリ空間が別のスレッドによって必要で
あれば、そのメモリ空間が必要であるスレッド200の
実行データは、先に説明した方法で(図3のステップ3
08)データ・コンプレッサによって圧縮される(図3
のステップ324)。この処理(図3のステップ320
〜324)は、スレッドが再び実行可能になるまで繰り
返される(図3のステップ320)。スレッド200が
再び実行可能になるとき、実行コントローラ153は、
スレッドの実行データが圧縮されたかどうかを決定する
(図3のステップ326)。それが圧縮されていないな
らば、実行コントローラは、LREリスト216からス
レッドを除去する(図3のステップ328)。その結
果、スレッドの実行データは、スレッドが再び実行不能
になるまで圧縮されず(図3のステップ310)、スレ
ッドは、LREリストに加えられ(図3のステップ31
8)、かつスレッドのメモリ空間は、別のスレッドによ
って必要とされる(図3のステップ322)。
【0035】しかしながら、スレッド200が再び実行
可能になるがその実行データが圧縮されているとき、実
行コントローラ153は、スレッドの実行データを圧縮
解除すべくメモリ空間が圧縮されていないデータ・リポ
ジトリ120において利用可能かどうかを決定する(図
3のステップ330)。これは、生成されたスレッドに
対して先に説明したものと類似する方法で行われる(図
3のステップ304)。スレッド200の実行データを
圧縮解除するために利用可能なメモリ空間が不十分であ
るならば、LREリスト216の一つ以上の最も古く実
行されたスレッドの実行データは、メモリ空間を利用可
能にすべく圧縮される。これは、先に記述したものと類
似する方法で行われる(図3のステップ308)。
【0036】十分なメモリ空間が既に利用可能であるか
または一つ以上の他のスレッドの実行データを圧縮する
ことによって十分なメモリ空間が利用可能になっている
ときに、実行コントローラ153は、スレッド200の
実行データを圧縮解除するために必要なメモリ空間を割
り当てる(図3のステップ334)。これは、ASC及
びANCメモリ・エリア204及び208がスレッドの
ASC及びANCスタックを形成すべく割り当てられる
ように、生成されたスレッドに対して先に記述したもの
(図3のステップ306)と類似する方法で行われる。
スレッド200の実行データは、データ・コンプレッサ
146によって圧縮解除されかつ利用可能なメモリ空間
に配置される(図3のステップ336)。特定的に、ス
レッドに割り当てられているようにスレッド記憶状態テ
ーブル210で識別されたCDメモリ・エリア218の
実行データは、圧縮解除されかつ実行コントローラ15
3によって割り当てられた対応しているASC及びAN
Cメモリ・エリア204及び208に配置される。この
ように、データ・コンプレッサは、スレッドのASC及
びANCスタックを形成する対応しているASC及びA
NCメモリ・エリアへのポインタ及びASC及びANC
スタックの頂部へのポインタを識別すべくプログラム記
憶状態テーブル210を更新する。先に示したように、
スレッドの実行データは、スレッドが再び実行不能にな
るまで再び圧縮されず(図3のステップ310)、スレ
ッドは、LREリスト216に加えられ(図3のステッ
プ318)、かつスレッドのメモリ空間は、別のスレッ
ドによって必要である(図3のステップ322)。
【0037】上記の観点から、本発明は、スレッドの実
行のためのラン−タイム・メモリ空間における低減を供
給するということが明らかである。しかしながら、当業
者が認識するように、他の代替実施例は、同様な利益を
供給すべくインプリメントすることができる。特定的
に、先に説明した圧縮基準152は、圧縮されていない
実行データを有する最も古く実行されたスレッド200
がRAM136の空間が必要であるが利用可能でないと
きに圧縮されるであろうということを特定した。しかし
ながら、圧縮基準は、広範囲のオプションからかつユー
ザのクライアント・コンピュータ・システム102に特
定な多数の条件に基づいてユーザによって選択される。
例えば、圧縮基準は、スレッドのそれぞれの実行データ
がスレッドが実行不能になったならば圧縮されるという
ことを単に特定しうる。また、ある一定のスレッドの実
行データは、そのようにするために時間が利用可能であ
るときにはいつでもものうげに(lazily)圧縮されるとい
うこが特定されうる。そして、先のいずれかのさらなる
変形として、圧縮基準は、特定サイズまたは型のスレッ
ドの実行データだけが圧縮されるということを特定しう
る。
【0038】更に、先に示したように、圧縮解除基準1
54は、圧縮された実行データを有するスレッド200
がスレッドが再び実行可能になったならばその実行デー
タをデータ・コンプレッサ146によって圧縮解除させ
たということを特定した。しかしながら、圧縮解除基準
は、圧縮された実行データが所定の時間間隔が満了した
後で圧縮解除されるということを特定することができ
る。この場合には、データ・コンプレッサは、時間間隔
を計時するためにタイマを含むであろう。一例では、こ
の技術は、スレッドの実行データがこの時間間隔に対し
て圧縮されそしてスレッドが目覚めさせられるちょっと
前に圧縮解除されるように決められた時間間隔に対して
眠らされるスレッドに対して用いることができる。また
は、別の例では、技術は、その間にスレッドの実行デー
タが圧縮される時間間隔が、待っていたデータがスレッ
ドに対して利用可能になるときを予測するように選択さ
れるところのデータを待っているスレッドに対して用い
ることができる。
【0039】更に、当業者が認識するように、圧縮基準
152は、圧縮されるべき実行データが実行不能スレッ
ド200の全実行データまたは単にそのフラグメントま
たは部分でありうるということを特定しうる。この場合
には、圧縮される実行データの量は、別のスレッドによ
って要求されたメモリ空間に基づきうる。それゆえに、
例えば、別のスレッドがANCメモリ・エリア208を
必要とし、かつそれ以上のANCメモリ・エリアが利用
可能でないならば、実行不能なスレッドの必要なANC
メモリ・エリアの実行データだけがこのANCメモリ・
エリアを利用可能にすべく圧縮されうる。更に別の実施
例では、ANCメモリ・エリア208のそれぞれは、そ
れがスレッドの実行データを現在記憶していないけれど
も、対応しているスレッド200のANCスタックの一
部として常に割り当てられる。それゆえに、スレッドに
割り当てられるANCメモリ・エリアの一つが実行デー
タを記憶するためにそのスレッドによってもはや必要と
されないとき、実行コントローラ153は、スレッドに
割り当てられたANCメモリ・エリアをまだ残す。これ
は、スレッドがその実行において後で別のANCメモリ
・エリアを再び要求することがかなり確実なので、行わ
れる。このスレッドに割り当てられたANCメモリ・エ
リアを保つことで、実行コントローラは、(ANCスタ
ックの別のANCメモリ・エリアにある)ANCスタッ
クの頂部へのポインタを識別すべくスレッド記憶状態テ
ーブル210を更新する。このように、利用可能なAN
Cメモリ・エリアの仮想フリー・リストは、利用可能な
ANCメモリ・エリアの全てがスレッドに割り当てられ
るが実行データを含んでいないところで生成される。次
いで、スレッドが別のANCメモリ・エリアを必要とす
るとき、実行コントローラは、先に説明したものと同じ
方法でこの他のスレッドに実行データを記憶しない利用
可能なANCメモリ・エリアの一つを再び割り当てる。
【0040】更に、図4及び図5を参照すると、二次メ
モリ400は、それらが二次記憶基準を満たすので記憶
可能であるスレッド200の圧縮された実行データを記
憶するために用いることができる。この場合には、二次
記憶基準は、先に説明した圧縮基準152に含まれかつ
圧縮された実行データまたはその部分がそれが圧縮され
たときに二次メモリに記憶されるべきであるということ
を特定することができるかまたはそれがメモリ空間が必
要であるときにだけ二次メモリに記憶されるべきである
ということを特定することができる。いずれの場合で
も、データ・コンプレッサ146は、CDメモリ・エリ
ア218に記憶された圧縮されたデータを動かしかつ二
次メモリ400の対応しているCDメモリ・エリア50
0に記憶する。また、データ・コンプレッサは、二次メ
モリの実行データをポイントすべくプログラム記憶状態
テーブル210のポインタを更新する。更に、それらの
実行データまたはその部分が圧縮されるので検索可能で
あり、二次メモリに記憶され、かつ圧縮解除されるべき
であるスレッドに対し、実行データは、二次メモリから
検索されそして先に説明した方法でRAM136で圧縮
解除される。
【0041】更に、クライアント・コンピュータ・シス
テム102が二次メモリ400(例えば、ネットワーク
・デスクトップ・コンピュータ)を含むような実施例で
は、プログラム147及び/又は148は、サーバ・コ
ンピュータ・システム104から二次メモリへダウンロ
ードすることができる。そして、これらのプログラム
は、サーバ・コンピュータ・システム104からではな
く、二次メモリからRAM136へ直接的に仮想マシン
・モジュール142によってロードすることができる。
更に、そのような実施例では、オペレーティング・シス
テム138、ネットワーク通信マネージャ140、仮想
マシン・モジュール142、及びデータ・コンプレッサ
146は、二次メモリに記憶しかつそれからRAMにロ
ードすることができる。
【0042】更に別の実施例では、オペレーティング・
システム138、ネットワーク通信マネージャ140、
仮想マシン・モジュール142、及びデータ・コンプレ
ッサ146は、サーバ・コンピュータ・システム104
の一つからクライアント・コンピュータ・システム10
2のRAM136へダウン・ロードすることができる。
これは、サーバ・コンピュータ・システムのプログラム
147及び/又は148に対して先に説明したものと同
様な方法で行われるであろう。さらに別の実施例では、
仮想マシン・モジュール142は、シリコン・チップで
実際にインプリメントされかつクライアント・コンピュ
ータ・システム102のCPU126としてサーブす
る。この場合には、ANコードを有するプログラム14
7は、特定のアーキテクチャに対して変換(翻訳)され
ずその代わり直接的に実行される。この実施例では、A
Sコードを有するプログラム148は、利用されない。
【0043】そして、本発明は、数個の特定な実施例を
参照して記述されたが、記述は、本発明の説明のためで
あり本発明を制限することを意図しない。特許請求の範
囲によって定義されたような本発明の真の精神及び範疇
から逸脱することなく種々の変更が当業者に生じるであ
ろう。
【0044】
【発明の効果】本発明のコンピュータ・システムは、低
減されたラン−タイム空間要求を有する実行の複数のス
レッドを実行するコンピュータ・システムであって、ラ
ン−タイム・メモリ;(A)スレッドを実行し、それに
よりスレッドが異なる時間で実行可能及び実行不能であ
り、かつ(B)実行データが生成されるときにスレッド
の実行データをラン−タイム・メモリの利用可能空間に
圧縮しないで記憶する実行コントローラ;及び(A)実
行不能であるスレッドの圧縮可能なものの圧縮されてい
ない実行データまたはその部分をラン−タイムメモリで
圧縮し、それにより空間がラン−タイム・メモリにおい
て利用可能になり、かつ(B)スレッドの圧縮解除可能
なものが実行可能になった後で実行されうるようにスレ
ッドの圧縮解除可能なものの圧縮された実行データをラ
ン−タイム・メモリの利用可能空間に圧縮解除するデー
タ・コンプレッサを備えているので、記憶要求を低減す
るために各スレッドの平均ラン−タイム記憶費用を低減
することができる。
【0045】本発明の方法は、低減されたラン−タイム
・メモリ空間要求を有する実行の複数のスレッドを実行
する方法であって、ラン−タイム・メモリを供給し;ス
レッドを実行し、それによりスレッドが異なる時間で実
行可能及び実行不能であり;実行データが生成されたと
きにスレッドの実行データをラン−タイム・メモリの利
用可能な空間に圧縮しないで記憶し;実行不能であるス
レッドの圧縮可能なものの圧縮されていない実行データ
またはその部分を圧縮し、それにより空間がラン−タイ
ム・メモリで利用可能になり;かつスレッドの圧縮解除
可能なものが実行可能になった後に実行されうるように
スレッドの圧縮解除可能なものの圧縮された実行データ
をラン−タイム・メモリの利用可能な空間に圧縮解除す
る段階を具備するので、記憶要求を低減するために各ス
レッドの平均ラン−タイム記憶費用を低減することがで
きる。
【図面の簡単な説明】
【図1】本発明を組み込んでいるコンピュータ・ネット
ワークのブロック図である。
【図2】コンピュータ・ネットワークにおけるクライア
ント・コンピュータ・システムの動作の機能ブロック図
である。
【図3】クライアント・コンピュータ・システムの動作
のフローチャートである。
【図4】本発明が組み込まれているコンピュータ・ネッ
トワークの代替実施例のブロック図である。
【図5】コンピュータ・ネットワークの代替実施例にお
けるクライアント・コンピュータ・システムの動作の機
能ブロック図である。
【符号の説明】
100 コンピュータ・ネットワーク 102 クライアント・コンピュータ・システム 104 サーバ・コンピュータ・システム 106 ネットワーク通信接続 110、126 中央処理装置(CPU) 112、128 ユーザ・インターフェイス 116 通信インターフェイス 118 メモリ 120、138 オペレーティング・システム 122、140 ネットワーク通信マネージャ 124、147 プログラムズ:ANコード 125、148 プログラムズ:ASコード 132 ネットワーク通信インターフェイス 134 ROM 136 RAM 142 仮想マシン・モジュール 146 データ・コンプレッサ 151 コード・ベリファイヤ 152、154 基準 153 実行コントローラ 155 スレッド状態データ構造 157 圧縮されたデータ・リポジトリ 158 圧縮されていないデータ・リポジトリ

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 低減されたラン−タイム空間要求を有す
    る実行の複数のスレッドを実行するコンピュータ・シス
    テムであって、 ラン−タイム・メモリ;(A)スレッドを実行し、それ
    によりスレッドが異なる時間で実行可能及び実行不能で
    あり、かつ(B)実行データが生成されるときにスレッ
    ドの実行データをラン−タイム・メモリの利用可能空間
    に圧縮しないで記憶する実行コントローラ;及び (A)実行不能であるスレッドの圧縮可能なものの圧縮
    されていない実行データまたはその部分をラン−タイム
    メモリで圧縮し、それにより空間がラン−タイム・メモ
    リにおいて利用可能になり、かつ(B)スレッドの圧縮
    解除可能なものが実行可能になった後で実行されうるよ
    うにスレッドの圧縮解除可能なものの圧縮された実行デ
    ータをラン−タイム・メモリの利用可能空間に圧縮解除
    するデータ・コンプレッサを備えていることを特徴とす
    るコンピュータ・システム。
  2. 【請求項2】 前記データ・コンプレッサは、スレッド
    の圧縮解除可能なものが実行可能になったならばスレッ
    ドの圧縮解除可能なものの圧縮された実行データを圧縮
    解除する請求項1に記載のコンピュータ・システム。
  3. 【請求項3】 所定の時間間隔後にスレッドの圧縮解除
    可能なものの圧縮された実行データを圧縮解除する請求
    項1に記載のコンピュータ・システム。
  4. 【請求項4】 前記データ・コンプレッサは、スレッド
    の圧縮可能なものが実行不能になったならばスレッドの
    圧縮可能のものの圧縮されていない実行データまたはそ
    の部分を圧縮する請求項1、2または3に記載のコンピ
    ュータ・システム。
  5. 【請求項5】 前記データ・コンプレッサは、ラン−タ
    イム・メモリが必要であるが利用可能でないときにスレ
    ッドの圧縮可能なものの圧縮されていない実行データま
    たはその部分を圧縮する請求項1、2または3に記載の
    コンピュータ・システム。
  6. 【請求項6】 最も古く実行されたスレッドから最も新
    しく実行されたスレッドの順で現在実行不能であるスレ
    ッドのそれらをリストする最も古く実行されたリスト;
    を更に備え、 スレッドの圧縮可能なものは、ラン−タイム・メモリの
    空間が必要であるが利用可能でないときに圧縮されてい
    ない実行データを有する最も古く実行されたリストの最
    も古く実行されたスレッドであることを特徴とする請求
    項5に記載のコンピュータ・システム。
  7. 【請求項7】 二次メモリ; (A)ラン−タイム・メモリの空間が必要であるが利用
    可能でないときにスレッドの記憶可能なものの圧縮され
    た実行データまたはその部分を二次メモリに記憶し、か
    つ(B)その圧縮された実行データがラン−タイム・メ
    モリで圧縮解除されるべきであるようなスレッドの検索
    可能なものの圧縮された実行データまたはその部分を検
    索するデータ・コンプレッサ;を更に備えていることを
    特徴とする請求項1から6のいずれか一項に記載された
    コンピュータ・システム。
  8. 【請求項8】 低減されたラン−タイム・メモリ空間要
    求を有する実行の複数のスレッドを実行する方法であっ
    て、 ラン−タイム・メモリを供給し;スレッドを実行し、そ
    れによりスレッドが異なる時間で実行可能及び実行不能
    であり;実行データが生成されたときにスレッドの実行
    データをラン−タイム・メモリの利用可能な空間に圧縮
    しないで記憶し;実行不能であるスレッドの圧縮可能な
    ものの圧縮されていない実行データまたはその部分を圧
    縮し、それにより空間がラン−タイム・メモリで利用可
    能になり;かつスレッドの圧縮解除可能なものが実行可
    能になった後に実行されうるようにスレッドの圧縮解除
    可能なものの圧縮された実行データをラン−タイム・メ
    モリの利用可能な空間に圧縮解除する段階を具備するこ
    とを特徴とする方法。
  9. 【請求項9】 前記圧縮解除段階は、スレッドの圧縮解
    除可能なものが実行可能になったならばスレッドの圧縮
    解除可能なものの圧縮された実行データを圧縮解除する
    段階を含むことを特徴とする請求項8に記載の方法。
  10. 【請求項10】 前記圧縮解除段階は、所定の時間間隔
    後にスレッドの圧縮解除可能なものの圧縮された実行デ
    ータを圧縮解除する段階を含むことを特徴とする請求項
    8に記載の方法。
  11. 【請求項11】 前記圧縮段階は、スレッドの圧縮可能
    なものが実行不能になったならばスレッドの圧縮可能の
    ものの圧縮されていない実行データを圧縮することを含
    む請求項8、9または10に記載の方法。
  12. 【請求項12】 前記圧縮段階は、ラン−タイム・メモ
    リが必要であるが利用可能でないときにスレッドの圧縮
    可能なものの圧縮されていない実行データを圧縮するこ
    とを含む請求項8、9または10に記載の方法。
  13. 【請求項13】 最も古く実行されたスレッドから最も
    新しく実行されたスレッドの順で現在実行不能であるス
    レッドのそれらをリストする最も古く実行されたリスト
    を供給する段階を更に具備し;スレッドの圧縮可能なも
    のは、ラン−タイム・メモリの空間が必要であるが利用
    可能でないときに圧縮されていない実行データを有する
    最も古く実行されたリストの最も古く実行されたスレッ
    ドであることを特徴とする請求項12に記載の方法。
  14. 【請求項14】 二次メモリを供給し;ラン−タイム・
    メモリの空間が必要であるが利用可能でないときにスレ
    ッドの記憶可能なものの圧縮された実行データまたはそ
    の部分を二次メモリに記憶し;かつその圧縮された実行
    データがラン−タイム・メモリで圧縮解除されるべきで
    あるようなスレッドの検索可能なものの圧縮された実行
    データまたはその部分を前記二次メモリから検索する段
    階を更に具備することを特徴とする請求項8から13の
    いずれか一項に記載された方法。
JP14668097A 1996-06-05 1997-06-04 低減されたラン−タイム・メモリ空間要求を有する実行のスレッドを実行する方法及びコンピュータ・システム Expired - Lifetime JP3863967B2 (ja)

Applications Claiming Priority (2)

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
US08/658501 1996-06-05

Publications (2)

Publication Number Publication Date
JPH10124334A true JPH10124334A (ja) 1998-05-15
JP3863967B2 JP3863967B2 (ja) 2006-12-27

Family

ID=24641497

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14668097A Expired - Lifetime JP3863967B2 (ja) 1996-06-05 1997-06-04 低減されたラン−タイム・メモリ空間要求を有する実行のスレッドを実行する方法及びコンピュータ・システム

Country Status (8)

Country Link
US (1) US5765157A (ja)
EP (1) EP0811915B1 (ja)
JP (1) JP3863967B2 (ja)
KR (1) KR100453723B1 (ja)
CN (1) CN1096636C (ja)
DE (1) DE69721634T2 (ja)
SG (1) SG74590A1 (ja)
TW (1) TW357319B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008225818A (ja) * 2007-03-13 2008-09-25 Nec Corp 情報処理装置及びプロセス圧縮方法並びにプログラム

Families Citing this family (34)

* Cited by examiner, † Cited by third party
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
US6715059B2 (en) 2000-07-26 2004-03-30 Tas Holdings, Inc. Methods and systems for a shared memory unit with extendable functions
US6675277B2 (en) 2000-07-26 2004-01-06 Tns Holdings, Inc. Method and apparatus for demand usable adapter memory access management
US20020013822A1 (en) * 2000-07-26 2002-01-31 West Karlon K. Shared as needed programming model
US6892298B2 (en) 2000-07-26 2005-05-10 Times N Systems, Inc. Load/store micropacket handling system
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
US6665777B2 (en) 2000-07-26 2003-12-16 Tns Holdings, Inc. Method, apparatus, network, and kit for multiple block sequential memory management
US6782440B2 (en) 2000-07-26 2004-08-24 T.N.S. Holdings, Inc. Resource locking and thread synchronization in a multiprocessor environment
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
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7499960B2 (en) * 2001-10-01 2009-03-03 Oracle International Corporation Adaptive memory allocation
US7409517B2 (en) * 2001-10-01 2008-08-05 Oracle International Corporation Dynamic and automatic memory management
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
US8868930B2 (en) 2006-05-31 2014-10-21 International Business Machines Corporation Systems and methods for transformation of logical data objects for storage
WO2007138603A2 (en) 2006-05-31 2007-12-06 Storwize Ltd. Method and system for transformation of logical data objects for storage
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)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008225818A (ja) * 2007-03-13 2008-09-25 Nec Corp 情報処理装置及びプロセス圧縮方法並びにプログラム

Also Published As

Publication number Publication date
CN1096636C (zh) 2002-12-18
JP3863967B2 (ja) 2006-12-27
TW357319B (en) 1999-05-01
CN1180193A (zh) 1998-04-29
KR980004056A (ko) 1998-03-30
US5765157A (en) 1998-06-09
EP0811915A1 (en) 1997-12-10
DE69721634D1 (de) 2003-06-12
KR100453723B1 (ko) 2004-12-17
DE69721634T2 (de) 2004-03-25
EP0811915B1 (en) 2003-05-07
SG74590A1 (en) 2000-08-22

Similar Documents

Publication Publication Date Title
JP3863967B2 (ja) 低減されたラン−タイム・メモリ空間要求を有する実行のスレッドを実行する方法及びコンピュータ・システム
US5794049A (en) Computer system and method for executing architecture specific code with reduced run-time memory space requirements
JP3210606B2 (ja) 低減されたラン−タイム・メモリ空間要求を有するネットワーク移動コードを実行する方法及びコンピュータ・システム
JP4993851B2 (ja) 動的なレジストリの区分
US7174544B2 (en) JAVA compile-on-demand service system for accelerating processing speed of JAVA program in data processing system and method thereof
US6272674B1 (en) Method and apparatus for loading a Java application program
US5819091A (en) User level control of degree of client-side processing
CA2086056C (en) Method for integrating a discrete subprogram into a main program
US7840773B1 (en) Providing memory management within a system management mode
US5630074A (en) Inter-program communication and scheduling method for personal computers
US20030105927A1 (en) Method for use of stack
JP2002536743A (ja) リソース制約デバイスのためのオブジェクト指向命令セット
JP2009059349A (ja) 共用型ジャバjarファイル
WO2002075531A1 (en) Method for loading and executing an application in an embedded environment
JP2005508039A (ja) 目標セキュリティを決定する物理アドレスベースのセキュリティのための方法および装置
JP3993648B2 (ja) 圧縮システムをオペレーティング・システムと統合する方法およびコンピュータ・システム
US7343603B1 (en) System and method for performing incremental initialization of a master runtime system process
US6233621B1 (en) System and method for space efficient hashcode allocation
US20040123301A1 (en) Method and system for minimizing memory access latency in a computer system
CN112162780B (zh) 应用运行控制方法、装置及电子设备
US20030066046A1 (en) Java virtual machine with non-volatile memory
JPH10312297A (ja) マルチタスク機能を有する情報処理システムにおける資源管理方法、資源管理装置及び記録媒体
US20020124164A1 (en) Method for starting computer system
JP2003256219A (ja) 組込み機器におけるプログラム実行方法
JPH08263377A (ja) キャッシュメモリ管理方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060829

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: 20060904

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061002

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: 20091006

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101006

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111006

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121006

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20131006

Year of fee payment: 7

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