(57)【要約】【課題】仮想マシン１ａ１または仮想マシン１ｂ１が確保する計算機資源を、対応する仮想マシンに割り当てられている、計算機資源の制限値内に確実に抑えることができる機能、または複数の仮想マシンを適切に実行することができる機能を有する車載端末１０１を提供する。【解決手段】車載端末１０１は、仮想マシン１ａ１または仮想マシン１ｂ１が計算機資源の確保を要求した場合に、対応する仮想マシンに割り当てられている計算機資源の制限値未満の場合に、その要求に応じた計算機資源の確保をＯＳ１４３に要求する。また、車載端末１０１は、所定の時間間隔で、前回選択した仮想マシンの連続選択回数をチェックし、連続選択回数が制限値と等しい場合、あるいは、その仮想マシンが待機中の場合には、異なる仮想マシンを選択して、選択した仮想マシンの実行をＯＳ１４３に指示する。【選択図】図１
2007011491.tif 000002
【特許請求の範囲】
【請求項１】
中間コードにより表現されたプログラムである中間コードプログラムを、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上で実行する仮想マシンと、
前記仮想マシンが利用可能な計算機資源の制限値を格納する資源制限値格納手段と、
前記仮想マシンから資源確保の要求を受け付けた場合、前記資源制限値格納手段に格納された制限値を参照して、
当該要求に応じた計算機資源を確保することによって、前記仮想マシンにとって利用可能となった計算機資源が前記制限値未満であるときには、当該要求に応じた計算機資源の確保を前記ＯＳに要求し、
当該要求に応じた計算機資源を確保することによって、前記仮想マシンにとって利用可能となった計算機資源が前記制限値以上であるときには、当該要求に応じた計算機資源の確保を前記ＯＳに要求しない資源管理手段と
を備えることを特徴とする情報端末。
【請求項２】
中間コードにより表現されたプログラムである中間コードプログラムを、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上で実行する複数の仮想マシンと、
前記複数の仮想マシンのそれぞれが連続して選択可能な最大回数である連続選択可能回数を、前記複数の仮想マシンのそれぞれに対応付けて格納する資源制限値格納手段と、
前記資源制限値格納手段に格納されている前記連続選択可能回数に基づいて、前記複数の仮想マシンのそれぞれを切り替えて実行させる仮想マシン切り替え手段と
を備え、
前記仮想マシン切り替え手段は、
予め定められた時間間隔で、現在選択している仮想マシンが待機中か否かを判定し、
現在選択している仮想マシンが待機中である場合に、現在選択している仮想マシンとは異なる仮想マシンを選択し、選択した仮想マシンを実行するよう前記ＯＳに指示すると共に、当該選択した仮想マシンの連続選択回数を１とし、
現在選択している仮想マシンが実行中である場合に、前記資源制限値格納手段に格納された連続選択可能回数を参照して、
現在選択している仮想マシンの連続選択回数が、現在選択している仮想マシンに対応する連続選択可能回数と等しい場合には、現在選択している仮想マシンとは異なる仮想マシンを選択し、選択した仮想マシンを実行するよう前記ＯＳに指示すると共に、当該選択した仮想マシンの連続選択回数を１とし、
現在選択している仮想マシンの連続選択回数が、現在選択している仮想マシンに対応する連続選択可能回数未満の場合には、現在選択している仮想マシンを再び選択し、再選択した仮想マシンを実行するよう前記ＯＳに指示すると共に、当該再選択した仮想マシンの連続選択回数を１増加させる仮想マシン切り替え手段と
を備えることを特徴とする情報端末。
【請求項３】
情報端末における計算機資源管理方法であって、
前記情報端末は、
中間コードにより表現されたプログラムである中間コードプログラムを、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上で実行する仮想マシンから資源確保の要求を受け付けた場合、前記仮想マシンが利用可能な計算機資源の制限値を格納する資源制限値格納手段を参照して、
当該要求に応じた計算機資源を確保することによって、前記仮想マシンにとって利用可能となった計算機資源が前記制限値未満であるときには、当該要求に応じた計算機資源の確保を前記ＯＳに要求し、
当該要求に応じた計算機資源を確保することによって、前記仮想マシンにとって利用可能となった計算機資源が前記制限値以上であるときには、当該要求に応じた計算機資源の確保を前記ＯＳに要求しないこと
を特徴とする情報端末における計算機資源管理方法。
【請求項４】
情報端末における仮想マシンの実行切り替え方法であって、
前記情報端末は、
中間コードにより表現されたプログラムである中間コードプログラムを、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上で実行する複数の仮想マシンの中で、現在選択している仮想マシンが待機中か否かを、予め定められた時間間隔で判定し、
現在選択している仮想マシンが待機中である場合に、現在選択している仮想マシンとは異なる仮想マシンを選択し、選択した仮想マシンを実行するよう前記ＯＳに指示すると共に、当該選択した仮想マシンの連続選択回数を１とし、
現在選択している仮想マシンが実行中である場合に、前記複数の仮想マシンのそれぞれが連続して選択可能な最大回数である連続選択可能回数を、前記複数の仮想マシンのそれぞれに対応付けて格納する資源制限値格納手段を参照して、
現在選択している仮想マシンの連続選択回数が、現在選択している仮想マシンに対応する連続選択可能回数と等しい場合には、現在選択している仮想マシンとは異なる仮想マシンを選択し、選択した仮想マシンを実行するよう前記ＯＳに指示すると共に、当該選択した仮想マシンの連続選択回数を１とし、
現在選択している仮想マシンの連続選択回数が、現在選択している仮想マシンに対応する連続選択可能回数未満の場合には、現在選択している仮想マシンを再び選択すると共に、当該選択した仮想マシンの連続選択回数を１増加させること
を特徴とする車載情報端末における仮想マシンの実行切り替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン上で中間コードプログラムを実行する情報端末に関する。
【背景技術】
【０００２】
今日、多数の組込み情報端末が広い用途に使われている。一例として、自動車などの車両に搭載される情報端末がある。この情報端末によって、地図表示や音声ガイドを通じて目的地への移動をサポートする、いわゆるカーナビゲーション装置が提供されている。
【０００３】
近年の車載情報端末は多機能化を続けており、ナビゲーション機能と合わせ、映像や音楽の視聴、車の状態表示や制御等の機能を有するものもある。このような多機能化に迅速に対応するために、車載情報端末への中間コード技術の適用が進められている。これにより単一のプログラムを、異なるＯＳや演算装置を持つ複数種類の情報端末において実行することが可能になり、車載情報端末の製造と、車載情報端末向けの中間コードプログラムの作成とを、異なるメーカで分業することができ、生産性が向上する。
【０００４】
しかし、中間コード技術を適用する場合には、中間コードプログラムを外部から取得するため、前もって必要となる計算機資源の量を知ることができず、計算機資源の管理が難しくなるという課題がある。もし、悪意を持った者が作成した中間コードプログラムやバグを含む中間コードプログラムを実行してしまうと、ファイルやメモリ領域を無限に消費し続ける等によって、他のプログラムの資源確保を妨げたり、システム全体の即応性を悪化させたりする場合がある。
【０００５】
これを回避するための技術として、特許文献１には、監視プロセス（タスク）を設けて、各プロセスの資源使用量を定期的にチェックし、監視モニタへ通知したり、使用量に応じてプロセスを停止、終了、または再開したりする技術が開示されている。
【０００６】
また、さらなる車載情報端末の多機能化に対処するため、中間コードプログラムを実行する仮想マシンを同時に複数実行したいという要求が高まっている。例えば、エアコン制御用の中間コードプログラムと、音楽再生用の中間コードプログラムとを同時に実行すること等が挙げられる。しかし、複数の仮想マシンの同時実行は、使用資源の増加や計算機資源の取り合いという問題を引き起こす。使用資源の中には、メモリや入出力デバイスだけでなく、ＣＰＵの占有時間等も含まれる。
【０００７】
複数の仮想マシンを同時に実行する場合、通常、実行する複数の仮想マシンを短い時間間隔毎に切り替えることにより、あたかも同時に実行されているように複数の処理を実行する場合が多い。このような処理は、例えば、複数の処理のそれぞれを所定の時間間隔に区切って、その時間間隔毎に、複数の処理を切り替えることにより実現される。
【０００８】
【特許文献１】特開平７−３１１６８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、特許文献１に記載の技術は、計算機資源を使用する資源使用プロセスと、資源使用プロセスが使用した資源量を監視する監視プロセスとを別個に設け、資源使用プロセスが計算機資源を確保した後にその旨を監視プロセスに報告するものである。そのため、資源使用プロセスが確保する計算機資源の量によっては、計算機資源が確保された段階で、システム全体がダウンしてしまう場合がある。
【００１０】
また、組み込み機器に用いられるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の中には、所定の時間間隔に区切られた複数の処理を、所定の時間間隔毎に切り替える仕組みを有さないものがある。例えば、ある優先度を有する処理を実行中には、その処理が終了するまでは、それよりも優先度の低い処理を実行することができない仕組みのＯＳも存在する。このような場合には、例えば、優先度の等しい２つ処理がＯＳに実行を要求した場合には、一方のみが常に実行される事態が生ずる場合がある。
【００１１】
本発明は上記事情を鑑みてなされたものであり、本発明の目的は、仮想マシンが確保する計算機資源を、仮想マシンに割り当てられている、計算機資源の制限値内に抑えることにある。また、本発明の他の目的は、複数の仮想マシンを適切に実行することができるようにすることにある。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明の第１の態様における情報端末は、仮想マシンから計算機資源の確保を要求された場合に、当該要求が、当該仮想マシンに対して割り当てられた計算機資源の制限値未満の場合に、当該要求に応じた計算機資源の確保をＯＳに要求する。
【００１３】
また、本発明の第１の態様は、例えば、中間コードにより表現されたプログラムである中間コードプログラムを、ＯＳ上で実行する仮想マシンと、仮想マシンが利用可能な計算機資源の制限値を格納する資源制限値格納手段と、仮想マシンから資源確保の要求を受け付けた場合、資源制限値格納手段に格納された制限値を参照して、当該要求に応じた計算機資源を確保することによって、仮想マシンにとって利用可能となった計算機資源が制限値未満であるときには、当該要求に応じた計算機資源の確保をＯＳに要求し、当該要求に応じた計算機資源を確保することによって、仮想マシンにとって利用可能となった計算機資源が制限値以上であるときには、当該要求に応じた計算機資源をＯＳに要求しない資源管理手段とを備えることを特徴とする情報端末を提供する。
【００１４】
また、本発明の第２の態様における情報端末は、所定の時間間隔で、前回選択した仮想マシンの連続選択回数をチェックし、当該連続選択回数が制限値と等しい場合、または、その仮想マシンが待機中の場合には、異なる仮想マシンを選択して、選択した仮想マシンの実行をＯＳに指示する。
【００１５】
また、本発明の第２の態様は、例えば、中間コードにより表現されたプログラムである中間コードプログラムを、ＯＳ上で実行する複数の仮想マシンと、複数の仮想マシンのそれぞれが連続して選択可能な最大回数である連続選択可能回数を、複数の仮想マシンのそれぞれに対応付けて格納する資源制限値格納手段と、資源制限値格納手段に格納されている連続選択可能回数に基づいて、複数の仮想マシンのそれぞれを切り替えて実行させる仮想マシン切り替え手段とを備え、仮想マシン切り替え手段は、予め定められた時間間隔で、現在選択している仮想マシンが待機中か否かを判定し、現在選択している仮想マシンが待機中である場合に、現在選択している仮想マシンとは異なる仮想マシンを選択し、選択した仮想マシンを実行するようＯＳに指示すると共に、当該選択した仮想マシンの連続選択回数を１とし、現在選択している仮想マシンが実行中である場合に、資源制限値格納手段に格納された連続選択可能回数を参照して、現在選択している仮想マシンの連続選択回数が、現在選択している仮想マシンに対応する連続選択可能回数と等しい場合には、現在選択している仮想マシンとは異なる仮想マシンを選択し、選択した仮想マシンを実行するようＯＳに指示すると共に、当該選択した仮想マシンの連続選択回数を１とし、現在選択している仮想マシンの連続選択回数が、現在選択している仮想マシンに対応する連続選択可能回数未満の場合には、現在選択している仮想マシンを再び選択し、再選択した仮想マシンを実行するようＯＳに指示すると共に、当該再選択した仮想マシンの連続選択回数を１増加させる仮想マシン切り替え手段とを備えることを特徴とする情報端末を提供する。
【発明の効果】
【００１６】
本発明の情報端末によれば、仮想マシンが確保する計算機資源を、仮想マシンに割り当てられている、計算機資源の制限値内に確実に抑えることができる。また、本発明の車載情報端末によれば、複数の仮想マシンを適切に実行することができる。
【発明を実施するための最良の形態】
【００１７】
以下に、本発明の実施の形態について説明する。
【００１８】
図１は、本発明の一実施形態に係る車載通信システム１０の構成を示す。車載通信システム１０は、車両等の移動体に搭載され、車載端末１０１を備える。車載端末１０１は、車内ネットワーク１２１を通じて空調制御装置１１１、走行状態監視装置１１２、ブレーキ状態監視装置１１３等に接続されており、これらの機器から車両の状態を取得したり、空調機器等を制御したりする。また、車載端末１０１は、車両の搭乗者によって操作されるリモコン１１４と有線または無線により通信を行う。搭乗者はリモコン１１４を介して車載端末１０１を操作する。
【００１９】
車載端末１０１は、携帯通信端末１１５およびインターネットや無線電話通信網等の車外ネットワーク１２２を介して、中間コードプログラム管理サーバ１１６と通信を行う。本例において、携帯通信端末１１５は、例えば携帯電話やＰＤＡ等の無線通信機器であり、車載端末１０１の外部に設けられる。また、他の例として、車載端末１０１は、携帯通信端末１１５の機能を内蔵していてもよい。
【００２０】
中間コードプログラム管理サーバ１１６は、車載端末１０１上で動作するプログラム等を、車外ネットワーク１２２および携帯通信端末１１５を介して車載端末１０１に供給する。また、中間コードプログラム管理サーバ１１６は、車載端末１０１に供給したプログラムの不具合を車載端末１０１から取得したり、車載端末１０１においてインストール済みの中間コードプログラムの最新バージョンを通知したりする。
【００２１】
次に、車載端末１０１について詳細に説明する。車載端末１０１は、一次記憶装置１０２、二次記憶装置１０３、中央演算装置１０４、表示装置１０５、音響出力装置１０６、車内通信装置１０７、リモコン通信装置１０８、および車外通信装置１０９を有する。
【００２２】
二次記憶装置１０３は、電源の供給が遮断された場合にも記録されたデータを保持する機能を有しており、プログラムや当該プログラムによって使用されるデータ、当該プログラムの設定情報等を格納している。二次記憶装置１０３は、基本プログラム群１５１、中間コードプログラム群１５２、データファイル群１５３、資源制限データ１５４、資源違反履歴１５５、および違反時処理設定１５６を有する。中央演算装置１０４は、車載端末１０１に電源が投入される等の所定のタイミングで、二次記憶装置１０３に格納されたプログラム等を一次記憶装置１０２にロードし、ロードしたプログラムを実行する。
【００２３】
表示装置１０５および音響出力装置１０６は、映像および音を通じて搭乗者にそれぞれ情報を与える。リモコン通信装置１０８は、リモコン１１４を介して搭乗者からの操作情報を取得する。車載端末１０１の使用者は、リモコン１１４を通じて車載端末１０１に情報を入力し、表示装置１０５、音響出力装置１０６を通じて車載端末１０１から情報を受け取る。情報の入出力装置はここに示した装置に限らず、他の装置でもかまわない。例えば車載端末１０１に設置されたボタンや、タッチパネルを用いて情報が入力されてもよい。車内通信装置１０７は、車内ネットワーク１２１を介した空調制御装置１１１等との通信を受け持つ。車外通信装置１０９は、携帯通信端末１１５および走行状態監視装置１１２を介して中間コードプログラム管理サーバ１１６等との通信を受け持つ。
【００２４】
複数のタスクおよびオペレーティング・システム１４３（以下ＯＳ１４３）は、一次記憶装置１０２上にロードされる。そして、複数のタスクは、ＯＳ１４３の管理のもとで並列実行される。これらのタスクやＯＳ１４３は、二次記憶装置１０３内に格納されている基本プログラム群１５１に含まる。
【００２５】
一次記憶装置１０２上で実行される複数の仮想マシン（仮想マシン１ａ１、１ｂ１）のそれぞれは、少なくとも１つの仮想マシンタスクを有する。当該仮想マシンタスクのそれぞれは、ＯＳ１４３が管理するタスクとは異なる。当該仮想マシンタスクのそれぞれは、ＯＳ１４３が管理するタスクのいずれか１つに割り当てられ、割り当てられたタスクを介してＯＳ１４３によって実行される。
【００２６】
なお、本例では、仮想マシンタスクのそれぞれは、ＯＳ１４３が管理するタスクの１つに割り当てられるが、他の例として、１つの仮想マシンに、ＯＳ１４３が管理するタスクの１つが割り当てられ、割り当てられたタスクを介して実行される仮想マシンタスクを、当該仮想マシン内で切り替えることにより、それぞれの仮想マシンタスクを実行するように構成してもよい。
【００２７】
一次記憶装置１０２上には、仮想マシン管理タスク１３１およびその他のタスク１４２等がロードされ、ＯＳ１４３によって管理および実行される。また、ＯＳ１４３は、内部のスケジューラ機能を用いて、各タスクを並列実行し、車載端末１０１の外部の他の装置と、車載端末１０１内の各タスクとのやりとりを仲介する。
【００２８】
安全性検査済み中間コードリスト１４０は、後述する処理により安全性検査が実行された中間コードプログラムに関する情報を格納している。安全性検査済み中間コードリスト１４０は、複数の仮想マシン（仮想マシン１ａ１、仮想マシン１ｂ１）によって参照される。
【００２９】
中間コードプログラム群１５２は、中間コードプログラムのコード列や当該プログラムの設定情報等を格納している。中間コードプログラム群１５２に格納される中間コードプログラムは、車載端末１０１の製造時に予め格納されていてもよく、車外ネットワーク１２２および携帯通信端末１１５を介して、中間コードプログラム管理サーバ１１６から取得して格納されてもよい。
【００３０】
仮想マシン１ａ１および仮想マシン１ｂ１のそれぞれは、中間コードプログラム群１５２から中間コード列等を読み込み、例えばＪＩＴ（Ｊｕｓｔ  Ｉｎ  Ｔｉｍｅ）コンパイラ等を用いて、読み込んだ中間コード列を実行に適した形式に変換して実行する。データファイル群１５３は、これらのタスクや中間コードプログラムの実行に必要なデータ等を格納する。資源制限データ１５４は、仮想マシン１ａ１および仮想マシン１ｂ１によって起動時に読み込まれるデータであり、各仮想マシンが中間コードプログラム実行中に利用する資源の制限情報を格納する。
【００３１】
資源違反履歴１５５は、仮想マシン１ａ１および仮想マシン１ｂ１のそれぞれが、対応する資源制限に違反した場合に、当該違反に関する情報を履歴として格納する。違反時処理設定１５６は、仮想マシン１ａ１および仮想マシン１ｂ１のそれぞれマシンが中間コードプログラムの実行中に資源制限違反を犯した場合の対処処理に関する情報を格納する。
【００３２】
なお、本例では、車載端末１０１内で動作する仮想マシンが２つの場合を例に説明するが、本発明はこれに限られず、２つ以上であれば、いくつであってもよい。
【００３３】
仮想マシン１ａ１は、使用資源群１ａ２、資源管理部１ａ３、中間コードプログラムロード部１ａ４、実行中間コードプログラム群１ａ５、および中間コード実行部１ａ６を有する。本例では、仮想マシン１ａ１と仮想マシン１ｂ１とは同様の構成とし、説明を省略する。
【００３４】
使用資源群１ａ２は、中間コードプログラムの実行に必要な資源を保持する。実行中間コードプログラム群１ａ５は、実行対象の中間コードプログラムのプログラムコードを保持する。中間コードプログラムロード部１ａ４は、二次記憶装置１０３上の中間コードプログラム群１５２から必要な中間コードプログラムを仮想マシン内に読み込み、読み込んだ中間コードプログラムを実行に適した形式に変換し、変換したプログラムを実行中間コードプログラム群１ａ５に格納する。
【００３５】
中間コード実行部１ａ６は、実行中間コードプログラム群１ａ５に格納されたプログラムを実行する。そして、中間コード実行部１ａ６は、プログラムの実行中に各種計算機資源の確保、解放または操作が必要になった場合には、対応する計算機資源の確保、解放または操作を資源管理部１ａ３に要求する。
【００３６】
資源管理部１ａ３は、使用資源群１ａ２を管理しており、例えば、仮想マシン起動時に使用資源群１ａ２を初期化し、中間コード実行部１ａ６から計算機資源の確保または操作を要求された場合に、二次記憶装置１０３内の資源制限データ１５４を参照して、当該要求が仮想マシン１ａ１に許容されている資源制限値以内のときには、当該要求に応じて資源の確保または操作をＯＳ１４３に要求する。
【００３７】
仮想マシン管理タスク１３１は、それぞれの仮想マシンと車載端末１０１の入出力デバイスとの調整や、それぞれの仮想マシンが実行する中間コードプログラムの削除、それぞれの仮想マシンによる中央演算装置１０４の占有時間の制御等を実行する。仮想マシン管理タスク１３１は、資源占有状態リスト１３２、画面管理部１３３、音響出力管理部１３４、イベント管理部１３５、中間コードプログラム管理部１３６、および仮想マシン切り替え管理部１３７を有する。
【００３８】
資源占有状態リスト１３２は、表示装置１０５、音響出力装置１０６、またはリモコン通信装置１０８を占有している仮想マシンを識別するための状態情報を保持する。画面管理部１３３は、仮想マシンによる表示装置１０５の占有権を制御し、現在表示装置１０５を占有している仮想マシンの識別情報を資源占有状態リスト１３２に格納する。音響出力管理部１３４は、仮想マシンによる音響出力装置１０６の占有権を制御し、現在音響出力装置１０６を占有している仮想マシンの識別情報を資源占有状態リスト１３２に格納する。イベント管理部１３５は、仮想マシンによるリモコン通信装置１０８の占有権を制御し、現在リモコン通信装置１０８を占有している仮想マシンの識別情報を資源占有状態リスト１３２に格納する。
【００３９】
中間コードプログラム管理部１３６は、二次記憶装置１０３内の中間コードプログラム群１５２を管理し、計算機資源の制限違反を多発する中間コードプログラムの削除や、中間コードプログラムの最新バージョンへのアップデート等を行う。仮想マシン切り替え管理部１３７は、各仮想マシンに割り当てられたタスクであって、ＯＳ１４３が管理するタスク停止および再開をＯＳ１４３に指示することによって、それぞれの仮想マシンの実行時間を管理し、それぞれの仮想マシンによる中央演算装置１０４の占有時間を制御する。
【００４０】
図２は、使用資源群１ａ２および使用資源群１ｂ２の詳細な構成の一例を示す。使用資源群１ａ２は、仮想マシン１ａ１によって確保されているそれぞれの資源の情報を、資源の種類を識別する資源種別に対応付けて格納する。なお、使用資源群１ａ２と使用資源群１ｂ２とは同様の構成を有するため、以下、使用資源群１ａ２について説明し、使用資源群１ｂ２についての説明は省略する。使用資源群１ａ２は、タスク情報２０１、ファイル情報２０２、セマフォ情報２０３、および動的メモリ領域情報２０４を格納する。
【００４１】
タスク情報２０１は、仮想マシン内の複数の仮想マシンタスクのそれぞれに割り当たられたタスクであって、ＯＳ１４３が管理するタスクの状態、および、タスクの優先度を、それぞれのタスクＩＤに対応付けて格納する。優先度とは、仮想マシン１ａ１が実行する中間コードプログラムの設計者によって設定される仮想マシンタスクの優先度であって、ＯＳ１４３によって、ＯＳ１４３が管理するタスクの実行時間割り当てや実行順序を決定する際に用いられる。
【００４２】
中間コード実行部１ａ６がプログラムの実行に応じて、ＯＳ１４３が管理するタスクの確保が必要であると判定した場合、中間コード実行部１ａ６は、資源管理部１ａ３に当該タスクの確保を要求する。そして、資源管理部１ａ３は、資源制限データ１５４を参照して、当該要求が制限値を満たしている場合には、当該要求に対応するタスクの確保をＯＳ１４３に要求すると共に、状態を使用中としてタスク情報２０１に追加する。また、確保したタスクの終了通知を中間コード実行部１ａ６から受けた場合、資源管理部１ａ３は、タスク情報２０１において、対応するタスクの状態を待機中に変更する。このとき、資源管理部１ａ３は、状態を待機中に変更したタスクの開放をＯＳ１４３に指示しない。
【００４３】
ファイル情報２０２は、二次記憶装置１０３内に格納されるデータを管理する単位であるファイルの情報である中間コードプログラム名やデータサイズを、ファイル名に対応付けて格納する。
【００４４】
プログラムの実行に応じて、ファイルの作成や書込み、削除が必要であると判定した場合、中間コード実行部１ａ６は、資源管理部１ａ３に当該ファイルの作成等を要求する。そして、資源管理部１ａ３は、資源制限データ１５４を参照して、当該要求が制限値を満たしている場合には、当該要求に対応するファイルの作成等をＯＳ１４３に要求すると共に、ファイル情報２０２を変更する。
【００４５】
セマフォ情報２０３は、複数のタスクが同一の計算機資源にアクセスする際の同期を取る機能を提供するソフトウェア資源であるセマフォの使用状態を、セマフォＩＤに対応付けて格納する。それぞれの仮想マシンは、起動時に制限個数分のセマフォをＯＳ１４３に要求することにより確保し、全てのセマフォの状態を待機中としてセマフォ情報２０３に格納する。
【００４６】
資源管理部１ａ３は、中間コード実行部１ａ６からセマフォ使用の要求を受けると、セマフォ情報２０３を参照して、待機中のセマフォの中の１つの状態を使用中に変更し、中間コード実行部１ａ６に当該セマフォの使用許可を通知する。また、資源管理部１ａ３は、中間コード実行部１ａ６からセマフォの解放要求を受けると、ＯＳ１４３に対してセマフォの解放を要求せずに、当該セマフォの状態を待機中に変更する。このように、仮想マシン１ａ１は、プログラム実行中に、セマフォの新規確保や解放を実行せず、予め確保したセマフォを再利用しながらプログラムを実行する。
【００４７】
動的メモリ領域情報２０４は、中間コード実行部１ａ６によるプログラムの実行に応じて動的に確保されたメモリに関する情報を、メモリセグメントＩＤに対応付けて格納する。それぞれの仮想マシンは、起動時に制限サイズ分のメモリをＯＳ１４３に要求することにより確保し、中間コード実行部１ａ６からのメモリ確保の要求に応じて、起動時に確保したメモリの範囲内で動的にメモリを確保および開放する。
【００４８】
プログラムの実行に応じて、メモリの確保または開放が必要であると判定した場合、中間コード実行部１ａ６は、資源管理部１ａ３に当該メモリの確保等を要求する。そして、資源管理部１ａ３は、資源制限データ１５４を参照して、当該要求が制限値を満たしている場合には、当該要求に対応するメモリの確保等を実行する。
【００４９】
なお、使用資源群１ａ２および使用資源群１ｂ２は、上記の計算機資源以外に、ディスクパーティションのアクセス権やソケット等を格納してもよい。
【００５０】
図３は、資源占有状態リスト１３２の詳細な構成の一例を示す。資源占有状態リスト１３２は、計算機資源を現在占有中の仮想マシンＩＤ１３２１を、計算機資源の種類を示す資源種別１３２０に対応付けて格納する。画面、リモコン、音源、ＣＰＵ等の計算機資源は、１つの仮想マシンのみから使用可能である。
【００５１】
資源占有状態リスト１３２を参照することにより、当該資源を現在使用している仮想マシンを判断することができる。
【００５２】
図４は、安全性検査済み中間コードリスト１４０の詳細な構成の一例を示す。安全性検査済み中間コードリスト１４０は、中間コードプログラムロード部１ａ４による安全性検査が完了した安全性検査済み中間コード列名１４０１、および、当該検査を実行した仮想マシンのＩＤである検査実施仮想マシンＩＤ１４０２を、中間コードプログラム名１４００に対応付けて格納する。安全性検査済み中間コードリスト１４０を参照することにより、仮想マシン１ａ１および仮想マシン１ｂ１は、ロード対象の中間コード列の安全性検査が既に終了しているか否かを判定することができる。安全性検査が既に終了している場合、中間コードプログラムロード部１ａ４による安全性検査を省略して中間コードプログラムをロードすることができる。
【００５３】
図５は、資源制限データ１５４の詳細な構成の一例を示す。資源制限データ１５４は、制限値が適用される仮想マシンＩＤ１５４０毎に、計算機資源の制限値１５４２を資源種別１５４１に対応付けて格納している。資源制限データ１５４に設定されるそれぞれの計算機資源の制限値１５４２は、例えば、車載端末１０１の出荷時に製造業者等によって予め設定される。
【００５４】
本例において、「ａａａ」は仮想マシン１ａ１の仮想マシンＩＤを示し、「ｂｂｂ」は仮想マシン１ｂ１の仮想マシンＩＤを示す。資源制限データ１５４では、仮想マシン１ａ１が仮想マシン１ｂ１よりも重要度の高い中間コードプログラムを実行するものとして設定されている例を示している。そのため、仮想マシン１ａ１に対応する計算機資源の制限値が高く、仮想マシン１ｂ１に対応する計算機資源が低く設定され、仮想マシン１ａ１に優先的に計算機資源が割り当てられるようにしている。
【００５５】
なお、計算機資源の種類は、図５に示した例に限られず、各仮想マシンによる読み出し、書き込みが許されるパーティションを指定する計算機資源等を含んでもよい。例えば、１番目のパーティションに基本プログラム群１５１等の最重要データが格納され、２番目のパーティションに車両情報や個人情報等の重要データが格納され、３番目のパーティションに、その他の一般データが格納されている場合、特定の仮想マシンに対してのみ１番目のパーティションへのアクセスを許可するようにしてもよい。
【００５６】
図６は、資源違反履歴１５５の詳細な構成の一例を示す。資源違反履歴１５５は、仮想マシンＩＤ１５５１、制限値の違反を犯した中間コードプログラム名１５５２、違反した制限値１５５３、および違反量１５５４を、当該違反を犯した違反日時１５５０に対応付けて格納する。
【００５７】
資源違反履歴１５５を参照することにより、中央演算装置１０４は、発生した制限違反の内容を、携帯通信端末１１５および車外ネットワーク１２２を介して中間コードプログラム管理サーバ１１６に通知することができる。これにより、中間コードプログラムの開発者等は、資源制限違反の原因や予防策の検討を効率よく行うことができる。
【００５８】
図７は、違反時処理設定１５６の詳細な構成の一例を示す。違反時処理設定１５６は、図５に示した制限値のそれぞれに違反した場合に行う処理を規定する。違反時処理設定１５６は、処理を適用する仮想マシンＩＤ１５６０毎に、計算機資源の違反回数１５６２および制限値の違反が検出された場合に行われる処理である違反時処理１５６３を、資源種別１５６１に対応付けて格納している。違反時処理設定１５６は、例えば、車載端末１０１の出荷時に製造業者等によって予め設定される。なお、仮想マシン毎に、設定項目数や設定値が異なっていてもよい。
【００５９】
図７に示した例では、仮想マシン１ａ１において、作成可能タスク数に対する違反が３回発生した時には、仮想マシン１ａ１は停止および終了させられ、中間コードプログラム管理サーバ１１６に違反の発生が通知されるが、違反発生時に動作していた中間コードプログラムは削除されない。また、仮想マシン１ａ１において、作成可能最大ファイルサイズに対する制限違反が１回発生した時、仮想マシン１ａ１は停止させられないが、違反回数が１０回に達すると、仮想マシン１ａ１は停止させられる。
【００６０】
違反時処理設定１５６を用いることにより、各仮想マシンにおける資源違反発生時の処理内容を、きめ細かく設定することができる。各仮想マシンの重要度、実行されるアプリケーションの重要度、各資源の量、制限違反頻度、制限違反規模などに応じて、指定処理を変更することで、車載端末１０１をより安定に動作させることができる。
【００６１】
なお、本例では、違反回数に基づいて処理内容を規定したが、他にも違反規模、違反頻度、違反を犯した中間コードプログラムの開発元等に応じて処理内容を規定してもよい。
【００６２】
次に、車載端末１０１の動作について図８〜図１８を参照しながら説明する。
【００６３】
図８は、車載端末１０１の動作の一例を示すフローチャートである。電源が投入される等の所定のタイミングで、車載端末１０１は、本フローチャートに示す処理を開始する。まず、仮想マシン１ａ１、仮想マシン１ｂ１、仮想マシン管理タスク１３１を含む複数のタスクが起動される。なお、以下に説明する点において、仮想マシン１ａ１と仮想マシン１ｂ１とは同様の処理を行うため、仮想マシン１ａ１および仮想マシン１ｂ１に同様の処理については、仮想マシン１ａ１についてのみ説明する。
【００６４】
資源管理部１ａ３は、中間コードプログラムの実行中に使用する計算機資源を制限するための資源制限データ１５４を読み込む（Ｓ１００）。このとき、必要に応じて資源管理のための初期化等の処理も実行する。
【００６５】
次に、中間コードプログラムロード部１ａ４は、実行対象となる中間コードプログラムを中間コードプログラム群１５２から読み込む（Ｓ２００）。このとき、中間コードプログラムロード部１ａ４は、読み込んだ中間コードプログラムを実行可能な形式に変換して、実行中間コードプログラム群１ａ５に格納する。そして、中間コード実行部１ａ６は、実行中間コードプログラム群１ａ５に格納されたプログラムを実行する（Ｓ３００）。
【００６６】
図９は、資源制限データ読み込み処理（Ｓ１００）の一例を示すフローチャートである。資源管理部１ａ３は、資源制限データ１５４から、作成可能タスク数の制限値を読み込み（Ｓ１０１）、ファイルに関する制限値を読み込み（Ｓ１０２）、作成可能なセマフォ数に関する制限値を読み込み（Ｓ１０３）、確保可能な動的メモリの最大サイズの制限値を読み込む（Ｓ１０４）。
【００６７】
なお、ステップ１０３では、作成可能なセマフォ数に関する制限値を読み込んだときに、資源管理部１ａ３は、当該制限値分のセマフォをＯＳ１４３に要求することにより確保し、確保した制限値分のセマフォの状態を全て待機中として使用資源群１ａ２に登録する。同様に、ステップ１０４では、確保可能な動的メモリの最大サイズの制限値を読み込んだときに、資源管理部１ａ３は、当該制限値分のメモリをＯＳ１４３に要求することにより確保し、確保した制限値分のメモリの状態を全て未使用として使用資源群１ａ２に登録する。
【００６８】
図１０は、中間コードプログラム読み込み処理（Ｓ２００）の一例を示すフローチャートである。ます、中間コードプログラムロード部１ａ４は、読み込むべき中間コードプログラムの識別情報が記述されているリストを中間コードプログラム群１５２から取得する（Ｓ２０１）。そして、中間コードプログラムロード部１ａ４は、取得したリストに記述されている中間コードプログラムの１つを選択する（Ｓ２０２）。
【００６９】
そして、中間コードプログラムロード部１ａ４は、安全性検査済み中間コードリスト１４０を参照して、選択した中間コードプログラムの安全性検査が終了しているか否かを判定する（Ｓ２０３）。安全性検査が既に終了している場合（Ｓ２０３：Ｙｅｓ）、中間コードプログラムロード部１ａ４は、ステップ２０７に示す処理を行う。
【００７０】
このように、既に別の仮想マシンによって安全性の検査が実施されている中間コードプログラムの安全性検査処理を省略することで、中間コードプログラムをロードする際の処理負荷を軽減することができる。
【００７１】
安全性検査が終了していない場合（Ｓ２０３：Ｎｏ）、中間コードプログラムロード部１ａ４は、選択した中間コードプログラムの安全性検査を行う（Ｓ２０４）。ステップ２０４では、中間コードプログラムロード部１ａ４は、中間コードプログラムに不正な命令コードが含まれていないか、命令コード列の整合は取れているか、不正なアドレスにアクセスする命令コード列となっていないか等の検査を行う。
【００７２】
そして、安全性が確認された場合（Ｓ２０５：Ｙｅｓ）、中間コードプログラムロード部１ａ４は、安全性検査済み中間コードリスト１４０に検査結果を格納する（Ｓ２０６）。そして、リストに含まれる中間コードを全て読み込んだか否かを判定し（Ｓ２０７）、全て読み込んでいなければ、中間コードプログラムロード部１ａ４はステップ２０３に示した処理を実行し、全て読み込んでいれば、本フローチャートに示す処理を終了する。
【００７３】
安全性が確認されなかった場合（Ｓ２０５：Ｎｏ）、中間コードプログラムロード部１ａ４は、安全性に問題がある旨を１０５等を介して車載端末１０１の使用者に通知すると共に、携帯通信端末１１５および車外ネットワーク１２２を介して中間コードプログラム管理サーバ１１６に通知し（Ｓ２０８）、中間コードプログラムの起動または実行の中断を中間コード実行部１ａ６に指示し、本フローチャートに示す処理を終了する。
【００７４】
図１１は、中間コードプログラム実行処理（Ｓ３００）の一例を示すフローチャートである。まず、中間コード実行部１ａ６は、中間コード列の命令を一つずつ解釈実行することにより、中間コードプログラムを実行する（Ｓ３０１）。そして、中間コード実行部１ａ６は、中間コードプログラムでは実行できない、各種資源の確保、解放、操作等のネイティブ機能の呼び出しが必要か否かを判定する（Ｓ３０２）。
【００７５】
ネイティブ機能の呼び出しが不要な場合（Ｓ３０２：Ｎｏ）、中間コード実行部１ａ６は、中間コードプログラムの実行が終了したか否かを判定する（Ｓ３０８）。中間コードプログラムの実行が終了していない場合（Ｓ３０８：Ｎｏ）、中間コード実行部１ａ６は、ステップ３０１において中間コード列の次の命令を実行する。中間コードプログラムの実行が終了した場合（Ｓ３０８：Ｙｅｓ）、中間コード実行部１ａ６は、本フローチャートに示す処理を終了する。
【００７６】
ネイティブ機能の呼び出しが必要な場合（Ｓ３０２：Ｙｅｓ）、中間コード実行部１ａ６は、対応するネイティブ機能の処理（Ｓ４００、Ｓ５００、Ｓ６００、Ｓ３０３、Ｓ３０４）を、資源管理部１ａ３に指示する。ステップ４００〜６００の処理の詳細は後述する。ステップ３０３では、資源管理部１ａ３は、二次記憶装置１０３内の資源制限データ１５４を参照して、動的に確保するメモリの総サイズを制限値以内に制限しながら、メモリを動的に確保または解放する。ステップ３０４では、資源管理部１ａ３は、上記以外のネイティブ機能（通信ソケットの確保等）の処理を実行する。
【００７７】
上記ネイティブ処理のいずれかを実行中に、計算機資源の制限値違反が発生した場合には（Ｓ３０５：Ｙｅｓ）、資源管理部１ａ３は、発生したエラーに対応する処理を実行する（Ｓ７００）。そして、エラーに対応する処理において、仮想マシンが強制終了されていない場合には（Ｓ３０６：Ｎｏ）、資源管理部１ａ３は、エラーの情報を中間コード実行部１ａ６に通知することにより、中間コード実行部１ａ６にエラー処理を実行させ（Ｓ３０７）、ステップ３０８に示した処理を行う。
【００７８】
図１２は、タスク作成／削除処理（Ｓ４００）の一例を示すフローチャートである。まず、資源管理部１ａ３は、タスクの作成処理か否かを判定し（Ｓ４０１）、タスクの作成処理である場合には、使用資源群１ａ２を参照して、未使用タスクがあるか否かを判定する（Ｓ４０２）。未使用タスクがある場合（Ｓ４０２：Ｙｅｓ）、資源管理部１ａ３は、ＯＳ１４３に対応するタスクの状態を動作状態に変更するよう依頼し（Ｓ４０６）、本フローチャートに示す処理を終了する。
【００７９】
未使用タスクがない場合（Ｓ４０２：Ｎｏ）、資源管理部１ａ３は、タスクを作成することによって、作成されたタスクの総数が作成可能なタスク数の制限値未満となるか否かを判定する（Ｓ４０３）。制限値以上となる場合（Ｓ４０３：Ｎｏ）、資源管理部１ａ３は、タスクを作成できない旨のエラーを中間コード実行部１ａ６に通知し、本フローチャートに示す処理を終了する。
【００８０】
制限値未満の場合（Ｓ４０３：Ｙｅｓ）、資源管理部１ａ３は、ＯＳ１４３にタスクの作成を依頼する（Ｓ４０４）。そして、資源管理部１ａ３は、作成されたタスクの状態を使用中として使用資源群１ａ２に登録し（Ｓ４０５）、本フローチャートに示す処理を終了する。
【００８１】
タスクの削除処理である場合には（Ｓ４０１：Ｎｏ）、資源管理部１ａ３は、ＯＳ１４３に対応するタスクの状態を待機中に変更するよう依頼することによりタスクを停止させる（Ｓ４０８）。ステップ４０８において、資源管理部１ａ３は、停止したタスクの開放をＯＳ１４３に依頼せず、確保したままにする。そして、資源管理部１ａ３は、使用資源群１ａ２内の、停止したタスクの状態を待機中に変更し（Ｓ４０９）、本フローチャートに示す処理を終了する。
【００８２】
図１３は、ファイル作成／削除／書込処理（Ｓ５００）の一例を示すフローチャートである。まず、資源管理部１ａ３は、中間コード実行部１ａ６からの要求がファイルの作成処理である場合には（Ｓ５０１：Ｙｅｓ）、資源制限データ１５４を参照して、中間コード実行部１ａ６からの要求に応じてファイルを作成したときに、作成したファイル数が、作成可能なファイル数の制限値未満となるか否かを判定する（Ｓ５０２）。制限値以上の場合（Ｓ５０２：Ｎｏ）、資源管理部１ａ３は、エラーを中間コード実行部１ａ６に通知し（Ｓ５０６）、本フローチャートに示す処理を終了する。
【００８３】
制限値未満の場合（Ｓ５０２：Ｙｅｓ）、資源管理部１ａ３は、仮想マシン１ａ１がファイルを作成するディスク上の領域へのアクセス権があるときには（Ｓ５０３：Ｙｅｓ）、ファイルを作成する（Ｓ５０４）。そして、資源管理部１ａ３は、作成したファイルの情報を使用資源群１ａ２に登録し（Ｓ５０５）、本フローチャートに示す処理を終了する。
【００８４】
中間コード実行部１ａ６からの要求がファイルの作成処理でない場合（Ｓ５０１：Ｎｏ）、資源管理部１ａ３は、中間コード実行部１ａ６からの要求がファイルへの書込み処理であるときには、資源制限データ１５４を参照して、中間コード実行部１ａ６からの要求に応じて書込みを行ったファイルのサイズが、作成可能な最大ファイルサイズの制限値未満となるか否かを判定する（Ｓ５０８）。制限値以上の場合（Ｓ５０８：Ｎｏ）、資源管理部１ａ３は、ステップ５０６に示した処理を行う。
【００８５】
制限値未満の場合（Ｓ５０８：Ｙｅｓ）、資源管理部１ａ３は、ファイルへの書込みを許可することにより中間コード実行部１ａ６にファイルにデータを書き込ませ（Ｓ５０９）、使用資源群１ａ２内の、対応するファイルのサイズを変更し（Ｓ５１０）、本フローチャートに示す処理を終了する。
【００８６】
中間コード実行部１ａ６からの要求がファイルへの書き込みでない場合（Ｓ５０７：Ｎｏ）、資源管理部１ａ３は、ファイルを削除し（Ｓ５１１）、対応するファイルの情報を使用資源群１ａ２から削除し（Ｓ５１２）、本フローチャートに示す処理を終了する。
【００８７】
図１４は、セマフォ作成／削除処理（Ｓ６００）の一例を示すフローチャートである。まず、資源管理部１ａ３は、セマフォの作成処理か否かを判定し（Ｓ６０１）、セマフォの作成処理である場合には、使用資源群１ａ２を参照して、未使用のセマフォがあるか否かを判定する（Ｓ６０２）。未使用のセマフォがある場合（Ｓ６０２：Ｙｅｓ）、資源管理部１ａ３は、セマフォの使用許可を中間コード実行部１ａ６に通知すると共に、使用資源群１ａ２内のセマフォの状態を使用中に変更し（Ｓ６０３）、本フローチャートに示す処理を終了する。
【００８８】
未使用のセマフォがない場合（Ｓ６０２：Ｎｏ）、資源管理部１ａ３は、セマフォを確保できない旨のエラーを中間コード実行部１ａ６に通知し（Ｓ６０４）、本フローチャートに示す処理を終了する。セマフォ作成処理でない場合（Ｓ６０１：Ｎｏ）、資源管理部１ａ３は、使用資源群１ａ２内の、対応するセマフォの状態を待機中に変更し（Ｓ６０５）、本フローチャートに示す処理を終了する。
【００８９】
なお、本例では、仮想マシン１ａ１起動時に制限値と同数のセマフォが予め確保されている。本フローチャートでは、セマフォの作成が必要な時には、ＯＳ１４３に対してセマフォの新規確保を要求せず、起動時に既に確保されているセマフォの中から未使用のセマフォを割り当てる。また、不要時にもＯＳ１４３にセマフォの開放を要求せず、セマフォの状態を待機中に変更する。
【００９０】
図１２〜図１４に示したように、資源の作成と削除の処理にはいくつかの実現方法があるが、いずれも作成、削除に応じて使用する資源量を把握することができ、制限値に違反が発生した時点で即座に検知することが可能である。
【００９１】
図１５は、制限違反処理（Ｓ７００）の一例を示すフローチャートである。まず、資源管理部１ａ３は、図１１に示すステップ４００、５００、６００、３０３、または３０４において発生した制限違反の内容を資源違反履歴１５５に記録し（Ｓ７０１）、資源違反履歴１５５および違反時処理設定１５６を参照して、発生した違反に応じて仮想マシンの終了が必要か否かを判定する（Ｓ７０２）。
【００９２】
資源管理部１ａ３は、仮想マシンの終了の必要がないと判定した場合（Ｓ７０２：Ｎｏ）、資源違反履歴１５５および違反時処理設定１５６を参照して、発生した違反に応じて仮想マシンの停止が必要である場合（Ｓ７０３：Ｙｅｓ）には、仮想マシン切り替え管理部１３７に指示して対応する仮想マシンを停止させ（Ｓ７０４）、ステップ７０５に示す処理を行い、仮想マシンの停止が必要でない場合（Ｓ７０３：Ｎｏ）には、ステップ７０５に示す処理を行う。
【００９３】
資源違反履歴１５５および違反時処理設定１５６を参照して、発生した違反に応じて仮想マシンの終了が必要であると判定した場合（Ｓ７０２：Ｙｅｓ）、資源管理部１ａ３は、仮想マシン切り替え管理部１３７に指示して対応する仮想マシンを終了させる（Ｓ７２０）。
【００９４】
次に、資源違反履歴１５５および違反時処理設定１５６を参照して、発生した違反に応じて仮想マシンが実行している中間コードプログラムの削除が必要か否かを判定する（Ｓ７０５）。対応する中間コードプログラムの削除が必要でない場合（Ｓ７０５：Ｎｏ）、ステップ７０７に示す処理を行う。対応する中間コードプログラムの削除が必要な場合（Ｓ７０５：Ｙｅｓ）、資源管理部１ａ３は、対応する中間コードプログラムの削除を中間コードプログラム管理部１３６に依頼することにより、対応する中間コードプログラムを中間コードプログラム管理部１３６に削除させる（Ｓ７０６）。ステップ７０６において、中間コードプログラム管理部１３６は、削除対象の中間コードプログラムをその他のタスク１４２から削除する。
【００９５】
図１６は、仮想マシン終了処理（Ｓ７２０）の一例を示すフローチャートである。まず、資源管理部１ａ３は、使用資源群１ａ２を参照して、終了すべき中間コードプログラムが確保した計算機資源を１つ選択し（Ｓ７２１）、ＯＳ１４３に選択した計算機資源の解放を依頼する（Ｓ７２２）。そして。資源管理部１ａ３は、終了すべき中間コードプログラムが確保した計算機資源を全て選択したか否かを判定する（Ｓ７２３）。資源管理部１ａ３は、選択していない計算機資源が存在する場合（Ｓ７２３：Ｎｏ）、再びステップ７２１に示した処理を行い、終了すべき中間コードプログラムが確保した計算機資源の全てを選択した場合（Ｓ７２３：Ｙｅｓ）、本フローチャートに示す処理を終了する。
【００９６】
使用資源群１ａ２を参照することにより、資源管理部１ａ３は、終了すべき中間コードプログラムが確保した計算機資源を、確実に解放することができる。
【００９７】
図１７は、仮想マシン切り替え管理部１３７の動作の一例を示すフローチャートである。車載端末１０１に電源が投入される等の所定のタイミングで、仮想マシン切り替え管理部１３７は、本フローチャートに示す処理を開始する。まず、仮想マシン切り替え管理部１３７は、現在実行中の仮想マシンの数が２以上か否かを判定する（Ｓ８０１）。現在実行中の仮想マシン数が１以下である場合（Ｓ８０１：Ｎｏ）、仮想マシン数が２以上になるまで、ステップ８０１を繰り返す。
【００９８】
現在実行中の仮想マシン数が２以上である場合（Ｓ８０１：Ｙｅｓ）、仮想マシン切り替え管理部１３７は、複数の仮想マシンのいずれか１つを選択する仮想マシン再選択処理を実行する（Ｓ８１０）。そして、仮想マシン切り替え管理部１３７は、選択した仮想マシンが現在実行中の仮想マシンと異なるか否かを判定する（Ｓ８０２）。選択した仮想マシンが現在実行中の仮想マシンと同一の場合（Ｓ８０２：Ｎｏ）、ステップ８０６に示す処理を行う。
【００９９】
選択した仮想マシンが現在実行中の仮想マシンと異なる場合（Ｓ８０２：Ｙｅｓ）、仮想マシン切り替え管理部１３７は、実行中の仮想マシンに割り当てられている全てのタスクであって、ＯＳ１４３が管理するタスクの一時停止をＯＳ１４３に依頼する（Ｓ８０３）。そして、仮想マシン切り替え管理部１３７は、仮想マシンの切り替え準備を行う（Ｓ８０４）。ステップ８０４では、仮想マシン切り替え管理部１３７は、資源占有状態リスト１３２内において、選択した仮想マシンが使用する資源種別に対応する仮想マシンＩＤ１３２１の書き換え、実行中であった仮想マシンに対応するタスクが共有メモリ１４１内で使用していたグローバル変数領域等の実行環境を、実行中であった仮想マシンの共有メモリ退避領域１ａ７または共有メモリ退避領域１ｂ７へ退避する処理等を行う。
【０１００】
次に、仮想マシン切り替え管理部１３７は、ステップ２６０２において選択した仮想マシンに対応するタスクの実行再開をＯＳ１４３に依頼する（Ｓ８０５）。そして、仮想マシン切り替え管理部１３７は、１００ｍｓ等の所定期間待ってから（Ｓ８０６）、再びステップ８０１に示した処理を実行する。
【０１０１】
図１８は、仮想マシン再選択処理（Ｓ８１０）の一例を示すフローチャートである。まず、仮想マシン切り替え管理部１３７は、ＯＳ１４３に問い合わせて、現在実行中のタスク、すなわち前回選択したタスクの状態を取得する（Ｓ８１１）。そして、仮想マシン切り替え管理部１３７は、前回選択した仮想マシンに割り当てられた全てのタスクが、入力待ちやタイマ等のイベントを待ち状態であるか否かを判定する（Ｓ８１２）。
【０１０２】
いずれかのタスクが待ち状態でない場合（Ｓ８１２：Ｎｏ）、仮想マシン切り替え管理部１３７は、前回選択した仮想マシンの連続選択回数が、当該仮想マシンに割り当てられた連続選択可能回数を超えているか否かを判定する（Ｓ８１４）。ステップ８１４において、仮想マシン切り替え管理部１３７は、選択した仮想マシンの連続選択回数を保持している。また、仮想マシン切り替え管理部１３７は、図５に示した資源制限データ１５４内のＣＰＵ占有率の制限値に基づいて、仮想マシンのそれぞれの連続選択可能回数を算出する。本例において、仮想マシン切り替え管理部１３７は、仮想マシン１ａ１に対応するＣＰＵ占有率の制限値が７０％、仮想マシン１ｂ１に対応するＣＰＵ占有率の制限値が３０％であるので、これに比例する値を連続選択可能回数として算出する。例えば、仮想マシン切り替え管理部１３７は、仮想マシン１ａ１の連続選択可能回数を７回、仮想マシン１ｂ１の連続選択可能回数を３回と算出する。
【０１０３】
前回選択した仮想マシンの連続選択回数が、当該仮想マシンに割り当てられた連続選択可能回数以下の場合（Ｓ８１４：Ｎｏ）、仮想マシン切り替え管理部１３７は、前回選択した仮想マシンを今回も選択すると共に、選択した仮想マシンの連続選択回数を増やし（Ｓ８１５）、本フローチャートに示す処理を終了する。前回選択した仮想マシンの連続選択回数が、当該仮想マシンに割り当てられた連続選択可能回数を越えている場合（Ｓ８１４：Ｙｅｓ）、仮想マシン切り替え管理部１３７は、前回選択した仮想マシンとは異なる仮想マシンを選択すると共に、選択した仮想マシンの連続選択回数を１として（Ｓ８１３）、本フローチャートに示す処理を終了する。
【０１０４】
このように、予め設定された配分で、実行される仮想マシンを切り替えることにより、設計時に指定されたＣＰＵ占有率に近い配分でＣＰＵ処理時間を割り当てながら、複数仮想マシンを並列実行することができる。この切り替え処理は、ＯＳ１４３の持つタスク停止機能とタスク再開機能、およびタスクのイベント待機問い合わせ機能を用いるものである。よって、これらの機能を提供するマルチタスクＯＳであれば、ＣＰＵ占有率の制御機能を有していなくとも、仮想マシンのＣＰＵ占有率を制御することができ、複数の仮想マシンを適切に動作させることができる。
【０１０５】
また、上述した仮想マシン切り替え管理部１３７による仮想マシン切り替え処理は、ＯＳへのタスク操作依頼を通じて実現されており、ＯＳ１４３が有するスケジューラを直接制御するものではない。そのため、当該仮想マシンは、仮想マシン１ａ１や仮想マシン１ｂ１、仮想マシン管理タスク１３１に割り当てられているタスク以外のネイティブ処理を行うその他のタスク１４２のタスク切り替えに影響を与えない。従って、ＯＳ１４３の機能の範囲内で仮想マシン切り替え処理を実現することができ、システムを安定に動作させることができる。
【０１０６】
以上、本発明の実施の形態について説明した。
【０１０７】
上記説明から明らかなように、本発明の車載端末１０１によれば、仮想マシン１ａ１または仮想マシン１ｂ１が確保する計算機資源を、対応する仮想マシンに割り当てられている制限値内に確実に抑えることができる。また、本発明の車載端末１０１によれば、複数の仮想マシンを適切に実行することができる。
【０１０８】
なお、本発明は上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【０１０９】
例えば、本実施形態では、仮想マシンが２つの場合を例に説明したが、本発明はこれに限られず、１つの仮想マシンを実行する車載端末１０１においても本発明を適用することができる。この場合、図１に示した車載端末１０１において、複数の仮想マシンの存在を前提に処理を行う機能（共有メモリ退避領域１ａ７、共有メモリ退避領域１ｂ７、資源占有状態リスト１３２、仮想マシン切り替え管理部１３７、安全性検査済み中間コードリスト１４０、および共有メモリ１４１）を除いたものが、他の実施形態における車載端末１０１の構成となる。
【０１１０】
なお、本発明は、自動車等に搭載される車載端末等、組込み機器の中でも比較的計算機資源が豊富であり、アプリケーションの並列実行が求められる組込み機器に好適である。また、車載端末以外にも、テレビやハードディスクレコーダ等のＡＶ機器、携帯電話やＰＤＡ等の携帯端末への中間コード技術の適用の際に、本発明が特に有効である。
【図面の簡単な説明】
【０１１１】
【図１】本発明の一実施形態に係る車載通信システム１０の構成を示す。
【図２】使用資源群１ａ２および使用資源群１ｂ２の詳細な構成の一例を示す。
【図３】資源占有状態リスト１３２の詳細な構成の一例を示す。
【図４】安全性検査済み中間コードリスト１４０の詳細な構成の一例を示す。
【図５】資源制限データ１５４の詳細な構成の一例を示す。
【図６】資源違反履歴１５５の詳細な構成の一例を示す。
【図７】違反時処理設定１５６の詳細な構成の一例を示す。
【図８】車載端末１０１の動作の一例を示すフローチャートである。
【図９】資源制限データ読み込み処理の一例を示すフローチャートである。
【図１０】中間コードプログラム読み込み処理の一例を示すフローチャートである。
【図１１】中間コードプログラム実行処理の一例を示すフローチャートである。
【図１２】タスク作成／削除処理の一例を示すフローチャートである。
【図１３】ファイル作成／削除／書込処理の一例を示すフローチャートである。
【図１４】セマフォ作成／削除処理の一例を示すフローチャートである。
【図１５】制限違反処理の一例を示すフローチャートである。
【図１６】仮想マシン終了処理の一例を示すフローチャートである。
【図１７】仮想マシン切り替え管理部１３７の動作の一例を示すフローチャートである。
【図１８】仮想マシン再選択処理の一例を示すフローチャートである。
【符号の説明】
【０１１２】
１０・・・車載通信システム、１０１・・・車載端末、１０２・・・一次記憶装置、１０３・・・二次記憶装置、１０４・・・中央演算装置、１０５・・・表示装置、１０６・・・音響出力装置、１０７・・・車内通信装置、１０８・・・リモコン通信装置、１０９・・・車外通信装置、１１１・・・空調制御装置、１１２・・・走行状態監視装置、１１３・・・ブレーキ状態監視装置、１１４・・・リモコン、１１５・・・携帯通信端末、１１６・・・中間コードプログラム管理サーバ、１２１・・・車内ネットワーク、１２２・・・車外ネットワーク、１ａ１・・・仮想マシン、１ａ２・・・使用資源群、１ａ３・・・資源管理部、１ａ４・・・中間コードプログラムロード部、１ａ５・・・実行中間コードプログラム群、１ａ６・・・中間コード実行部、１ａ７・・・共有メモリ退避領域、１ｂ１・・・仮想マシン、１ｂ２・・・使用資源群、１ｂ３・・・資源管理部、１ｂ４・・・中間コードプログラムロード部、１ｂ５・・・実行中間コードプログラム群、１ｂ６・・・中間コード実行部、１ｂ７・・・共有メモリ退避領域、１３１・・・仮想マシン管理タスク、１３２・・・資源占有状態リスト、１３２０、１５４１、１５６１・・・資源種別、１３２１、１５４０、１５５１、１５６０・・・仮想マシンＩＤ、１３３・・・画面管理部、１３４・・・音響出力管理部、１３５・・・イベント管理部、１３６・・・中間コードプログラム管理部、１３７・・・仮想マシン切り替え管理部、１４０・・・安全性検査済み中間コードリスト、１４１・・・共有メモリ、１４２・・・その他のタスク、１４３・・・ＯＳ、１５１・・・基本プログラム群、１５２・・・中間コードプログラム群、１５３・・・データファイル群、１５４・・・資源制限データ、１５４２・・・制限値、１５５・・・資源違反履歴、１５５０・・・違反日時、１５５２・・・中間コードプログラム名、１５５３・・・違反した制限値、１５５４・・・違反量、１５６・・・違反時処理設定、１５６２・・・違反回数、１５６３・・・違反時処理、２０１・・・タスク情報、２０２・・・ファイル情報、２０３・・・セマフォ情報、２０４・・・動的メモリ領域情報
【図１】
2007011491.tif 000003
【図２】
2007011491.tif 000004
【図３】
2007011491.tif 000005
【図４】
2007011491.tif 000006
【図５】
2007011491.tif 000007
【図６】
2007011491.tif 000008
【図７】
2007011491.tif 000009
【図８】
2007011491.tif 000010
【図９】
2007011491.tif 000011
【図１０】
2007011491.tif 000012
【図１１】
2007011491.tif 000013
【図１２】
2007011491.tif 000014
【図１３】
2007011491.tif 000015
【図１４】
2007011491.tif 000016
【図１５】
2007011491.tif 000017
【図１６】
2007011491.tif 000018
【図１７】
2007011491.tif 000019
【図１８】
2007011491.tif 000020