JP2005302055A - Data processing method and device - Google Patents

Data processing method and device Download PDF

Info

Publication number
JP2005302055A
JP2005302055A JP2005165782A JP2005165782A JP2005302055A JP 2005302055 A JP2005302055 A JP 2005302055A JP 2005165782 A JP2005165782 A JP 2005165782A JP 2005165782 A JP2005165782 A JP 2005165782A JP 2005302055 A JP2005302055 A JP 2005302055A
Authority
JP
Japan
Prior art keywords
application program
objects
client
execution
execution environment
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.)
Abandoned
Application number
JP2005165782A
Other languages
Japanese (ja)
Inventor
Yasuhiko Yokote
靖彦 横手
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 JP2005165782A priority Critical patent/JP2005302055A/en
Publication of JP2005302055A publication Critical patent/JP2005302055A/en
Abandoned legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To simplify the structure of a client to reduce a cost. <P>SOLUTION: An MVM 31a exists along with an MK 31b and constitutes a core 31 of an Apertos system. The MVM 31a constituting core 31 interprets and executes an intermediate code (I-code) and is so formed as to call a personality object (system object) by using the function of the MK 31b as required. The I-code is dynamically compiled into a binary code as required and an object being compiled is executed; and in that case, the Personality object 33 is called by the function of the MK 31b to provide a service to Applications 35. <P>COPYRIGHT: (C)2006,JPO&NCIPI

Description

本発明はデータ処理方法および装置に関し、特に構成を簡略化し、低コスト化することができるようにした、データ処理方法および装置に関する。   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.

最近、パーソナルコンピュータが普及してきた。このパーソナルコンピュータでネットワークを介して所定のサーバにアクセスし、所定の情報を得ることができる。   Recently, personal computers have become popular. This personal computer can access a predetermined server via a network and obtain predetermined information.

このようなパーソナルコンピュータにおいて各種の処理を行うには、アプリケーションプログラムが必要となる。そこで、各ユーザは、そのパーソナルコンピュータのOSに合ったアプリケーションプログラムを購入し、インストールして用いるようにしている。   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.

このように、OSが異なると、アプリケーションプログラムも異なるものとなるため、各ユーザは、自分のOSに合ったアプリケーションプログラムを選択して購入する必要がある。また、アプリケーションプログラムを提供する側(アプリケーションプログラムを設計する側)においても、実質的に同一の処理を行うアプリケーションプログラムを複数(OSの数だけ)設計し、用意しなければならず、多くの労力が必要になると同時に、コスト高となる課題があった。   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.

また、同様のことが、同一のOSにおける各アプリケーションプログラムにおいても発生していた。すなわち、1つのアプリケーションプログラムと、それとは異なる他のアプリケーションプログラムとが、同一のOS上において動作するものであったとしても、2つのアプリケーションプログラムはそれぞれ別個に設計しなければならず、結果的に、1つのアプリケーションプログラムを提供するのに必要な労力とコストが高くなる課題があった。   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.

本発明はこのような状況に鑑みてなされたものであり、1つのアプリケーションプログラムを、簡単かつ低コストで提供できるようにするものである。   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.

請求項1に記載のデータ処理装置は、中間コードに変換されたアプリケーションプログラムを解釈し、実行する第1の実行手段と、中間コードを動的にコンパイルし、バイナリコードを生成するバイナリコード生成手段と、バイナリコードおよびシステムオブジェクトを実行する第2の実行手段とを備えることを特徴とする。   The data processing apparatus according to claim 1, a first execution unit that interprets and executes an application program converted into an intermediate code, and a binary code generation unit that dynamically compiles the intermediate code and generates a binary code And second execution means for executing the binary code and the system object.

請求項5に記載のデータ処理方法は、中間コードに変換されたアプリケーションプログラムを解釈し、実行する第1の方法と、中間コードを動的にコンパイルし、生成されたバイナリコードを実行する第2の方法とにより、アプリケーションプログラムを実行することを特徴とする。   The data processing method according to claim 5 is a first method for interpreting and executing an application program converted into an intermediate code, and a second method for dynamically compiling the intermediate code and executing the generated binary code. The application program is executed by the above method.

請求項1に記載のデータ処理装置においては、第1の実行手段が、中間コードに変換されたプログラムを解釈し、実行し、バイナリコード生成手段が、中間コードを動的にコンパイルし、バイナリコードを生成し、第2の実行手段が、バイナリコードを実行する。例えば、動的コンパイルが困難な場合、中間コードを逐次解釈し、実行することができる。   The data processing apparatus according to claim 1, wherein the first execution means interprets and executes the program converted into the intermediate code, the binary code generation means dynamically compiles the intermediate code, and the binary code. And the second execution means executes the binary code. For example, if dynamic compilation is difficult, intermediate code can be interpreted and executed sequentially.

請求項5に記載のデータ処理方法においては、中間コードに変換されたプログラムを解釈し、実行する第1の方法と、中間コードを動的にコンパイルし、生成されたバイナリコードを実行する第2の方法とにより、アプリケーションプログラムを実行する。例えば、動的コンパイルが困難な場合、中間コードを逐次解釈し、実行することができる。   6. The data processing method according to claim 5, wherein a first method for interpreting and executing a program converted into an intermediate code, and a second method for dynamically compiling the intermediate code and executing the generated binary code. The application program is executed by the above method. For example, if dynamic compilation is difficult, intermediate code can be interpreted and executed sequentially.

本発明のデータ処理装置、およびデータ処理方法によれば、中間コードに変換されたアプリケーションプログラムを解釈し、実行するか、または、中間コードを動的にコンパイルし、生成されたバイナリコードを実行することで、アプリケーションプログラムを実行するようにしたので、動的コンパイルが困難な場合、中間コードを逐次解釈し、実行することができる。また、中間コードを簡単な構成とすることにより、ポータブルなアプリケーションを構築することができる。   According to the data processing device and the data processing method of the present invention, the application program converted into the intermediate code is interpreted and executed, or the intermediate code is dynamically compiled and the generated binary code is executed. Thus, since the application program is executed, if dynamic compilation is difficult, the intermediate code can be sequentially interpreted and executed. Moreover, a portable application can be constructed by making the intermediate code simple.

本発明のデータ処理方法を適用するシステム構成例を図1に示す。システムはサーバ1(データ処理装置)、クライアント2(データ処理装置)、ネットワーク3から構成されている。   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.

すなわち、この実施例においては、サーバ1は2つのアプリケーションプログラムを有し、一方のアプリケーションプログラム11−1は、それを実行する環境を規定する実行環境12−1と、アプリケーションプログラム11−1と実行環境12−1との間のインタフェースを構成するアプリケーションプログラムインタフェース(API)13−1を有している。   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.

アプリケーションプログラム11−1は、複数のオブジェクト14−1により構成され、また、実行環境12−1も、複数のオブジェクト15−1により構成されている。   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.

同様に、アプリケーションプログラム11−2は、その環境を規定する実行環境12−2と、アプリケーションプログラム11−2と実行環境12−2との間のインタフェースとして機能するAPI13−2を有している。   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.

このアプリケーションプログラム11−2も、複数のオブジェクト14−2により構成され、また、実行環境12−2も複数のオブジェクト15−2により構成されている。   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.

同様に、クライアント2も2つのアプリケーションプログラムを有し、一方のアプリケーションプログラム21−1は、その環境を規定する実行環境22−1と、アプリケーションプログラム21−1と実行環境22−1との間のインタフェースであるAPI23−1を有している。アプリケーションプログラム21−1と実行環境22−1は、それぞれ複数のオブジェクト24−1と25−1により構成されている。   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.

同様に、アプリケーションプログラム21−2も、その環境を規定する実行環境22−2とAPI23−2とを有し、アプリケーションプログラム21−2と実行環境22−2は、それぞれ複数のオブジェクト24−2と25−2により構成されている。   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.

ここで、各オブジェクトはすべて、他のオブジェクトと並行して処理を実行する並行オブジェクトとして定義されている。1つのAPIの集合は1つの実行環境によって与えられるので、サーバ1、クライアント2中には、複数のAPIが存在することになる。   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.

図1に示すように、また図2に拡大して示すように、アプリケーションプログラム11を複数のオブジェクト14の集まりで構成する。また、オブジェクト14を並行オブジェクトとして構成することにより、アプリケーションプログラム11は並行処理されることになり、実行速度の向上に貢献する。また、オブジェクト14は置き換えの単位でもあるので、動作にバグのあるオブジェクト、性能上問題のあるオブジェクトなどを、誤りのないオブジェクトで置き換えることによって、アプリケーションプログラム11全体を作り替えることなく、問題点を解決できる。さらに、オブジェクト14を部品とし、既存のアプリケーションプログラムの部品としてのオブジェクトを組み合わせることによって、簡単に新しいアプリケーションプログラムを作ることができる。   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.

ここで、アプリケーションプログラムとは、1つのサービス単位である。例えば、サーバ1からの映像データを単に表示しているアプリケーションプログラム、VCR機能を用いて映像データを検索しているアプリケーションプログラム、メニューによってサービスを選択しているアプリケーションプログラム、ホームショッピングのアプリケーションプログラム、ホームショッピングと連結した家計簿アプリケーションプログラム、税金計算アプリケーションプログラム等である。   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.

アプリケーションプログラム間でオブジェクトを共有することによって、操作性に共通点を持たせることができる。例えば、家計簿でデータを入力しているエディタと、ホームショッピングでのデータ入力エディタを共通化することができる。   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.

次に並行オブジェクト(concurrent object)について説明する。並行オブジェクトの構成を図3に示す。並行オブジェクトであるオブジェクト14は、外部に公開されたメソッドエントリのテーブル14A、メソッドの本体14B、オブジェクトの状態を保持するメモリ領域14C、メソッドを実行する単一のスレッド14Dを有している。並行オブジェクトには1つの実行コンテキスト(スレッドと呼んでも良い)のみが存在する。従って並行オブジェクトは、1つのメッセージを受信して、その処理中には、新たに到着したメッセージの処理は、現在の実行が終了するまで行わない。   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.

このように、オブジェクト内にスレッドを1個だけ配置するようにすると、次の利点が得られる。   In this way, if only one thread is arranged in the object, the following advantages can be obtained.

(1)複数のアクティビティ間の同期を気にする必要がない。すなわち、共有データが存在する場合に、セマフォア等の同期のための命令を用いて、共有データに対するアクセスを順序付けるといったことを行う必要がなくなる。換言すれば、オブジェクトへのメッセージ送信が、その順序付けを含んでいることになる。   (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.

(2)そのため、同期の取り方のミスによるプログラム誤りが生じなくなると同時に、そのオブジェクトの再利用可能性が高まる。   (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.

(3)例えばデバイスドライバを本方式で作成することによって、多くの場合に生じる、同期誤りを防ぐことができる。   (3) For example, by creating a device driver using this method, synchronization errors that occur in many cases can be prevented.

(4)また、デバイスドライバの置き換えによる同期誤りを防ぐことができるので、安全にデバイスドライバを置き換えることができる。   (4) Since a synchronization error due to replacement of the device driver can be prevented, the device driver can be replaced safely.

(5)デバイスドライバの、実際にハードウェアを制御する部分以外の部分を、OSと独立に作成することができる。これによって、従来から開発のかなりの時間を占めていたデバイスドライバを、共通に開発することが可能になるので、開発期間の短縮につながる。   (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.

(6)オブジェクト間の実行制御に関する記述をアプリケーションプログラムの記述から除くことができる。例えば、マルチスレッドを用いた手法では(複数のスレッドを用いる場合には)、スレッドの実行制御をアプリケーションプログラム中にプログラムする必要があるために、スレッドのプログラミング環境が変更になると、アプリケーションプログラムを書き換える必要がある。しかしながら、スレッドが1個の場合には、アプリケーションプログラムにこの部分を記述する必要がないので、実行制御方法が変わってもアプリケーションプログラムを書き直す必要がない。並行オブジェクトのその実行環境への最適な実行制御方法は、システムが、後述するオブジェクトの動的拡張の原理を用いて提供する。   (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.

(7)従って、アプリケーションプログラムを記述する場合には、並列処理を考える必要がない。並行オブジェクトが並列処理の単位であるので、並行オブジェクトをプログラムしていけば、後はシステムが自動的にそのハードウェアに最適な実行制御を行って並列処理が行われる。従来の手法では、いくつプロセスを生成するか、いくつスレッドを生成するか、といったことをプログラミング時に指定しなければならず、この指定は、ハードウェアの性能を考慮しないと、そのアプリケーションプログラムは特定のハードウェア専用のものになってしまうが、本方式によれば、そのようなことはない。   (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.

本システムにおいては、オブジェクトは必要に応じてダウンロードされる。複数ベンダのクライアント2に対してサーバ1からオブジェクトをダウンロードする場合のシステム例を図4に示す。サーバ1上には、それぞれのベンダ用のクライアントAPI13(13−1,13−2)が、実行環境12(12−1,12−2)によって実現されている。   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).

オブジェクトをクライアント2(2−1,2−2)にダウンロードするとき、クライアント2上に、サーバ1上の実行環境12と同じ実行環境22(22−1,22−2)が存在するか否かを調べ、存在する場合には、オブジェクトをダウンロードする。存在しない場合には、クライアント2上にサーバ1上の実行環境と同一の実行環境を構築した後、ダウンロードする。   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.

例えば、図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としてダウンロードさせる。   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.

従来の手法では、ダウンロードするオブジェクトは、クライアントのAPIに合わせて作成する必要があった。例えば、クライアントがUNIX(登録商標)システムの場合には、サーバ上では同じUNIX(登録商標)システムを用いるか、あるいは何らかのクロス開発環境を構築してオブジェクトを作成する必要がある。もし、サーバとクライアントが同じ実行環境を備えなければいけない場合には、クライアント装置は一般に高価な計算資源を備える必要がある。例えば、専用の実行環境を備える場合と比べて、より多くのメモリを備える必要がある。また、十分な実行速度を保証するために、高速のCPU(Central Processing Unit)を備える必要がある。これは、装置のコスト増につながる。   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 (registered trademark) system, it is necessary to create an object by using the same UNIX (registered trademark) system on the server or constructing some kind of 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.

これに対して、本システムでは、アプリケーションのダウンロードと同時に、その実行環境をもダウンロードすることで、この問題を解決する。すなわち、クライアント2で現在必要とする実行環境22のみをクライアント2に構築することによって、不必要な資源をクライアント2に用意しなくてもすむようになる。例えば、クライアント2が3Dのグラフィックスを必要としない場合には、そのライブラリは必要なくなる。   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.

また、クライアント2がVOD(Video On Demand)で映画を見ている場合には、ユーザとのインタラクションのためのサービス(映画を見るときは不要となるサービス)をクライアントから一時削除することによって、その分の計算資源を他の仕事に割り振ることができる。例えば、その資源を、サーバ1からの映像データのプリフェッチ用のバッファに使うことができる。インタラクションのためのサービスは、それが必要になった時点でサーバ1からダウンロードされる。   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.

本システムでダウンロードされるオブジェクトとしては次のものが考えられる。   The following objects can be considered to be downloaded by this system.

(1)すべてのアプリケーションプログラム   (1) All application programs

(2)クライアントが備えるハードウェア資源を制御するためのデバイスドライバ群(例えば、MPEGドライバ、ATMドライバ、画像制御ドライバ等)   (2) Device driver group (for example, MPEG driver, ATM driver, image control driver, etc.) for controlling hardware resources provided in the client

(3)アプリケーションプログラムに対してシステムサービスを提供するオブジェクト群(例えば、VCRコマンド管理、ストリーム管理、実時間スケジューラ、メモリ管理、ウィンドウ管理、ダウンロード制御、通信プロトコル管理、実行管理等)   (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.)

これらを組み合わせて、アプリケーションプログラムに対して最適な実行環境をクライアント上に構築する。   By combining these, an optimum execution environment for the application program is constructed on the client.

サーバ1は、映像データやアプリケーションプログラムを送出する装置であったり、クライアント2にネットワーク3を通して情報を送出する装置である。一方クライアント2は、サーバ1からの情報を処理する装置であり、常にネットワーク3と接続されている必要はない。実行環境はアプリケーションプログラム毎に与えることができるので、アプリケーションプログラム毎に最適な実行環境を用意することができる。   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.

従来の手法では、システム構築時にアプリケーションの特性をあらかじめ見積もっておく必要があった。例えば、アプリケーションプログラムが映像データを扱う必要があるときには、そのためのシステムサービス、例えば、実時間スケジューリングや映像データを扱うためのVCRのようなユーザインタフェースを備えている必要がある。また、アプリケーションが3Dグラフィックスを用いているならば、そのためのライブラリを備えている必要がある。そのため、システムは肥大になる傾向があった。UNIX(登録商標)やWindows(登録商標)がこの典型例であり、バージョンがあがるごとにシステムが必要とするメモリ量は多くなっていった。本システムでは、アプリケーションの実行のために必要最小限の機能のみを備えていればよく、従来システムのこの問題点を解決する。   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 (registered trademark) and Windows (registered 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.

アプリケーションプログラム11を複数のオブジェクトの集まりとして構成することにより、また、そのオブジェクトを並行オブジェクトとして実装することにより、オブジェクト単位で並行実行が可能になり、アプリケーションプログラムの実行と同時にオブジェクトをダウンロードすることができる。この時、図5に示すように、アプリケーションプログラムの実行に必要なオブジェクトをインクリメンタルにダウンロードすることにより、ユーザからは、単一のアプリケーションプログラムのロードにかかる時間を隠すことができる。   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.

例えば、図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として先にダウンロードする。   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 the 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.

アプリケーションプログラム21は、さしあたって、この3つのオブジェクトが存在すれば、起動可能であるため、その処理を開始する。そして、その処理が実行されている間に、残りのオブジェクト14−1−4乃至14−1−11をアプリケーションプログラム21のオブジェクト24−1−4乃至24−1−11として、第2乃至第4のダウンロードで順次ダウンロードする。この第2乃至第4のダウンロードにおいても、処理上、先に必要となるオブジェクトから順番にダウンロードする。   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.

ユーザは、アプリケーションプログラム21がオブジェクト24−1−1乃至24−1−3がダウンロードされ、その処理が開始された時点において、既にアプリケーションプログラム21の処理が開始されているため、あたかもすべてのオブジェクトのダウンロードが完了したものと認識することができる。すなわち、ユーザは、11個のオブジェクトをダウンロードするのに必要な時間より短い、3個のオブジェクトをダウンロードするのに必要な時間だけを意識することになる。換言すれば、ユーザに対して、8個のオブジェクトをダウンロードするための時間を実質的に隠す(意識させないようにする)ことができる。   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.

このことは、図4を参照して説明した(また、図10を参照して後述する)実行環境22の構築をクライアント2上に行う場合にも当てはまる。この場合は、実行環境22を構成するオブジェクトのうち、アプリケーションプログラムの実行に必要な部分のみのオブジェクトを先にダウンロードすることによって、実行環境のすべてのオブジェクトをダウンロードする時間をユーザから隠すことができる。この手法は、システムのブートにも応用できる。   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 only the objects necessary for the execution of the application program among the objects constituting the execution environment 22. . This technique can also be applied to booting the system.

ここで、インクリメンタルダウンロードとは、アプリケーションプログラムや実行環境を一度にダウンロードしないで、それを構成するオブジェクト単位、あるいは、その一部を必要に応じてダウンロードすることを意味する。従来のパソコン通信におけるアプリケーションプログラムのダウンロードの場合には、圧縮されたアプリケーションプログラムを一気にダウンロードするので、ダウンロードがすべて終わらないと、そのアプリケーションプログラムは利用することができない。また、例えば、今までのシステムのブートでは、システム全体を全部メモリに読み込んでから立ち上がる。UNIX(登録商標)のディスクレスワークステーションの場合には、サーバからすべてのOSをメモリに読み込んでからシステムが起動するので、読み込みがすべて終了するまで、システムを利用できない。しかしながらインクリメンタルダウンロードすれば、そのようなことがなくなる。   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 (registered trademark) 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.

この手法は、サーバ1とクライアント2としてのSTB(Set Top Box)に応用して次のような効果がある。まず、STBの電源を入れるとすぐに利用できるようになる。現在のパーソナルコンピュータのように、システムが立ち上がるまでいらいらして待つ必要が無くなる。STBは家庭用電気製品としての性格が強いので、システムが立ち上がるまでユーザを待たせるのは好ましくない。   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. Unlike the current personal computer, there is no need to irritate and wait for the system to start up. 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.

STBの電源が入れられると、STBは最初に必要なオブジェクトをダウンロードして実行を始めようとする。ユーザの待ち時間は最初のこのオブジェクトのダウンロード時間のみである。典型的なオブジェクトのダウンロード時間は数ミリ秒から数十ミリ秒であるので、適当なユーザインタフェースを備えることにより、この時間は十分ユーザにとって無視できる時間となる。以降は、システムの立ち上げプロセスの進行に従って、必要なオブジェクトがシステムの立ち上げプロセスと並行にダウンロードされる。   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.

また、STBは、そのコストの観点から、サーバのような豊富な計算資源が用意されていないので、複数のアプリケーションを同時に実行する場合にも制約が生じる。例えば、ナビゲーションアプリケーションによって、VODサービスを選択して、1つの映画を鑑賞することを考えた場合、映画の鑑賞が始まったら、ナビゲーションアプリケーションが占有していた資源(メモリ)を解放して、映画鑑賞アプリケーションのために使うことができる。そして、再び、ナビゲーションアプリケーションが必要になった時点で、その資源(メモリを管理するオブジェクト)をダウンロードする。   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.

ここで、「必要になった時点」とは、オブジェクトに対して何らかのメッセージが送られた時点とする。すなわち、一番最初にダウンロードしたオブジェクトが、別のオブジェクトにメッセージを送った時点で、その受信オブジェクトをダウンロードする。オブジェクトの依存、参照関係を利用することによって、次のメッセージを送るオブジェクトをあらかじめダウンロードしておくことができる。これを、アプリケーションの実行と並行に行うことにより、メッセージ通信時におけるダウンロードによる遅延を少なくすることができる。これにより、インクリメンタルダウンローディングの有効性を高めることができる。   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.

また、実行環境12,22もオブジェクト15,25の集合体であり、アプリケーションプログラム11,21のオブジェクト14,24と同等に操作可能であるので、アプリケーションプログラム11,21に特化したダウンロードの順序を制御するメタオブジェクトをオブジェクト15,25の1つとして用意する(例えば図4のオブジェクト25−1Cをメタオブジェクトとする)ことができる。これによって、特定のアプリケーションに適した、そのオブジェクトが利用するオブジェクトのダウンロード順を指定することができ、インクリメンタルダウンローディングによるユーザの待ち時間を最小にすることができる。   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.

サーバ1からクライアント2へのオブジェクトのダウンロードの機能、それに伴うオブジェクトの実行環境の互換性の検査機能、および実行環境の構築機能は、本システムを実現する上で重要なものであり、本システムを構成するすべての装置(クライアント2)が最低限有すべき機能とする。本明細書ではこの機能をメタ標準と呼ぶ。このメタ標準により、OS等の実行環境のAPIは自由に拡張することができるようになり、最小限の標準化とその拡張によって、今後のあらゆるタイプのアプリケーションに対応することができるようになる。   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 this 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.

例えば、図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)が形成されている。   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.

このため、これらのクライアント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)とされている。   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).

同様にサーバ1−2において、実行環境12−3によりアプリケーションプログラム11−3に対応するAPI13−3(API#3)が形成されており、このAPI13−3がクライアント2−2のAPI23−2(API#3)に対応している。   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).

従って、サーバ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から、メタ標準プロトコルに従って必要なオブジェクトを適宜ダウンロードさせることができる。   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.

各クライアントにおけるOSを1つのOSに標準化しようとするのがこれまでのこの分野における傾向であった。しかしながら、このようなメタ標準を規定し、サーバ側においてのみ、各クライアントのAPIに対応するAPIを具備させることで、標準を決定する必要がなくなる。   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.

OSの標準を1つに規定していないことによって、アプリケーションを始め、システムサービスを実現しているオブジェクトは、OSとは独立に構成することが可能になる。すなわち、ある実行環境用に書かれたソフトウェアを、マイグレーションによって別の実行環境用に自動的に再構成すればよいことになる。従来のシステムには、この機能は存在しない。例えば、UNIX(登録商標)用に書かれたソフトウェアはWindows(登録商標)上では、書き直さないと動作しない。アプリケーションレベルのソフトウェアで、この機能を実現するには、OS依存性を吸収するソフトウェアを導入する必要がある。しかし、デバイスドライバを始めとする、システムサービスを実現するオブジェクトのOSの独立性は、本手法を用いて可能になる。   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 (registered trademark) does not operate unless rewritten on Windows (registered trademark). 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.

このように、オブジェクトをダウンロードするようにすると、クライアント2のオブジェクトは、図7に示すように、動的に変更することができる。すなわち、既存のオブジェクトをクライアントから削除して、新しいオブジェクトをサーバからダウンロードする。   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.

例えば、図7の実施例においては、クライアント2のアプリケーションプログラム21におけるオブジェクト24Aが不要となったので、これを削除している。そして新たに必要になったオブジェクト14Aをサーバ1からクライアント2に対してダウンロードする。   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.

これにより、次のことが可能になる。
(1)ソフトウェアをアップデートすることができる。例えば、ハードウェア制御ソフトにバグが見つかった場合に、そのオブジェクトを削除して、新しいオブジェクトに置き換える。家庭電化製品は、コンピュータの専門家ではない、一般消費者が利用するものなので、一部のコンピュータに見られるようなインストーラによるソフトウェアのアップデートは適切ではない。
This makes it possible to:
(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.

(2)製品のサイクルを長くすることができる。例えば、テレビジョン受像機は毎年のようにモデルチェンジが繰り返されるが、一般消費者は、テレビジョン受像機を毎年買い換るようなことはしない。しかし、本システムにより、ソフトウェアの問題はすべて最新の機能をユーザに提供できることになるので、ソフトウェアの機能拡張によるモデルチェンジをなくすことができる。これは、STBの場合にも当てはまる。   (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.

(3)ユーザインタフェースの好みの変化に対応できる。例えば、初めてその装置を使い始めたユーザには、親切なメニュー形式を提供するが、ユーザがその装置の使い方を習熟するにつれて、直接所望の操作ができるようなダイレクト操作のユーザインタフェースに変更することができる。この場合も、両方の手順をクライアント側に持たせるのではなく、そのときのユーザの熟練度に応じたユーザインタフェースをクライアント側に持たせることができる。これにより、限りあるクライアントの資源を有効に利用することができる。   (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.

また、オブジェクトをダウンロードすれば、図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にマイグレートされる。   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.

そしてアプリケーションプログラム21−2には、アプリケーションプログラム21−1のオブジェクト24−1Bが、オブジェクト24−2Bとなるようにマイグレートされる。   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.

このようにして、例えば、実時間スケジューリングの拡張が必要になった場合には、その為の新しい実行環境をクライアントに生成し、必要なオブジェクトをその新しい環境に移動する。オブジェクトには何も変更を加える必要がなく、オブジェクトは実時間スケジューリングのサービスを受けられるようになる。   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.

これにより次の効果が得られる。   As a result, the following effects can be obtained.

(1)アプリケーションプログラムのオブジェクトに変更を加えないで、新しい機能に対処することが可能になるので、アプリケーションプログラムの寿命が長くなり、再利用可能性が増す。従来の手法では、アプリケーションプログラムにその実行環境に対する依存コードが含まれていたために、実行環境が変わることは、アプリケーションプログラムの書き換えを意味していた。   (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.

(2)組み込み機器のアプリケーションプログラムの場合には、ユーザインタフェースをはじめとする機器の高機能制御ソフトの部分は、モデルが大きく変わらない限り再利用したい部分であり、また、既存のコードを利用して機能拡張するのみで開発期間を短縮したい部分であるが、この部分に、実行環境への依存コードが含まれていると、再利用のための作業は複雑になる。今までの手法は、この部分に対して何の戦略もなかったが、本方式によって、この作業は自動化、あるいは、最小化できる。   (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.

本システムは、具体的には次のように応用できる。   Specifically, this system can be applied as follows.

(1)アプリケーションの信頼性が低い場合に、メモリ保護機能をダウンロードすることによってシステム全体の停止を防ぐことができる。   (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.

(2)STBのベンダ毎に、サービスプロバイダは提供サービスを変えることができる。例えば、映画会社Aの映画を提供するサービスプロバイダは、その映画を受信するB社のSTBとC社のSTBとで、画像の質を変えることができる。   (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.

(3)STBに送られてくるA/Vデータの圧縮方式やユーザの画質の好みに応じて、システムの処理方式を変更する。例えば、MPEGデータの場合とJPEGデータでは画質を調整するときの仕方が異なるので、システムの処理方式を変更する必要があるが、本システムでは、データ形式に従って動的に処理方式を選択できる。   (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.

このように、システムのほとんどの機能はサーバ1からダウンロードすることができるので、あらかじめクライアント2に様々の機能を持たせる必要が無く、最小限の機能を持たせればよい。図9に本システムにおけるクライアント2が有する最小限の機能を示す。すなわち、クライアント2には、デバイスドライバのための実行環境22−1、システムオブジェクトのための実行環境22−2、実行環境の為の実行環境22−3を、最低限形成する。   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.

あらかじめ存在させる必要のあるデバイスドライバは、入力を処理する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からダウンロードされる。   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.

図10は、サーバの送り出すアプリケーションプログラム(ビデオ、ゲーム、ショッピング等)に適したクライアント環境を動的に構成する実施例を表している。図10では、ショッピングのアプリケーションプログラム11−2をサーバ1からダウンロードするために、ショッピング用の実行環境22−4がクライアント2−2に構成されている。また、ショッピングアプリケーションプログラムから映画アプリケーションプログラムに、クライアント2−2がアプリケーションプログラムを切り替えた場合には、映画アプリケーションプログラム21−3の実行環境22−3がクライアント2−2に構成され、サーバ1から映画アプリケーションプログラム11−1がダウンロードされる。   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.

例えば、次のような処理が考えられる。   For example, the following processing can be considered.

(1)ユーザが映画を選択しているとき
この時には、所望の映画を選択することができるように、ナビゲーションアプリケーション11−3が、例えばクライアント2−1の実行環境22−1にダウンロードされ、それに対する必要な環境として、ウィンドウ管理、ユーザからの入力管理等のオブジェクト15−3がオブジェクト25−1としてダウンロードされる。
(1) When the user selects a movie At this time, the navigation application 11-3 is downloaded to the execution environment 22-1 of the client 2-1, for example, so that a desired movie can be selected. As a necessary environment for the above, an object 15-3 such as window management and user input management is downloaded as an object 25-1.

(2)ユーザが映画を鑑賞しているとき
この時には、サーバ1−1の実行処理12−1から、ビデオストリーム管理、データ先読みバッファ管理、VCR機能等のオブジェクト15−1が、例えばクライアント2−2の実行環境22−3にオブジェクト25−3としてダウンロードされる。
(2) When the user is watching a movie At this time, from the execution process 12-1 of the server 1-1, an object 15-1 such as video stream management, data prefetch buffer management, VCR function, etc. 2 is downloaded as an object 25-3 to the second execution environment 22-3.

以上のように、クライアントの実行環境をダウンロードにより実現するために、本システムでは図11に示すフィーチャストラクチャ(feature structure)を導入する。オブジェクトがサーバ1からクライアント2にダウンロードされる時、このfeature structureが検査されて、必要な実行環境がダウンロード先に構成される。   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.

すなわち、サーバ1は、クライアント2との間において、第1のフェーズ(ネゴシエーションフェーズ)で、サーバ1側のメタオブジェクト空間とクライアント2側のメタオブジェクト空間との間におけるオブジェクトマイグレーションの可能性に関するネゴシエーションを行う。そして第2のフェーズ(移動フェーズ)において、実際にオブジェクトの転送を行う。   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.

オブジェクトマイグレーションはメタレベルのプロセスであり、オブジェクトの内部情報と、必要ならばそれに関連したオブジェクトによって使用中の計算資源を転送するものである。オブジェクトの内部情報は、ディスクリプタ(descriptor)と呼ばれるメタレベルオブジェクトによって表現されている。ディスクリプタは、実際には、オブジェクトを管理しているメタオブジェクトの名前を保持している。一般的なディスクリプタは、オブジェクトのメモリセグメントを管理しているメタオブジェクトの名前、2つ以上のオブジェクトの実行制御をしているメタオブジェクト(スケジューラ)の名前、オブジェクトの名前付けを管理しているメタオブジェクトの名前、等を保持している。   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.

第1のフェーズ(ネゴシエーションフェーズ)においては、オブジェクトの移動の可能性が検査される。すなわち、メタオブジェクト空間によっては、オブジェクトマイグレーションが望ましくない場合がある。例えば、デバイスドライバを管理しているメタオブジェクト空間が、オブジェクト(デバイスドライバ)を移動する場合には、クライアント2側にハードウエアデバイスが実際に存在していなければ、その移動を行っても意味が無くなってしまう。また仮想記憶管理機構を利用して、オブジェクトのメモリセグメントを管理しているメタオブジェクトも、移動先に仮想記憶管理機構が存在しなければ、移動を行ったとしてもメモリセグメントを管理することができない。そこで、マイグレーションプロトコルにおいては、次のメソッドが用意されている。   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.

Feature* Descriptor::CanSpeak(Feature* pFeature)   Feature * Descriptor :: CanSpeak (Feature * pFeature)

このメソッドは、クライアント2側のメタオブジェクト空間内のdescriptorに対して、CanSpeakオペレーションを実行する。   This method executes a CanSpeak operation on the descriptor in the meta-object space on the client 2 side.

この時、フィーチャストラクチャが引数として渡され、結果としてクライアント2は、サーバ1に対して自分自身(クライアント2)が受け入れ可能なフィーチャストラクチャを返す。サーバ1側においては、クライアント2側から返されたフィーチャストラクチャを検査することで、そのメタオブジェット空間の互換性を知ることができる。   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.

互換性は、完全互換、半互換、および非互換の3つのカテゴリに分類される。   Compatibility is classified into three categories: fully compatible, semi-compatible, and incompatible.

完全互換は、オブジェクトが移動後も完全に実行を続けることができる場合を意味する。半互換は、移動後のオブジェクトの実行には、ある制限が加えられることを意味する。そして、非互換は、オブジェクトは移動後には実行を続けることができないことを意味する。   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.

非互換の場合には、オブジェクトマイグレーションは行われない。半互換の場合にはマイグレーションを行うか、行わないかをユーザが判断する。実際には、例外がユーザに返されるので、例外処理ルーチンによって、マイグレーションの判断がなされる。完全互換の場合、または半互換の場合であって、オブジェクトマイグレーションが行われるときには、先に返されたフィーチャストラクチャの内容に従って、マイグレーションが行われる。   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.

なお、ネゴシエーションフェーズに先だって、次のオペレーションによって空のdescriptorがクライアント2側のメタオブジェクト空間に生成される。   Prior to the negotiation phase, an empty descriptor is generated in the meta-object space on the client 2 side by the following operation.

Descriptor::Descriptor()   Descriptor :: Descriptor ()

先のCanSpeakメソッドは、このdescriptorに対して送られる。この時、フィーチャストラクチャの情報を元に必要なメタオブジェクトの生成、参照の生成、必要情報の登録が行われる。   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.

第2のフェーズにおけるメタレベルでのプロセスは、転送オブジェクトに対応したメタオブジェクトの移動、あるは転送になる。ここで、メタオブジェクトの移動とは、そのメタオブジェクトがクライアント2側のメタオブジェクト空間に入ること、すなわち、ディスクリプタ(descriptor)から参照されるようになることを意味し、また、メタオブジェクトの転送とは、クライアント2側のメタオブジェクト空間にあるメタオブジェクト(これはdescriptorから参照されている)に対して、メタオブジェクト内のデータをメッセージとして送ることを意味する。   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).

メタオブジェクトの移動および転送に関する実際のオペレーションが、ネゴシエーションフェーズによって得られたフィーチャストラクチャを利用して、この第2のフェーズ(移動フェーズ)において実行される。   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.

移動フェーズにおける実際のメタオブジェクトの移動および転送は、次のメソッドによって起動される。   The actual meta-object move and transfer in the move phase is triggered by the following methods:

Descriptor& Descriptor::operator=(Descriptor& source)   Descriptor & Descriptor :: operator = (Descriptor & source)

Descriptorクラスは抽象クラスであり、メタオブジェクトの移動、転送に関する共通のプロトコルを定義している。sourceで参照されるdescriptorの内容が、このディスクリプタにコピーされる。   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.

実際の手続きは、Descriptorクラスのサブクラスとして定義される。   The actual procedure is defined as a subclass of the Descriptor class.

次のメソッドは、メタオブジェクトの転送に関するメソッドである。これらのプロトコルは主に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で初期化し、必要なメモリ領域をコピーする。
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.

図11は、フィーチャストラクチャの構造を表している。同図に示すように、object descriptionとenvironmemt descriptionのポインタが、エントリーに記述されている。   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.

object descriptionのポインタで指示されているストラクチャには、object nameが記述され、さらに、environment descriptionのポインタで指示されているストラクチャと同一のストラクチャのポインタが記述されている。そしてさらに、このオブジェクトの資源要求(resource requiremnent of this opject)が記述されている。   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.

また、environment descriptionのポインタで指示されているストラクチャには、environment nameが記述され、さらに、そのクライアントのハードウエアの資源情報(resource information of client hardware)、この実行環境の資源要求(resource requirement of this environment)、およびこの実行環境を構成するメタオブジェクトのリスト(list of metaobjects constituting environment)が記述されている。   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.

フィーチャストラクチャの内容の具体例をあげると、次のようになる。   A specific example of the contents of the feature structure is as follows.

(1)オブジェクトに関する情報
実時間性
必要プロセッサ量
(1) Information about objects Real-time property Required processor amount

(2)メタオブジェクトに関する情報
ハードウェアメタオブジェクト
*プロセッサの種類
*データ表現形式
セグメントメタオブジェクト
*大きさ
*拡大、縮小可能性
*管理方針
*レイアウト
コンテキストメタオブジェクト
*レジスタ情報
*一時変数量
*プロセッサ状態
メイラメタオブジェクト
*メッセージキュー長
*未処理メッセージ数
*外部メイラの必要性
*メッセージの転送方式
外部メイラメタオブジェクト
*メッセージキュー長
*未処理メッセージ数
*プロトコル
スケジューラメタオブジェクト
*オブジェクト状態
*スケジューリング方針
依存管理メタオブジェクト
*保有する外部名数
(2) Information about meta-objects Hardware meta-object * Processor type * Data expression format Segment meta-object * Size * Expandability, management policy * Layout context meta-object * Register information * Temporary variable amount * Processor state 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

上述したように、各クライアントが異なるOSを有するような場合、このフィーチャストラクチャから各クライアントのOSが判定され、サーバは、そのOSに対応するオブジェクトをダウンロードさせることになる。   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.

図12は、本発明のデータ処理システムを応用したApertos(商標)システムの構成例を示している。このApertosシステムにおいては、Apertos Micro Virtual Machine(MVM)31a(第1の実行手段)は、Apertos Micro Kernel(MK)31b(第2の実行手段)とともにあり、Apertosシステムの核31を構成している。核31を構成するMVM31aは後述する中間コード(I−code)を解釈実行するが、必要に応じて、MK31bの機能を用いてpersonalityオブジェクト(システムオブジェクト)を呼び出すようになされている。   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.

図12に示した核31以外の部分は、上述した方法により、例えば、サーバ1よりダウンロードすることができる。   Parts other than the core 31 shown in FIG. 12 can be downloaded from the server 1, for example, by the method described above.

このシステムは、必要に応じてI−codeをnative code(バイナリコード、マシンコード)に動的にコンパイルする。また、予めnative codeにコンパイルされているオブジェクトを実行するが、その場合、MK31bの機能によってPersonalityオブジェクト33(バイナリコード生成手段)が呼び出され、アプリケーション(Applications)35にサービスを提供する。   This system dynamically compiles I-code into native code (binary code, machine code) as needed. In addition, an object that has been compiled into a native code is executed in advance. 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.

図12に示した核31を構成するMVM31aおよびMK31bは、その外側がデバイスドライバオブジェクト(Device drivers)32とPersonalityオブジェクト(Personality component objects)33によって取り囲まれており、さらに外側には、アプリケーションプログラミングのためのクラスシステム(Class Libraries)34が用意されており、さらにその外側にはアプリケーション35が用意されている。   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.

Personalityオブジェクト33の層により、Apertosシステムは様々なOS(オペレーティングシステム)やVirtual Machine(仮想計算機)を提供することができる。例えば、java(登録商標)プログラムの実行は、java(登録商標)プログラム用のPersonalityオブジェクトによって、java(登録商標)プログラムがコンパイルされて得られた中間コードであるjava(登録商標) bytecodeが実行されることにより行われる。   The layer of the Personality object 33 enables the Apache system to provide various OSs (Operating Systems) and Virtual Machines (virtual machines). For example, a Java (registered trademark) program is executed by executing a Java (registered trademark) byte code that is an intermediate code obtained by compiling a Java (registered trademark) program by a Personality object for the Java (registered trademark) program. Is done.

Apertosシステムは、高度のportabilityを実現するために、プログラムをI−code(中間コード)にコンパイルし、オブジェクトのメソッドを管理している。しかしながら、I−codeは、解釈実行(プログラムを解釈しながら実行すること)を前提に設計されているのではなく、動的コンパイラによってnative codeにコンパイルするように設計されている。しかし、様々な制約により、動的コンパイルが困難である場合、MVM31aがI−codeを解釈実行する。   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.

しかしながら、ほとんどの場合、I−codeは、native codeにコンパイルされ、システムを構成するCPUにより直接実行される。従って、Virtual Machineによる実行に伴って、実時間性が欠如したり、処理スピードが犠牲になるということはほとんどない。   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.

上記I−codeは、高度のInter−Operabilityを実現するため、図22を参照して後述するように、十分に抽象度の高い2つの命令セット(OP_M,OP_R)から構成されており、そのセマンティクス(意味構造)は、MK31bのインタフェースと強く関連づけられている。即ち、図12に示したApertosシステムの構造に強く影響を受けた命令セットとされている。これにより、Apertosシステムにおいては、native codeを前提としていながら、高度のPortabilityとInter−Operabilityを実現することができる。   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.

次に、MVM31aとMK31bの仕様について説明する。最初に、MVM31aが仮定しているデータ構造体と、I−codeフォーマットを規定する。   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.

図13は、図12に示したMVM31aとMK31bの論理構造を示している。基本的に両者の論理構造は同一であり、active context41、message frame42、およびexecution engine43により構成されているが、MVM31aは、I−codeによる実行をサポートし、MK31bはnative codeによる実行をサポートしている。   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.

図13において、active context41は、現在実行中のContext(図14を参照して後述する)を指しており、message frame42は、核31を構成するMVM31aおよびMK31bに対するメッセージ本体を指している。   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.

MK31bの場合、メッセージ本体の存在する場所は実装方法に依存し、スタックフレームとしてメモリに割り当てられる場合もあるし、ヒープ(heap)に割り当てられる場合もある。また、いくつかのCPUのレジスタが割り当てられる場合もある。一方、MVM31aの場合、メッセージフレームは命令コードに続くオペランドを指すことになる。実装によっては、これら以外に内部レジスタ等を必要とするかもしれないが、それらのレジスタは本仕様とは独立のものである。   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.

図13において、execution engine43は、I−codeおよびnative codeを実行する。また、MVM31aのexecution engine43には、primitive objects44が含まれており、これは、図18を参照して後述するプリミティブオブジェクトを処理するコードである。   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.

図14は、ContextとDescriptorの論理構造を示している。プログラムの1つの実行状態を示すContext構造体51は、object、class、method、metaなどのフィールドを有し、このうち、methodには、icodeとminfoのフィールドがさらに設けられている。このContext構造体51は、MVM31aの状態を保持し、CPUのレジスタに相当し、メモリ管理やプログラム間の通信方法などとは完全に独立している。   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.

Context構造体51は、Contextプリミティブオブジェクトであり、図16を参照して後述するように、その各フィールドは所定の情報にリンクしている。また、Context構造体51は、核31(MVM31aおよびMK31b)の実装に深く依存しているが、図14においては、主に依存しない部分を示している。   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.

このContext構造体51において重要なフィールドは、metaフィールドであり、Descriptor構造体52を指している。Descriptor構造体52のエントリは、#tag、context、およびselectorの3つの組みであり、このDescriptor構造体52によって、Personalityオブジェクト33のAPI(アプリケーションプログラミングインタフェース)が決定される。#tagはAPIの名称を、contextとselectorでAPIのアドレスをそれぞれ表している。   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.

図15は、MVM31aの全体構造を示している。基本的に、全ての必要な情報は、Context構造体51からリンクを辿ることにより参照することができるようになされている。即ち、Context構造体51が、object61にリンクされ、このobject61は、object61に対応するクラスへのリンク(class pointer)とインスタンス領域(object dependent field)より構成される。インスタンス領域にどのような情報が格納されるか、あるいはそのレイアウトは、オブジェクトの実装に依存する。   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 is composed of 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.

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命令のオペランドは、この変数テーブルエントリを介して目的オブジェクトを参照する。   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.

図15において、グレーの部分(Context51、I−method63)はMVM31aに依存する部分であり、MVM31aがI−codeを解釈実行する場合に必要とする構造体である。   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.

図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を指している。   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.

temporaryフィールドは、一時データ保存領域を指し、metaフィールドは、上述したように、descriptor52を指している。また、オブジェクト61のclass pointerは、class62を指し、class62のmethod tableは、I−method63を指している。   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.

variable tableエントリは、typeとvalueの組みであり、valueはtypeに依存する。   The variable table entry is a combination of a type and a value, and the value depends on the type.

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」に開示されている。   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”.

また、図17において、typeがT_POINTERのとき、オブジェクトを参照するためのIDがvalue欄に格納される。このIDは、その位置が独立な、システムで唯一の値であり、Personalityオブジェクト33によって、そのIDに対応するオブジェクトの位置が特定される。   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.

図22は、MVM31aが解釈実行する2つの命令セットを示している。命令セットOP_Mは、図12において、外側から内側に入る命令であり、命令セットOP_Rは、内側から外側に戻る命令である。   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.

即ち、命令セットOP_Mにより、その第1オペランドで示されたオペレーションが実行される。このオペレーションは、Personalityオブジェクト33によって処理されるか、またはプリミティブオブジェクトによって処理される。コンパイラは、より効率的にアプリケーション35を実行するために、いくつかの処理をプリミティブオブジェクトによって処理するように、I−codeを生成する。これにより、例えば、Integerの算術演算は、図18の先頭のプリミティブオブジェクトによって処理される。   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.

次に、MK31bのインタフェースを規定する。図23は、マイクロカーネル(MK)31bのインタフェースを示している。MVM31aとMK31bの論理構造は、図13に示したように同様であり、MK31bは、図22に示した命令セットOP_MおよびOP_Rをシステムコールとして処理する。   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.

上述したような構成のApertosシステムを、例えば図4に示したクライアント2(2−1,2−2)に適用することができる。そして、図12に示した核31以外のもののうち、任意のものをサーバ1からダウンロードすることにより、所定のアプリケーションを実行するための最適な実行環境をクライアント2上に構築することができる。   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.

上述したように、ここでダウンロードするオブジェクトとしては次のものが考えられる。   As described above, the following objects can be considered as objects to be downloaded here.

(1)すべてのアプリケーションプログラム   (1) All application programs

(2)クライアントが備えるハードウェア資源を制御するためのデバイスドライバ群(例えば、MPEGドライバ、ATMドライバ、画像制御ドライバ等)   (2) Device driver group (for example, MPEG driver, ATM driver, image control driver, etc.) for controlling hardware resources provided in the client

(3)アプリケーションプログラムに対してシステムサービスを提供するオブジェクト群(personaityオブジェクト)(例えば、VCRコマンド管理、ストリーム管理、実時間スケジューラ、メモリ管理、ウィンドウ管理、ダウンロード制御、通信プロトコル管理、実行管理等)   (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.)

これらを組み合わせて、アプリケーションプログラムに対して最適な実行環境をクライアント上に構築することができる。   By combining these, an optimal execution environment for the application program can be constructed on the client.

例えば、java(登録商標)プログラムを実行させたい場合、java(登録商標)用のpersonalityオブジェクト33と、java(登録商標)プログラム(アプリケーション)35をサーバ1よりダウンロードする。このpersonalityオブジェクト33により、Apertosシステムは、Java(登録商標) Virtual Machineを提供することができる。ダウンロードされたjava(登録商標)プログラムは、コンパイラにより一旦java(登録商標) bytecodeと呼ばれる中間コードにコンパイルされ、上記java(登録商標) Virtual Machineにより実行される。あるいは、上述したように、native codeにコンパイルした後、実行するようにすることも可能である。   For example, when a Java (registered trademark) program is to be executed, a personality object 33 for Java (registered trademark) and a Java (registered trademark) program (application) 35 are downloaded from the server 1. With this personality object 33, the Apache system can provide Java (registered trademark) Virtual Machine. The downloaded Java (registered trademark) program is once compiled into intermediate code called Java (registered trademark) bytecode by a compiler, and executed by the Java (registered trademark) Virtual Machine. Alternatively, as described above, it may be executed after being compiled into a native code.

以上の実施例においては、サーバからクライアントに所定のオブジェクトをダウンロードするようにしたが、所定のクライアントから、所定のサーバにオブジェクトをダウンロードしたり、あるいはサーバ同士、クライアント同士でオブジェクトをダウンロードする場合にも、本発明を適用することが可能である。   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.

また、上記実施例においては、I−codeを2つの命令により構成するようにしたが、これに限定されるものではない。   In the above embodiment, the I-code is configured by two instructions, but the present invention is not limited to this.

本発明のデータ処理方法を適用するシステムの構成例を示す図である。It is a figure which shows the structural example of the system to which the data processing method of this invention is applied. アプリケーションプログラムの構成を示す図である。It is a figure which shows the structure of an application program. 並行オブジェクトの構成を示す図である。It is a figure which shows the structure of a parallel object. サーバから複数ベンダのクライアントに対するオブジェクトのダウンロードを説明する図である。It is a figure explaining the download of the object with respect to the client of multiple vendors from a server. インクリメンタルダウンロードを説明する図である。It is a figure explaining incremental download. メタ標準を説明する図である。It is a figure explaining a meta standard. オブジェクトの動的変更を説明する図である。It is a figure explaining the dynamic change of an object. オブジェクトの動的拡張を説明する図である。It is a figure explaining the dynamic expansion of an object. クライアントの最小機能を説明する図である。It is a figure explaining the minimum function of a client. アプリケーションに適したクライアント環境の構築とその動的再構成を説明する図である。It is a figure explaining construction of a client environment suitable for an application and its dynamic reconfiguration. フィーチャストラクチャの構成を説明する図である。It is a figure explaining the structure of a feature structure. 本発明のデータ処理装置を応用したApertosシステムの構成例を示す図である。It is a figure which shows the structural example of the Apache system which applied the data processor of this invention. MVMとMKの論理構造を示す図である。It is a figure which shows the logical structure of MVM and MK. ContextとDescriptorの論理構造を示す図である。It is a figure which shows the logical structure of Context and Descriptor. MVMの全体構造を示す図である。It is a figure which shows the whole structure of MVM. Contextとその回りのデータ構造体を示す図である。It is a figure which shows Context and the data structure of the circumference | surroundings. Variable tableエントリのtypeを示す図である。It is a figure which shows the type of Variable table entry. プリミティブオブジェクトの一覧とそのインタフェース名を示す図である。It is a figure which shows the list | wrist of a primitive object, and its interface name. プリミティブオブジェクトのインタフェースを示す図である。It is a figure which shows the interface of a primitive object. プリミティブオブジェクトのインタフェースを示す図である。It is a figure which shows the interface of a primitive object. プリミティブオブジェクトのインタフェースを示す図である。It is a figure which shows the interface of a primitive object. I−code命令セットを示す図である。It is a figure which shows an I-code instruction set. MKのインタフェースを示す図である。It is a figure which shows the interface of MK.

符号の説明Explanation of symbols

1 サーバ,2 クライアント,3 ネットワーク,11 アプリケーションプログラム,12 実行環境,13 アプリケーションプログラムインタフェース,14,15 オブジェクト,21 アプリケーションプログラム,22 実行環境,23 アプリケーションプログラムインタフェース,31 核,31a MVM,31b MK,32 Device drivers,33 Personality component object,34 Class libraries,35 Applications,41 active context,42 message frame,43 execution engine,44 primitive objects,51 context,52 Descriptor,61 object,62 class,63 I−method   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, 31a MVM, 31b MK, 32 Device drivers, 33 Personal component objects, 34 Class libraries, 35 Applications, 41 active contexts, 42 message frames, 43 execution engines, 44 prime engines, 44 prime engines object, 62 class, 63 I-method

Claims (5)

複数のオブジェクトで構成されるアプリケーションプログラムと、複数のオブジェクトで構成され、前記アプリケーションプログラムに対して実行環境を提供するシステムオブジェクトからなるデータ処理装置において、
中間コードに変換された前記アプリケーションプログラムを解釈し、実行する第1の実行手段と、
前記中間コードを動的にコンパイルし、バイナリコードを生成するバイナリコード生成手段と、
前記バイナリコードおよび前記システムオブジェクトを実行する第2の実行手段とを備える
ことを特徴とするデータ処理装置。
In a data processing apparatus composed of an application program composed of a plurality of objects and a system object composed of a plurality of objects and providing an execution environment for the application program,
First execution means for interpreting and executing the application program converted into intermediate code;
Binary code generation means for dynamically compiling the intermediate code and generating binary code;
A data processing apparatus comprising: the binary code and second execution means for executing the system object.
前記第1の実行手段は、前記第2の実行手段を介して前記システムオブジェクトを実行する
ことを特徴とする請求項1に記載のデータ処理装置。
The data processing apparatus according to claim 1, wherein the first execution unit executes the system object via the second execution unit.
前記アプリケーションプログラムの実行状態を示す第1の構造体と、
前記システムオブジェクトが提供する実行環境のアプリケーションプログラムインタフェースを決定する第2の構造体とをさらに備え、
前記第1の実行手段および前記第2の実行手段は、前記第1の構造体と前記第2の構造体に基づいて、前記アプリケーションプログラムの実行を制御する
ことを特徴とする請求項1に記載のデータ処理装置。
A first structure indicating an execution state of the application program;
A second structure for determining an application program interface of an execution environment provided by the system object,
2. The first execution unit and the second execution unit control execution of the application program based on the first structure and the second structure, respectively. Data processing equipment.
前記第1の実行手段は、前記オブジェクトの所定のものにより発行され、所定のオペランドで指定された所定のオペレーションを実行する第1の命令と、前記オペレーションを実行した後、前記命令を発行した前記オブジェクトに制御を戻す第2の命令とを有する
ことを特徴とする請求項1に記載のデータ処理装置。
The first execution means is issued by a predetermined one of the objects and executes a predetermined operation specified by a predetermined operand, and after executing the operation, the instruction is issued. The data processing apparatus according to claim 1, further comprising: a second instruction that returns control to the object.
複数のオブジェクトで構成されるアプリケーションプログラムと、複数のオブジェクトで構成され、前記アプリケーションプログラムに対して実行環境を提供するシステムオブジェクトからなるデータ処理装置におけるデータ処理方法において、
中間コードに変換された前記アプリケーションプログラムを解釈し、実行する方法と、前記中間コードを動的にコンパイルし、生成されたバイナリコードを実行する方法とにより、前記アプリケーションプログラムを実行する
ことを特徴とするデータ処理方法。
In a data processing method in a data processing apparatus composed of an application program composed of a plurality of objects and a system object composed of a plurality of objects and providing an execution environment for the application program,
The application program is executed by a method of interpreting and executing the application program converted into the intermediate code, and a method of dynamically compiling the intermediate code and executing the generated binary code. Data processing method.
JP2005165782A 1995-07-14 2005-06-06 Data processing method and device Abandoned JP2005302055A (en)

Priority Applications (1)

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

Applications Claiming Priority (2)

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

Related Parent Applications (1)

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

Publications (1)

Publication Number Publication Date
JP2005302055A true JP2005302055A (en) 2005-10-27

Family

ID=35333397

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP2005302055A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012509531A (en) * 2008-11-18 2012-04-19 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 Dynamic linking method of program in embedded platform and embedded platform

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012509531A (en) * 2008-11-18 2012-04-19 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 Dynamic linking method of program in embedded platform and embedded platform
US8499291B2 (en) 2008-11-18 2013-07-30 Tencent Technology (Shenzhen) Company Limited Method for dynamically linking program on embedded platform and embedded platform
KR101318313B1 (en) * 2008-11-18 2013-10-15 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 Method for dynamically linking program on embedded platform and a computer readable storage medium recording an embedded platform

Similar Documents

Publication Publication Date Title
EP1306756B1 (en) Data processing method and device
JP4251669B2 (en) Data processing method and apparatus
JP4270194B2 (en) Network computer system and service distribution method
TWI276998B (en) Systems and methods for managing drivers in a computing system
US7174361B1 (en) Scripting task-level user-interfaces
US7992138B2 (en) Method and apparatus for executing different java methods
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
US5907843A (en) Replaceable and extensible navigator component of a network component system
JP2006511100A (en) Method and system for extending the functionality of a mobile platform using plug-in software
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
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
JP2005302055A (en) Data processing method and device
JP2005108082A (en) Interface method for device driver
JP2001005679A (en) Method for interrupting/restarting electronic computer
US7254817B2 (en) Apparatus and methods for integrating APIs for program execution management
US20040078499A1 (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

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Effective date: 20060803

Free format text: JAPANESE INTERMEDIATE CODE: A131

A762 Written abandonment of application

Effective date: 20060925

Free format text: JAPANESE INTERMEDIATE CODE: A762