JP2006031203A - 車載情報端末 - Google Patents
車載情報端末 Download PDFInfo
- Publication number
- JP2006031203A JP2006031203A JP2004206687A JP2004206687A JP2006031203A JP 2006031203 A JP2006031203 A JP 2006031203A JP 2004206687 A JP2004206687 A JP 2004206687A JP 2004206687 A JP2004206687 A JP 2004206687A JP 2006031203 A JP2006031203 A JP 2006031203A
- Authority
- JP
- Japan
- Prior art keywords
- virtual machine
- resource
- intermediate code
- information terminal
- violation
- 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.)
- Pending
Links
Images
Landscapes
- Traffic Control Systems (AREA)
- Navigation (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】
一つまたは複数の仮想マシンが同時に中間コードを実行する車載端末において、ある仮想マシンによる過度の計算機資源確保に起因する、他の仮想マシンまたは他のプログラムの実行に影響が発生しないようにする。
【解決手段】
仮想マシンが確保する各計算機資源の確保量などの制限を記述した設定データを用意し、仮想マシンが起動時に前記設定ファイルを読み込む手段と、前記設定データに記述された制限に基づいて資源の確保量を制限しながら中間コードを実行する手段と、実行中に制限違反を検出した時に適切な対処方法を決定する判断手段と、前記判断手段による結果に基づいて仮想マシン停止、アプリケーション削除、使用者通知、サーバ通知などの各処理を実行する制限違反対処手段を備えた仮想マシンにより、中間コードプログラムを実行する。
【選択図】図1
一つまたは複数の仮想マシンが同時に中間コードを実行する車載端末において、ある仮想マシンによる過度の計算機資源確保に起因する、他の仮想マシンまたは他のプログラムの実行に影響が発生しないようにする。
【解決手段】
仮想マシンが確保する各計算機資源の確保量などの制限を記述した設定データを用意し、仮想マシンが起動時に前記設定ファイルを読み込む手段と、前記設定データに記述された制限に基づいて資源の確保量を制限しながら中間コードを実行する手段と、実行中に制限違反を検出した時に適切な対処方法を決定する判断手段と、前記判断手段による結果に基づいて仮想マシン停止、アプリケーション削除、使用者通知、サーバ通知などの各処理を実行する制限違反対処手段を備えた仮想マシンにより、中間コードプログラムを実行する。
【選択図】図1
Description
本発明は、車に搭載され、中間コードにより表現されたプログラムの実行を通じて車の利用者にサービスを提供する情報端末に関し、一つまたは複数の中間コードアプリケーションを、より少ない資源を用いて、安定して実行する方法に関する。
今日、自動車などの車両に情報端末が数多く搭載されている。この情報端末による地図表示や音声ガイドなどを通じて目的地への移動をサポートする、いわゆるカーナビゲーション・サービスが提供されている。カーナビゲーション用の情報端末は高機能化を続けており、映像や音楽の視聴、車の状態表示や制御などの機能も合わせて提供されている。さらには携帯電話との連係などによって外部との通信が可能になりつつあり、渋滞情報などのリアルタイムの情報取得を用いた正確なナビゲーション、周辺地域情報の取得と表示、地図情報の自動更新などが実現されつつある。
上記のような車載情報端末の高機能化に伴い、機能を実現するプログラム実行環境に中間コード技術の適用が進められている。中間コード技術は、演算装置に依存するネイティブコードではなく、演算装置非依存の中間コードによりプログラムを表現し、この中間コードをいわゆる仮想マシンが解釈実行するという技術である。これにより単一のプログラムを、異なる演算装置を持つ複数種類の情報端末において実行することが可能になり、さらに中間コードの安全性検査手段を設けることで、より安全なプログラム実行が可能になる。車載情報端末においては、(i)ネットワークを通じてプログラムを安全に追加、または更新できる、(ii)車載端末実機とは別の機体を用いて、車載端末用のプログラムを開発できる、(iii)別の機体向けに作成されたプログラムの全体または一部を該車載端末に流用できる、などの利点がある。Sun microsystems社が発表しているJava(登録商標)技術が、この中間コード技術の例にあたる。
さらなる車載情報端末の高機能化に対処するため、中間コードを実行する仮想マシンを同時に複数実行したい、という要求が高まっている。例えば、エアコン制御アプリケーションと、音楽再生アプリケーションなどである。このように複数仮想マシンを同時実行すると、仮想マシン間における計算機資源の競合という問題が発生する。例えば表示画面が一つしかないときに、複数ある仮想マシンがそれぞれ勝手に画面を描画すると、正しい画面表示は期待できない。
特開2001-142725は、上記の競合問題の解決方法を提示している。該特許は画面や入力装置などのUI装置の使用権を、いずれかのタスクに割り振る資源管理部を設ける方法を提案している。
特開2003-256218は、メモリに関する競合問題の解決方法を提示している。複数の仮想マシンが、共有可能なグローバル記憶領域に対して読み出し、または書き込みを並行して実行すると、記憶領域の状態に一貫性がなくなり、仮想マシンの動作に支障をきたす。そこで、該特許では仮想マシン起動時にグローバル記憶領域を一方から一方へコピーし、各仮想マシンが異なるグローバル記憶領域を使用するという方法による解決を提案している。
また、一般に車載情報端末の持つ計算機資源は制約が厳しい。計算能力、記憶領域などは、可能な限り節約する必要がある。仮想マシンを単独ではなく複数実行するにあっては、計算機資源の節約はさらに重要となる。
特開平11-232109、および特開2003-308218は、このような省計算機資源の問題に対する対処方法を提案している。特開平11-232109は中間コードをロードする単位であるクラスを、複数の仮想マシンが共有することにより、クラス保持領域を節約し、ロード時間の短縮する方法を示している。特開2003-308218は、オブジェクトを保持するヒープ領域を複数仮想マシンが共有することにより、各仮想マシンが消費するオブジェクト量が異なる場合も、無駄な空き領域を極力減らす節約方法を提示している。
しかし上記の発明を持ってしても、複数仮想マシンの実行には課題が残されている。
仮想マシン間のユーザインタフェースやグローバル領域に関する競合は前記特許文献により解決方法が提案されているが、他にもある仮想マシンによる資源消費が、他の仮想マシンや他のタスクに影響を与える場合がある。例として、動的に確保されるメモリが挙げられる。仮想マシンAがメモリを多く確保してしまったために、仮想マシンBが動作できなくなると、支障をきたす場合がある。仮想マシンAが音楽再生アプリケーションを実行し、仮想マシンBが車両異常を通知するアプリケーションを実行する場合などが具体例として考えられる。メモリ以外にも、セマフォ、ファイル、ネットワークソケット、スレッドなどの資源についても、仮想マシンのいきすぎた資源消費が別の仮想マシンなどの動作に影響を与える。従来技術では、このようなアプリケーションによる過度の資源確保を防止することができない。
さらには、アプリケーションによる過度の資源消費による、資源不足の状態を避けることができない。
また、計算機資源節約にも課題が残されている。特開平11-232109および特開2003-308218の扱う、クラス領域、ヒープ領域以外のメモリ領域の省資源化が必要である。また、中間コードを実行する仮想マシンの起動は、中間コードの安全性検査のため、一般に時間がかかる。複数の仮想マシンを起動する場合には、起動時間の短縮も課題である。
本発明は前述した資源消費競合の課題を解決するため、
起動時に各計算機資源の制限を記述したファイルなどの設定情報を読み込む手段、各計算機資源の制限を監視しながら中間コードを実行する実行時資源制限監視手段、資源制限に違反した仮想マシンに対する適切な制限違反処理を選択する手段、資源制限に違反したアプリケーションを実行した仮想マシンを強制終了する手段、資源制限に違反したアプリケーションをインストール前の状態に復する初期化手段、資源制限に違反した情報を資源端末利用者またはサービス提供者に通知する手段とを備えた仮想マシンを複数実行する車載情報端末を用いる。
起動時に各計算機資源の制限を記述したファイルなどの設定情報を読み込む手段、各計算機資源の制限を監視しながら中間コードを実行する実行時資源制限監視手段、資源制限に違反した仮想マシンに対する適切な制限違反処理を選択する手段、資源制限に違反したアプリケーションを実行した仮想マシンを強制終了する手段、資源制限に違反したアプリケーションをインストール前の状態に復する初期化手段、資源制限に違反した情報を資源端末利用者またはサービス提供者に通知する手段とを備えた仮想マシンを複数実行する車載情報端末を用いる。
前記の制限対象となる計算機資源には、スレッド、ファイル、ネットワークソケット、セマフォ、中間コードプログラムが作成するオブジェクトなどを格納するオブジェクト領域、仮想マシンが中間コード実行のために動的に確保するメモリ領域などを含む。
また、複数の仮想マシン間で安全性検査済のネイティブコードの種別を共有する手段を備えた車載情報端末を用いる。
上記手段により、仮想マシンによる過度の計算機資源確保に起因する影響を防止でき、他の仮想マシンによるアプリケーション実行および他のタスク等によるアプリケーション実行を、安定して遂行することができる。さらには計算機資源を過度に確保するアプリケーションによる、過度の資源確保を前もって予防することができる。
また、上記手段により起動時の中間コード安全性検査処理にかかる時間を短縮できる。
以下、本発明を実現する実施例1及び2について説明する。
本発明を実現する第1の実施例を、図1から図32を用いて説明する。
図1に本発明を実現するシステムの全体構成を示す。
本システムは、主に車載端末101から構成される。車載端末101は、車内ネットワーク121を通じて空調制御装置111、走行状態監視装置112、ブレーキ状態監視装置113などと接続されており、これらの機器から車の状態を取得したり、空調機器などを制御したりできる。また、車載端末101は車の搭乗者の操作するリモコン114と有線または無線により通信できる構成となっている。搭乗者はリモコン114を経由して車載端末101を操作できる。車載端末101は携帯電話115との接続を介するなどして、インターネットや無線電話通信網のなどの車外ネットワーク122と通信できる。車外ネットワーク122への接続は、携帯電話115以外の無線通信機器を用いてもよいし、無線通信装置を車載端末101が内蔵していてもよい。車載端末101は車外ネットワーク122を経由してアプリ管理サーバ116などと通信する。アプリ管理サーバ116は車載端末101上で動作する中間コードプログラム群142などを車載端末101に送信する。また、アプリ管理サーバ116は、資源違反に関する情報を車載端末101から受信したり、インストール済みプログラムの最新バージョン取得要求を受け付けたりする。
車載端末101は、一次記憶装置102、二次記憶装置103、中央演算装置104、表示装置105、音出力装置106、車内通信装置107、リモコン通信装置108、車外通信装置109などから構成される。中央演算装置104は、車載端末101に電源が投入されるとプログラムを一次記憶装置102にロードし、そのプログラムの実行を開始する。二次記憶装置103は電源切断時にもデータを保持する機能を備えており、一次記憶装置にロードされるプログラムや、プログラム実行時に必要になるデータを保持している。表示装置105、音出力装置106は、それぞれ画面表示と音出力を通じて搭乗者に情報を与える。車内通信装置107は車載端末101と車内ネットワーク121との通信を受け持つ。リモコン通信装置108は搭乗者によるリモコン114の操作を受信する。車外通信装置109は、携帯電話115などを通じた車外ネットワーク122との通信を受け持つ。車載端末101の使用者は、リモコン114を通じて車載端末101に情報を入力し、表示装置105、音出力装置106を通じて車載端末101から情報出力を受け取る。入出力装置はここにしめした装置に限らず、他の装置でもかまわない。例えば入力に車載端末101に設置されたボタンや、タッチパネルを用いてもよいし、出力にLEDなどの発光装置を用いても良い。
一次記憶装置101には複数のタスクとオペレーティング・システム139(以下OS139)がロードされ、並行して実行される。これらのタスクやOS139は、二次記憶装置103上に保持される基本プログラムリスト141に含まれている。実行されるタスクには、まず、仮想マシン1a1、仮想マシン1b1などの複数の仮想マシンがある。他に、仮想マシン管理タスク131、およびその他のタスク137などがロードされ、実行される。これらのタスクはOS139によって管理される。また、OS139は車載端末101の持つ他の装置と、各タスクとのやりとりを仲介する。安全性検査済み中間コードリスト138は、複数の仮想マシンが共有するデータであり、このデータを用いて中間コードに対する安全性検査処理の省略が実現される。
仮想マシン1a1、1b1は、それぞれ中間コードプログラム群142から中間コード列を読み込み、実行に適した形式に変換し、実行する。データファイル群143は、これらのタスクや中間コードプログラムの実行に必要なデータを保持する。資源制限データ144は、仮想マシン1a1、仮想マシン1b1が起動時に読み込むデータであり、各仮想マシンが中間コードプログラム実行中に利用する資源の制限情報を保持している。資源違反履歴145は、仮想マシンが指定された資源制限に違反した履歴情報を保持する。違反時処理設定146は、各仮想マシンが中間コードプログラムの実行中に資源制限違反を犯した時に、実行する対処動作を決定するために必要な情報を保持する。
ここでは二つの仮想マシンが車載端末101内で動作する構成としたが、仮想マシンは二つ以上であればいくつあっても同様の構成とできる。仮想マシン単独の場合は、第2の実施例に示す。
仮想マシン1a1は、使用資源群1a2、資源管理部1a3、中間コードロード部1a4、実行中間コードプログラム群1a5、中間コード実行部1a6などから構成される。ここでは仮想マシン1b1も同様の構成とする。使用資源群1a2と実行中間コードプログラム群1a5はデータであり、それぞれ「プログラム実行に必要な資源」と「実行対象のプログラムコード」を保持している。資源管理部1a3は、使用資源群1a2を管理する。資源管理部1a3は、仮想マシン起動時に使用資源群を初期化し、中間コード実行中に資源の確保、解放、操作を担当し資源の量的制限を実現する。中間コードロード部1a4は、二次記憶装置103上の中間コードプログラム群142を仮想マシン内に読み込み、実行に適した処理を施した実行中間コードプログラム群1a5を準備する。中間コード実行モジュール1a6は、読み込まれた実行中間コードプログラム群1a5を実行する。実行中に各種計算機資源の確保、解放、操作が必要になった場合は、資源管理部1a3を通してこれらの処理を遂行する。
仮想マシン管理タスク131は、仮想マシンと使用者とのやり取り調整と、仮想マシンが実行するアプリケーションの削除などを受け持つ。仮想マシン管理タスク131は、資源占有状態リスト132、画面管理部133、音出力管理部134、イベント管理部135、アプリ管理部136などを持つ。資源占有状態リスト132は、画面出力、音出力、使用者からの入力などを占有している仮想マシンを識別するための状態情報を保持する。画面管理部133、音出力管理部134、イベント管理部135は、それぞれ画面出力、音出力、使用者からの入力を担当し、資源占有状態リスト132に従い、仮想マシン1a1、1b1と、表示装置105、音出力装置106、リモコン114などとの入出力情報のやり取りを仲介する。アプリ管理部136は、必要に応じて二次記憶装置103内の中間コードプログラム群142を管理する。資源違反を多発する中間コードプログラムの削除、または最新バージョンへのアップデートなどを受け持つ。
図2に使用資源群1a2の構成例を示す。本実施例において使用資源群1a2は、資源の種類を識別する資源種と、資源種毎に保持された使用資源リストとの対応からなる表データである。例えば、資源種の一つであるスレッドには、現在使用中のスレッド一覧を含むスレッドリスト201が対応づけられている。
図3〜図9に、各資源の使用資源リストの構成例を示す。
図3はスレッドリスト201の構成例を示す。スレッドは、仮想マシン内において、独立して並行動作可能な処理単位を指す。ここでは作成されたスレッドのIDと、各スレッドの実行時間割り当てや実行順序を決定する際に使われる「優先度」の組合せにより、一つのスレッドを示す例を示した。仮想マシン1a1、1b1がスレッドを作成すると、この表にスレッド情報が追加される。仮想マシン1a1、1b1がスレッドを破棄すると、この表から対応するスレッド情報が削除される。スレッドリスト201により、使用中スレッドの個数をカウントすることが可能になる。
図4にファイルリスト202の構成例を示す。ファイルは、二次記憶装置上に格納されるデータを管理する単位を指す。ここでは、各ファイルのファイル名、サイズ、使用するアプリケーション名を対応づけた表形式とした。仮想マシン1a1、1b1の実行するアプリケーションがファイルを作成した時には、ファイル情報がファイルリスト202に追加される。ファイルサイズの変更時にはファイルリスト202の内容が変更される。ファイル削除時には、ファイルリスト202の対応する情報が削除される。ファイルリスト202により、使用ファイルの個数と総サイズをカウントすることが可能になる。ファイルリスト202の情報は電源遮断時にデータファイル群143に記録され、仮想マシン起動時に再び読み込まれる。
図5にパーティションリスト203の構成例を示す。ここでは、二次記憶装置103の持つ各パーティションを示すパーティションIDと、そのパーティションに対するアクセス権の有無の対応からなる表とする。
図6にソケットリスト204の構成例を示す。ソケットは、仮想マシン内で動作するアプリケーションが外部の通信機器と通信するための接続を管理する資源(ソフトウェア資源)を指す。ここでは、使用しているソケットのIDのみからなる表とする例を示した。新たに作成されたソケットはソケットリスト204に追加され、削除されたソケットはソケットリスト204から削除される。
図7にセマフォリスト205の構成例を示す。セマフォは複数のスレッドが同一の資源(ハードウェア資源やソフトウェア資源)にアクセスする時に、整合性を保つために同期を取る機能を提供する資源(ソフトウェア資源)である。ここでは、各セマフォのIDと、そのセマフォの使用状況(使用中/待機中)からなる表とする例を示した。仮想マシン1a1、1b1は、起動時に制限個数のセマフォを確保し、全セマフォを「待機中」としてセマフォリスト205に登録する。セマフォ使用の要求を受けると、セマフォリスト205から待機中のセマフォを探し、状態を使用中に変更し、該セマフォの使用を開始する。セマフォ解放の要求を受けると、実際にはセマフォの解放は実施せず、該セマフォの状態を「待機中」に変更するのみの処理とする。これにより、仮想マシンの実行中はセマフォの新規確保や解放を実行せず、予め確保したセマフォを再利用しながら中間コードを実行できる。
図8にオブジェクト領域206の構成例を示す。本実施例では、インタプリタにより実行される中間コードプログラムは、データをオブジェクトと呼ばれる単位で扱うことを仮定している。図8はオブジェクトを格納するメモリ領域を示す。一つのオブジェクトはオブジェクトID、オブジェクトサイズ、オブジェクト種、オブジェクトデータ領域などから構成される。新たにオブジェクトを確保する時は、オブジェクト領域206の中にそのオブジェクトに必要な領域を確保する。オブジェクトを解放する時は、該オブジェクトのオブジェクトIDを無効なIDとするなどして、オブジェクトが無効となったことを示す。無効となったオブジェクト領域が多くなってくると、使われない小さな領域が多数生まれ、メモリ領域の使用効率が落ちるという問題が発生する。一般にフラグメントと呼ばれるこの問題に対処するために、いわゆるガベージ・コレクションを適用してもよい。ガベージ・コレクションにより、使用中のオブジェクトを移動させて空き領域を一つにまとめ、メモリ領域の再利用が容易になる。
図9に、動的メモリ領域207の構成例を示す。仮想マシン1a1、1b1は、中間コードを実行するために、状況に応じて必要なサイズのメモリ片を動的に確保する。図8は、動的に確保されるメモリ片を用意するためのメモリ領域を示す。各メモリ片は、メモリ片ID、メモリ片サイズ、メモリ片データ領域などからなる。新たにメモリ片を確保する時は、動的メモリ領域207に、そのメモリ片に必要な領域を確保する。メモリ片を解放する時は、該メモリ片のオブジェクトIDを無効なIDとするなどして、オブジェクトが無効となったことを示す。オブジェクト領域206と同様に、フラグメントの問題に対処するために、ガベージ・コレクションを動的メモリ領域207に適用してもよい。
上に述べたデータ構成を用いて、各仮想マシンは実行中に使用するソフトウェア資源やハードウェア資源である計算機資源の量を管理できる。上記の構成はあくまで一例であり、カウンタを用いて個数を保持する、リストを用いて複数の資源を管理するなどの構成も考えられる。また、上記に示した以外の計算機資源が、使用資源群1a2、1b2に含まれていてもよい。
図10に資源占有状態リスト132の構成例を示す。ここでは、資源の種類を示す値と、その資源を使用している仮想マシンのIDの対からなる表とした。画面、リモコン、音源などの資源は、同時に一つの仮想マシンのみから使用可能である。資源占有状態リスト132により、当該の資源を使用している仮想マシンを判断する。図10は画面を仮想マシン1a1が、音源を仮想マシン1b1が占有しており、リモコンはどの仮想マシンも占有していない状況を示している。仮想マシンが資源の占有を放棄する場合、各資源の管理部は資源占有状態リスト132内の使用仮想マシンIDを、「なし」とする。各仮想マシンが資源の占有を要求し、各資源の管理部が占有を許す判断を下した場合、状態リスト132内の使用仮想マシンIDを当該仮想マシンのIDに変更する。上記に示した以外の、仮想マシンにより占有される計算機資源が資源占有状態リスト132に含まれていてもよい。
図11に安全性検査済み中間コードリスト138の構成例を示す。中間コードリスト138は安全性検査が完了した中間コード列の情報を保持する表である。ここでは、プログラム名と中間コード列名により中間コード列を特定し、中間コード列単位で安全性検査を実施する。また、安全性検査を実施した仮想マシンのIDも保持する。仮想マシン1a1はこの表を参照し、これから検査を実施しようとする中間コード列が、仮想マシン1b1によりすでに検査されている場合、検査処理を省略する。同様に仮想マシン1b1も、仮想マシン1a1がすでに検査を実施した中間コード列の検査を省略できる。
図12と図13に中間コードプログラム群142の構成例を示す。中間コードプログラム群142は、仮想マシン1a1、1b1が実行する中間コードプログラムと、各中間コードプログラムに付随する情報を保持する。図12に示す例では、中間コードプログラム群142は、仮想マシンIDと、各仮想マシンが保持する中間コードプログラムリスト120a、120bから構成される。
図13に仮想マシン固有中間コードプログラムリスト120a、120bの詳細を示す。本リストはプログラム名、開発元情報、プログラムコードなどから構成される。プログラムリスト120aは仮想マシン1a1の実行する中間コードプログラムを保持する。ここでは車載端末が提供する基本的な機能であるナビゲーション、空調管理、車体故障監視などのアプリケーションが登録されている。これらのアプリケーションは車内ネットワーク121を通じて空調制御装置111、走行状態監視装置112、ブレーキ状態監視装置113などにアクセスし、車両の走行や車両の状態に関係する重要なサービスを提供する。プログラムコードは、実際に中間コードプログラムを構成する中間コード列などを格納している。プログラムリスト120bは、音楽再生、地域店舗検索、ニュース配信など、車両と直接関連しないアプリケーションが含まれる。これらのアプリケーションは様々な開発元から、アプリ管理サーバや車外ネットワークなどを通じて車載端末101に送信される。
図14に、資源制限データ144の構成例を示す。資源制限データ144は各仮想マシンのIDと、該仮想マシンに固有の資源制限リスト140a、140bなどから構成される。これらの資源制限リスト140a、140bは車載情報端末等の出荷時に予め設定することができる。
図15に仮想マシン固有資源制限リスト140a、140bの詳細を示す。本リストは資源種とその資源に対応する制限値や、小規模、中規模など、制限違反の規模(違反レベル)を判定するための基準値などから構成される。例えば、仮想マシン固有資源制限リスト140aは、資源種「作成スレッド数」に対応する制限値に32が指定されており、スレッドの作成が32個まで許されることを示している。また、小規模判定基準には「1」という値が設定されており、これは制限値よりも1個多いスレッドを作成した場合に、違反が小規模であると判定することを示している。また、中規模判定基準に「4」という値が設定されており、小規模の違反後に処理を続行し、スレッドを基準値よりも4個多く作成した場合(+2〜+4の範囲)に、違反を中規模と判定することを示す。中規模判定基準よりも多くのスレッドを余分に作成した場合(+5以上)、違反を大規模と判定する。ここに示したような基準値により違反の程度を分類することで、違反発生時の処理を変更できる。小規模の違反は、違反を使用者に通知するだけだが、中規模の違反が発生した時には仮想マシンを強制終了し、大規模の違反が発生した場合には当該アプリケーションをアンインストールするなど、規模に応じた処理が可能になる。
スレッド数と同様に、作成できるファイル数は128個、総ファイルサイズは2048キロバイトに制限する例となっている。アクセス可パーティションは、各仮想マシンによる読み出し、書き込みが許されるパーティションを指定するデータである。パーティションは、二次記憶装置103の持つ記憶領域を構成するデータ領域の単位であり、ファイルなどのデータはいずれかのパーティションに含まれる。本実施例ではパーティション「番号0」に基本プログラム群141などの最重要データが、バーティション「番号1」に車両情報や個人情報などの重要データが、パーティション「番号2」に、その他の一般データが格納されている状況を想定する。仮想マシン1a1は、パーティション「番号1」、とパーティション「番号2」の両方にアクセス可能であるが、仮想マシン1b1は、パーティション「番号2」のみにアクセスが許される例となっている。パーティション「番号0」については、仮想マシン1a1や仮想マシン1b1の起動時にOS139によりアクセスされるが、仮想マシン1a1、1b1の実行中にはいずれの仮想マシンからもアクセス不可の設定とされている。そして、図15の140bは、仮想マシン1b1によりパーティション「番号1」へアクセスされた場合には小規模と判定し、パーティション「番号0」へアクセスされた場合には中規模と判定する判定基準を例示している。ネットワーク接続に使われるソケットの数、排他制御に使われるセマフォの数の制限値も指定されている。オブジェクトの総サイズは4096キロバイト、動的に確保されるメモリのサイズは256キロバイトに制限されている。もちろん、ここに示した資源種以外の制限データが含まれていてもよい。また、違反レベルも3段階基準に限らず、他の複数段階レベルで実現することもできる。
図15に示した構成図140aと構成図140bは、それぞれ仮想マシン1a1、仮想マシン1b1に対する資源制限情報を示している。ここでは、仮想マシン1a1をより重要なアプリケーションを実行する仮想マシンとし、仮想マシン1b1を比較的重要度の低いアプリケーションを実行する仮想マシンと想定している。このため、重要な仮想マシン1a1の資源制限は緩やかに設定し、重要度の低い仮想マシン1b1の資源制限を厳しく設定している。これは、仮想マシン1b1が資源不足により実行継続不可となるよりも、仮想マシン1a1が実行継続不可となるほうがより大きな問題となるためである。
図16に資源違反履歴145の構成例を示す。資源違反履歴145は、違反日時、違反の発生した仮想マシンID、違反発生時に実行していたアプリケーション、違反した資源制限、違反の規模などの情報を保持する。図16の例における、2000年1月4日、23時25分に発生した資源制限違反の履歴情報は、仮想マシン1b1が音楽再生アプリを実行中に動的確保メモリの制限に違反し、制限値よりも32バイト多い領域を確保しようとしたことを記録している。仮想マシン1a1、1b1などが資源制限の違反を検知すると、その違反に関する情報を資源違反履歴145に追加する。
図17に違反時処理設定146の構成例を示す。ここでは、仮想マシンIDと、当該仮想マシンが制限に違反した時の処理を記述した処理リスト170a、170bからなる構成とした。
図18に各仮想マシンの制限違反発生時処理リストの構成例を示す。図18に示した構成例では、違反回数により処理内容を変更可能なリストとなっており、資源種と違反回数、そして、仮想マシン停止、アプリ削除、使用者通知、サーバ通知などの処理内容から構成される。仮想マシン1a1に適用される170aの例では、作成スレッド数に対する違反が3回発生した時には、仮想マシンを停止し、使用者に違反内容を通知し、アプリ管理サーバ116に違反の発生を通知する。しかし、発生時に動作していたアプリケーションは削除しない。ファイルサイズに対する制限違反が1回発生した時、仮想マシンは停止しない。しかし、ファイルサイズに対する制限違反が累積10回発生すると、仮想マシンを停止する処理が実行される。仮想マシン1b1には、処理リスト170bが適用される。ここでは、仮想マシン1b1における資源確保が仮想マシン1a1に影響を与えないよう、仮想マシン1b1に対してより厳しい処理を適用する例を示している。例えば、作成スレッド数は1回の違反発生により、直ちに仮想マシンを停止する。
図19に各仮想マシンの制限違反発生時処理リストの構成例を、もう一つ示す。図19に示した構成例では、違反規模により処理内容を変更可能なリストとなっており、資源種と違反規模、そして、仮想マシン停止、アプリ削除、使用者通知、サーバ通知などの処理内容から構成される。仮想マシン1a1に適用される170aの例では、作成スレッド数に対する違反が発生した時は、違反規模を考慮しない設定となっている。ファイルサイズに対する違反は、規模に応じて処理内容が異なる。規模「小」の場合は使用者に通知するのみだが、規模「中」の場合は使用者通知に加えて仮想マシン停止、サーバ通知の処理が実行される。規模「大」の場合は、さらにアプリ削除が実行される。仮想マシン1b1には、処理リスト170bが適用され、ここでも仮想マシン1a1よりも厳しい処理を適用する例を示した。
上記、図18や図19に示した例により、各仮想マシンにおける資源違反発生時の処理内容を、きめ細かく変更可能となる。各仮想マシンの重要度、実行されるアプリケーションの重要度、各資源の量、制限違反頻度、制限違反規模などに応じて、処理を変更することで、より安定したアプリケーションの実行が可能になる。上記の図18、図19では、それぞれ違反回数、違反規模の基づいた処理内容について記述したが、違反回数と違反規模の両方に応じて処理内容を記述してもよい。違反回数、違反規模の他にも、違反頻度、開発元などに応じて処理内容を変更してもよい。
図20〜図32を用いて、本実施例における処理フローの一例を示す。車載端末101は、電源が投入されると仮想マシン1a1、1b1、および仮想マシン管理タスク131を含む複数のタスクが起動される。図20に各仮想マシン起動後の処理を示す。
処理2001:
中間コードプログラム実行中に使用する資源の量を制限するため、資源制限データ144を読み込む。必要に応じて、資源管理のために必要な初期化処理も実行する。
処理2002:
実行対象となる中間コードプログラム142を読み込み、実行可能の状態とし、一次記憶装置内に実行中間コードプログラム1a5として配置する。
処理2003:
実行中間コードプログラム1a5を実行する。実行中に使用する資源量を監視しながら実行する。
処理2001:
中間コードプログラム実行中に使用する資源の量を制限するため、資源制限データ144を読み込む。必要に応じて、資源管理のために必要な初期化処理も実行する。
処理2002:
実行対象となる中間コードプログラム142を読み込み、実行可能の状態とし、一次記憶装置内に実行中間コードプログラム1a5として配置する。
処理2003:
実行中間コードプログラム1a5を実行する。実行中に使用する資源量を監視しながら実行する。
ここでは中間コードプログラムの読込み後に実行を開始するフローを示したが、プログラムの実行中に、中間コードプログラムを追加して読込んでもよい。
図21に資源制限データ読込み処理2001のフローを例示する。本処理では、資源制限データ144を順次読み込んでいく。
処理2101:
図15に示された作成スレッド数の制限値と規模判定基準を読み込む。
処理2102:
図15に示された作成ファイル数、ファイルサイズ、アクセス可パーティションの制限値と規模判定基準を読み込む。また、前回終了時に保存したファイルリスト202を、データファイル群143から読込む。
処理2103:
図15に示された作成ソケット数の制限値と規模判定基準を読み込む。
処理2104:
図15に示された作成セマフォ数の制限値と規模判定基準を読み込む。
制限値と同数のセマフォを作成する。セマフォリスト204を作成し、作成したセマフォをセマフォリスト204に登録する。
処理2105:
図15に示されたオブジェクト総サイズの制限値と規模判定基準を読み込む。
制限値と同サイズのオブジェクト領域206を作成する。
処理2106:
図15に示された動的確保メモリサイズの制限値と規模判定基準を読み込む。
制限値と同サイズの動的メモリ領域207を作成する。
処理2101:
図15に示された作成スレッド数の制限値と規模判定基準を読み込む。
処理2102:
図15に示された作成ファイル数、ファイルサイズ、アクセス可パーティションの制限値と規模判定基準を読み込む。また、前回終了時に保存したファイルリスト202を、データファイル群143から読込む。
処理2103:
図15に示された作成ソケット数の制限値と規模判定基準を読み込む。
処理2104:
図15に示された作成セマフォ数の制限値と規模判定基準を読み込む。
制限値と同数のセマフォを作成する。セマフォリスト204を作成し、作成したセマフォをセマフォリスト204に登録する。
処理2105:
図15に示されたオブジェクト総サイズの制限値と規模判定基準を読み込む。
制限値と同サイズのオブジェクト領域206を作成する。
処理2106:
図15に示された動的確保メモリサイズの制限値と規模判定基準を読み込む。
制限値と同サイズの動的メモリ領域207を作成する。
図22に中間コード読込み処理2002のフローを例示する。
処理2201:
この中間コード読込み処理において、読込むべき中間コードメソッドのリストを取得する。これは、仮想マシンが実行するアプリケーションによって決定される。
処理2202:
前記リストから中間コードメソッドを一つ選択し、これを読込む。
処理2203:
読込んだ中間コードメソッドに対し、安全性検査を実施済みかどうか、安全性検査済み中間コードリスト138を検索してチェックする。検査実施済みであれば処理2207に進み、未実施であれば処理2204に進む。
処理2204:
安全性を検査する。検査項目には、不正な命令コードを含んでいないか、命令コード列の整合性は取れているか、不正なアドレスにアクセスする命令列となっていないか、などのチェックが含まれる。
処理2205:
前記安全性検査処理2204にパスした場合は処理2206に、パスしなかった場合は2209に進む。
処理2206:
安全性検査済み中間コードリスト138に、当該メソッドが安全性検査にパスしたこと示す情報を追加する。
処理2207:
読込んだ中間コードメソッドを実行可能な状態とし、実行中間コードプログラム群1a5に含める。
処理2208:
全メソッドの読込みが完了していれば処理を終了し、完了していなければ処理2202に戻る。
処理2209:
安全性検査にパスしなかった事を通知する。使用者に検査結果を示し、アプリケーションの起動または実行中断を指示する。さらに、アプリ管理サーバ116に通知し、アプリ開発元などに安全性検査の結果を知らせる。
処理2201:
この中間コード読込み処理において、読込むべき中間コードメソッドのリストを取得する。これは、仮想マシンが実行するアプリケーションによって決定される。
処理2202:
前記リストから中間コードメソッドを一つ選択し、これを読込む。
処理2203:
読込んだ中間コードメソッドに対し、安全性検査を実施済みかどうか、安全性検査済み中間コードリスト138を検索してチェックする。検査実施済みであれば処理2207に進み、未実施であれば処理2204に進む。
処理2204:
安全性を検査する。検査項目には、不正な命令コードを含んでいないか、命令コード列の整合性は取れているか、不正なアドレスにアクセスする命令列となっていないか、などのチェックが含まれる。
処理2205:
前記安全性検査処理2204にパスした場合は処理2206に、パスしなかった場合は2209に進む。
処理2206:
安全性検査済み中間コードリスト138に、当該メソッドが安全性検査にパスしたこと示す情報を追加する。
処理2207:
読込んだ中間コードメソッドを実行可能な状態とし、実行中間コードプログラム群1a5に含める。
処理2208:
全メソッドの読込みが完了していれば処理を終了し、完了していなければ処理2202に戻る。
処理2209:
安全性検査にパスしなかった事を通知する。使用者に検査結果を示し、アプリケーションの起動または実行中断を指示する。さらに、アプリ管理サーバ116に通知し、アプリ開発元などに安全性検査の結果を知らせる。
図23に、中間コードプログラム実行処理2003のフローを例示する。
処理2301:
中間コード命令を一つずつ解釈実行するなどして、中間コードを実行する。
中間コードでは実行できないネイティブ機能の呼出し、または中間コード実行終了が発生するまで中間コードの実行を続ける。ネイティブ機能には、各種資源の確保、解放、操作などの処理が含まれる。
処理2302:
ネイティブ機能の呼出しが発生した場合、当該するネイティブ機能を呼出す。スレッド作成/削除の処理であれば処理2303、ファイル作成/削除/書込みの処理であれば処理2304、ソケット作成/削除の処理であれば処理2305、セマフォの作成/削除の処理であれば処理2306、オブジェクト作成/削除の処理であれば処理2307、動的メモリ確保/解放の処理であれば処理2308に進む。その他のネイティブ機能呼出しであれば、処理2309に進む。
処理2303:
スレッドの数を制限値以内に制限しながら、スレッドを作成または削除する。
処理2304:
ファイルの個数、総ファイルサイズ、アクセス可能なパーティションを制限しながら、ファイルの作成、削除、書込みを実行する。
処理2305:
ソケットの数を制限値以内に制限しながら、ソケットを作成または削除する。
処理2306:
セマフォの数を制限値以内に制限しながら、セマフォを作成または削除する。
処理2307:
オブジェクト総サイズを制限値以内に制限しながら、セマフォを作成または削除する。
処理2308:
動的に確保メモリの総サイズを制限値以内に制限しながら、動的にメモリを確保または解放する。
処理2309:
その他、呼び出されたネイティブ機能を実行する。
処理2310:
上記処理2303〜処理2308による資源操作により、資源制限に違反が発生したかどうかをチェックする。もし違反が発生していた場合は、処理2311に進む。発生していない場合は処理2314に進む。
処理2311:
発生した資源制限違反の内容や、違反履歴などの情報に基づいて、違反に対処するための処理を実行する。
処理2312:
上記処理2311において、仮想マシンの強制終了を実行済みであれば、強制終了処理をもって中間コードの実行を終了する。終了済みでなければ、処理2313に進む。
処理2313:
発生した資源違反を中間コードプログラムにエラーとして通知する。中間コードプログラムはエラーの内容に応じて、エラー対応コードを実行したり、プログラムを終了したりする。
処理2314:
中間コードプログラムの終了を判定する。実行を継続する場合は処理2301に進む。
処理2301:
中間コード命令を一つずつ解釈実行するなどして、中間コードを実行する。
中間コードでは実行できないネイティブ機能の呼出し、または中間コード実行終了が発生するまで中間コードの実行を続ける。ネイティブ機能には、各種資源の確保、解放、操作などの処理が含まれる。
処理2302:
ネイティブ機能の呼出しが発生した場合、当該するネイティブ機能を呼出す。スレッド作成/削除の処理であれば処理2303、ファイル作成/削除/書込みの処理であれば処理2304、ソケット作成/削除の処理であれば処理2305、セマフォの作成/削除の処理であれば処理2306、オブジェクト作成/削除の処理であれば処理2307、動的メモリ確保/解放の処理であれば処理2308に進む。その他のネイティブ機能呼出しであれば、処理2309に進む。
処理2303:
スレッドの数を制限値以内に制限しながら、スレッドを作成または削除する。
処理2304:
ファイルの個数、総ファイルサイズ、アクセス可能なパーティションを制限しながら、ファイルの作成、削除、書込みを実行する。
処理2305:
ソケットの数を制限値以内に制限しながら、ソケットを作成または削除する。
処理2306:
セマフォの数を制限値以内に制限しながら、セマフォを作成または削除する。
処理2307:
オブジェクト総サイズを制限値以内に制限しながら、セマフォを作成または削除する。
処理2308:
動的に確保メモリの総サイズを制限値以内に制限しながら、動的にメモリを確保または解放する。
処理2309:
その他、呼び出されたネイティブ機能を実行する。
処理2310:
上記処理2303〜処理2308による資源操作により、資源制限に違反が発生したかどうかをチェックする。もし違反が発生していた場合は、処理2311に進む。発生していない場合は処理2314に進む。
処理2311:
発生した資源制限違反の内容や、違反履歴などの情報に基づいて、違反に対処するための処理を実行する。
処理2312:
上記処理2311において、仮想マシンの強制終了を実行済みであれば、強制終了処理をもって中間コードの実行を終了する。終了済みでなければ、処理2313に進む。
処理2313:
発生した資源違反を中間コードプログラムにエラーとして通知する。中間コードプログラムはエラーの内容に応じて、エラー対応コードを実行したり、プログラムを終了したりする。
処理2314:
中間コードプログラムの終了を判定する。実行を継続する場合は処理2301に進む。
図24に、スレッド作成/削除処理2303の詳細フローを例示する。スレッド作成であれば処理2401から開始し、スレッド削除であれば処理2405から開始する。
処理2401:
スレッドリスト201を参照し、これまでに作成したスレッドの数が、作成スレッド数未満かどうかをチェックする。未満であれば処理2402に進み、以上であれば処理2404に進む。
処理2402:
スレッドを作成する。作成時にスレッドに優先度を指定する場合は、仮想マシンの重要度に応じてスレッドの優先度を変更してもよい。例えば仮想マシン1a1より仮想マシン1b1が重要である場合は、仮想マシン1a1の作成するスレッドの優先度を、仮想マシン1b1の作成するスレッドの優先度よりも高くするなどである。
処理2403:
作成したスレッドを、スレッドリスト201に登録する。
処理2404:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2405:
スレッドを削除し、資源を解放する。
処理2406:
スレッドリスト201から、削除したスレッドの情報を削除する。
処理2401:
スレッドリスト201を参照し、これまでに作成したスレッドの数が、作成スレッド数未満かどうかをチェックする。未満であれば処理2402に進み、以上であれば処理2404に進む。
処理2402:
スレッドを作成する。作成時にスレッドに優先度を指定する場合は、仮想マシンの重要度に応じてスレッドの優先度を変更してもよい。例えば仮想マシン1a1より仮想マシン1b1が重要である場合は、仮想マシン1a1の作成するスレッドの優先度を、仮想マシン1b1の作成するスレッドの優先度よりも高くするなどである。
処理2403:
作成したスレッドを、スレッドリスト201に登録する。
処理2404:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2405:
スレッドを削除し、資源を解放する。
処理2406:
スレッドリスト201から、削除したスレッドの情報を削除する。
図25に、ファイル作成/削除/書込み処理2304の詳細フローを例示する。ファイル作成は処理2501、ファイル削除は処理2506、ファイル書込みは処理2508から開始する。
処理2501:
ファイルリスト202を参照し、これまでに作成したファイルの個数と総サイズをチェックし、新規にファイルを作成した際に個数と総サイズが制限値をオーバーしないかどうかをチェックする。オーバーしない場合は処理2502に進み、オーバーする場合は処理2505に進む。
処理2502:
ファイルを作成しようとするパーティションが、パーティションリスト203により指定されたアクセス可能なパーティションに含まれているかどうかをチェックする。含まれている場合は処理2503に進む。含まれていない場合は処理2505に進む。
処理2503:
ファイルを作成する。
処理2504:
作成したファイルの情報をファイルリスト202に追加する。
処理2505:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2506:
ファイルを削除する。
処理2507:
削除したファイルの情報をファイルリスト202から削除する。
処理2508:
ファイルリスト202を参照し、ファイル書き込み後の総ファイルサイズをチェックする。総サイズが制限値をオーバーしない場合は、処理2509に進む。オーバーする場合は処理2511に進む。
処理2509:
ファイルにデータを書き込む。
処理2510:
ファイル書き込みによりファイルサイズが変更されたので、ファイルリスト201における当該ファイルの情報を変更する。
処理2511:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2501:
ファイルリスト202を参照し、これまでに作成したファイルの個数と総サイズをチェックし、新規にファイルを作成した際に個数と総サイズが制限値をオーバーしないかどうかをチェックする。オーバーしない場合は処理2502に進み、オーバーする場合は処理2505に進む。
処理2502:
ファイルを作成しようとするパーティションが、パーティションリスト203により指定されたアクセス可能なパーティションに含まれているかどうかをチェックする。含まれている場合は処理2503に進む。含まれていない場合は処理2505に進む。
処理2503:
ファイルを作成する。
処理2504:
作成したファイルの情報をファイルリスト202に追加する。
処理2505:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2506:
ファイルを削除する。
処理2507:
削除したファイルの情報をファイルリスト202から削除する。
処理2508:
ファイルリスト202を参照し、ファイル書き込み後の総ファイルサイズをチェックする。総サイズが制限値をオーバーしない場合は、処理2509に進む。オーバーする場合は処理2511に進む。
処理2509:
ファイルにデータを書き込む。
処理2510:
ファイル書き込みによりファイルサイズが変更されたので、ファイルリスト201における当該ファイルの情報を変更する。
処理2511:
資源制限違反の発生を、処理の呼び出し元に通知する。
図26に、ソケット作成/削除処理2305の詳細フローを例示する。ソケット作成は処理2601から、ソケット削除は処理2605から開始する。
処理2601:
ソケットリスト204を参照し、これまでに作成したソケットの個数をチェックし、新規にソケットを作成した際に個数が制限値をオーバーしないかどうかをチェックする。オーバーしない場合は処理2602に進み、オーバーする場合は処理2604に進む。
処理2602:
ソケットを作成する。
処理2603:
作成したソケットを、ソケットリスト204に登録する。
処理2604:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2605:
ソケットを削除する。
処理2606:
削除したソケットの情報をソケットリスト204から削除する。
処理2601:
ソケットリスト204を参照し、これまでに作成したソケットの個数をチェックし、新規にソケットを作成した際に個数が制限値をオーバーしないかどうかをチェックする。オーバーしない場合は処理2602に進み、オーバーする場合は処理2604に進む。
処理2602:
ソケットを作成する。
処理2603:
作成したソケットを、ソケットリスト204に登録する。
処理2604:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2605:
ソケットを削除する。
処理2606:
削除したソケットの情報をソケットリスト204から削除する。
図27に、セマフォ作成/削除処理2306の詳細フローを例示する。セマフォ作成は処理2701から、セマフォ削除は処理2704から開始する。
処理2701:
セマフォリスト205を参照し、使用状態が「待機中」であるセマフォを検索する。見つかった場合は処理2702に進み、見つからない場合は処理2703に進む。
処理2702:
上記処理2701で見つかったセマフォの使用状態を「待機中」から「使用中」とするために、セマフォリスト205を変更する。当該セマフォのIDを、呼び出し元に戻す。
処理2703:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2704:
削除対象セマフォの情報をセマフォリスト205から検索し、当該セマフォの使用状態を「使用中」から「待機中」とするために、セマフォリスト205を変更する。
処理2701:
セマフォリスト205を参照し、使用状態が「待機中」であるセマフォを検索する。見つかった場合は処理2702に進み、見つからない場合は処理2703に進む。
処理2702:
上記処理2701で見つかったセマフォの使用状態を「待機中」から「使用中」とするために、セマフォリスト205を変更する。当該セマフォのIDを、呼び出し元に戻す。
処理2703:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2704:
削除対象セマフォの情報をセマフォリスト205から検索し、当該セマフォの使用状態を「使用中」から「待機中」とするために、セマフォリスト205を変更する。
図28に、オブジェクト作成/削除処理2307の詳細フローを例示する。オブジェクト作成は処理2801から、オブジェクト削除は処理2804から開始する。
処理2801:
オブジェクト領域206を参照し、空き領域のサイズが、これから作成するオブジェクトを確保に十分なサイズであることを確認する。十分である場合は処理2802に進み、不足である場合は処理2803に進む。
処理2802:
新しいオブジェクトの、オブジェクトID、オブジェクトサイズ、オブジェクト種、オブジェクトデータなどをオブジェクト領域206に書き込み、新しいオブジェクトを確保する。
処理2803:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2804:
削除対象オブジェクトをオブジェクト領域206から検索し、当該オブジェクトのオブジェクトIDを、未使用であることを示す値に変更する。
処理2801:
オブジェクト領域206を参照し、空き領域のサイズが、これから作成するオブジェクトを確保に十分なサイズであることを確認する。十分である場合は処理2802に進み、不足である場合は処理2803に進む。
処理2802:
新しいオブジェクトの、オブジェクトID、オブジェクトサイズ、オブジェクト種、オブジェクトデータなどをオブジェクト領域206に書き込み、新しいオブジェクトを確保する。
処理2803:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2804:
削除対象オブジェクトをオブジェクト領域206から検索し、当該オブジェクトのオブジェクトIDを、未使用であることを示す値に変更する。
また、必要に応じてガベージ・コレクションを実行し、有効なオブジェクトを移動して未使用状態となったオブジェクトの領域をまとめ、空き領域に統合してもよい。ガベージ・コレクションの処理は、処理2801や、処理2804などに含めてもよいし、独立した別の処理として実行してもよい。
図29に、動的メモリ確保/解放処理2308の詳細フローを例示する。動的メモリ確保は処理2901から、動的メモリ解放は処理2904から開始する。
処理2901:
動的メモリ領域207を参照し、空き領域のサイズが、これから確保するメモリ片の確保に十分なサイズであることを確認する。十分である場合は処理2902に進み、不足である場合は処理2903に進む。
処理2902:
新しいメモリ片の、メモリ片ID、メモリ片サイズなどを動的メモリ領域207に書き込み、新しいオブジェクトを確保する。
処理2903:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2904:
解放対象メモリ片を動的メモリ領域207から検索し、当該メモリ片のIDを、未使用であることを示す値に変更する。
処理2901:
動的メモリ領域207を参照し、空き領域のサイズが、これから確保するメモリ片の確保に十分なサイズであることを確認する。十分である場合は処理2902に進み、不足である場合は処理2903に進む。
処理2902:
新しいメモリ片の、メモリ片ID、メモリ片サイズなどを動的メモリ領域207に書き込み、新しいオブジェクトを確保する。
処理2903:
資源制限違反の発生を、処理の呼び出し元に通知する。
処理2904:
解放対象メモリ片を動的メモリ領域207から検索し、当該メモリ片のIDを、未使用であることを示す値に変更する。
また、オブジェクトの作成/削除の処理と同様に、必要に応じてガベージ・コレクションを実行し、有効なメモリ片を移動して未使用状態となったメモリ片領域をまとめ、空き領域に統合してもよい。ガベージ・コレクションの処理は、処理2901や、処理2904などに含めてもよいし、独立した別の処理として実行してもよい。
図30に資源制限違反処理2311の処理手順を示す。
処理3001:
資源違反履歴145に、発生した制限違反に関する情報を保存する。
処理3002:
資源違反履歴145と、違反時処理設定146を参照し、仮想マシンの停止処理が必要かどうかを判断する。例えば作成スレッド数の制限違反が発生した時に図18の170aに示した違反時処理設定146を参照する場合、作成スレッド数違反の回数が3回に達していれば仮想マシンの停止処理が必要である。作成スレッド数違反の回数は、資源違反履歴145を参照することでカウントできる。
また、ファイルサイズ制限違反が発生した時に図19の170aを参照する場合、発生した違反の規模が「小」であれば仮想マシンの停止処理は不要であり、規模が「中」および「大」であれば、仮想マシンの停止処理が必要である。
停止処理が必要であれば処理3003に進み、不要であれば処理3004に進む。
処理3003:
仮想マシンを停止する。停止にあたり、仮想マシンで用いていた資源を漏れなく解放する。
処理3004:
資源違反履歴145と、違反時処理設定146を参照し、アプリケーション削除処理が必要かどうかを判断する。必要であれば処理3005に進み、不要であれば処理3006に進む。
処理3005:
制限違反発生時に実行していたアプリケーションを削除する。ここでは、削除処理は仮想マシン管理タスク131の持つアプリ管理部136が実行する構成とし、アプリ管理部136に当該アプリケーションの削除依頼を通知する。
処理3006:
資源違反履歴145と、違反時処理設定146を参照し、制限違反発生を使用者へ通知する必要があるかどうかを判断する。必要であれば処理3007に進み、不要であれば処理3008に進む。
処理3007:
表示装置105や音出力装置106などを通じ、使用者に制限違反発生を通知する。違反回数、違反規模、資源違反発生に対処するための処理内容などを、合わせて通知してもよい。
処理3008:
資源違反履歴145と、違反時処理設定146を参照し、制限違反発生をアプリ管理サーバへ通知する必要があるかどうかを判断する。必要であれば処理3009に進み、不要であれば資源制限違反処理2311を終了する。
処理3009:
アプリ管理サーバ116に制限違反発生を通知する。アプリ管理サーバ116は受信した通知を、アプリケーションの開発元へ随時または定期的に報告する。制限に違反したアプリケーションが、より新しいバージョンに更新されている場合、アプリ管理サーバ116は最新のアプリケーションを車載端末101に配信する。
処理3001:
資源違反履歴145に、発生した制限違反に関する情報を保存する。
処理3002:
資源違反履歴145と、違反時処理設定146を参照し、仮想マシンの停止処理が必要かどうかを判断する。例えば作成スレッド数の制限違反が発生した時に図18の170aに示した違反時処理設定146を参照する場合、作成スレッド数違反の回数が3回に達していれば仮想マシンの停止処理が必要である。作成スレッド数違反の回数は、資源違反履歴145を参照することでカウントできる。
また、ファイルサイズ制限違反が発生した時に図19の170aを参照する場合、発生した違反の規模が「小」であれば仮想マシンの停止処理は不要であり、規模が「中」および「大」であれば、仮想マシンの停止処理が必要である。
停止処理が必要であれば処理3003に進み、不要であれば処理3004に進む。
処理3003:
仮想マシンを停止する。停止にあたり、仮想マシンで用いていた資源を漏れなく解放する。
処理3004:
資源違反履歴145と、違反時処理設定146を参照し、アプリケーション削除処理が必要かどうかを判断する。必要であれば処理3005に進み、不要であれば処理3006に進む。
処理3005:
制限違反発生時に実行していたアプリケーションを削除する。ここでは、削除処理は仮想マシン管理タスク131の持つアプリ管理部136が実行する構成とし、アプリ管理部136に当該アプリケーションの削除依頼を通知する。
処理3006:
資源違反履歴145と、違反時処理設定146を参照し、制限違反発生を使用者へ通知する必要があるかどうかを判断する。必要であれば処理3007に進み、不要であれば処理3008に進む。
処理3007:
表示装置105や音出力装置106などを通じ、使用者に制限違反発生を通知する。違反回数、違反規模、資源違反発生に対処するための処理内容などを、合わせて通知してもよい。
処理3008:
資源違反履歴145と、違反時処理設定146を参照し、制限違反発生をアプリ管理サーバへ通知する必要があるかどうかを判断する。必要であれば処理3009に進み、不要であれば資源制限違反処理2311を終了する。
処理3009:
アプリ管理サーバ116に制限違反発生を通知する。アプリ管理サーバ116は受信した通知を、アプリケーションの開発元へ随時または定期的に報告する。制限に違反したアプリケーションが、より新しいバージョンに更新されている場合、アプリ管理サーバ116は最新のアプリケーションを車載端末101に配信する。
上記の例では、制約を設けた資源のうち、スレッド、ファイル、ソケットについては確保、解放、操作の実行時に資源の量を随時記録し、制約違反をチェックする方式を取った。一方、セマフォ、オブジェクト、動的メモリについては予め資源を確保しておき、実際に資源が必要になったときは確保済みの資源の中から必要な分を切りだす方式を取った。しかし、各資源について、どちらの方式を用いても量的制限を実現可能である。
図31に仮想マシン停止処理3003の処理手順を例示する。
処理3101:
仮想マシン停止前に解放すべき資源を一つ、使用資源群1a2、または1b2から選択する。
処理3102:
選択した資源に対応する使用資源リストを参照し、確保している資源を解放する。例えばスレッドであれば、スレッドリスト201を参照し、全スレッドを解放する。ファイルリスト202は、データファイル群143にそのまま記録し、次回の起動に備える。ソケットはソケットリスト204、セマフォはセマフォリスト205を参照して同様に解放する。オブジェクト領域206、動的メモリ領域207は、領域全体を解放する。
処理3103:
全ての資源の解放を完了したら、処理を終了する。完了していない場合は処理3101に戻る。
処理3101:
仮想マシン停止前に解放すべき資源を一つ、使用資源群1a2、または1b2から選択する。
処理3102:
選択した資源に対応する使用資源リストを参照し、確保している資源を解放する。例えばスレッドであれば、スレッドリスト201を参照し、全スレッドを解放する。ファイルリスト202は、データファイル群143にそのまま記録し、次回の起動に備える。ソケットはソケットリスト204、セマフォはセマフォリスト205を参照して同様に解放する。オブジェクト領域206、動的メモリ領域207は、領域全体を解放する。
処理3103:
全ての資源の解放を完了したら、処理を終了する。完了していない場合は処理3101に戻る。
図32に、アプリ削除処理の処理手順を例示する。アプリ管理部136は、処理3005によるアプリ削除要求を受信し、アプリ削除処理を開始する。
処理3201:
削除対象アプリケーションに属する中間コードプログラムを、中間コードプログラム群142から削除する。例えば、仮想マシン1b1の実行する音楽再生アプリを削除する場合は、図13に示した120bに含まれる、音楽再生アプリに関する情報を、プログラムコードも含めて削除する。
処理3202:
ファイルリスト202を参照し、削除対象アプリケーションの作成したファイルを選択する。
処理3203:
選択したファイルを削除する。
処理3204:
削除したファイルに関する情報を、ファイルリスト202から削除する。
処理3205:
削除対象アプリケーションの作成したファイルを全て削除完了したかどうか、ファイルリスト202を参照して判定する。完了した場合は処理を終了し、未完の場合は処理3202に進む。
処理3201:
削除対象アプリケーションに属する中間コードプログラムを、中間コードプログラム群142から削除する。例えば、仮想マシン1b1の実行する音楽再生アプリを削除する場合は、図13に示した120bに含まれる、音楽再生アプリに関する情報を、プログラムコードも含めて削除する。
処理3202:
ファイルリスト202を参照し、削除対象アプリケーションの作成したファイルを選択する。
処理3203:
選択したファイルを削除する。
処理3204:
削除したファイルに関する情報を、ファイルリスト202から削除する。
処理3205:
削除対象アプリケーションの作成したファイルを全て削除完了したかどうか、ファイルリスト202を参照して判定する。完了した場合は処理を終了し、未完の場合は処理3202に進む。
上述の実施例に示したように、本発明により、複数の仮想マシンが実行される車載端末において、仮想マシンによる計算機資源の過度の確保が、他の仮想マシンや他のタスクの動作に対して与える影響を無くすか、または最小限に留めることができる。
また、資源の過度な消費を繰返すアプリケーションや、制限を大きく越えた極度の消費を実行しようとしたアプリケーションを車載端末から削除することにより、このようなアプリケーションによる資源消費を予防することが可能である。また、過度の資源消費を使用者に通知することで、当該アプリケーションの使用回避を使用者に促したり、過度の資源消費をアプリ管理サーバに通知することで、アプリ開発元による対策や、資源消費問題の改善されているアプリケーション最新バージョンのダウンロードを促進したりすることで、過度の資源消費の再発を予防することも可能である。
また、すでに別の仮想マシンによって検査が実施されている中間コードの安全性検査処理を省略することで、中間コードロード処理の短縮が可能である。
次に、本発明を実現する第2の実施例を、図33を用いて説明する。
図33に、本実施例におけるシステムの全体構成を示す。
本システムは第1の実施例と同様に、主に車載端末101から構成される。車載端末101と周辺装置、ネットワークとの関係は第1の実施例と同様である。車載端末101内の構成も第1の実施例と同様であるが、一次記憶装置102に配置され、中央演算装置104により実行されるタスク群が異なっている。本例では仮想マシンは1a1のみである。仮想マシンが複数存在しないため、仮想マシン間で共有される安全性検査済み中間コードリスト138や、競合を管理するために仮想マシン管理タスク131が持っていた画面管理部132、音出力管理部134、イベント管理部135などは省かれている。
上記のように、第1の実施例と比較して省かれている部位が存在するため、それらの部位の関連する機能は実現できない。例えば、検査済み中間コードの再検査省略による中間コードロード時間の短縮は実現できない。また、仮想マシンが一つのみしか存在しないため、表示画面105、音出力装置106などへの出力や、リモコン114などからの入力を使用する仮想マシンの競合管理は不要となる。
しかし、第1の実施例と同様に仮想マシン1a1の確保、使用する資源の量的な制限は省かれた部位に関連しないため、本実施例においても依然として実現可能である。
よって、本発明を単一の仮想マシンを実行する車載端末に適用することで、仮想マシンによる計算機資源の過度の確保が、他のタスクの動作に与える影響を無くすか、または最小限に留めることができる。
また、資源の過度な消費を繰返すアプリケーションや、制限を大きく越えた極度の消費を実行しようとしたアプリケーションを車載端末から削除することにより、このようなアプリケーションによる資源消費の予防が可能である。過度の資源消費の使用者への通知によって当該アプリケーションの使用回避を使用者に促したり、過度の資源消費をアプリ管理サーバに通知し、アプリ開発元による対策や、資源消費問題の改善されているアプリケーション最新バージョンのダウンロードを促進したりすることなどによる、過度の資源消費の再発予防も可能である。
自動車向け車載端末など、比較的計算機資源の豊富であり、アプリケーションの並列実行が求められる組込み機器に適用される可能性が高い。車載端末以外にも、テレビやハードディスクレコーダなどのAV機器に中間コード技術が適用されると、本発明が適用される可能性がある。また、携帯電話、PDAなどの携帯端末の高機能化も進んでおり、携帯端末への適用も有望である。
101…車載端末、102…一次記憶装置、103…二次記憶装置、104…中央演算装置、105…表示装置、106…音出力装置、107…車内通信装置、108…リモコン通信装置、109…車外通信装置、111…空調制御装置、112…走行状態監視装置、113…ブレーキ状態監視装置、114…リモコン、115…携帯電話、116…アプリ管理サーバ、121…車内ネットワーク、122…車外ネットワーク、1a1…仮想マシン、1a2…使用資源群、1a3…資源管理部、1a4…中間コードロード部、1a5…実行中間コードプログラム群、1a6…中間コード実行部、1b1…仮想マシン、1b2…使用資源群、1b3…資源管理部、1b4…中間コードロード部、1b5…中間コードプログラム群、1b6…中間コード実行部、131…仮想マシン管理タスク、132…資源占有状態リスト、133…画面管理部、134…音出力管理部、135…イベント管理部、136…アプリ管理部、137…その他のタスク、139…オペレーティング・システム(OS)、141…基本プログラム群、142…中間コードプログラム群、143…データファイル群、144…資源制限データ、145…資源違反履歴、146…違反時処理設定
Claims (10)
- 中間コードにより表現されたプログラムを実行する仮想マシンを備える車載情報端末であって、
記憶部に記憶された実行時に用いる計算機資源に関する資源制限データを仮想マシン起動時に読み込む手段と、
複数の仮想マシンを演算処理部により並行して実行する手段と、
前記複数の仮想マシンのいずれか1の仮想マシン上で実行されるプログラムの資源割当て要求が前記資源制限データの制限値を超える場合に、対応した違反処理手続を実行する手段と、
を有することを特徴とする車載情報端末。 - 中間コードにより表現されたプログラムを実行する仮想マシンを備える車載情報端末であって、
記憶部に記憶された実行時に用いる計算機資源に関する資源制限データを仮想マシン起動時に読み込む手段と、
複数の仮想マシンを演算処理部により並行して実行する手段と、
前記複数の仮想マシンのいずれか1の仮想マシン上で実行されるプログラムの資源割当て要求が前記資源制限データの制限値を超える場合に、当該資源に関する違反回数をカウントする手段と、
を有することを特徴とする車載情報端末。 - 中間コードにより表現されたプログラムを実行する仮想マシンを備える車載情報端末であって、
記憶部に記憶された実行時に用いる計算機資源に関する資源制限データを仮想マシン起動時に読み込む手段と、
複数の仮想マシンを演算処理部により並行して実行する手段と、
前記複数の仮想マシンのいずれか1の仮想マシン上で実行されるプログラムの資源割当て要求が前記資源制限データの制限値を超える場合に、当該資源に関する違反レベルを判定する手段と、
を有することを特徴とする車載情報端末。 - 請求項2に記載の車載情報端末であって、
記憶部に記憶された違反時の対処手続を定めた違反時処理データを仮想マシン起動時に読み込む手段を有し、
前記違反回数が前記違反時処理データの基準値を超えた場合に、対応した違反処理手続を実行することを特徴とする車載情報端末。 - 請求項3に記載の車載情報端末であって、
記憶部に記憶された違反時の対処手続を定めた違反時処理データを仮想マシン起動時に読み込む手段を有し、
前記違反時処理データに定める違反レベルに対応した違反処理手続を実行することを特徴とする車載情報端末。 - 請求項1記載の車載情報端末であって、
仮想マシンが内部で使用する計算機資源を管理する手段と、
これらの計算機資源を各仮想マシンが一括して解放する手段を備え、
これらの手段により他の仮想マシンや他のプログラムの実行を中断せずに、制約を越えた資源割り当てを要求した仮想マシンを終了することを特徴とする車載情報端末。 - 請求項1記載の車載情報端末であって、
該車載情報端末に対してインストールされた中間コードアプリケーションを管理する手段と、これらの中間コードアプリケーションが使用するファイルなどの二次記憶領域を仮想マシン毎に独立して管理する手段を備え、
これらの手段により特定の仮想マシンに対してインストールされた中間コードアプリケーションと、該アプリケーションが使用する二次記憶領域を、他の仮想マシンによる中間コード実行に影響を与えることなく削除し、該仮想マシンを該アプリケーションのインストール前と同じ状態に復帰できることを特徴とする車載情報端末。 - 請求項1記載の車載情報端末であって、
制限を越えた資源割当要求の発生を情報端末の使用者に画面表示や音声、効果音などによって通知する手段を備えることを特徴とする車載情報端末。 - 請求項1記載の車載情報端末であって、
制限を越えた資源割当要求の発生を、ネットワークを通じて遠隔地のサーバに通知する手段を備えることを特徴とする車載情報端末。 - 請求項1記載の情報端末であって、仮想マシンによる中間コードに対する安全性検査手段と、複数の仮想マシンが相互に検査済の中間コードの種別を共有する手段とを備え、これらの手段により他の仮想マシンが既に検査を済ませている中間コードの安全性検査手段を省略することを特徴とする情報端末。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004206687A JP2006031203A (ja) | 2004-07-14 | 2004-07-14 | 車載情報端末 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004206687A JP2006031203A (ja) | 2004-07-14 | 2004-07-14 | 車載情報端末 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006031203A true JP2006031203A (ja) | 2006-02-02 |
Family
ID=35897504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004206687A Pending JP2006031203A (ja) | 2004-07-14 | 2004-07-14 | 車載情報端末 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006031203A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010064411A1 (ja) * | 2008-12-02 | 2010-06-10 | 日本電気株式会社 | 仮想マシン間通信装置、方法、ソケットapiのラッパライブラリ、及び記録媒体 |
US7984433B2 (en) | 2006-06-29 | 2011-07-19 | Hitachi, Ltd. | Program distribution method and computer system |
JP2012189448A (ja) * | 2011-03-10 | 2012-10-04 | Clarion Co Ltd | カーナビゲーションシステム |
CN103116329A (zh) * | 2013-01-04 | 2013-05-22 | 浙江海康集团有限公司 | 一种采用虚拟机和双系统的车载信息平台 |
JP2013532394A (ja) * | 2010-03-23 | 2013-08-15 | 富士通株式会社 | 複数のクライアントを有する電子ネットワークにおける遠隔保守のためのシステム及び方法 |
JP2018206026A (ja) * | 2017-06-02 | 2018-12-27 | キヤノン株式会社 | 情報処理装置および資源管理方法 |
JP2021149840A (ja) * | 2020-03-23 | 2021-09-27 | 株式会社オートネットワーク技術研究所 | 車載情報処理装置、制御方法及びコンピュータプログラム |
WO2023188857A1 (ja) * | 2022-03-30 | 2023-10-05 | 株式会社デンソー | 移動体制御装置、移動体、及び制御プログラム |
-
2004
- 2004-07-14 JP JP2004206687A patent/JP2006031203A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7984433B2 (en) | 2006-06-29 | 2011-07-19 | Hitachi, Ltd. | Program distribution method and computer system |
WO2010064411A1 (ja) * | 2008-12-02 | 2010-06-10 | 日本電気株式会社 | 仮想マシン間通信装置、方法、ソケットapiのラッパライブラリ、及び記録媒体 |
JP2013532394A (ja) * | 2010-03-23 | 2013-08-15 | 富士通株式会社 | 複数のクライアントを有する電子ネットワークにおける遠隔保守のためのシステム及び方法 |
JP2012189448A (ja) * | 2011-03-10 | 2012-10-04 | Clarion Co Ltd | カーナビゲーションシステム |
CN103116329A (zh) * | 2013-01-04 | 2013-05-22 | 浙江海康集团有限公司 | 一种采用虚拟机和双系统的车载信息平台 |
JP2018206026A (ja) * | 2017-06-02 | 2018-12-27 | キヤノン株式会社 | 情報処理装置および資源管理方法 |
JP2021149840A (ja) * | 2020-03-23 | 2021-09-27 | 株式会社オートネットワーク技術研究所 | 車載情報処理装置、制御方法及びコンピュータプログラム |
WO2021193145A1 (ja) * | 2020-03-23 | 2021-09-30 | 株式会社オートネットワーク技術研究所 | 車載情報処理装置、制御方法及びコンピュータプログラム |
JP7375643B2 (ja) | 2020-03-23 | 2023-11-08 | 株式会社オートネットワーク技術研究所 | 車載情報処理装置、制御方法及びコンピュータプログラム |
WO2023188857A1 (ja) * | 2022-03-30 | 2023-10-05 | 株式会社デンソー | 移動体制御装置、移動体、及び制御プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4955943B2 (ja) | 情報端末および計算機資源管理方法 | |
US9798595B2 (en) | Transparent user mode scheduling on traditional threading systems | |
US11263048B1 (en) | Resource tolerations and taints | |
US11556348B2 (en) | Bootstrapping profile-guided compilation and verification | |
US8006246B2 (en) | Apparatus for forcibly terminating thread blocked on input/output operation and method for the same | |
US7770177B2 (en) | System for memory reclamation based on thread entry and release request times | |
US10310900B2 (en) | Operating programs on a computer cluster | |
CN110427258B (zh) | 基于云平台的资源调度控制方法及装置 | |
TW201301029A (zh) | 具有增強型應用程式元資料之記憶體管理器 | |
CN103329102A (zh) | 多处理器系统 | |
CN113342554B (zh) | Io多路复用方法、介质、设备和操作系统 | |
CN101414295A (zh) | 数据库的升级方法 | |
CN113010265A (zh) | Pod的调度方法、调度器、存储插件及系统 | |
JP2006031203A (ja) | 車載情報端末 | |
WO2007049543A1 (ja) | 演算装置 | |
CN116661905B (zh) | 一种基于动态库加载实现设备自动适配方法以及系统 | |
JP2017068636A (ja) | 情報処理システム、情報処理方法、および情報処理プログラム | |
KR20220135891A (ko) | 도커 컨테이너 기반의 캠핑카 제어 플랫폼 운영 시스템 및 방법 | |
CN111563132A (zh) | 数据处理方法和装置 | |
JP2005284925A (ja) | コンピュータシステムおよびプログラム更新方法 | |
CN115244510A (zh) | 车载信息处理装置、控制方法及计算机程序 | |
CN117271203A (zh) | 应用程序数据备份系统、方法及电子设备 | |
CN112328327A (zh) | 配置分区整理方法、装置 | |
JPH07175671A (ja) | プロセス管理方式 | |
JP2009211416A (ja) | プロセッサキャッシュ制御装置、方法、プロセッサ及びコンピューター |