JP4251669B2 - Data processing method and apparatus - Google Patents

Data processing method and apparatus Download PDF

Info

Publication number
JP4251669B2
JP4251669B2 JP06788196A JP6788196A JP4251669B2 JP 4251669 B2 JP4251669 B2 JP 4251669B2 JP 06788196 A JP06788196 A JP 06788196A JP 6788196 A JP6788196 A JP 6788196A JP 4251669 B2 JP4251669 B2 JP 4251669B2
Authority
JP
Japan
Prior art keywords
client
application program
execution environment
downloaded
server
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
JP06788196A
Other languages
Japanese (ja)
Other versions
JPH0991143A (en
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP06788196A priority Critical patent/JP4251669B2/en
Priority to TW85108517A priority patent/TW410312B/en
Publication of JPH0991143A publication Critical patent/JPH0991143A/en
Application granted granted Critical
Publication of JP4251669B2 publication Critical patent/JP4251669B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する技術分野】
本発明はデータ処理方法および装置に関し、特に構成を簡略化し、低コスト化することができるようにした、データ処理方法および装置に関する。
【0002】
【従来の技術】
最近、パーソナルコンピュータが普及してきた。このパーソナルコンピュータでネットワークを介して所定のサーバにアクセスし、所定の情報を得ることができる。
【0003】
このようなパーソナルコンピュータにおいて各種の処理を行うには、アプリケーションプログラムが必要となる。そこで、各ユーザは、そのパーソナルコンピュータのOSに合ったアプリケーションプログラムを購入し、インストールして用いるようにしている。
【0004】
【発明が解決しようとする課題】
このように、OSが異なると、アプリケーションプログラムも異なるものとなるため、各ユーザは、自分のOSに合ったアプリケーションプログラムを選択して購入する必要がある。また、アプリケーションプログラムを提供する側(アプリケーションプログラムを設計する側)においても、実質的に同一の処理を行うアプリケーションプログラムを複数(OSの数だけ)設計し、用意しなければならず、多くの労力が必要になると同時に、コスト高となる課題があった。
【0005】
また、同様のことが、同一のOSにおける各アプリケーションプログラムにおいても発生していた。すなわち、1つのアプリケーションプログラムと、それとは異なる他のアプリケーションプログラムとが、同一のOS上において動作するものであったとしても、2つのアプリケーションプログラムはそれぞれ別個に設計しなければならず、結果的に、1つのアプリケーションプログラムを提供するのに必要な労力とコストが高くなる課題があった。
【0006】
本発明はこのような状況に鑑みてなされたものであり、1つのアプリケーションプログラムを、簡単かつ低コストで提供できるようにするものである。
【0007】
【課題を解決するための手段】
請求項1に記載のデータ処理方法は、サーバが、クライアントにアプリケーションプログラムをダウンロードするとき、クライアントが、ダウンロードするアプリケーションプログラムの実行環境を有するか否かを検査し、その検査の結果、クライアントが、ダウンロードするアプリケーションプログラムの実行環境を有しない場合、サーバからクライアントに実行環境に係るオブジェクトをインクリメンタルにダウンロードし、サーバにおける実行環境と同一の実行環境をクライアントに構築し、その後、サーバからクライアントにアプリケーションプログラムをダウンロードし、クライアントは、インクリメンタルにダウンロードされたオブジェクトを、個々のオブジェクト単位に実行し、オブジェクトの実行と並行して、他のオブジェクトをダウンロードすることを特徴とする。
【0008】
請求項に記載のデータ処理装置は、クライアントにアプリケーションプログラムをダウンロードするとき、クライアントが、ダウンロードするアプリケーションプログラムの実行環境を有するか否かを検査する検査手段と、検査手段の検査の結果、クライアントが、ダウンロードするアプリケーションプログラムの実行環境を有しない場合、クライアントに実行環境に係るオブジェクトをインクリメンタルにダウンロードし、実行環境と同一の実行環境をクライアントに構築し、その後、クライアントに前記アプリケーションプログラムをダウンロードするダウンロード手段とを備えることを特徴とする。
【0012】
請求項1に記載のデータ処理方法においては、クライアントにアプリケーションプログラムをダウンロードするとき、クライアントが、ダウンロードするアプリケーションプログラムの実行環境を有するか否かをクライアントとサーバ間で検査し、その検査の結果、クライアントが、ダウンロードするアプリケーションプログラムの実行環境を有しない場合、サーバからクライアントに実行環境に係るオブジェクトをインクリメンタルにダウンロードし、サーバにおける実行環境と同一の実行環境をクライアントに構築し、その後、サーバからクライアントにアプリケーションプログラムをダウンロードする。
【0013】
請求項6に記載のデータ処理装置においては、検査手段が、クライアントにアプリケーションプログラムをダウンロードするとき、クライアントが、ダウンロードするアプリケーションプログラムの実行環境を有するか否かを検査し、ダウンロード手段が、検査手段の検査の結果、クライアントが、ダウンロードするアプリケーションプログラムの実行環境を有しない場合、クライアントに実行環境に係るオブジェクトをインクリメンタルにダウンロードし、実行環境と同一の実行環境をクライアントに構築し、その後、クライアントに前記アプリケーションプログラムをダウンロードする。
【0017】
【発明の実施の形態】
本発明のデータ処理方法を適用するシステム構成例を図1に示す。システムはサーバ1(データ処理装置)、クライアント2(データ処理装置)、ネットワーク3から構成されている。
【0018】
すなわち、この実施例においては、サーバ1は2つのアプリケーションプログラムを有し、一方のアプリケーションプログラム11−1は、それを実行する環境を規定する実行環境12−1と、アプリケーションプログラム11−1と実行環境12−1との間のインタフェースを構成するアプリケーションプログラムインタフェース(API)13−1を有している。
【0019】
アプリケーションプログラム11−1は、複数のオブジェクト14−1により構成され、また、実行環境12−1も、複数のオブジェクト15−1により構成されている。
【0020】
同様に、アプリケーションプログラム11−2は、その環境を規定する実行環境12−2と、アプリケーションプログラム11−2と実行環境12−2との間のインタフェースとして機能するAPI13−2を有している。
【0021】
このアプリケーションプログラム11−2も、複数のオブジェクト14−2により構成され、また、実行環境12−2も複数のオブジェクト15−2により構成されている。
【0022】
同様に、クライアント2も2つのアプリケーションプログラムを有し、一方のアプリケーションプログラム21−1は、その環境を規定する実行環境22−1と、アプリケーションプログラム21−1と実行環境22−1との間のインタフェースであるAPI23−1を有している。アプリケーションプログラム21−1と実行環境22−1は、それぞれ複数のオブジェクト24−1と25−1により構成されている。
【0023】
同様に、アプリケーションプログラム21−2も、その環境を規定する実行環境22−2とAPI23−2とを有し、アプリケーションプログラム21−2と実行環境22−2は、それぞれ複数のオブジェクト24−2と25−2により構成されている。
【0024】
ここで、各オブジェクトはすべて、他のオブジェクトと並行して処理を実行する並行オブジェクトとして定義されている。1つのAPIの集合は1つの実行環境によって与えられるので、サーバ1、クライアント2中には、複数のAPIが存在することになる。
【0025】
図1に示すように、また図2に拡大して示すように、アプリケーションプログラム11を複数のオブジェクト14の集まりで構成する。また、オブジェクト14を並行オブジェクトとして構成することにより、アプリケーションプログラム11は並行処理されることになり、実行速度の向上に貢献する。また、オブジェクト14は置き換えの単位でもあるので、動作にバグのあるオブジェクト、性能上問題のあるオブジェクトなどを、誤りのないオブジェクトで置き換えることによって、アプリケーションプログラム11全体を作り替えることなく、問題点を解決できる。さらに、オブジェクト14を部品とし、既存のアプリケーションプログラムの部品としてのオブジェクトを組み合わせることによって、簡単に新しいアプリケーションプログラムを作ることができる。
【0026】
ここで、アプリケーションプログラムとは、1つのサービス単位である。例えば、サーバ1からの映像データを単に表示しているアプリケーションプログラム、VCR機能を用いて映像データを検索しているアプリケーションプログラム、メニューによってサービスを選択しているアプリケーションプログラム、ホームショッピングのアプリケーションプログラム、ホームショッピングと連結した家計簿アプリケーションプログラム、税金計算アプリケーションプログラム等である。
【0027】
アプリケーションプログラム間でオブジェクトを共有することによって、操作性に共通点を持たせることができる。例えば、家計簿でデータを入力しているエディタと、ホームショッピングでのデータ入力エディタを共通化することができる。
【0028】
次に並行オブジェクト(concurrent object)について説明する。並行オブジェクトの構成を図3に示す。並行オブジェクトであるオブジェクト14は、外部に公開されたメソッドエントリのテーブル14A、メソッドの本体14B、オブジェクトの状態を保持するメモリ領域14C、メソッドを実行する単一のスレッド14Dを有している。並行オブジェクトには1つの実行コンテキスト(スレッドと呼んでも良い)のみが存在する。従って並行オブジェクトは、1つのメッセージを受信して、その処理中には、新たに到着したメッセージの処理は、現在の実行が終了するまで行わない。
【0029】
このように、オブジェクト内にスレッドを1個だけ配置するようにすると、次の利点が得られる。
【0030】
(1)複数のアクティビティ間の同期を気にする必要がない。すなわち、共有データが存在する場合に、セマフォア等の同期のための命令を用いて、共有データに対するアクセスを順序付けるといったことを行う必要がなくなる。換言すれば、オブジェクトへのメッセージ送信が、その順序付けを含んでいることになる。
【0031】
(2)そのため、同期の取り方のミスによるプログラム誤りが生じなくなると同時に、そのオブジェクトの再利用可能性が高まる。
【0032】
(3)例えばデバイスドライバを本方式で作成することによって、多くの場合に生じる、同期誤りを防ぐことができる。
【0033】
(4)また、デバイスドライバの置き換えによる同期誤りを防ぐことができるので、安全にデバイスドライバを置き換えることができる。
【0034】
(5)デバイスドライバの、実際にハードウェアを制御する部分以外の部分を、OSと独立に作成することができる。これによって、従来から開発のかなりの時間を占めていたデバイスドライバを、共通に開発することが可能になるので、開発期間の短縮につながる。
【0035】
(6)オブジェクト間の実行制御に関する記述をアプリケーションプログラムの記述から除くことができる。例えば、マルチスレッドを用いた手法では(複数のスレッドを用いる場合には)、スレッドの実行制御をアプリケーションプログラム中にプログラムする必要があるために、スレッドのプログラミング環境が変更になると、アプリケーションプログラムを書き換える必要がある。しかしながら、スレッドが1個の場合には、アプリケーションプログラムにこの部分を記述する必要がないので、実行制御方法が変わってもアプリケーションプログラムを書き直す必要がない。並行オブジェクトのその実行環境への最適な実行制御方法は、システムが、後述するオブジェクトの動的拡張の原理を用いて提供する。
【0036】
(7)従って、アプリケーションプログラムを記述する場合には、並列処理を考える必要がない。並行オブジェクトが並列処理の単位であるので、並行オブジェクトをプログラムしていけば、後はシステムが自動的にそのハードウェアに最適な実行制御を行って並列処理が行われる。従来の手法では、いくつプロセスを生成するか、いくつスレッドを生成するか、といったことをプログラミング時に指定しなければならず、この指定は、ハードウェアの性能を考慮しないと、そのアプリケーションプログラムは特定のハードウェア専用のものになってしまうが、本方式によれば、そのようなことはない。
【0037】
本システムにおいては、オブジェクトは必要に応じてダウンロードされる。複数ベンダのクライアント2に対してサーバ1からオブジェクトをダウンロードする場合のシステム例を図4に示す。サーバ1上には、それぞれのベンダ用のクライアントAPI13(13−1,13−2)が、実行環境12(12−1,12−2)によって実現されている。
【0038】
オブジェクトをクライアント2(2−1,2−2)にダウンロードするとき、クライアント2上に、サーバ1上の実行環境12と同じ実行環境22(22−1,22−2)が存在するか否かを調べ、存在する場合には、オブジェクトをダウンロードする。存在しない場合には、クライアント2上にサーバ1上の実行環境と同一の実行環境を構築した後、ダウンロードする。
【0039】
例えば、図4において、サーバ1のアプリケーションプログラム11−1のオブジェクト14−1を、クライアント2−1のアプリケーションプログラム21−1のオブジェクト24−1としてダウンロードする場合、クライアント2−1の実行環境22−1に、サーバ1の実行環境12−1のオブジェクト15−1Aに対応するオブジェクト25−1Aが必要であるとき、例えば、実行環境12−1のオブジェクト15−1B(検査手段)は、実行環境22−1のオブジェクト25−1B(告知手段)にフィーチャストラクチャ(後述する)を問い合わせる。そして、その回答に対応して、実行環境12−1のオブジェクト15−1C(ダウンロード手段)と実行環境22−1のオブジェクト25−1C(ダウンロード手段)は、実行環境12−1のオブジェクト15−1Aと15−1Bを、実行環境22−1のオブジェクト25−1Aと25−1Bとしてダウンロードさせる。
【0040】
従来の手法では、ダウンロードするオブジェクトは、クライアントのAPIに合わせて作成する必要があった。例えば、クライアントがUNIXシステムの場合には、サーバ上では同じUNIXシステムを用いるか、あるいは何らかのクロス開発環境を構築してオブジェクトを作成する必要がある。もし、サーバとクライアントが同じ実行環境を備えなければいけない場合には、クライアント装置は一般に高価な計算資源を備える必要がある。例えば、専用の実行環境を備える場合と比べて、より多くのメモリを備える必要がある。また、十分な実行速度を保証するために、高速のCPU(Central Processing Unit)を備える必要がある。これは、装置のコスト増につながる。
【0041】
これに対して、本システムでは、アプリケーションのダウンロードと同時に、その実行環境をもダウンロードすることで、この問題を解決する。すなわち、クライアント2で現在必要とする実行環境22のみをクライアント2に構築することによって、不必要な資源をクライアント2に用意しなくてもすむようになる。例えば、クライアント2が3Dのグラフィックスを必要としない場合には、そのライブラリは必要なくなる。
【0042】
また、クライアント2がVOD(Video On Demand)で映画を見ている場合には、ユーザとのインタラクションのためのサービス(映画を見るときは不要となるサービス)をクライアントから一時削除することによって、その分の計算資源を他の仕事に割り振ることができる。例えば、その資源を、サーバ1からの映像データのプリフェッチ用のバッファに使うことができる。インタラクションのためのサービスは、それが必要になった時点でサーバ1からダウンロードされる。
【0043】
本システムでダウンロードされるオブジェクトとしては次のものが考えられる。
【0044】
(1)すべてのアプリケーションプログラム
【0045】
(2)クライアントが備えるハードウェア資源を制御するためのデバイスドライバ群(例えば、MPEGドライバ、ATMドライバ、画像制御ドライバ等)
【0046】
(3)アプリケーションプログラムに対してシステムサービスを提供するオブジェクト群(例えば、VCRコマンド管理、ストリーム管理、実時間スケジューラ、メモリ管理、ウィンドウ管理、ダウンロード制御、通信プロトコル管理、実行管理等)
【0047】
これらを組み合わせて、アプリケーションプログラムに対して最適な実行環境をクライアント上に構築する。
【0048】
サーバ1は、映像データやアプリケーションプログラムを送出する装置であったり、クライアント2にネットワーク3を通して情報を送出する装置である。一方クライアント2は、サーバ1からの情報を処理する装置であり、常にネットワーク3と接続されている必要はない。実行環境はアプリケーションプログラム毎に与えることができるので、アプリケーションプログラム毎に最適な実行環境を用意することができる。
【0049】
従来の手法では、システム構築時にアプリケーションの特性をあらかじめ見積もっておく必要があった。例えば、アプリケーションプログラムが映像データを扱う必要があるときには、そのためのシステムサービス、例えば、実時間スケジューリングや映像データを扱うためのVCRのようなユーザインタフェースを備えている必要がある。また、アプリケーションが3Dグラフィックスを用いているならば、そのためのライブラリを備えている必要がある。そのため、システムは肥大になる傾向があった。UNIXやWindows(商標)がこの典型例であり、バージョンがあがるごとにシステムが必要とするメモリ量は多くなっていった。本システムでは、アプリケーションの実行のために必要最小限の機能のみを備えていればよく、従来システムのこの問題点を解決する。
【0050】
アプリケーションプログラム11を複数のオブジェクトの集まりとして構成することにより、また、そのオブジェクトを並行オブジェクトとして実装することにより、オブジェクト単位で並行実行が可能になり、アプリケーションプログラムの実行と同時にオブジェクトをダウンロードすることができる。この時、図5に示すように、アプリケーションプログラムの実行に必要なオブジェクトをインクリメンタルにダウンロードすることにより、ユーザからは、単一のアプリケーションプログラムのロードにかかる時間を隠すことができる。
【0051】
例えば、図5に示すように、サーバ1のアプリケーションプログラム11のオブジェクト14−1−1乃至14−1−11を、クライアント2のアプリケーションプログラム21のオブジェクト24−1−1乃至24−1−11としてダウンロードする必要がある場合、ランダムに各オブジェクトをダウンロードするのではなく、アプリケーションプログラム21を実行する上において、最初に必要なオブジェクト14−1−1乃至14−1−3を、オブジェクト24−1−1乃至24−1−3として先にダウンロードする。
【0052】
アプリケーションプログラム21は、さしあたって、この3つのオブジェクトが存在すれば、起動可能であるため、その処理を開始する。そして、その処理が実行されている間に、残りのオブジェクト14−1−4乃至14−1−11をアプリケーションプログラム21のオブジェクト24−1−4乃至24−1−11として、第2乃至第4のダウンロードで順次ダウンロードする。この第2乃至第4のダウンロードにおいても、処理上、先に必要となるオブジェクトから順番にダウンロードする。
【0053】
ユーザは、アプリケーションプログラム21がオブジェクト24−1−1乃至24−1−3がダウンロードされ、その処理が開始された時点において、既にアプリケーションプログラム21の処理が開始されているため、あたかもすべてのオブジェクトのダウンロードが完了したものと認識することができる。すなわち、ユーザは、11個のオブジェクトをダウンロードするのに必要な時間より短い、3個のオブジェクトをダウンロードするのに必要な時間だけを意識することになる。換言すれば、ユーザに対して、8個のオブジェクトをダウンロードするための時間を実質的に隠す(意識させないようにする)ことができる。
【0054】
このことは、図4を参照して説明した(また、図10を参照して後述する)実行環境22の構築をクライアント2上に行う場合にも当てはまる。この場合は、実行環境22を構成するオブジェクトのうち、アプリケーションプログラムの実行に必要な部分のみのオブジェクトを先にダウンロードすることによって、実行環境のすべてのオブジェクトをダウンロードする時間をユーザから隠すことができる。この手法は、システムのブートにも応用できる。
【0055】
ここで、インクリメンタルダウンロードとは、アプリケーションプログラムや実行環境を一度にダウンロードしないで、それを構成するオブジェクト単位、あるいは、その一部を必要に応じてダウンロードすることを意味する。従来のパソコン通信におけるアプリケーションプログラムのダウンロードの場合には、圧縮されたアプリケーションプログラムを一気にダウンロードするので、ダウンロードがすべて終わらないと、そのアプリケーションプログラムは利用することができない。また、例えば、今までのシステムのブートでは、システム全体を全部メモリに読み込んでから立ち上がる。UNIXのディスクレスワークステーションの場合には、サーバからすべてのOSをメモリに読み込んでからシステムが起動するので、読み込みがすべて終了するまで、システムを利用できない。しかしながらインクリメンタルダウンロードすれば、そのようなことがなくなる。
【0056】
この手法は、サーバ1とクライアント2としてのSTB(Set Top Box)に応用して次のような効果がある。まず、STBの電源を入れるとすぐに利用できるようになる。現在のパーソナルコンピュータのように、システムが立ち上がるまでいらいらして待つ必要が無くなる。STBは家庭用電気製品としての性格が強いので、システムが立ち上がるまでユーザを待たせるのは好ましくない。
【0057】
STBの電源が入れられると、STBは最初に必要なオブジェクトをダウンロードして実行を始めようとする。ユーザの待ち時間は最初のこのオブジェクトのダウンロード時間のみである。典型的なオブジェクトのダウンロード時間は数ミリ秒から数十ミリ秒であるので、適当なユーザインタフェースを備えることにより、この時間は十分ユーザにとって無視できる時間となる。以降は、システムの立ち上げプロセスの進行に従って、必要なオブジェクトがシステムの立ち上げプロセスと並行にダウンロードされる。
【0058】
また、STBは、そのコストの観点から、サーバのような豊富な計算資源が用意されていないので、複数のアプリケーションを同時に実行する場合にも制約が生じる。例えば、ナビゲーションアプリケーションによって、VODサービスを選択して、1つの映画を鑑賞することを考えた場合、映画の鑑賞が始まったら、ナビゲーションアプリケーションが占有していた資源(メモリ)を解放して、映画鑑賞アプリケーションのために使うことができる。そして、再び、ナビゲーションアプリケーションが必要になった時点で、その資源(メモリを管理するオブジェクト)をダウンロードする。
【0059】
ここで、「必要になった時点」とは、オブジェクトに対して何らかのメッセージが送られた時点とする。すなわち、一番最初にダウンロードしたオブジェクトが、別のオブジェクトにメッセージを送った時点で、その受信オブジェクトをダウンロードする。オブジェクトの依存、参照関係を利用することによって、次のメッセージを送るオブジェクトをあらかじめダウンロードしておくことができる。これを、アプリケーションの実行と並行に行うことにより、メッセージ通信時におけるダウンロードによる遅延を少なくすることができる。これにより、インクリメンタルダウンローディングの有効性を高めることができる。
【0060】
また、実行環境12,22もオブジェクト15,25の集合体であり、アプリケーションプログラム11,21のオブジェクト14,24と同等に操作可能であるので、アプリケーションプログラム11,21に特化したダウンロードの順序を制御するメタオブジェクトをオブジェクト15,25の1つとして用意する(例えば図4のオブジェクト25−1Cをメタオブジェクトとする)ことができる。これによって、特定のアプリケーションに適した、そのオブジェクトが利用するオブジェクトのダウンロード順を指定することができ、インクリメンタルダウンローディングによるユーザの待ち時間を最小にすることができる。
【0061】
サーバ1からクライアント2へのオブジェクトのダウンロードの機能、それに伴うオブジェクトの実行環境の互換性の検査機能、および実行環境の構築機能は、本システムを実現する上で重要なものであり、本システムを構成するすべての装置(クライアント2)が最低限有すべき機能とする。本明細書ではこの機能をメタ標準と呼ぶ。このメタ標準により、OS等の実行環境のAPIは自由に拡張することができるようになり、最小限の標準化とその拡張によって、今後のあらゆるタイプのアプリケーションに対応することができるようになる。
【0062】
例えば、図6に示すシステムでは、各サーバ1−1,1−2、各クライアント2−1,2−2では、独自のAPIを持ったOSが稼働している。すなわちクライアント2−1においては、実行環境22−1に対応して、アプリケーションプログラム21−1のためのAPI23−1(API#1)が構成されている。また、クライアント2−2においては、実行環境22−2によりアプリケーションプログラム21−2のためのAPI23−2(API#3)が形成されている。
【0063】
このため、これらのクライアント2−1,2−2に対してプログラムをダウンロードするサーバには、これらのAPIに対応するAPIが予め用意されている。この実施例においては、サーバ1−1において、実行環境12−1によりアプリケーションプログラム11−1のためのAPI13−1が形成されており、このAPI13−1は、クライアント2−1におけるAPI23−1(API#1)に対応するAPI(API#1)とされている。
【0064】
同様にサーバ1−2において、実行環境12−3によりアプリケーションプログラム11−3に対応するAPI13−3(API#3)が形成されており、このAPI13−3がクライアント2−2のAPI23−2(API#3)に対応している。
【0065】
従って、サーバ1−1,1−2と、クライアント2−1,2−2に、このメタ標準に対応するオブジェクトとして、オブジェクト15−1A乃至15−1C,15−3A乃至15−3C,25−1A乃至25−1Cおよび25−2A乃至25−2Cを設けている。その結果、クライアント2−1または2−2に対しては、サーバ1−1または1−2から、メタ標準プロトコルに従って必要なオブジェクトを適宜ダウンロードさせることができる。
【0066】
各クライアントにおけるOSを1つのOSに標準化しようとするのがこれまでのこの分野における傾向であった。しかしながら、このようなメタ標準を規定し、サーバ側においてのみ、各クライアントのAPIに対応するAPIを具備させることで、標準を決定する必要がなくなる。
【0067】
OSの標準を1つに規定していないことによって、アプリケーションを始め、システムサービスを実現しているオブジェクトは、OSとは独立に構成することが可能になる。すなわち、ある実行環境用に書かれたソフトウェアを、マイグレーションによって別の実行環境用に自動的に再構成すればよいことになる。従来のシステムには、この機能は存在しない。例えば、UNIX用に書かれたソフトウェアはWindows上では、書き直さないと動作しない。アプリケーションレベルのソフトウェアで、この機能を実現するには、OS依存性を吸収するソフトウェアを導入する必要がある。しかし、デバイスドライバを始めとする、システムサービスを実現するオブジェクトのOSの独立性は、本手法を用いて可能になる。
【0068】
このように、オブジェクトをダウンロードするようにすると、クライアント2のオブジェクトは、図7に示すように、動的に変更することができる。すなわち、既存のオブジェクトをクライアントから削除して、新しいオブジェクトをサーバからダウンロードする。
【0069】
例えば、図7の実施例においては、クライアント2のアプリケーションプログラム21におけるオブジェクト24Aが不要となったので、これを削除している。そして新たに必要になったオブジェクト14Aをサーバ1からクライアント2に対してダウンロードする。
【0070】
これにより、次のことが可能になる。
【0071】
(1)ソフトウェアをアップデートすることができる。例えば、ハードウェア制御ソフトにバグが見つかった場合に、そのオブジェクトを削除して、新しいオブジェクトに置き換える。家庭電化製品は、コンピュータの専門家ではない、一般消費者が利用するものなので、一部のコンピュータに見られるようなインストーラによるソフトウェアのアップデートは適切ではない。
【0072】
(2)製品のサイクルを長くすることができる。例えば、テレビジョン受像機は毎年のようにモデルチェンジが繰り返されるが、一般消費者は、テレビジョン受像機を毎年買い換るようなことはしない。しかし、本システムにより、ソフトウェアの問題はすべて最新の機能をユーザに提供できることになるので、ソフトウェアの機能拡張によるモデルチェンジをなくすことができる。これは、STBの場合にも当てはまる。
【0073】
(3)ユーザインタフェースの好みの変化に対応できる。例えば、初めてその装置を使い始めたユーザには、親切なメニュー形式を提供するが、ユーザがその装置の使い方を習熟するにつれて、直接所望の操作ができるようなダイレクト操作のユーザインタフェースに変更することができる。この場合も、両方の手順をクライアント側に持たせるのではなく、そのときのユーザの熟練度に応じたユーザインタフェースをクライアント側に持たせることができる。これにより、限りあるクライアントの資源を有効に利用することができる。
【0074】
また、オブジェクトをダウンロードすれば、図8に示すようにクライアント2のオブジェクトを動的に拡張することができる。図8の実施例においては、クライアント2におけるアプリケーションプログラム21−1のオブジェクト24−1Bに対して新たなサービスを受けられるようにするために、実行環境22−2が生成されている。そして実行環境22−1から必要なオブジェクト25−1A,25−1Bが実行環境22−2にオブジェクト25−2A,25−2Bとなるように、マイグレート(移転)する。さらに必要なその他のオブジェクト25−1C,25−1Dも実行環境22−2にマイグレートされる。
【0075】
そしてアプリケーションプログラム21−2には、アプリケーションプログラム21−1のオブジェクト24−1Bが、オブジェクト24−2Bとなるようにマイグレートされる。
【0076】
このようにして、例えば、実時間スケジューリングの拡張が必要になった場合には、その為の新しい実行環境をクライアントに生成し、必要なオブジェクトをその新しい環境に移動する。オブジェクトには何も変更を加える必要がなく、オブジェクトは実時間スケジューリングのサービスを受けられるようになる。
【0077】
これにより次の効果が得られる。
【0078】
(1)アプリケーションプログラムのオブジェクトに変更を加えないで、新しい機能に対処することが可能になるので、アプリケーションプログラムの寿命が長くなり、再利用可能性が増す。従来の手法では、アプリケーションプログラムにその実行環境に対する依存コードが含まれていたために、実行環境が変わることは、アプリケーションプログラムの書き換えを意味していた。
【0079】
(2)組み込み機器のアプリケーションプログラムの場合には、ユーザインタフェースをはじめとする機器の高機能制御ソフトの部分は、モデルが大きく変わらない限り再利用したい部分であり、また、既存のコードを利用して機能拡張するのみで開発期間を短縮したい部分であるが、この部分に、実行環境への依存コードが含まれていると、再利用のための作業は複雑になる。今までの手法は、この部分に対して何の戦略もなかったが、本方式によって、この作業は自動化、あるいは、最小化できる。
【0080】
本システムは、具体的には次のように応用できる。
【0081】
(1)アプリケーションの信頼性が低い場合に、メモリ保護機能をダウンロードすることによってシステム全体の停止を防ぐことができる。
【0082】
(2)STBのベンダ毎に、サービスプロバイダは提供サービスを変えることができる。例えば、映画会社Aの映画を提供するサービスプロバイダは、その映画を受信するB社のSTBとC社のSTBとで、画像の質を変えることができる。
【0083】
(3)STBに送られてくるA/Vデータの圧縮方式やユーザの画質の好みに応じて、システムの処理方式を変更する。例えば、MPEGデータの場合とJPEGデータでは画質を調整するときの仕方が異なるので、システムの処理方式を変更する必要があるが、本システムでは、データ形式に従って動的に処理方式を選択できる。
【0084】
このように、システムのほとんどの機能はサーバ1からダウンロードすることができるので、あらかじめクライアント2に様々の機能を持たせる必要が無く、最小限の機能を持たせればよい。図9に本システムにおけるクライアント2が有する最小限の機能を示す。すなわち、クライアント2には、デバイスドライバのための実行環境22−1、システムオブジェクトのための実行環境22−2、実行環境の為の実行環境22−3を、最低限形成する。
【0085】
あらかじめ存在させる必要のあるデバイスドライバは、入力を処理するinput driver、時間を管理するtimer driver、表示を制御するscreen driverの各オブジェクト24−1A,24−1B,24−1Cであり、システムオブジェクトは、入力を管理するinput handler、起動を管理するboot protocol、記憶を管理するmemory managerの各オブジェクト24−2A,24−2B,24−2Cである。より高機能のデバイスドライバ、システムオブジェクトはサーバ1からダウンロードされる。
【0086】
図10は、サーバの送り出すアプリケーションプログラム(ビデオ、ゲーム、ショッピング等)に適したクライアント環境を動的に構成する実施例を表している。図10では、ショッピングのアプリケーションプログラム11−2をサーバ1からダウンロードするために、ショッピング用の実行環境22−4がクライアント2−2に構成されている。また、ショッピングアプリケーションプログラムから映画アプリケーションプログラムに、クライアント2−2がアプリケーションプログラムを切り替えた場合には、映画アプリケーションプログラム21−3の実行環境22−3がクライアント2−2に構成され、サーバ1から映画アプリケーションプログラム11−1がダウンロードされる。
【0087】
例えば、次のような処理が考えられる。
【0088】
(1)ユーザが映画を選択しているとき
この時には、所望の映画を選択することができるように、ナビゲーションアプリケーション11−3が、例えばクライアント2−1の実行環境22−1にダウンロードされ、それに対する必要な環境として、ウィンドウ管理、ユーザからの入力管理等のオブジェクト15−3がオブジェクト25−1としてダウンロードされる。
【0089】
(2)ユーザが映画を鑑賞しているとき
この時には、サーバ1−1の実行処理12−1から、ビデオストリーム管理、データ先読みバッファ管理、VCR機能等のオブジェクト15−1が、例えばクライアント2−2の実行環境22−3にオブジェクト25−3としてダウンロードされる。
【0090】
以上のように、クライアントの実行環境をダウンロードにより実現するために、本システムでは図11に示すフィーチャストラクチャ(feature structure)を導入する。オブジェクトがサーバ1からクライアント2にダウンロードされる時、このfeature structureが検査されて、必要な実行環境がダウンロード先に構成される。
【0091】
すなわち、サーバ1は、クライアント2との間において、第1のフェーズ(ネゴシエーションフェーズ)で、サーバ1側のメタオブジェクト空間とクライアント2側のメタオブジェクト空間との間におけるオブジェクトマイグレーションの可能性に関するネゴシエーションを行う。そして第2のフェーズ(移動フェーズ)において、実際にオブジェクトの転送を行う。
【0092】
オブジェクトマイグレーションはメタレベルのプロセスであり、オブジェクトの内部情報と、必要ならばそれに関連したオブジェクトによって使用中の計算資源を転送するものである。オブジェクトの内部情報は、ディスクリプタ(descriptor)と呼ばれるメタレベルオブジェクトによって表現されている。ディスクリプタは、実際には、オブジェクトを管理しているメタオブジェクトの名前を保持している。一般的なディスクリプタは、オブジェクトのメモリセグメントを管理しているメタオブジェクトの名前、2つ以上のオブジェクトの実行制御をしているメタオブジェクト(スケジューラ)の名前、オブジェクトの名前付けを管理しているメタオブジェクトの名前、等を保持している。
【0093】
第1のフェーズ(ネゴシエーションフェーズ)においては、オブジェクトの移動の可能性が検査される。すなわち、メタオブジェクト空間によっては、オブジェクトマイグレーションが望ましくない場合がある。例えば、デバイスドライバを管理しているメタオブジェクト空間が、オブジェクト(デバイスドライバ)を移動する場合には、クライアント2側にハードウエアデバイスが実際に存在していなければ、その移動を行っても意味が無くなってしまう。また仮想記憶管理機構を利用して、オブジェクトのメモリセグメントを管理しているメタオブジェクトも、移動先に仮想記憶管理機構が存在しなければ、移動を行ったとしてもメモリセグメントを管理することができない。そこで、マイグレーションプロトコルにおいては、次のメソッドが用意されている。
【0094】
Feature* Descriptor::CanSpeak(Feature* pFeature)
【0095】
このメソッドは、クライアント2側のメタオブジェクト空間内のdescriptorに対して、CanSpeakオペレーションを実行する。
【0096】
この時、フィーチャストラクチャが引数として渡され、結果としてクライアント2は、サーバ1に対して自分自身(クライアント2)が受け入れ可能なフィーチャストラクチャを返す。サーバ1側においては、クライアント2側から返されたフィーチャストラクチャを検査することで、そのメタオブジェット空間の互換性を知ることができる。
【0097】
互換性は、完全互換、半互換、および非互換の3つのカテゴリに分類される。
【0098】
完全互換は、オブジェクトが移動後も完全に実行を続けることができる場合を意味する。半互換は、移動後のオブジェクトの実行には、ある制限が加えられることを意味する。そして、非互換は、オブジェクトは移動後には実行を続けることができないことを意味する。
【0099】
非互換の場合には、オブジェクトマイグレーションは行われない。半互換の場合にはマイグレーションを行うか、行わないかをユーザが判断する。実際には、例外がユーザに返されるので、例外処理ルーチンによって、マイグレーションの判断がなされる。完全互換の場合、または半互換の場合であって、オブジェクトマイグレーションが行われるときには、先に返されたフィーチャストラクチャの内容に従って、マイグレーションが行われる。
【0100】
なお、ネゴシエーションフェーズに先だって、次のオペレーションによって空のdescriptorがクライアント2側のメタオブジェクト空間に生成される。
【0101】
Descriptor::Descriptor()
【0102】
先のCanSpeakメソッドは、このdescriptorに対して送られる。この時、フィーチャストラクチャの情報を元に必要なメタオブジェクトの生成、参照の生成、必要情報の登録が行われる。
【0103】
第2のフェーズにおけるメタレベルでのプロセスは、転送オブジェクトに対応したメタオブジェクトの移動、あるは転送になる。ここで、メタオブジェクトの移動とは、そのメタオブジェクトがクライアント2側のメタオブジェクト空間に入ること、すなわち、ディスクリプタ(descriptor)から参照されるようになることを意味し、また、メタオブジェクトの転送とは、クライアント2側のメタオブジェクト空間にあるメタオブジェクト(これはdescriptorから参照されている)に対して、メタオブジェクト内のデータをメッセージとして送ることを意味する。
【0104】
メタオブジェクトの移動および転送に関する実際のオペレーションが、ネゴシエーションフェーズによって得られたフィーチャストラクチャを利用して、この第2のフェーズ(移動フェーズ)において実行される。
【0105】
移動フェーズにおける実際のメタオブジェクトの移動および転送は、次のメソッドによって起動される。
【0106】
Descriptor& Descriptor::operator=(Descriptor& source)
【0107】
Descriptorクラスは抽象クラスであり、メタオブジェクトの移動、転送に関する共通のプロトコルを定義している。sourceで参照されるdescriptorの内容が、このディスクリプタにコピーされる。
【0108】
実際の手続きは、Descriptorクラスのサブクラスとして定義される。
【0109】
次のメソッドは、メタオブジェクトの転送に関するメソッドである。これらのプロトコルは主にmigrator(メタオブジェクト空間内に含まれる、オブジェクトマイグレーションを担当するメタオブジェクト)によって使用される。・CanonicalContext& Context::asCanonical()
機械依存のContext構造体を、機械非依存の形式に変換する。このプロトコルは、feature structureによってContextの直接変換が不可能である、と示されたときに実行される。
・Context& Context::operator
=(Context& source)
・Context& Context::operator
=(CanonicalContext& source)
現在(thisが参照する)Contextをsourceが参照するContextで初期化する。
・CanonicalSegment& Segment::asCanonical()
機械依存のSegment構造体を、機械非依存の形式に変換する。このプロトコルは、feature structureによってContextの直接変換が不可能である、と示されたときに実行される。
・Segment& Segment::operator
=(Segment& source)
・Segment& Segment::operator
=(CanonicalSegment& source)
現在のthis(が参照する)Segmentをsourceが参照するSegmentで初期化し、必要なメモリ領域をコピーする。
【0110】
図11は、フィーチャストラクチャの構造を表している。同図に示すように、object descriptionとenvironmemt descriptionのポインタが、エントリーに記述されている。
【0111】
object descriptionのポインタで指示されているストラクチャには、object nameが記述され、さらに、environment descriptionのポインタで指示されているストラクチャと同一のストラクチャのポインタが記述されている。そしてさらに、このオブジェクトの資源要求(resource requiremnent of this opject)が記述されている。
【0112】
また、environment descriptionのポインタで指示されているストラクチャには、environment nameが記述され、さらに、そのクライアントのハードウエアの資源情報(resource information of client hardware)、この実行環境の資源要求(resource requirement of this environment)、およびこの実行環境を構成するメタオブジェクトのリスト(list of metaobjects constituting environment)が記述されている。
【0113】
フィーチャストラクチャの内容の具体例をあげると、次のようになる。
【0114】
(1)オブジェクトに関する情報
実時間性
必要プロセッサ量
【0115】
(2)メタオブジェクトに関する情報
ハードウェアメタオブジェクト
*プロセッサの種類
*データ表現形式
セグメントメタオブジェクト
*大きさ
*拡大、縮小可能性
*管理方針
*レイアウト
コンテキストメタオブジェクト
*レジスタ情報
*一時変数量
*プロセッサ状態
メイラメタオブジェクト
*メッセージキュー長
*未処理メッセージ数
*外部メイラの必要性
*メッセージの転送方式
外部メイラメタオブジェクト
*メッセージキュー長
*未処理メッセージ数
*プロトコル
スケジューラメタオブジェクト
*オブジェクト状態
*スケジューリング方針
依存管理メタオブジェクト
*保有する外部名数
【0116】
上述したように、各クライアントが異なるOSを有するような場合、このフィーチャストラクチャから各クライアントのOSが判定され、サーバは、そのOSに対応するオブジェクトをダウンロードさせることになる。
【0117】
図12は、本発明のデータ処理システムを応用したApertos(商標)システムの構成例を示している。このApertosシステムにおいては、Apertos Micro Virtual Machine(MVM)31a(第1の実行手段)は、Apertos Micro Kernel(MK)31b(第2の実行手段)とともにあり、Apertosシステムの核31を構成している。核31を構成するMVM31aは後述する中間コード(I−code)を解釈実行するが、必要に応じて、MK31bの機能を用いてpersonalityオブジェクト(システムオブジェクト)を呼び出すようになされている。
【0118】
図12に示した核31以外の部分は、上述した方法により、例えば、サーバ1よりダウンロードすることができる。
【0119】
このシステムは、必要に応じてI−codeをnative code(バイナリコード、マシンコード)に動的にコンパイルする。また、予めnativecodeにコンパイルされているオブジェクトを実行するが、その場合、MK31bの機能によってPersonalityオブジェクト33(バイナリコード生成手段)が呼び出され、アプリケーション(Applications)35にサービスを提供する。
【0120】
図12に示した核31を構成するMVM31aおよびMK31bは、その外側がデバイスドライバオブジェクト(Device drivers)32とPersonalityオブジェクト(Personality component objects)33によって取り囲まれており、さらに外側には、アプリケーションプログラミングのためのクラスシステム(Class Libraries)34が用意されており、さらにその外側にはアプリケーション35が用意されている。
【0121】
Personalityオブジェクト33の層により、Apertosシステムは様々なOS(オペレーティングシステム)やVirtual Machine(仮想計算機)を提供することができる。例えば、javaプログラムの実行は、javaプログラム用のPersonalityオブジェクトによって、javaプログラムがコンパイルされて得られた中間コードであるjava bytecodeが実行されることにより行われる。
【0122】
Apertosシステムは、高度のportabilityを実現するために、プログラムをI−code(中間コード)にコンパイルし、オブジェクトのメソッドを管理している。しかしながら、I−codeは、解釈実行(プログラムを解釈しながら実行すること)を前提に設計されているのではなく、動的コンパイラによってnative codeにコンパイルするように設計されている。しかし、様々な制約により、動的コンパイルが困難である場合、MVM31aがI−codeを解釈実行する。
【0123】
しかしながら、ほとんどの場合、I−codeは、native codeにコンパイルされ、システムを構成するCPUにより直接実行される。従って、Virtual Machineによる実行に伴って、実時間性が欠如したり、処理スピードが犠牲になるということはほとんどない。
【0124】
上記I−codeは、高度のInter−Operabilityを実現するため、図22を参照して後述するように、十分に抽象度の高い2つの命令セット(OP_M,OP_R)から構成されており、そのセマンティクス(意味構造)は、MK31bのインタフェースと強く関連づけられている。即ち、図12に示したApertosシステムの構造に強く影響を受けた命令セットとされている。これにより、Apertosシステムにおいては、native codeを前提としていながら、高度のPortabilityとInter−Operabilityを実現することができる。
【0125】
次に、MVM31aとMK31bの仕様について説明する。最初に、MVM31aが仮定しているデータ構造体と、I−codeフォーマットを規定する。
【0126】
図13は、図12に示したMVM31aとMK31bの論理構造を示している。基本的に両者の論理構造は同一であり、active context41、message frame42、およびexecution engine43により構成されているが、MVM31aは、I−codeによる実行をサポートし、MK31bはnative codeによる実行をサポートしている。
【0127】
図13において、active context41は、現在実行中のContext(図14を参照して後述する)を指しており、message frame42は、核31を構成するMVM31aおよびMK31bに対するメッセージ本体を指している。
【0128】
MK31bの場合、メッセージ本体の存在する場所は実装方法に依存し、スタックフレームとしてメモリに割り当てられる場合もあるし、ヒープ(heap)に割り当てられる場合もある。また、いくつかのCPUのレジスタが割り当てられる場合もある。一方、MVM31aの場合、メッセージフレームは命令コードに続くオペランドを指すことになる。実装によっては、これら以外に内部レジスタ等を必要とするかもしれないが、それらのレジスタは本仕様とは独立のものである。
【0129】
図13において、execution engine43は、I−codeおよびnative codeを実行する。また、MVM31aのexecution engine43には、primitive objects44が含まれており、これは、図18を参照して後述するプリミティブオブジェクトを処理するコードである。
【0130】
図14は、ContextとDescriptorの論理構造を示している。プログラムの1つの実行状態を示すContext構造体51は、object、class、method、metaなどのフィールドを有し、このうち、methodには、icodeとminfoのフィールドがさらに設けられている。このContext構造体51は、MVM31aの状態を保持し、CPUのレジスタに相当し、メモリ管理やプログラム間の通信方法などとは完全に独立している。
【0131】
Context構造体51は、Contextプリミティブオブジェクトであり、図16を参照して後述するように、その各フィールドは所定の情報にリンクしている。また、Context構造体51は、核31(MVM31aおよびMK31b)の実装に深く依存しているが、図14においては、主に依存しない部分を示している。
【0132】
このContext構造体51において重要なフィールドは、metaフィールドであり、Descriptor構造体52を指している。Descriptor構造体52のエントリは、#tag、context、およびselectorの3つの組みであり、このDescriptor構造体52によって、Personalityオブジェクト33のAPI(アプリケーションプログラミングインタフェース)が決定される。#tagはAPIの名称を、contextとselectorでAPIのアドレスをそれぞれ表している。
【0133】
図15は、MVM31aの全体構造を示している。基本的に、全ての必要な情報は、Context構造体51からリンクを辿ることにより参照することができるようになされている。即ち、Context構造体51が、object61にリンクされ、このobject61は、object61に対応するクラスへのリンク(class pointer)とインスタンス領域(objectdependent field)より構成される。インスタンス領域にどのような情報が格納されるか、あるいはそのレイアウトは、オブジェクトの実装に依存する。
【0134】
class62は、主としてメソッドを保持する。class62はその名称(class name)、その実装に依存する部分(class dependent field)、およびI−method構造体63へのリンクテーブル(method table)により構成される。I−method構造体63は、Blockプリミティブオブジェクトであり、ヘッダ(Header)、I−code部、および変数テーブル(Variable table)からなる。magic#は、MVM31aの管理番号(ID)である。基本的に、I−code命令のオペランドは、この変数テーブルエントリを介して目的オブジェクトを参照する。
【0135】
図15において、グレーの部分(Context51、I−method63)はMVM31aに依存する部分であり、MVM31aがI−codeを解釈実行する場合に必要とする構造体である。
【0136】
図16は、Context構造体51を中心に、そこからリンクされている構造体を図示したものである。Context構造体51のオブジェクトフィールドは、object61を指し、classフィールドは、class62のclass dependent fieldを指している。また、methodフィールドはI−method63を指しており、methodフィールドのicodeは、I−method63のI−codeを指している。icodeは、プログラムカウンタに相当し、実行中のプログラムを指す。methodフィールドのvtableは、I−method63のvariable tableを指している。
【0137】
temporaryフィールドは、一時データ保存領域を指し、metaフィールドは、上述したように、descriptor52を指している。また、オブジェクト61のclass pointerは、class62を指し、class62のmethod tableは、I−method63を指している。
【0138】
variable tableエントリは、typeとvalueの組みであり、valueはtypeに依存する。
【0139】
MVM31aは、図17に示したタイプを処理するようになされており、typeがT_PRIMITIVEのとき、value欄はプリミティブオブジェクトを参照する。この場合、value欄には、例えば、<P_INTEGER,immediate>,<P_STRING,address to heap>といった、図18に示すような<P_CLASS,P_BODY>の組が格納される。図18は、プリミティブオブジェクトの一覧と、そのインタフェース名を示している。図19乃至図21は、図18に示したプリミティブオブジェクトのインタフェースを、Interface Definition Language(IDL)法により記述した例を示している。このIDL法については、「CORBA V2.0,July 1995,P3−1乃至3−36」に開示されている。
【0140】
また、図17において、typeがT_POINTERのとき、オブジェクトを参照するためのIDがvalue欄に格納される。このIDは、その位置が独立な、システムで唯一の値であり、Personalityオブジェクト33によって、そのIDに対応するオブジェクトの位置が特定される。
【0141】
図22は、MVM31aが解釈実行する2つの命令セットを示している。命令セットOP_Mは、図12において、外側から内側に入る命令であり、命令セットOP_Rは、内側から外側に戻る命令である。
【0142】
即ち、命令セットOP_Mにより、その第1オペランドで示されたオペレーションが実行される。このオペレーションは、Personalityオブジェクト33によって処理されるか、またはプリミティブオブジェクトによって処理される。コンパイラは、より効率的にアプリケーション35を実行するために、いくつかの処理をプリミティブオブジェクトによって処理するように、I−codeを生成する。これにより、例えば、Integerの算術演算は、図18の先頭のプリミティブオブジェクトによって処理される。
【0143】
次に、MK31bのインタフェースを規定する。図23は、マイクロカーネル(MK)31bのインタフェースを示している。MVM31aとMK31bの論理構造は、図13に示したように同様であり、MK31bは、図22に示した命令セットOP_MおよびOP_Rをシステムコールとして処理する。
【0144】
上述したような構成のApertosシステムを、例えば図4に示したクライアント2(2−1,2−2)に適用することができる。そして、図12に示した核31以外のもののうち、任意のものをサーバ1からダウンロードすることにより、所定のアプリケーションを実行するための最適な実行環境をクライアント2上に構築することができる。
【0145】
上述したように、ここでダウンロードするオブジェクトとしては次のものが考えられる。
【0146】
(1)すべてのアプリケーションプログラム
【0147】
(2)クライアントが備えるハードウェア資源を制御するためのデバイスドライバ群(例えば、MPEGドライバ、ATMドライバ、画像制御ドライバ等)
【0148】
(3)アプリケーションプログラムに対してシステムサービスを提供するオブジェクト群(personaityオブジェクト)(例えば、VCRコマンド管理、ストリーム管理、実時間スケジューラ、メモリ管理、ウィンドウ管理、ダウンロード制御、通信プロトコル管理、実行管理等)
【0149】
これらを組み合わせて、アプリケーションプログラムに対して最適な実行環境をクライアント上に構築することができる。
【0150】
例えば、javaプログラムを実行させたい場合、java用のpersonalityオブジェクト33と、javaプログラム(アプリケーション)35をサーバ1よりダウンロードする。このpersonalityオブジェクト33により、Apertosシステムは、Java Virtual Machineを提供することができる。ダウンロードされたjavaプログラムは、コンパイラにより一旦java bytecodeと呼ばれる中間コードにコンパイルされ、上記java Virtual Machineにより実行される。あるいは、上述したように、native codeにコンパイルした後、実行するようにすることも可能である。
【0151】
以上の実施例においては、サーバからクライアントに所定のオブジェクトをダウンロードするようにしたが、所定のクライアントから、所定のサーバにオブジェクトをダウンロードしたり、あるいはサーバ同士、クライアント同士でオブジェクトをダウンロードする場合にも、本発明を適用することが可能である。
【0152】
また、上記実施例においては、I−codeを2つの命令により構成するようにしたが、これに限定されるものではない。
【0153】
【発明の効果】
以上の如く請求項1記載のデータ処理方法および請求項に記載のデータ処理装置によれば、クライアントがダウンロードするアプリケーションプログラムの実行環境を有するか否かを検査し、その検査の結果、クライアントが、ダウンロードするアプリケーションプログラムの実行環境を有しない場合、サーバからクライアントに実行環境に係るオブジェクトをインクリメンタルにダウンロードし、サーバにおける実行環境と同一の実行環境をクライアントに構築し、その後、サーバからクライアントにアプリケーションプログラムをダウンロードするようにしたので、クライアントの構成を簡略化し、低コスト化するとともに、低コストでアプリケーションプログラムを提供することが可能となる。
【図面の簡単な説明】
【図1】本発明のデータ処理方法を適用するシステムの構成例を示す図である。
【図2】アプリケーションプログラムの構成を示す図である。
【図3】並行オブジェクトの構成を示す図である。
【図4】サーバから複数ベンダのクライアントに対するオブジェクトのダウンロードを説明する図である。
【図5】インクリメンタルダウンロードを説明する図である。
【図6】メタ標準を説明する図である。
【図7】オブジェクトの動的変更を説明する図である。
【図8】オブジェクトの動的拡張を説明する図である。
【図9】クライアントの最小機能を説明する図である。
【図10】アプリケーションに適したクライアント環境の構築とその動的再構成を説明する図である。
【図11】フィーチャストラクチャの構成を説明する図である。
【図12】本発明のデータ処理装置を応用したApertosシステムの構成例を示す図である。
【図13】MVMとMKの論理構造を示す図である。
【図14】ContextとDescriptorの論理構造を示す図である。
【図15】MVMの全体構造を示す図である。
【図16】Contextとその回りのデータ構造体を示す図である。
【図17】Variable tableエントリのtypeを示す図である。
【図18】プリミティブオブジェクトの一覧とそのインタフェース名を示す図である。
【図19】プリミティブオブジェクトのインタフェースを示す図である。
【図20】プリミティブオブジェクトのインタフェースを示す図である。
【図21】プリミティブオブジェクトのインタフェースを示す図である。
【図22】I−code命令セットを示す図である。
【図23】MKのインタフェースを示す図である。
【符号の説明】
1 サーバ,2 クライアント,3 ネットワーク,11 アプリケーションプログラム,12 実行環境,13 アプリケーションプログラムインタフェース,14,15 オブジェクト,21 アプリケーションプログラム,22 実行環境,23 アプリケーションプログラムインタフェース,31 核,31aMVM,31b MK,32 Device drivers,33 Personality component object,34 Class libraries,35 Applications,41 active context,42 message frame,43 executionengine,44 primitive objects,51 context,52 Descriptor,61 object,62 class,63 I−method
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a data processing method and apparatus, and more particularly to a data processing method and apparatus capable of simplifying the configuration and reducing the cost.
[0002]
[Prior art]
Recently, personal computers have become popular. This personal computer can access a predetermined server via a network and obtain predetermined information.
[0003]
In order to perform various processes in such a personal computer, an application program is required. Therefore, each user purchases, installs and uses an application program suitable for the OS of the personal computer.
[0004]
[Problems to be solved by the invention]
As described above, when the OS is different, the application program is also different. Therefore, each user needs to select and purchase an application program suitable for his / her OS. Also, on the side that provides the application program (the side that designs the application program), it is necessary to design and prepare a plurality of application programs (as many as the number of OSs) that perform substantially the same processing. However, at the same time, there was a problem of high costs.
[0005]
The same thing occurs in each application program in the same OS. That is, even if one application program and another application program different from the same operate on the same OS, the two application programs must be designed separately, and as a result There has been a problem that labor and cost required to provide one application program are increased.
[0006]
The present invention has been made in view of such a situation, and makes it possible to provide one application program easily and at low cost.
[0007]
[Means for Solving the Problems]
The data processing method according to claim 1, wherein when the server downloads the application program to the client, the client checks whether or not the client has an execution environment for the application program to be downloaded. As a result, if the client does not have an execution environment for the application program to be downloaded, the object related to the execution environment is incrementally downloaded from the server to the client, and the same execution environment as the execution environment in the server is constructed on the client. Download the application program from the server to the client, The client executes the incrementally downloaded objects in units of individual objects, in parallel with the object execution. And other It is characterized by downloading an object.
[0008]
Claim 5 When the application program is downloaded to the client, the data processing device described in 1) checks whether or not the client has an execution environment for the downloaded application program, and checks the checking means. As a result, if the client does not have an execution environment of the application program to be downloaded, the object related to the execution environment is incrementally downloaded to the client, and the same execution environment as the execution environment is constructed in the client. Download the program Download means.
[0012]
2. The data processing method according to claim 1, wherein when the application program is downloaded to the client, whether or not the client has an execution environment for the application program to be downloaded is checked between the client and the server. As a result, if the client does not have an execution environment for the application program to be downloaded, the object related to the execution environment is incrementally downloaded from the server to the client, and the same execution environment as the execution environment in the server is constructed on the client. Download application program from server to client To do.
[0013]
7. The data processing device according to claim 6, wherein when the inspection unit downloads the application program to the client, the client checks whether or not the client has an execution environment for the application program to be downloaded, and the download unit includes the inspection unit. Inspection As a result, if the client does not have an execution environment of the application program to be downloaded, the object related to the execution environment is incrementally downloaded to the client, and the same execution environment as the execution environment is constructed in the client. Download the program To do.
[0017]
DETAILED DESCRIPTION OF THE INVENTION
A system configuration example to which the data processing method of the present invention is applied is shown in FIG. The system includes a server 1 (data processing device), a client 2 (data processing device), and a network 3.
[0018]
That is, in this embodiment, the server 1 has two application programs. One application program 11-1 includes an execution environment 12-1 that defines an environment in which the application program 11-1 is executed, and an application program 11-1. An application program interface (API) 13-1 that constitutes an interface with the environment 12-1 is included.
[0019]
The application program 11-1 is composed of a plurality of objects 14-1, and the execution environment 12-1 is also composed of a plurality of objects 15-1.
[0020]
Similarly, the application program 11-2 has an execution environment 12-2 that defines the environment, and an API 13-2 that functions as an interface between the application program 11-2 and the execution environment 12-2.
[0021]
The application program 11-2 is also composed of a plurality of objects 14-2, and the execution environment 12-2 is also composed of a plurality of objects 15-2.
[0022]
Similarly, the client 2 also has two application programs. One application program 21-1 includes an execution environment 22-1 that defines the environment, and between the application program 21-1 and the execution environment 22-1. It has an API 23-1, which is an interface. The application program 21-1 and the execution environment 22-1 are each composed of a plurality of objects 24-1 and 25-1.
[0023]
Similarly, the application program 21-2 also has an execution environment 22-2 and an API 23-2 that define the environment. The application program 21-2 and the execution environment 22-2 each include a plurality of objects 24-2. 25-2.
[0024]
Here, all the objects are defined as parallel objects that execute processing in parallel with other objects. Since one API set is given by one execution environment, a plurality of APIs exist in the server 1 and the client 2.
[0025]
As shown in FIG. 1 and as enlarged in FIG. 2, the application program 11 is composed of a collection of a plurality of objects 14. Also, by configuring the object 14 as a parallel object, the application program 11 is processed in parallel, which contributes to an improvement in execution speed. Since the object 14 is also a unit of replacement, the problem can be solved without recreating the entire application program 11 by replacing an object having a bug in operation or an object having a performance problem with an object having no error. it can. Furthermore, a new application program can be easily created by combining the object 14 as a part and combining objects as parts of an existing application program.
[0026]
Here, the application program is one service unit. For example, an application program that simply displays video data from the server 1, an application program that searches for video data using the VCR function, an application program that selects a service from a menu, an application program for home shopping, and a home Household account book application program linked to shopping, tax calculation application program, etc.
[0027]
By sharing objects between application programs, operability can be shared. For example, an editor that inputs data in a household account book and a data input editor in home shopping can be shared.
[0028]
Next, the concurrent object will be described. The configuration of the parallel object is shown in FIG. The object 14 which is a parallel object has a table 14A of method entries disclosed to the outside, a main body 14B of the method, a memory area 14C for holding the state of the object, and a single thread 14D for executing the method. There is only one execution context (which may be called a thread) in a concurrent object. Therefore, the concurrent object receives one message, and during the processing, the newly arrived message is not processed until the current execution is completed.
[0029]
In this way, if only one thread is arranged in the object, the following advantages can be obtained.
[0030]
(1) There is no need to worry about synchronization between multiple activities. That is, when there is shared data, it is not necessary to perform access to the shared data using an instruction for synchronization such as a semaphore. In other words, sending a message to an object includes that ordering.
[0031]
(2) Therefore, a program error due to a mistake in synchronization is not generated, and at the same time, the possibility of reusing the object is increased.
[0032]
(3) For example, by creating a device driver using this method, synchronization errors that occur in many cases can be prevented.
[0033]
(4) Since a synchronization error due to replacement of the device driver can be prevented, the device driver can be replaced safely.
[0034]
(5) A part of the device driver other than the part that actually controls the hardware can be created independently of the OS. As a result, it becomes possible to commonly develop device drivers that have previously occupied a considerable amount of time for development, leading to a reduction in the development period.
[0035]
(6) A description related to execution control between objects can be excluded from the description of the application program. For example, in the technique using multi-threads (when using a plurality of threads), it is necessary to program thread execution control in the application program, and therefore the application program is rewritten when the thread programming environment is changed. There is a need. However, when there is one thread, there is no need to describe this part in the application program, so there is no need to rewrite the application program even if the execution control method changes. The optimal execution control method for the concurrent object in its execution environment is provided by the system using the principle of dynamic extension of the object described later.
[0036]
(7) Therefore, when describing an application program, it is not necessary to consider parallel processing. Since the parallel object is a unit of parallel processing, if the parallel object is programmed, the system automatically performs the optimum execution control for the hardware and performs parallel processing. In the conventional method, the number of processes to be created and the number of threads to be created must be specified at the time of programming. Although it is dedicated to hardware, according to this method, there is no such thing.
[0037]
In this system, objects are downloaded as needed. FIG. 4 shows an example of a system for downloading an object from the server 1 to the clients 2 of a plurality of vendors. On the server 1, client APIs 13 (13-1, 13-2) for the respective vendors are realized by the execution environment 12 (12-1, 12-2).
[0038]
Whether or not the same execution environment 22 (22-1 and 22-2) as the execution environment 12 on the server 1 exists on the client 2 when the object is downloaded to the client 2 (2-1 and 2-2) And if it exists, download the object. If it does not exist, an execution environment identical to the execution environment on the server 1 is constructed on the client 2 and then downloaded.
[0039]
For example, in FIG. 4, when the object 14-1 of the application program 11-1 of the server 1 is downloaded as the object 24-1 of the application program 21-1 of the client 2-1, the execution environment 22- of the client 2-1 is downloaded. 1, when the object 25-1A corresponding to the object 15-1A of the execution environment 12-1 of the server 1 is required, for example, the object 15-1B (inspection means) of the execution environment 12-1 -1 object 25-1B (notification means) is inquired about the feature structure (described later). In response to the answer, the object 15-1C (downloading means) of the execution environment 12-1 and the object 25-1C (downloading means) of the execution environment 22-1 are replaced with the object 15-1A of the execution environment 12-1. And 15-1B are downloaded as the objects 25-1A and 25-1B of the execution environment 22-1.
[0040]
In the conventional method, the object to be downloaded has to be created in accordance with the client API. For example, when the client is a UNIX system, it is necessary to create an object by using the same UNIX system on the server or constructing some cross development environment. If the server and the client must have the same execution environment, the client device generally needs to have expensive computational resources. For example, it is necessary to provide more memory as compared with a case where a dedicated execution environment is provided. In order to guarantee a sufficient execution speed, it is necessary to provide a high-speed CPU (Central Processing Unit). This leads to an increase in the cost of the device.
[0041]
In contrast, the present system solves this problem by downloading the execution environment at the same time as downloading the application. That is, by constructing only the execution environment 22 currently required by the client 2 in the client 2, it is not necessary to prepare unnecessary resources in the client 2. For example, if the client 2 does not require 3D graphics, the library is not necessary.
[0042]
In addition, when the client 2 is watching a movie with VOD (Video On Demand), a service for interaction with the user (a service that is unnecessary when watching a movie) is temporarily deleted from the client. Minutes of computational resources can be allocated to other jobs. For example, the resource can be used as a buffer for prefetching video data from the server 1. The service for interaction is downloaded from the server 1 when it becomes necessary.
[0043]
The following objects can be considered to be downloaded by this system.
[0044]
(1) All application programs
[0045]
(2) Device driver group (for example, MPEG driver, ATM driver, image control driver, etc.) for controlling hardware resources provided in the client
[0046]
(3) Object groups that provide system services to application programs (for example, VCR command management, stream management, real-time scheduler, memory management, window management, download control, communication protocol management, execution management, etc.)
[0047]
By combining these, an optimum execution environment for the application program is constructed on the client.
[0048]
The server 1 is a device that sends video data and application programs, or a device that sends information to the client 2 through the network 3. On the other hand, the client 2 is a device that processes information from the server 1 and does not always need to be connected to the network 3. Since an execution environment can be provided for each application program, an optimal execution environment can be prepared for each application program.
[0049]
In the conventional method, it is necessary to estimate the characteristics of the application in advance at the time of system construction. For example, when an application program needs to handle video data, it needs to have a system interface for that purpose, for example, a real-time scheduling or a user interface such as a VCR for handling video data. If the application uses 3D graphics, it is necessary to have a library for that purpose. Therefore, the system tended to be enlarged. UNIX and Windows (trademark) are typical examples, and the amount of memory required by the system increases with each version. In this system, it is sufficient to provide only the minimum necessary functions for executing the application, and this problem of the conventional system is solved.
[0050]
By configuring the application program 11 as a collection of a plurality of objects and mounting the object as a parallel object, it becomes possible to execute the object in parallel, and the object can be downloaded simultaneously with the execution of the application program. it can. At this time, as shown in FIG. 5, the time required to load a single application program can be hidden from the user by incrementally downloading the objects necessary for executing the application program.
[0051]
For example, as shown in FIG. 5, the objects 14-1-1 to 14-1-11 of the application program 11 of the server 1 are changed to the objects 24-1-1 to 24-1-111 of the application program 21 of the client 2. When it is necessary to download each object, instead of downloading each object at random, the object 14-1-1 to 14-1-3 required first in executing the application program 21 is changed to the object 24-1−. Download first as 1 to 24-1-3.
[0052]
For the time being, since the application program 21 can be activated if these three objects exist, the application program 21 starts its processing. While the processing is being executed, the remaining objects 14-1-4 to 14-1-11 are designated as the objects 24-1-4 to 24-1-111 of the application program 21, and the second to fourth objects. Download in order. Also in the second to fourth downloads, download is performed in order from the object that is necessary first in the process.
[0053]
Since the application program 21 has already started the processing of the application program 21 at the time when the application program 21 has downloaded the objects 24-1 to 24-1-3 and started the processing, it is as if all the objects You can recognize that the download is complete. That is, the user is only aware of the time required to download three objects, which is shorter than the time required to download eleven objects. In other words, the time for downloading the eight objects can be substantially hidden (not conscious) from the user.
[0054]
This also applies to the case where the execution environment 22 described with reference to FIG. 4 (and will be described later with reference to FIG. 10) is constructed on the client 2. In this case, the time for downloading all the objects in the execution environment can be hidden from the user by first downloading the objects constituting the execution environment 22 only for the part necessary for the execution of the application program. . This technique can also be applied to booting the system.
[0055]
Here, the incremental download means that an application unit or an execution environment is not downloaded at a time, and an object unit or a part thereof is downloaded as needed. In the case of downloading an application program in conventional personal computer communication, the compressed application program is downloaded all at once, so that the application program cannot be used unless all the downloads are completed. Also, for example, in the system boot up to now, the entire system is read into the memory and then started up. In the case of a UNIX diskless workstation, the system is started after all the OSs are read from the server into the memory. Therefore, the system cannot be used until all the reading is completed. However, if you do an incremental download, that will not happen.
[0056]
This method has the following effects when applied to an STB (Set Top Box) as the server 1 and the client 2. First, it can be used as soon as the STB is turned on. There is no need to get irritated and wait for the system to start up, as in current personal computers. Since STB has a strong personality as an electric appliance for home use, it is not preferable to make the user wait until the system is started up.
[0057]
When the STB is powered on, the STB first tries to download the necessary objects and begin execution. The user's waiting time is only the first download time of this object. Since the download time of a typical object is several milliseconds to several tens of milliseconds, by providing an appropriate user interface, this time is sufficiently negligible for the user. Thereafter, necessary objects are downloaded in parallel with the system startup process as the system startup process progresses.
[0058]
In addition, from the viewpoint of cost, the STB does not have abundant calculation resources such as a server, so there are restrictions even when a plurality of applications are executed simultaneously. For example, when considering a VOD service selected by a navigation application and watching a movie, when watching a movie starts, the resources (memory) occupied by the navigation application are released to watch the movie. Can be used for applications. Then, when the navigation application becomes necessary again, the resource (an object for managing the memory) is downloaded.
[0059]
Here, the “when it becomes necessary” is a time when a message is sent to the object. That is, when the first downloaded object sends a message to another object, the received object is downloaded. By using the object dependency and reference relationship, the object to send the next message can be downloaded in advance. By performing this in parallel with the execution of the application, it is possible to reduce a delay caused by downloading during message communication. Thereby, the effectiveness of incremental downloading can be increased.
[0060]
The execution environments 12 and 22 are also a collection of objects 15 and 25, and can be operated in the same manner as the objects 14 and 24 of the application programs 11 and 21, so that the download order specialized for the application programs 11 and 21 is determined. A meta object to be controlled can be prepared as one of the objects 15 and 25 (for example, the object 25-1C in FIG. 4 is a meta object). Thereby, it is possible to specify the download order of the objects used by the objects, which is suitable for a specific application, and to minimize the waiting time of the user due to incremental downloading.
[0061]
The function of downloading an object from the server 1 to the client 2, the function for checking the compatibility of the execution environment of the object, and the function for constructing the execution environment are important in realizing the system. It is assumed that all the devices (client 2) constituting the function should have at least. In this specification, this function is called a meta standard. With this meta-standard, the API of an execution environment such as an OS can be freely expanded, and it becomes possible to cope with all types of applications in the future by minimal standardization and its extension.
[0062]
For example, in the system shown in FIG. 6, each server 1-1, 1-2 and each client 2-1, 2-2 run an OS having a unique API. That is, in the client 2-1, an API 23-1 (API # 1) for the application program 21-1 is configured corresponding to the execution environment 22-1. In the client 2-2, an API 23-2 (API # 3) for the application program 21-2 is formed by the execution environment 22-2.
[0063]
For this reason, APIs corresponding to these APIs are prepared in advance in servers that download programs to these clients 2-1 and 2-2. In this embodiment, in the server 1-1, an API 13-1 for the application program 11-1 is formed by the execution environment 12-1, and this API 13-1 is an API 23-1 ( API (API # 1) corresponding to API # 1).
[0064]
Similarly, in the server 1-2, an API 13-3 (API # 3) corresponding to the application program 11-3 is formed by the execution environment 12-3, and this API 13-3 is the API 23-2 (client 23-2). API # 3).
[0065]
Therefore, the objects 15-1A to 15-1C, 15-3A to 15-3C, 25- are provided as objects corresponding to the meta standard to the servers 1-1 and 1-2 and the clients 2-1 and 2-2. 1A to 25-1C and 25-2A to 25-2C are provided. As a result, the client 2-1 or 2-2 can appropriately download necessary objects from the server 1-1 or 1-2 according to the meta standard protocol.
[0066]
There has been a trend in this field so far to standardize the OS in each client into one OS. However, by defining such a meta standard and providing an API corresponding to the API of each client only on the server side, it is not necessary to determine the standard.
[0067]
By not defining one OS standard, it is possible to configure an object that implements a system service, including an application, independently of the OS. That is, software written for one execution environment may be automatically reconfigured for another execution environment by migration. This function does not exist in the conventional system. For example, software written for UNIX does not operate unless rewritten on Windows. In order to realize this function with application-level software, it is necessary to introduce software that absorbs OS dependency. However, the independence of the OS that implements system services such as device drivers can be achieved using this method.
[0068]
As described above, when the object is downloaded, the object of the client 2 can be dynamically changed as shown in FIG. That is, an existing object is deleted from the client, and a new object is downloaded from the server.
[0069]
For example, in the embodiment of FIG. 7, the object 24A in the application program 21 of the client 2 is no longer necessary and is deleted. Then, the newly required object 14A is downloaded from the server 1 to the client 2.
[0070]
This makes it possible to:
[0071]
(1) The software can be updated. For example, when a bug is found in the hardware control software, the object is deleted and replaced with a new object. Since home appliances are used by general consumers who are not computer specialists, it is not appropriate to update software with an installer such as found on some computers.
[0072]
(2) The product cycle can be lengthened. For example, although the model change of a television receiver is repeated every year, a general consumer does not replace a television receiver every year. However, with this system, all software problems can be provided to the user with the latest functions, so model changes due to software function expansion can be eliminated. This is also true for STB.
[0073]
(3) It can cope with changes in user interface preferences. For example, a user-friendly menu format is provided for users who have started using the device for the first time, but as the user becomes familiar with how to use the device, the user interface should be changed to a direct operation that allows direct operation. Can do. In this case as well, both procedures are not provided on the client side, but a user interface according to the skill level of the user at that time can be provided on the client side. This makes it possible to effectively use limited client resources.
[0074]
If the object is downloaded, the object of the client 2 can be dynamically expanded as shown in FIG. In the embodiment of FIG. 8, an execution environment 22-2 is generated so that a new service can be received for the object 24-1B of the application program 21-1 in the client 2. The necessary objects 25-1A and 25-1B are migrated (transferred) from the execution environment 22-1 to the execution environment 22-2 so as to become the objects 25-2A and 25-2B. Further necessary other objects 25-1C and 25-1D are also migrated to the execution environment 22-2.
[0075]
Then, the object 24-1B of the application program 21-1 is migrated to the application program 21-2 so as to become the object 24-2B.
[0076]
In this way, for example, when it is necessary to extend real-time scheduling, a new execution environment for that purpose is generated in the client, and necessary objects are moved to the new environment. No changes need to be made to the object, and the object can be serviced in real time.
[0077]
As a result, the following effects can be obtained.
[0078]
(1) Since it becomes possible to cope with new functions without changing the object of the application program, the life of the application program is lengthened and the possibility of reuse is increased. In the conventional method, since the application program includes dependency code for the execution environment, changing the execution environment means rewriting the application program.
[0079]
(2) In the case of an application program for an embedded device, the high-function control software portion of the device including the user interface is the portion that you want to reuse as long as the model does not change significantly. It is a part that wants to shorten the development period simply by extending the function. However, if this part contains code dependent on the execution environment, the work for reuse becomes complicated. Until now, there was no strategy for this part, but with this method, this work can be automated or minimized.
[0080]
Specifically, this system can be applied as follows.
[0081]
(1) When the reliability of the application is low, it is possible to prevent the entire system from being stopped by downloading the memory protection function.
[0082]
(2) The service provider can change the service provided for each STB vendor. For example, a service provider that provides a movie of a movie company A can change the quality of images between the STB of company B and the STB of company C that receive the movie.
[0083]
(3) The system processing method is changed according to the compression method of A / V data sent to the STB and the user's preference for image quality. For example, since the method of adjusting the image quality is different between MPEG data and JPEG data, it is necessary to change the processing method of the system, but in this system, the processing method can be dynamically selected according to the data format.
[0084]
As described above, since most functions of the system can be downloaded from the server 1, it is not necessary to provide the client 2 with various functions in advance, and it is sufficient to provide the minimum functions. FIG. 9 shows the minimum functions of the client 2 in this system. In other words, an execution environment 22-1 for a device driver, an execution environment 22-2 for a system object, and an execution environment 22-3 for an execution environment are formed in the client 2 at a minimum.
[0085]
The device drivers that need to exist in advance are the input driver that processes input, the timer driver that manages time, and the screen driver objects 24-1A, 24-1B, and 24-1C that control display, and the system objects are , An input handler that manages input, a boot protocol that manages activation, and a memory manager that manages memory 24-2A, 24-2B, and 24-2C. Higher-function device drivers and system objects are downloaded from the server 1.
[0086]
FIG. 10 shows an embodiment in which a client environment suitable for an application program (video, game, shopping, etc.) sent out by a server is dynamically configured. In FIG. 10, in order to download the shopping application program 11-2 from the server 1, a shopping execution environment 22-4 is configured in the client 2-2. Further, when the client 2-2 switches the application program from the shopping application program to the movie application program, the execution environment 22-3 of the movie application program 21-3 is configured in the client 2-2, and the movie is changed from the server 1 to the movie. The application program 11-1 is downloaded.
[0087]
For example, the following processing can be considered.
[0088]
(1) When the user selects a movie
At this time, the navigation application 11-3 is downloaded to, for example, the execution environment 22-1 of the client 2-1, so that a desired movie can be selected. An object 15-3 such as input management is downloaded as an object 25-1.
[0089]
(2) When the user is watching a movie
At this time, from the execution process 12-1 of the server 1-1, the object 15-1 such as video stream management, data prefetch buffer management, VCR function, etc. is transferred to the execution environment 22-3 of the client 2-2, for example, the object 25-3. Downloaded as
[0090]
As described above, in order to realize the execution environment of the client by downloading, this system introduces the feature structure shown in FIG. When an object is downloaded from the server 1 to the client 2, the feature structure is inspected and a necessary execution environment is configured at the download destination.
[0091]
That is, the server 1 negotiates with the client 2 on the possibility of object migration between the meta-object space on the server 1 side and the meta-object space on the client 2 side in the first phase (negotiation phase). Do. In the second phase (movement phase), the object is actually transferred.
[0092]
Object migration is a meta-level process that transfers the computational information in use by an object's internal information and, if necessary, the associated object. The internal information of the object is expressed by a meta level object called a descriptor. The descriptor actually holds the name of the meta-object that manages the object. Common descriptors are the name of the meta-object that manages the memory segment of the object, the name of the meta-object (scheduler) that controls the execution of two or more objects, and the meta-name that manages the naming of objects. Holds the name of the object, etc.
[0093]
In the first phase (negotiation phase), the possibility of movement of the object is checked. That is, object migration may not be desirable depending on the meta-object space. For example, if the meta-object space that manages the device driver moves an object (device driver), it does not make sense to move the hardware device if it does not actually exist on the client 2 side. It will disappear. Also, a meta-object that manages a memory segment of an object using a virtual memory management mechanism cannot manage the memory segment even if it is moved unless the virtual memory management mechanism exists at the destination. . Therefore, the following methods are prepared in the migration protocol.
[0094]
Feature * Descriptor :: CanSpeak (Feature * pFeature)
[0095]
This method executes a CanSpeak operation on the descriptor in the meta-object space on the client 2 side.
[0096]
At this time, the feature structure is passed as an argument, and as a result, the client 2 returns to the server 1 a feature structure that can be accepted by itself (client 2). On the server 1 side, the compatibility of the meta-object space can be known by inspecting the feature structure returned from the client 2 side.
[0097]
Compatibility is classified into three categories: fully compatible, semi-compatible, and incompatible.
[0098]
Full compatibility means when the object can continue to run completely after moving. Semi-compatibility means that certain restrictions are imposed on the execution of objects after movement. And incompatibility means that the object cannot continue execution after moving.
[0099]
In case of incompatibility, object migration is not performed. In the case of semi-compatibility, the user determines whether to perform migration or not. Actually, an exception is returned to the user, so that the migration is determined by the exception handling routine. In the case of full compatibility or semi-compatibility, when object migration is performed, migration is performed according to the contents of the feature structure returned earlier.
[0100]
Prior to the negotiation phase, an empty descriptor is generated in the meta-object space on the client 2 side by the following operation.
[0101]
Descriptor :: Descriptor ()
[0102]
The previous CanSpeak method is sent to this descriptor. At this time, necessary meta-objects are generated, references are generated, and necessary information is registered based on the feature structure information.
[0103]
The process at the meta level in the second phase is movement or transfer of the meta object corresponding to the transfer object. Here, the movement of the meta-object means that the meta-object enters the meta-object space on the client 2 side, that is, is referred to from the descriptor (descriptor). Means that the data in the meta-object is sent as a message to the meta-object in the meta-object space on the client 2 side (which is referred to by the descriptor).
[0104]
The actual operations related to the movement and transfer of meta-objects are performed in this second phase (movement phase), utilizing the feature structure obtained by the negotiation phase.
[0105]
The actual meta-object move and transfer in the move phase is triggered by the following methods:
[0106]
Descriptor & Descriptor :: operator = (Descriptor & source)
[0107]
The Descriptor class is an abstract class and defines a common protocol for moving and transferring meta objects. The contents of the descriptor referenced by the source are copied to this descriptor.
[0108]
The actual procedure is defined as a subclass of the Descriptor class.
[0109]
The following methods are related to meta-object transfer. These protocols are mainly used by migrators (meta-objects that are included in the meta-object space and are responsible for object migration).・ CanonicalContext & Context :: asCanical ()
Convert a machine-dependent Context structure to a machine-independent form. This protocol is executed when the feature structure indicates that direct conversion of the Context is not possible.
・ Context & Context :: operator
= (Context & source)
・ Context & Context :: operator
= (Canonical Context & source)
The current Context (referenced by this) is initialized with the Context referenced by the source.
・ Canonical Segment & Segment :: asCanonical ()
Convert the machine-dependent Segment structure to a machine-independent format. This protocol is executed when the feature structure indicates that direct conversion of the Context is not possible.
・ Segment & Segment :: operator
= (Segment & source)
・ Segment & Segment :: operator
= (Canonical Segment & source)
The current this (referenced) Segment is initialized with the Segment referenced by the source, and a necessary memory area is copied.
[0110]
FIG. 11 shows the structure of the feature structure. As shown in the figure, the object description and environment description pointers are described in the entry.
[0111]
In the structure indicated by the object description pointer, the object name is described, and further, a pointer of the same structure as the structure indicated by the environment description pointer is described. In addition, a resource request of this object is described.
[0112]
Further, the environment name is described in the structure indicated by the pointer of the environment description, and further, the hardware resource information (resource information of client hardware) of the client and the resource request (resource requirement of this execution environment) environment) and a list of meta-objects constituting the execution environment (list of metadata constructing environment) are described.
[0113]
A specific example of the contents of the feature structure is as follows.
[0114]
(1) Information about objects
Real time
Required processor amount
[0115]
(2) Information about meta-objects
Hardware meta-object
* Processor type
* Data representation format
Segment meta-object
*size
* Possibility of expansion and reduction
* Management policy
* Layout
Context meta-object
* Register information
* Temporary variable amount
* Processor status
Mailer meta-object
* Message queue length
* Number of unprocessed messages
* Necessity of external mailer
* Message transfer method
External mailer meta-object
* Message queue length
* Number of unprocessed messages
*protocol
Scheduler meta-object
* Object state
* Scheduling policy
Dependency management meta-object
* Number of external names
[0116]
As described above, when each client has a different OS, the OS of each client is determined from this feature structure, and the server downloads an object corresponding to the OS.
[0117]
FIG. 12 shows a configuration example of an Apache (trademark) system to which the data processing system of the present invention is applied. In this Apache system, the Apache Micro Virtual Machine (MVM) 31a (first execution means) is together with the Apples Micro Kernel (MK) 31b (second execution means) and constitutes the core 31 of the Apache system. . The MVM 31a constituting the core 31 interprets and executes an intermediate code (I-code) described later, but calls a personality object (system object) using the function of the MK 31b as necessary.
[0118]
Parts other than the core 31 shown in FIG. 12 can be downloaded from the server 1, for example, by the method described above.
[0119]
This system dynamically compiles I-code into native code (binary code, machine code) as needed. In addition, an object that has been compiled into native code in advance is executed. In this case, the personality object 33 (binary code generation means) is called by the function of the MK 31b, and a service is provided to the application (Applications) 35.
[0120]
The MVM 31a and MK 31b constituting the core 31 shown in FIG. 12 are surrounded by a device driver object (Device drivers) 32 and a Personality object (Personality component objects) 33, and further outside for application programming. A class system (Class Libraries) 34 is prepared, and an application 35 is prepared outside of the class system 34.
[0121]
The layer of the Personality object 33 enables the Apache system to provide various OSs (Operating Systems) and Virtual Machines (virtual machines). For example, the execution of a Java program is performed by executing Java bytecode, which is intermediate code obtained by compiling the Java program, using a Personality object for the Java program.
[0122]
In order to realize a high degree of portability, the Apache system compiles a program into I-code (intermediate code) and manages object methods. However, I-code is not designed on the assumption of interpretation execution (executed while interpreting a program), but is designed to be compiled into native code by a dynamic compiler. However, when dynamic compilation is difficult due to various restrictions, the MVM 31a interprets and executes the I-code.
[0123]
However, in most cases, the I-code is compiled into a native code and directly executed by the CPU constituting the system. Therefore, there is almost no loss of real-time performance or sacrifice of processing speed with execution by Virtual Machine.
[0124]
The I-code is composed of two instruction sets (OP_M, OP_R) having a sufficiently high level of abstraction as will be described later with reference to FIG. 22 in order to realize a high level of inter-operability. (Semantic structure) is strongly associated with the interface of MK31b. That is, the instruction set is strongly influenced by the structure of the Apache system shown in FIG. Thereby, in the Apache system, it is possible to realize high portability and inter-operability while assuming a native code.
[0125]
Next, specifications of MVM 31a and MK 31b will be described. First, the data structure assumed by the MVM 31a and the I-code format are defined.
[0126]
FIG. 13 shows a logical structure of the MVM 31a and MK 31b shown in FIG. The logical structure of both is basically the same, and consists of active context 41, message frame 42, and execution engine 43. MVM 31a supports execution by I-code, and MK 31b supports execution by native code. Yes.
[0127]
In FIG. 13, an active context 41 indicates a context that is currently being executed (described later with reference to FIG. 14), and a message frame 42 indicates a message body for the MVM 31 a and the MK 31 b that constitute the nucleus 31.
[0128]
In the case of the MK 31b, the location where the message body exists depends on the mounting method, and may be assigned to a memory as a stack frame or may be assigned to a heap. Also, some CPU registers may be allocated. On the other hand, in the case of MVM 31a, the message frame indicates an operand following the instruction code. Depending on the implementation, internal registers may be required in addition to these, but these registers are independent of this specification.
[0129]
In FIG. 13, the execution engine 43 executes I-code and native code. Further, the execution engine 43 of the MVM 31a includes a primitive object 44, which is a code for processing a primitive object described later with reference to FIG.
[0130]
FIG. 14 shows the logical structure of Context and Descriptor. A Context structure 51 indicating one execution state of a program has fields such as object, class, method, and meta. Of these, the method further includes fields of icode and minfo. The Context structure 51 holds the state of the MVM 31a, corresponds to a register of the CPU, and is completely independent of memory management, a communication method between programs, and the like.
[0131]
The Context structure 51 is a Context primitive object, and each field thereof is linked to predetermined information as described later with reference to FIG. The Context structure 51 is deeply dependent on the mounting of the core 31 (MVM 31a and MK 31b), but FIG.
[0132]
An important field in the Context structure 51 is a meta field, which points to the Descriptor structure 52. The entry of the Descriptor structure 52 includes three sets of #tag, context, and selector. The Descriptor structure 52 determines an API (Application Programming Interface) of the Personality object 33. #Tag represents the name of the API, and context and selector represent the API address.
[0133]
FIG. 15 shows the overall structure of the MVM 31a. Basically, all necessary information can be referred to by following a link from the Context structure 51. That is, the Context structure 51 is linked to the object 61, and the object 61 includes a link (class pointer) to a class corresponding to the object 61 and an instance area (object dependent field). What information is stored in the instance area or its layout depends on the implementation of the object.
[0134]
The class 62 mainly holds methods. The class 62 includes a name (class name), a part depending on the implementation (class dependent field), and a link table (method table) to the I-method structure 63. The I-method structure 63 is a Block primitive object and includes a header (Header), an I-code part, and a variable table (Variable table). magic # is the management number (ID) of the MVM 31a. Basically, the operand of the I-code instruction refers to the target object via this variable table entry.
[0135]
In FIG. 15, a gray part (Context 51, I-method 63) is a part depending on the MVM 31a, and is a structure required when the MVM 31a interprets and executes the I-code.
[0136]
FIG. 16 illustrates the structure linked from the context structure 51 as a center. The object field of the Context structure 51 points to the object 61, and the class field points to the class dependent field of the class 62. Further, the method field indicates the I-method 63, and the icode of the method field indicates the I-code of the I-method 63. “icode” corresponds to a program counter and indicates a program being executed. The “vtable” of the method field indicates the variable table of the I-method 63.
[0137]
The temporary field indicates a temporary data storage area, and the meta field indicates the descriptor 52 as described above. Further, the class pointer of the object 61 points to the class 62, and the method table of the class 62 points to the I-method 63.
[0138]
The variable table entry is a combination of a type and a value, and the value depends on the type.
[0139]
The MVM 31a is configured to process the type shown in FIG. 17, and when the type is T_PRIMIVE, the value column refers to the primitive object. In this case, a set of <P_CLASS, P_BODY> as shown in FIG. 18 such as <P_INTAGER, immediate>, <P_STRING, address to heat> is stored in the value column. FIG. 18 shows a list of primitive objects and their interface names. FIG. 19 to FIG. 21 show examples in which the interface of the primitive object shown in FIG. 18 is described by the Interface Definition Language (IDL) method. The IDL method is disclosed in “CORBA V2.0, July 1995, P3-1 to 3-36”.
[0140]
In FIG. 17, when the type is T_POINTER, an ID for referring to the object is stored in the value column. This ID is the only value in the system whose position is independent, and the position of the object corresponding to the ID is specified by the Personality object 33.
[0141]
FIG. 22 shows two instruction sets that are interpreted and executed by the MVM 31a. In FIG. 12, the instruction set OP_M is an instruction that enters from the outside to the inside, and the instruction set OP_R is an instruction that returns from the inside to the outside.
[0142]
That is, the operation indicated by the first operand is executed by the instruction set OP_M. This operation is processed by the Personality object 33 or by a primitive object. In order to execute the application 35 more efficiently, the compiler generates I-code so that some processing is performed by the primitive object. Thereby, for example, the arithmetic operation of Integer is processed by the first primitive object in FIG.
[0143]
Next, the interface of MK31b is defined. FIG. 23 shows an interface of the microkernel (MK) 31b. The logical structures of the MVM 31a and MK 31b are the same as shown in FIG. 13, and the MK 31b processes the instruction sets OP_M and OP_R shown in FIG. 22 as system calls.
[0144]
The Applet system configured as described above can be applied to the client 2 (2-1, 2-2) shown in FIG. 4, for example. Then, an arbitrary execution environment for executing a predetermined application can be constructed on the client 2 by downloading an arbitrary one other than the core 31 shown in FIG. 12 from the server 1.
[0145]
As described above, the following objects can be considered as objects to be downloaded here.
[0146]
(1) All application programs
[0147]
(2) Device driver group (for example, MPEG driver, ATM driver, image control driver, etc.) for controlling hardware resources provided in the client
[0148]
(3) Object group (personality object) that provides system services to application programs (for example, VCR command management, stream management, real-time scheduler, memory management, window management, download control, communication protocol management, execution management, etc.)
[0149]
By combining these, an optimal execution environment for the application program can be constructed on the client.
[0150]
For example, when executing a Java program, a personality object 33 for Java and a Java program (application) 35 are downloaded from the server 1. With this personality object 33, the Apache system can provide a Java Virtual Machine. The downloaded Java program is once compiled into an intermediate code called Java bytecode by a compiler, and is executed by the above-mentioned Java Virtual Machine. Alternatively, as described above, it may be executed after being compiled into a native code.
[0151]
In the above embodiments, a predetermined object is downloaded from a server to a client. However, when an object is downloaded from a predetermined client to a predetermined server, or when an object is downloaded between servers or between clients. In addition, the present invention can be applied.
[0152]
In the above embodiment, the I-code is configured by two instructions, but the present invention is not limited to this.
[0153]
【The invention's effect】
As described above, the data processing method according to claim 1 and the claim 5 According to the data processing apparatus described in the above, whether or not the client has an execution environment for the application program to be downloaded is checked, and the check is performed. As a result, if the client does not have an execution environment for the application program to be downloaded, the object related to the execution environment is incrementally downloaded from the server to the client, and the same execution environment as the execution environment in the server is constructed on the client. Download application program from server to client As a result, it is possible to simplify the configuration of the client, reduce the cost, and provide an application program at a low cost.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating a configuration example of a system to which a data processing method of the present invention is applied.
FIG. 2 is a diagram showing a configuration of an application program.
FIG. 3 is a diagram illustrating a configuration of parallel objects.
FIG. 4 is a diagram for explaining object download from a server to clients of a plurality of vendors.
FIG. 5 is a diagram illustrating incremental download.
FIG. 6 is a diagram illustrating a meta standard.
FIG. 7 is a diagram illustrating dynamic change of an object.
FIG. 8 is a diagram illustrating dynamic extension of an object.
FIG. 9 is a diagram illustrating a minimum function of a client.
FIG. 10 is a diagram illustrating the construction of a client environment suitable for an application and its dynamic reconfiguration.
FIG. 11 is a diagram illustrating the structure of a feature structure.
FIG. 12 is a diagram showing a configuration example of an Apache system to which the data processing apparatus of the present invention is applied.
FIG. 13 is a diagram illustrating a logical structure of MVM and MK.
FIG. 14 is a diagram illustrating a logical structure of Context and Descriptor.
FIG. 15 is a diagram showing an overall structure of an MVM.
FIG. 16 shows a Context and a data structure around it.
FIG. 17 is a diagram illustrating the type of a variable table entry.
FIG. 18 is a diagram showing a list of primitive objects and their interface names.
FIG. 19 is a diagram illustrating an interface of a primitive object.
FIG. 20 is a diagram illustrating an interface of a primitive object.
FIG. 21 is a diagram illustrating an interface of a primitive object.
FIG. 22 is a diagram showing an I-code instruction set.
FIG. 23 is a diagram illustrating an interface of an MK.
[Explanation of symbols]
1 server, 2 client, 3 network, 11 application program, 12 execution environment, 13 application program interface, 14, 15 object, 21 application program, 22 execution environment, 23 application program interface, 31 core, 31aMVM, 31b MK, 32 Device drivers, 33 Personal component objects, 34 Class libraries, 35 Applications, 41 active contexts, 42 message frames, 43 executive engines, 44 primitives 51 ass, 63 I-method

Claims (5)

複数のオブジェクトおよびダウンロードする順序を制御するメタオブジェクトで構成されるアプリケーションプログラムと、前記アプリケーションプログラムの動作を規定し、複数のオブジェクトで構成される実行環境と、前記アプリケーションプログラムと前記実行環境の間のインタフェースを規定するアプリケーションプログラムインタフェースとを備えるサーバと、
前記サーバより前記アプリケーションプログラムをダウンロードするクライアントと、
を備えるデータ処理システムにおけるデータ処理方法において、
前記サーバは、前記クライアントに前記アプリケーションプログラムをダウンロードするとき、前記クライアントが、ダウンロードする前記アプリケーションプログラムの実行環境を有するか否かを検査し、
その検査の結果、前記クライアントが、ダウンロードする前記アプリケーションプログラムの実行環境を有しない場合、前記サーバから前記クライアントに前記実行環境に係るオブジェクトをインクリメンタルにダウンロードし、前記サーバにおける前記実行環境と同一の実行環境を前記クライアントに構築し、その後、前記サーバから前記クライアントに前記アプリケーションプログラムをダウンロードし、
前記クライアントは、
前記インクリメンタルにダウンロードされたオブジェクトを、個々のオブジェクト単位に実行し、前記オブジェクトの実行と並行して、他のオブジェクトをダウンロードする
ことを特徴とするデータ処理方法。
An application program composed of a plurality of objects and a meta-object that controls the download order, an operation environment that defines the operation of the application program, and is composed of a plurality of objects, and between the application program and the execution environment A server comprising an application program interface defining an interface;
A client for downloading the application program from the server;
In a data processing method in a data processing system comprising:
When the server downloads the application program to the client, the server checks whether the client has an execution environment for the application program to be downloaded,
As a result of the inspection , if the client does not have an execution environment of the application program to be downloaded, the object related to the execution environment is incrementally downloaded from the server to the client, and the same execution environment as the execution environment in the server Building an environment on the client, then downloading the application program from the server to the client;
The client
A data processing method, wherein the incrementally downloaded object is executed in units of individual objects , and another object is downloaded in parallel with the execution of the object.
前記アプリケーションプログラムのオブジェクトは、並行オブジェクトである
ことを特徴とする請求項1に記載のデータ処理方法。
The data processing method according to claim 1, wherein the object of the application program is a parallel object.
前記クライアントの実行環境には、最低限の標準的機能として、
前記サーバから前記クライアントへオブジェクトをダウンロードするダウンロード機能と、
前記実行環境の互換性を検査する検査機能と、
前記実行環境を構築する構築機能と
を具備させ、
既にダウンロードされた前記オブジェクトが要求する機能に対応するオブジェクトをダウンロードさせる
ことを特徴とする請求項に記載のデータ処理方法。
In the execution environment of the client, as a minimum standard function,
A download function for downloading an object from the server to the client;
An inspection function for inspecting compatibility of the execution environment;
A construction function for constructing the execution environment,
The data processing method according to claim 1 , wherein an object corresponding to a function requested by the already downloaded object is downloaded.
前記サーバと前記クライアントは、前記クライアントの前記実行環境の互換性を検査するために、前記オブジェクトと前記実行環境について記述したデスクリプションを含むフィーチャストラクチャを授受する
ことを特徴とする請求項1に記載のデータ処理方法。
The server and the client exchange a feature structure including a description describing the object and the execution environment in order to check the compatibility of the execution environment of the client. Data processing method.
複数のオブジェクトおよびダウンロードする順序を制御するメタオブジェクトで構成されるアプリケーションプログラムと、前記アプリケーションプログラムの動作環境を規定し、複数のオブジェクトで構成される実行環境と、前記アプリケーションプログラムと前記実行環境の間のインタフェースを規定するアプリケーションプログラムインタフェースとを備え、クライアントにアプリケーションプログラムをダウンロードさせるデータ処理装置において、
前記クライアントに前記アプリケーションプログラムをダウンロードするとき、前記クライアントが、ダウンロードする前記アプリケーションプログラムの実行環境を有するか否かを検査する検査手段と、
前記検査手段の検査の結果、前記クライアントが、ダウンロードする前記アプリケーションプログラムの実行環境を有しない場合、前記クライアントに前記実行環境に係るオブジェクトをインクリメンタルにダウンロードし、前記実行環境と同一の実行環境を前記クライアントに構築し、その後、前記クライアントに前記アプリケーションプログラムをダウンロードするダウンロード手段と
を備えることを特徴とするデータ処理装置。
An application program composed of meta-object that controls the order in which a plurality of objects and download defines the operating environment of the application program, the execution environment including a plurality of objects during said execution environment and said application program In a data processing apparatus comprising an application program interface that defines the interface of
Inspection means for inspecting whether or not the client has an execution environment of the application program to be downloaded when the application program is downloaded to the client;
If the client does not have an execution environment for the application program to be downloaded as a result of the inspection by the inspection means, the object related to the execution environment is incrementally downloaded to the client, and the same execution environment as the execution environment is A data processing apparatus comprising: a download unit configured in a client and thereafter downloading the application program to the client .
JP06788196A 1995-07-14 1996-03-25 Data processing method and apparatus Expired - Lifetime JP4251669B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP06788196A JP4251669B2 (en) 1995-07-14 1996-03-25 Data processing method and apparatus
TW85108517A TW410312B (en) 1995-07-14 1996-07-13 Data processing method and device

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP17862595 1995-07-14
JP7-178625 1995-07-14
JP06788196A JP4251669B2 (en) 1995-07-14 1996-03-25 Data processing method and apparatus

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2005165782A Division JP2005302055A (en) 1995-07-14 2005-06-06 Data processing method and device

Publications (2)

Publication Number Publication Date
JPH0991143A JPH0991143A (en) 1997-04-04
JP4251669B2 true JP4251669B2 (en) 2009-04-08

Family

ID=26409086

Family Applications (1)

Application Number Title Priority Date Filing Date
JP06788196A Expired - Lifetime JP4251669B2 (en) 1995-07-14 1996-03-25 Data processing method and apparatus

Country Status (2)

Country Link
JP (1) JP4251669B2 (en)
TW (1) TW410312B (en)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0953947A3 (en) * 1998-04-29 2003-05-21 Ncr International Inc. Self service terminal
JP3659614B2 (en) * 1998-05-27 2005-06-15 株式会社日立製作所 Software distribution management system
EP0989478B1 (en) * 1998-08-31 2006-10-18 Irdeto Access B.V. System for providing encrypted data, system for decrypting encrypted data and method for providing a communication interface in such a decrypting system
KR20000057127A (en) * 1999-02-03 2000-09-15 송동호 Executing software program system for application service provider on distributed computing environment and method using the sa me
JP4228252B2 (en) 1999-02-05 2009-02-25 ソニー株式会社 Data setting method, data transmission system, and receiving terminal device
JP3743245B2 (en) * 2000-01-27 2006-02-08 日本ビクター株式会社 Client device
KR20010105756A (en) * 2000-05-18 2001-11-29 김형순 Application programming interface for developing computer telephony interface service program and operating method thereof
KR20000050238A (en) * 2000-05-30 2000-08-05 김호광 Manufacturing System and Method for executable program operating at multiple platform
KR20020031511A (en) * 2000-10-20 2002-05-02 김영돈, 정춘보 Method for producting pda application availible of variety hardware
JP2002132739A (en) * 2000-10-23 2002-05-10 Nec Corp Stab retrieval loading system and method, server device, client device and computer readable recording medium
JP3882557B2 (en) * 2001-09-27 2007-02-21 セイコーエプソン株式会社 Object type data processing system, transmission terminal, reception terminal, portable terminal, data management terminal, and object type data processing method
KR100462876B1 (en) * 2002-03-14 2004-12-17 삼성전자주식회사 Method for using standard platform of network equipments
US8122106B2 (en) 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
EP3035334B1 (en) * 2003-11-12 2017-05-10 Thomson Licensing Method for composing a menu
US8230095B2 (en) * 2004-05-07 2012-07-24 Wyse Technology, Inc. System and method for integrated on-demand delivery of operating system and applications
JP4647281B2 (en) * 2004-10-27 2011-03-09 シャープ株式会社 Information processing system and information processing apparatus
US8549513B2 (en) 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
US7441113B2 (en) * 2006-07-10 2008-10-21 Devicevm, Inc. Method and apparatus for virtualization of appliances
WO2008099307A1 (en) * 2007-02-12 2008-08-21 Philips Intellectual Property & Standards Gmbh Device for a networked control system

Also Published As

Publication number Publication date
TW410312B (en) 2000-11-01
JPH0991143A (en) 1997-04-04

Similar Documents

Publication Publication Date Title
EP1306756B1 (en) Data processing method and device
JP4251669B2 (en) Data processing method and apparatus
TWI276998B (en) Systems and methods for managing drivers in a computing system
JP4270194B2 (en) Network computer system and service distribution method
JP3659062B2 (en) Computer system
US5943496A (en) Methods for developing and instantiating object classes using a java virtual machine extension
US20020078255A1 (en) Pluggable instantiable distributed objects
JP2004537122A (en) Computer processing and programming method using autonomous data handler
EP1669866A2 (en) Management method for managing software module and information processor
CN101174219A (en) Method and system for executing and equipping application according to use condition
EP1378822A1 (en) Data processing system and data processing method, information processing device and information processing method, and storage medium
KR20050030619A (en) Gui application development support device, gui display device, and method, and computer program
KR20030044916A (en) Modular computer system and related method
KR20060028568A (en) Method and apparatus for executing different forms of java methods
CN116954824A (en) Runtime system supporting multi-process mixed operation of multiple extended reality (XR) technical specification application programs and 2D application programs, data interaction method, device and medium
JP3993342B2 (en) How to suspend / resume processing in an electronic computer
JP2005302055A (en) Data processing method and device
JP2005108082A (en) Interface method for device driver
JP2000259417A (en) Device and method for data processing and program providing medium
US7266619B2 (en) Framework for high-performance hardware abstraction
Tanter Faculty of Ëciences
CN115357192A (en) Microkernel architecture-oriented virtual file construction method and system
JP2004295463A (en) Application management system and method
Poo et al. Modularity versus efficiency in OSI system implementations
Paulino Sumo: A framework for prototyping distributed and mobile software

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050405

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050606

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050802

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050930

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20051011

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20051111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081117

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090120

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

Free format text: PAYMENT UNTIL: 20120130

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130130

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140130

Year of fee payment: 5

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