図面 (/)

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

出願人 サンマイクロシステムズインコーポレイテッド
発明者 ティモシージーリンドホームウィリアムエヌジョイ
出願日 1997年6月4日 (23年6ヶ月経過) 出願番号 1997-146680
公開日 1998年5月15日 (22年7ヶ月経過) 公開番号 1998-124334
状態 特許登録済
技術分野 メモリシステム マルチプログラミング 特殊なプログラム実行装置
主要キーワード 実行コントローラ ネットワーク通信インターフェイス C言語 移動コード 非連続性 動作型 多重スレッド 圧縮段階
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(1998年5月15日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (6)

課題

記憶要求を低減するために各スレッドの平均ランタイム記憶費用を低減する方法及びコンピュータ・システムを提供する。

解決手段

実行コントローラは、スレッドが異なる時間で実行可能或は実行不可能であるように制御し、また、実行可能データが生成されるときにスレッドの実行データをラン−タイム・メモリ利用可能空間に圧縮しないで記憶する。データ・コンプレッサは、実行不可能であるスレッドの圧縮可能なもので圧縮されていない実行データを圧縮する。その結果、空間は、ラン−タイム・メモリにおいて利用可能になる。データ・コンプレッサは、また、スレッドの圧縮解除可能なものが実行可能になった後で実行されうるようにスレッドの圧縮解除可能なものの圧縮された実行データをラン−タイム・メモリの利用可能な空間で圧縮解除する。

概要

背景

コンピュータ・システムは、いま、そのコードが、以後ANコードと呼ぶ、アーキテクチャニュートラル(AN)2進フォーマットで表されるプログラムの特性を利用すべく構築または構成されている。それゆえに、これらのプログラムのANコードは、コンピュータ・システムの特定のアーキテクチャまたはプラットフォームに独立である。用語アーキテクチャは、コンピュータ・モデルファミリーオペレーティング特性を意味すべくこの文書の目的に対して定義される。特定のアーキテクチャの例は、マッキントッシュ(Macintosh) ・コンピュータ、DOSまたはWindowsオペレーティング・システムを用いているIBM PCコンパチブル・コンピュータ、Solaris オペレーティング・システムを走らせているサンマイクロシステムズ(Sun Microsystems)コンピュータ、及びユニックス(Unix)オペレーティング・システムを用いているコンピュータ・システムを含む。

用語アーキテクチャ特定(AS)は、ある一定のプログラムのコードが、特定のコンピュータ・アーキテクチャを有するコンピュータ・システムでのみの実行のために、ASコードと以下で呼ばれる、2進フォーマットである要求(事項)を参照すべくこの文書の目的に対して画定される。それゆえに、通常のプログラミング言語(例えば、80486アセンブラ言語)で書かれかつ特定のアーキテクチャ(例えば、IBMコンパチブルPC)に対してコンパイルされたコードを有するプログラムは、そのアーキテクチャまたはそのアーキテクチャのエミュレータでのみ走らせることができる。用語アーキテクチャ・ニュートラル(AN)は、そのコンパイルされたコードが異なるアーキテクチャを有する種々のコンピュータ・システムで実行することができるプログラムを参照すべくこの文書の目的に対して定義される。例えば、特定のアーキテクチャを有するコンピュータ・システムは、Java(サン・マイクロシステムズの登録商標仮想マシンモジュールで構成することができる。Java仮想マシン・モジュールは、Javaプログラミング言語で書かれ、かつ Java仮想マシンの命令セットに対して、以後Javaバイトコードと呼ぶ、バイトコードにコンパイルされたコードを有するプログラムの実行が可能である。Javaバイトコードは、コンピュータ・システムの特定のアーキテクチャに独立である。

ANコードを有するプログラムの重要な特徴は、それらの小型性(portability) を含む。例えば、ANコードのプログラムは、コンピュータ・システムの特定アーキテクチャに係わりなくANコードを実行すべく構成されたあらゆるコンピュータ・システムで実行することができるので、これらのプログラムは、一つのコンピュータ・システムから別のコンピュータ・システムにネットワークにわたり容易に移送することができる。例えば、Javaバイトコードにコンパイルされたプログラムは、Java仮想マシン・モジュールを有するあらゆるコンピュータ・システムで実行することができかつHot Java(サン・マイクロシステムズの登録商標)ネットワーク通信マネージャを用いて一つのコンピュータ・システムから別のコンピュータ・システムにネットワークにわたり容易に移送することができる。

更に、Javaバイトコードにコンパイルされたプログラムの小型性に関する別の重要な特徴は、そのようなプログラムの確認性である。特に、Java仮想マシン・モジュールは、これらのプログラムが所定の完全性基準(integrity criteria)を満足するということを容易に確認することができる。そのような完全性基準は、JavaバイトコードがJava仮想マシン・モジュールのスタックオーバーフローまたはアンダーフローすることができずかつJavaバイトコードの全ての命令がそのデータ型がそれらの命令に対するデータ型制限に一致するデータだけを用いるということを確実にするスタック及びデータ型(stack and data type)使用制限を含む。結果として、Javaバイトコードのプログラムは、オブジェクトポインタフォージ(forge) することができずかつ一般的にユーザが用いるべき許可をそれに明示的に与えるもの以外のシステム資源アクセスすることができない。

これらの理由で、コンピュータ・システムは、ネットワークにわたり受信されるANコードにコンパイルされたプログラムの実行に対して構成されている。事実、ある場合には、プログラムがコンピュータ・システムのランタイム(即ち、実行−時間)メモリ(例えば、ランダム・アクセス・メモリ(RAM))に直接ロードされるので、そのようなコンピュータ・システムは、二次メモリ(例えば、ハードディスク)さえも要求しないであろう。その結果、そのようなコンピュータ・システムのユーザは、ソフトウェア製品で現在一般的であるソフトウェア購入、設置、構成及びアップグレードサイクルから解放される。更に、多くのソフトウェア・プログラム(即ち、アプリケーション)は、実行の多重スレッドで実行されうる。スレッドは、プログラムをよりレスポンシブにさせ、高速で走らせる、等のために用いることができる。

上記の観点から、ANコードのマルチ・スレッド・プログラムは、ネットワークされかつ要求に応じてANコードでロードされる安いコンピュータ・システム用に特に魅力的である。例えば、これらの種類のコンピュータ・システムは、ビデオ・ゲーム、パーソナルディジタルアシスタント(PDAs)、セルラー電話機、または他の類似するコンピュータ・システムまたはコンピュータ動作型デバイスでありうる。そのようなコンピュータ・システムに対して、低価格は、非常に重要である。実際に、そのようなコンピュータ・システムを構築することにおける最も重要な費用の一つは、ソフトウェア・インフラストラクチャ及びプログラムを走らせるために必要なラン−タイム(即ち、実行−時間)メモリの量である。これは、ソフトウェア・インフラストラクチャ及びプログラムのコードを記憶するために必要である静的メモリから区別されるべきである。そのような低減が強力な競合利点を生成するので、ちょうど説明した種類のコンピュータ・システムによって要求されるラン−タイム・メモリの量を低減することは、非常に重要である。

概要

記憶要求を低減するために各スレッドの平均ラン−タイム記憶費用を低減する方法及びコンピュータ・システムを提供する。

実行コントローラは、スレッドが異なる時間で実行可能或は実行不可能であるように制御し、また、実行可能データが生成されるときにスレッドの実行データをラン−タイム・メモリの利用可能空間に圧縮しないで記憶する。データ・コンプレッサは、実行不可能であるスレッドの圧縮可能なもので圧縮されていない実行データを圧縮する。その結果、空間は、ラン−タイム・メモリにおいて利用可能になる。データ・コンプレッサは、また、スレッドの圧縮解除可能なものが実行可能になった後で実行されうるようにスレッドの圧縮解除可能なものの圧縮された実行データをラン−タイム・メモリの利用可能な空間で圧縮解除する。

目的

本発明の目的は、上記従来技術における問題点に鑑み、記憶要求を低減するために各スレッドの平均ラン−タイム記憶費用を低減する方法及びコンピュータ・システムを提供することである。

効果

実績

技術文献被引用数
2件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

低減されたランタイム空間要求を有する実行の複数のスレッドを実行するコンピュータ・システムであって、ラン−タイム・メモリ;(A)スレッドを実行し、それによりスレッドが異なる時間で実行可能及び実行不能であり、かつ(B)実行データが生成されるときにスレッドの実行データをラン−タイム・メモリの利用可能空間に圧縮しないで記憶する実行コントローラ;及び(A)実行不能であるスレッドの圧縮可能なものの圧縮されていない実行データまたはその部分をラン−タイムメモリで圧縮し、それにより空間がラン−タイム・メモリにおいて利用可能になり、かつ(B)スレッドの圧縮解除可能なものが実行可能になった後で実行されうるようにスレッドの圧縮解除可能なものの圧縮された実行データをラン−タイム・メモリの利用可能空間に圧縮解除するデータ・コンプレッサを備えていることを特徴とするコンピュータ・システム。

請求項2

前記データ・コンプレッサは、スレッドの圧縮解除可能なものが実行可能になったならばスレッドの圧縮解除可能なものの圧縮された実行データを圧縮解除する請求項1に記載のコンピュータ・システム。

請求項3

所定の時間間隔後にスレッドの圧縮解除可能なものの圧縮された実行データを圧縮解除する請求項1に記載のコンピュータ・システム。

請求項4

前記データ・コンプレッサは、スレッドの圧縮可能なものが実行不能になったならばスレッドの圧縮可能のものの圧縮されていない実行データまたはその部分を圧縮する請求項1、2または3に記載のコンピュータ・システム。

請求項5

前記データ・コンプレッサは、ラン−タイム・メモリが必要であるが利用可能でないときにスレッドの圧縮可能なものの圧縮されていない実行データまたはその部分を圧縮する請求項1、2または3に記載のコンピュータ・システム。

請求項6

最も古く実行されたスレッドから最も新しく実行されたスレッドの順で現在実行不能であるスレッドのそれらをリストする最も古く実行されたリスト;を更に備え、スレッドの圧縮可能なものは、ラン−タイム・メモリの空間が必要であるが利用可能でないときに圧縮されていない実行データを有する最も古く実行されたリストの最も古く実行されたスレッドであることを特徴とする請求項5に記載のコンピュータ・システム。

請求項7

二次メモリ;(A)ラン−タイム・メモリの空間が必要であるが利用可能でないときにスレッドの記憶可能なものの圧縮された実行データまたはその部分を二次メモリに記憶し、かつ(B)その圧縮された実行データがラン−タイム・メモリで圧縮解除されるべきであるようなスレッドの検索可能なものの圧縮された実行データまたはその部分を検索するデータ・コンプレッサ;を更に備えていることを特徴とする請求項1から6のいずれか一項に記載されたコンピュータ・システム。

請求項8

低減されたラン−タイム・メモリ空間要求を有する実行の複数のスレッドを実行する方法であって、ラン−タイム・メモリを供給し;スレッドを実行し、それによりスレッドが異なる時間で実行可能及び実行不能であり;実行データが生成されたときにスレッドの実行データをラン−タイム・メモリの利用可能な空間に圧縮しないで記憶し;実行不能であるスレッドの圧縮可能なものの圧縮されていない実行データまたはその部分を圧縮し、それにより空間がラン−タイム・メモリで利用可能になり;かつスレッドの圧縮解除可能なものが実行可能になった後に実行されうるようにスレッドの圧縮解除可能なものの圧縮された実行データをラン−タイム・メモリの利用可能な空間に圧縮解除する段階を具備することを特徴とする方法。

請求項9

前記圧縮解除段階は、スレッドの圧縮解除可能なものが実行可能になったならばスレッドの圧縮解除可能なものの圧縮された実行データを圧縮解除する段階を含むことを特徴とする請求項8に記載の方法。

請求項10

前記圧縮解除段階は、所定の時間間隔後にスレッドの圧縮解除可能なものの圧縮された実行データを圧縮解除する段階を含むことを特徴とする請求項8に記載の方法。

請求項11

前記圧縮段階は、スレッドの圧縮可能なものが実行不能になったならばスレッドの圧縮可能のものの圧縮されていない実行データを圧縮することを含む請求項8、9または10に記載の方法。

請求項12

前記圧縮段階は、ラン−タイム・メモリが必要であるが利用可能でないときにスレッドの圧縮可能なものの圧縮されていない実行データを圧縮することを含む請求項8、9または10に記載の方法。

請求項13

最も古く実行されたスレッドから最も新しく実行されたスレッドの順で現在実行不能であるスレッドのそれらをリストする最も古く実行されたリストを供給する段階を更に具備し;スレッドの圧縮可能なものは、ラン−タイム・メモリの空間が必要であるが利用可能でないときに圧縮されていない実行データを有する最も古く実行されたリストの最も古く実行されたスレッドであることを特徴とする請求項12に記載の方法。

請求項14

二次メモリを供給し;ラン−タイム・メモリの空間が必要であるが利用可能でないときにスレッドの記憶可能なものの圧縮された実行データまたはその部分を二次メモリに記憶し;かつその圧縮された実行データがラン−タイム・メモリで圧縮解除されるべきであるようなスレッドの検索可能なものの圧縮された実行データまたはその部分を前記二次メモリから検索する段階を更に具備することを特徴とする請求項8から13のいずれか一項に記載された方法。

技術分野

0001

本発明は、低減されたランタイムメモリ空間要求を有する多重スレッド環境におけるプログラムを実行する方法及びコンピュータ・システムに関する。特に、本発明は、メモリ空間要求を低減するようにスレッドが実行不能であるときにスレッドの実行データ圧縮されるような実行のスレッドを実行する方法及びコンピュータ・システムに関する。

背景技術

0002

コンピュータ・システムは、いま、そのコードが、以後ANコードと呼ぶ、アーキテクチャニュートラル(AN)2進フォーマットで表されるプログラムの特性を利用すべく構築または構成されている。それゆえに、これらのプログラムのANコードは、コンピュータ・システムの特定のアーキテクチャまたはプラットフォームに独立である。用語アーキテクチャは、コンピュータ・モデルファミリーオペレーティング特性を意味すべくこの文書の目的に対して定義される。特定のアーキテクチャの例は、マッキントッシュ(Macintosh) ・コンピュータ、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 Java(サン・マイクロシステムズの登録商標)ネットワーク通信マネージャを用いて一つのコンピュータ・システムから別のコンピュータ・システムにネットワークにわたり容易に移送することができる。

0005

更に、Javaバイトコードにコンパイルされたプログラムの小型性に関する別の重要な特徴は、そのようなプログラムの確認性である。特に、Java仮想マシン・モジュールは、これらのプログラムが所定の完全性基準(integrity criteria)を満足するということを容易に確認することができる。そのような完全性基準は、Javaバイトコードが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を介してサーバ・コンピュータ・システム104に接続されている。ネットワーク通信接続は、ローカルまたはワイドエリア・ネットワーク、インターネット、またはある他の型のネットワーク通信接続でありうる。各サーバ・コンピュータ・システム104は、中央処理装置(CPU)110、ユーザ・インターフェイス112、ネットワーク通信インターフェイス116、及びメモリ118を含む。ネットワーク通信インターフェイスは、各サーバ・コンピュータ・システムがネットワーク通信接続106を介してクライアント・コンピュータ・システム102と通信できるようにする。

0020

各サーバ・コンピュータ・システム104のメモリ118は、オペレーティング・システム120、ネットワーク通信マネージャ(またはサーバ)122、及びマルチ・スレッド・プログラム(即ち、メソッド)147及び/又は148を記憶する。オペレーティング・システム及び通信マネージャは、全てCPU120で走る。オペレーティング・システムは、ユーザ・インターフェイス112でユーザによって発行されたかまたはクライアント・コンピュータ・システム102のユーザからネットワーク通信接続106を介してネットワーク通信インターフェイス116によって受信されたコマンドに応じてネットワーク通信マネージャの走行を制御しかつコーディネートする。各サーバ・コンピュータ・システム104のプログラム147は、クライアント・コンピュータ・システム102の特定のアーキテクチャ(即ち、プラットフォーム)に独立であるアーキテクチャ・ニュートラル(AN)コードを含む。これらのプログラムは、特定のプログラミング言語からANコードにコンパイルされる。好ましい実施例では、これらのプログラムは、Javaプログラミング言語で書かれかつJavaバイトコードにコンパイルされる。更に、これらのプログラムは、オブジェクト指向型方法でプログラムされたソフトウェア・アプリケーションを形成するオブジェクト・クラスに含まれる。

0021

プログラム147とは異なり、各サーバ・コンピュータ・システムのプログラム148は、クライアント・コンピュータ・システム102の特定アーキテクチャに対するアーキテクチャ特定(AS)コードにコンパイルされる。後で詳述するように、ネットワーク100が、これらのプログラムが高度の信頼請求性でクライアント・コンピュータ102へ確実に送られうるようなクローズされ(closed)かつトラストされた(trusted) ネットワークであるかまたはこれらのプログラムが確認することができるディジタル署名を組み込んでいることが好ましい。後で詳述するように、プログラム147及び/又は148は、ネットワーク通信マネージャ122を用いてクライアント・コンピュータ・システム102へのユーザ要求により伝送される。それゆえに、これらのプログラムのコードは、ネットワーク移動コードと考えられる。

0022

各クライアント・コンピュータ・システム102は、ビデオ・ゲーム、パーソナル・ディジタル・アシスタント(PDA)、セルラー電話機、デスクトップ・コンピュータ、または他のコンピュータ・システムまたは少量のラン−タイム・メモリを必要とするコンピュータ動作型デバイスでありうる。更に、各クライアント・コンピュータ・システムは、中央処理装置(CPU)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は、次いで、ロードされたプログラムのANコードが所定の完全性基準に一致することを確認する。先に示したように、これは、ロードされたプログラムが仮想マシン・モジュールのスタックをオーバーフローまたはアンダーフローすることができないしかつ全てのプログラム命令がそのデータ型がそれらのプログラム命令に対するデータ型制限に一致するデータだけを利用するということを確実にすべくスタック及びデータ型使用制限を含みうる。

0025

しかしながら、ASコードでロードされたプログラム148の場合には、コード・ベリファイヤ151は、それらの完全性を直接確認するために用いることができない。それゆえに、それらの完全性を間接的に確認するために、ネットワーク100は、これらのプログラムが高度な信頼性でクライアント・コンピュータ102へ確実に送られうるようなクローズされかつトラストされたネットワークでありうる。代替的に、ネットワーク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

好ましい実施例では、所定の圧縮基準152は、圧縮可能スレッドの実行データが(1)RAM136の空間が必要であるが利用可能でなく、かつ(2)圧縮可能スレッドが、その実行データがまだ圧縮されていないスレッドの最も古く実行されたときに圧縮されることを特定する。また、好ましい実施例では、圧縮解除可能なスレッドの実行データを圧縮解除するための所定の圧縮解除基準154は、圧縮解除可能なスレッドの実行データが圧縮されかつ圧縮解除可能なスレッドが実行可能になったときに圧縮解除されるべきであることを単に特定する。図2を参照すると、スレッド200のそれぞれは、ASコード(ASC)スタック及びACコード(ANC)スタックで実行コントローラ153によってインプリメントされる。特定的に、実行コントローラは、それがスレッドの実行を制御できるようにそのASコードを実行するための実行データをASCスタックに記憶する。同様に、実行コントローラは、スレッドのANCコード及びANコードによって呼出されたあらゆるASコードを実行するための実行データをANCスタックに記憶する。仮想マシン・モジュール142がC言語で書かれかつASコードにコンパイルされる場合には、ASCスタックは、C言語で書かれたプログラムのインプリメンテーションで一般的に行われるような、固定サイズ連続性スタック(例えば、128K)でありうる。更に、プログラム147がJavaバイトコードにコンパイルされる場合には、ANCスタックは、RAM空間要求により拡張及び収縮される(例えば、少なくとも4Kでかつ4Kインクリメントで増大または減少される)可変サイズ非連続性Javaスタックである。

0028

スレッド200のそれぞれのASC及びANCスタックを生成するために、圧縮されていないデータ・リポジトリ158は、ASCメモリ・エリア204のプール202及びANCメモリ・エリア208のプール206を含む。更に、スレッド記憶状態データ構造155は、スレッド記憶状態テーブル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は、最も古く実行されたものから最も新しく実行されら順にスレッドをリストする。しかしながら、圧縮されていないデータ・リポジトリ120のメモリ空間がスレッド200をインプリメントすべく利用可能でないならば、実行コントローラ153は、データ・コンプレッサ146を呼出す。データ・コンプレッサは、LREリストにリストされた最も古く実行されたスレッドの実行データを圧縮しかつ圧縮されたデータ・リポジトリ157にそれを配置する(図3のステップ308)。特定的に、スレッドに割り当てられたようにスレッド記憶状態テーブル210で識別されたASC及びANCメモリ・エリアの圧縮された実行データは、圧縮されたデータ・リポジトリ157の対応している圧縮されたデータ(CD)メモリ・エリア218に配置される。データ・コンプレッサは、また、スレッドのASC及びANCスタックを形成する対応しているCDメモリ・エリアを識別すべくスレッド記憶状態テーブル、及びCDメモリ・エリアの圧縮された実行データのエンドへの対応しているポインタを更新する。それは、また、スレッドのメモリ空間が圧縮されている(C)ことを示すためにスレッド記憶状態テーブルを更新する。データ・コンプレッサ146は、当業者に周知のあらゆる高速データ圧縮技術を用いうる。

0031

生成されたスレッド200が実行可能であると同時に、実行コントローラ153は、実行中に生成される圧縮されていない実行データを適切なときにASC及びANCスタックに配置しかつASC及びANCスタックから除去する。そのようにして、実行コントローラは、ASC及びANCスタックの頂部へのポインタをそれぞれ更新する。更に、これが発生している間に(図3のステップ310)、実行コントローラ153は、生成されたスレッドにメモリ空間を割り当てるための先に記述されたものと同じ方法で実行中にスレッドがさらなるメモリ空間を必要とするときに(図3のステップ312)スレッドのメモリ空間のサイズを増大する(ステップ304〜308)。特定的に、スレッドがアーキテクチャ・ニュートラル言語でスレッドを走らせるための実行データを記憶すべくさらなるメモリ空間を必要とする度毎に、ANCスタックのサイズは、それに圧縮されていないデータ・リポジトリ120の別の部分を割り当てることによって増大されなければならない。これにより、実行コントローラは、ANCスタックの一部であるとして割り当てられたANCメモリ・エリアを識別し、割り当てられたANCメモリ・エリアへのポインタを識別し、かつANCスタックの頂部へのポインタとしてサーブする割り当てられたANCメモリ・エリアの実行データのエンドへのポインタを識別すべくスレッド記憶状態テーブル210を更新することによってフリー・リスト212にリストされた別のANCメモリ・エリア208をスレッドに割り当てる。更に、実行コントローラは、フリー・リストから割り当てられた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スタックの一部であるとしてもはや識別されないようにスレッド記憶状態テーブル210を更新する。

0033

スレッド200が実行不能になるとき(図3のステップ310)、実行コントローラ153は、LREリスト216のエンドにそれを加える(図3のステップ318)。このスレッドがまだ実行不能である間(図3のステップ320)、実行コントローラは、そのメモリ空間のあるものが別のスレッドによって供給されるかどうかを決定する(図3のステップ322)。これは、先に記述したように、他方のスレッドが生成されるか(図3のステップ302)またはさらなるメモリ空間を必要とする(図3のステップ312)し、他のスレッドに利用可能な圧縮されていないデータ・リポジトリ120十分なメモリ空間が存在しないときに、発生し、かつそのメモリ空間が必要とされるスレッドは、その実行データがまだ圧縮されていないLREリスト216の最も古く実行されたスレッドである。

0034

メモリ空間が別のスレッドによって必要であれば、そのメモリ空間が必要であるスレッド200の実行データは、先に説明した方法で(図3のステップ308)データ・コンプレッサによって圧縮される(図3のステップ324)。この処理(図3のステップ320〜324)は、スレッドが再び実行可能になるまで繰り返される(図3のステップ320)。スレッド200が再び実行可能になるとき、実行コントローラ153は、スレッドの実行データが圧縮されたかどうかを決定する(図3のステップ326)。それが圧縮されていないならば、実行コントローラは、LREリスト216からスレッドを除去する(図3のステップ328)。その結果、スレッドの実行データは、スレッドが再び実行不能になるまで圧縮されず(図3のステップ310)、スレッドは、LREリストに加えられ(図3のステップ318)、かつスレッドのメモリ空間は、別のスレッドによって必要とされる(図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の実行データは、圧縮解除されかつ実行コントローラ153によって割り当てられた対応しているASC及びANCメモリ・エリア204及び208に配置される。このように、データ・コンプレッサは、スレッドのASC及びANCスタックを形成する対応しているASC及びANCメモリ・エリアへのポインタ及びASC及びANCスタックの頂部へのポインタを識別すべくプログラム記憶状態テーブル210を更新する。先に示したように、スレッドの実行データは、スレッドが再び実行不能になるまで再び圧縮されず(図3のステップ310)、スレッドは、LREリスト216に加えられ(図3のステップ318)、かつスレッドのメモリ空間は、別のスレッドによって必要である(図3のステップ322)。

0037

上記の観点から、本発明は、スレッドの実行のためのラン−タイム・メモリ空間における低減を供給するということが明らかである。しかしながら、当業者が認識するように、他の代替実施例は、同様な利益を供給すべくインプリメントすることができる。特定的に、先に説明した圧縮基準152は、圧縮されていない実行データを有する最も古く実行されたスレッド200がRAM136の空間が必要であるが利用可能でないときに圧縮されるであろうということを特定した。しかしながら、圧縮基準は、広範囲オプションからかつユーザのクライアント・コンピュータ・システム102に特定な多数の条件に基づいてユーザによって選択される。例えば、圧縮基準は、スレッドのそれぞれの実行データがスレッドが実行不能になったならば圧縮されるということを単に特定しうる。また、ある一定のスレッドの実行データは、そのようにするために時間が利用可能であるときにはいつでもものうげに(lazily)圧縮されるというこが特定されうる。そして、先のいずれかのさらなる変形として、圧縮基準は、特定サイズまたは型のスレッドの実行データだけが圧縮されるということを特定しうる。

0038

更に、先に示したように、圧縮解除基準154は、圧縮された実行データを有するスレッド200がスレッドが再び実行可能になったならばその実行データをデータ・コンプレッサ146によって圧縮解除させたということを特定した。しかしながら、圧縮解除基準は、圧縮された実行データが所定の時間間隔が満了した後で圧縮解除されるということを特定することができる。この場合には、データ・コンプレッサは、時間間隔を計時するためにタイマを含むであろう。一例では、この技術は、スレッドの実行データがこの時間間隔に対して圧縮されそしてスレッドが目覚めさせられるちょっと前に圧縮解除されるように決められた時間間隔に対して眠らされるスレッドに対して用いることができる。または、別の例では、技術は、その間にスレッドの実行データが圧縮される時間間隔が、待っていたデータがスレッドに対して利用可能になるときを予測するように選択されるところのデータを待っているスレッドに対して用いることができる。

0039

更に、当業者が認識するように、圧縮基準152は、圧縮されるべき実行データが実行不能スレッド200の全実行データまたは単にそのフラグメントまたは部分でありうるということを特定しうる。この場合には、圧縮される実行データの量は、別のスレッドによって要求されたメモリ空間に基づきうる。それゆえに、例えば、別のスレッドがANCメモリ・エリア208を必要とし、かつそれ以上のANCメモリ・エリアが利用可能でないならば、実行不能なスレッドの必要なANCメモリ・エリアの実行データだけがこのANCメモリ・エリアを利用可能にすべく圧縮されうる。更に別の実施例では、ANCメモリ・エリア208のそれぞれは、それがスレッドの実行データを現在記憶していないけれども、対応しているスレッド200のANCスタックの一部として常に割り当てられる。それゆえに、スレッドに割り当てられるANCメモリ・エリアの一つが実行データを記憶するためにそのスレッドによってもはや必要とされないとき、実行コントローラ153は、スレッドに割り当てられたANCメモリ・エリアをまだ残す。これは、スレッドがその実行において後で別のANCメモリ・エリアを再び要求することがかなり確実なので、行われる。このスレッドに割り当てられたANCメモリ・エリアを保つことで、実行コントローラは、(ANCスタックの別のANCメモリ・エリアにある)ANCスタックの頂部へのポインタを識別すべくスレッド記憶状態テーブル210を更新する。このように、利用可能なANCメモリ・エリアの仮想フリー・リストは、利用可能なANCメモリ・エリアの全てがスレッドに割り当てられるが実行データを含んでいないところで生成される。次いで、スレッドが別のANCメモリ・エリアを必要とするとき、実行コントローラは、先に説明したものと同じ方法でこの他のスレッドに実行データを記憶しない利用可能なANCメモリ・エリアの一つを再び割り当てる。

0040

更に、図4及び図5を参照すると、二次メモリ400は、それらが二次記憶基準を満たすので記憶可能であるスレッド200の圧縮された実行データを記憶するために用いることができる。この場合には、二次記憶基準は、先に説明した圧縮基準152に含まれかつ圧縮された実行データまたはその部分がそれが圧縮されたときに二次メモリに記憶されるべきであるということを特定することができるかまたはそれがメモリ空間が必要であるときにだけ二次メモリに記憶されるべきであるということを特定することができる。いずれの場合でも、データ・コンプレッサ146は、CDメモリ・エリア218に記憶された圧縮されたデータを動かしかつ二次メモリ400の対応しているCDメモリ・エリア500に記憶する。また、データ・コンプレッサは、二次メモリの実行データをポイントすべくプログラム記憶状態テーブル210のポインタを更新する。更に、それらの実行データまたはその部分が圧縮されるので検索可能であり、二次メモリに記憶され、かつ圧縮解除されるべきであるスレッドに対し、実行データは、二次メモリから検索されそして先に説明した方法でRAM136で圧縮解除される。

0041

更に、クライアント・コンピュータ・システム102が二次メモリ400(例えば、ネットワーク・デスクトップ・コンピュータ)を含むような実施例では、プログラム147及び/又は148は、サーバ・コンピュータ・システム104から二次メモリへダウンロードすることができる。そして、これらのプログラムは、サーバ・コンピュータ・システム104からではなく、二次メモリからRAM136へ直接的に仮想マシン・モジュール142によってロードすることができる。更に、そのような実施例では、オペレーティング・システム138、ネットワーク通信マネージャ140、仮想マシン・モジュール142、及びデータ・コンプレッサ146は、二次メモリに記憶しかつそれからRAMにロードすることができる。

0042

更に別の実施例では、オペレーティング・システム138、ネットワーク通信マネージャ140、仮想マシン・モジュール142、及びデータ・コンプレッサ146は、サーバ・コンピュータ・システム104の一つからクライアント・コンピュータ・システム102のRAM136へダウン・ロードすることができる。これは、サーバ・コンピュータ・システムのプログラム147及び/又は148に対して先に説明したものと同様な方法で行われるであろう。さらに別の実施例では、仮想マシン・モジュール142は、シリコンチップで実際にインプリメントされかつクライアント・コンピュータ・システム102のCPU126としてサーブする。この場合には、ANコードを有するプログラム147は、特定のアーキテクチャに対して変換(翻訳)されずその代わり直接的に実行される。この実施例では、ASコードを有するプログラム148は、利用されない。

0043

そして、本発明は、数個の特定な実施例を参照して記述されたが、記述は、本発明の説明のためであり本発明を制限することを意図しない。特許請求の範囲によって定義されたような本発明の真の精神及び範疇から逸脱することなく種々の変更が当業者に生じるであろう。

発明の効果

0044

本発明のコンピュータ・システムは、低減されたラン−タイム空間要求を有する実行の複数のスレッドを実行するコンピュータ・システムであって、ラン−タイム・メモリ;(A)スレッドを実行し、それによりスレッドが異なる時間で実行可能及び実行不能であり、かつ(B)実行データが生成されるときにスレッドの実行データをラン−タイム・メモリの利用可能空間に圧縮しないで記憶する実行コントローラ;及び(A)実行不能であるスレッドの圧縮可能なものの圧縮されていない実行データまたはその部分をラン−タイムメモリで圧縮し、それにより空間がラン−タイム・メモリにおいて利用可能になり、かつ(B)スレッドの圧縮解除可能なものが実行可能になった後で実行されうるようにスレッドの圧縮解除可能なものの圧縮された実行データをラン−タイム・メモリの利用可能空間に圧縮解除するデータ・コンプレッサを備えているので、記憶要求を低減するために各スレッドの平均ラン−タイム記憶費用を低減することができる。

0045

本発明の方法は、低減されたラン−タイム・メモリ空間要求を有する実行の複数のスレッドを実行する方法であって、ラン−タイム・メモリを供給し;スレッドを実行し、それによりスレッドが異なる時間で実行可能及び実行不能であり;実行データが生成されたときにスレッドの実行データをラン−タイム・メモリの利用可能な空間に圧縮しないで記憶し;実行不能であるスレッドの圧縮可能なものの圧縮されていない実行データまたはその部分を圧縮し、それにより空間がラン−タイム・メモリで利用可能になり;かつスレッドの圧縮解除可能なものが実行可能になった後に実行されうるようにスレッドの圧縮解除可能なものの圧縮された実行データをラン−タイム・メモリの利用可能な空間に圧縮解除する段階を具備するので、記憶要求を低減するために各スレッドの平均ラン−タイム記憶費用を低減することができる。

図面の簡単な説明

0046

図1本発明を組み込んでいるコンピュータ・ネットワークのブロック図である。
図2コンピュータ・ネットワークにおけるクライアント・コンピュータ・システムの動作の機能ブロック図である。
図3クライアント・コンピュータ・システムの動作のフローチャートである。
図4本発明が組み込まれているコンピュータ・ネットワークの代替実施例のブロック図である。
図5コンピュータ・ネットワークの代替実施例におけるクライアント・コンピュータ・システムの動作の機能ブロック図である。

--

0047

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 圧縮されていないデータ・リポジトリ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ