(57)【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムを搭載し、当該複数のオペレーティングシステムを切替えて稼動させるＯＳ切り替え機能を備えた情報処理装置であって、
メモリ資源と、
前記複数のオペレーティングシステムの各々上で動作するアプリケーション各々が前記メモリ資源に共有情報を登録するためのインタフェースと、前記複数のオペレーティングシステムの各々上で動作するアプリケーション各々が前記メモリ資源に登録された共有情報を参照するためのインタフェースと、
前記メモリ資源に、あるオペレーティングシステムのアプリケーションが登録した共有情報を、他のオペレーティングシステムのアプリケーションが参照可能とする共有機能と、
前記複数のオペレーティングシステム間でメッセージを転送するOS間通信機能と、を有し、
前記共有機能は、アプリケーション間で共有するデータ種別毎の共有情報毎に前記メモリ資源への登録を許可するアプリケーションまたはオペレーティングシステムを定めた定義に基づいて、前記アプリケーションまたはオペレーティングシステムによる、当該共有情報の登録を許可し、さらに、一方のオペレーティングシステムのアプリケーションが前記メモリ資源に共有情報を登録あるいは参照している期間中における、他方のオペレーティングシステム上で動作するアプリケーションによる共有情報の前記メモリ資源への登録あるいは参照を禁止し、
前記OS間通信機能は、前記インタフェースにより、一方のオペレーティングシステム上のアプリケーションにより共有情報が登録または参照された場合に、当該メモリ資源に対して登録または参照された共有情報を共有するオペレーティングシステム上のアプリケーションに対して、当該共有情報が前記メモリ資源に登録あるいは参照されたことを通知すること
を特徴とする情報処理装置。
【請求項２】
複数のオペレーティングシステムを搭載し、当該複数のオペレーティングシステムを切替えて稼動させるＯＳ切り替え機能を備えた情報処理装置であって、
メモリ資源と、
前記複数のオペレーティングシステムの各々上で動作するアプリケーション各々が前記メモリ資源に共有情報を登録するためのインタフェースと、前記複数のオペレーティングシステムの各々上で動作するアプリケーション各々が前記メモリ資源に登録された共有情報を参照するためのインタフェースと、
前記メモリ資源に、あるオペレーティングシステムのアプリケーションが登録した共有情報を、他のオペレーティングシステムのアプリケーションが参照可能とする共有機能と、
前記複数のオペレーティングシステム間でメッセージを転送するOS間通信機能と、を有し、
前記共有機能は、アプリケーション間で共有するデータ種別毎の共有情報毎に前記メモリ資源への登録を許可するアプリケーションまたはオペレーティングシステムを定めた定義に基づいて、前記アプリケーションまたはオペレーティングシステムによる、当該共有情報の登録を許可し、
前記OS間通信機能は、前記インタフェースにより、一方のオペレーティングシステム上のアプリケーションにより共有情報が登録または参照された場合に、当該メモリ資源に対して登録または参照された共有情報を共有するオペレーティングシステム上のアプリケーションに対して、当該共有情報が前記メモリ資源に登録あるいは参照されたことを通知すること
を特徴とする情報処理装置。
【請求項３】
請求項１または２記載の情報処理装置であって、
前記複数のオペレーティングシステムのうちの少なくとも１つのオペレーティングシステムで動作する第１のアプリケーションは、放送あるいは通信により受信した信号を解析して位置情報を抽出し、当該情報を共有情報として前記メモリ資源に登録し、
他の少なくとも１つのオペレーティングシステムで動作する第２のアプリケーションは、前記メモリ資源に共有情報として登録されている位置情報を参照し、表示装置に表示すること
を特徴とする情報処理装置。
【請求項４】
請求項３記載の情報処理装置であって、
前記第２のアプリケーションは、前記表示装置に地図を表示するとともに、前記メモリ資源に共有情報として登録されている位置情報によって特定される前記地図上の位置を表すシンボルを、当該地図に重ねて表示すること
を特徴とする情報処理装置。
【請求項５】
請求項３記載の情報処理装置であって、
前記第１のアプリケーションは、放送あるいは通信により受信した信号を解析して位置情報とそれに付帯する付帯情報を抽出し、これらの情報を共有情報として前記メモリ資源に登録し、
前記第２のアプリケーションは、前記表示装置に地図を表示するとともに、前記メモリ資源に共有情報として登録されている位置情報およびそれに付帯する付帯情報を参照し、前記位置情報によって特定される前記地図上の位置を表すシンボルを、前記付帯情報の内容に応じて形状あるいは色を変化させて、前記地図に重ねて表示すること
を特徴とする位置情報表示装置。
【請求項６】
請求項１または２記載の情報処理装置であって、
前記複数のオペレーティングシステムのうちの少なくとも１つのオペレーティングシステムで動作する第１のアプリケーションは、表示装置に地図を表示して位置情報の入力を受け付け、当該情報を共有情報として前記メモリ資源に登録し、
他の少なくとも１つのオペレーティングシステムで動作する第２のアプリケーションは、前記メモリ資源に共有情報として登録されている位置情報を参照し、当該情報に関する情報検索を行うこと
を特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のオペレーティングシステムを搭載し、１つのプロセッサ上で、当該複数のオペレーティングシステムを切替えて稼動させることが可能な情報処理装置において、前記複数のオペレーティングシステム間で情報を共有させるための技術に関する。
【０００２】
【従来の技術】
通常の情報処理装置では、１つのオペレーティングシステムが稼動し、それが情報処理装置を構成するプロセッサやメモリや入出力装置といった資源を管理して、効率よく動作できるように資源スケジュール管理を実施している。
【０００３】
ところで、オペレーティングシステムには様々な種類がある。ユーザインタフェースやマルチメディア、通信などの処理に優れるものや、リアルタイム処理に優れるものなど様々である。これらの特徴を引き出すため、複数のオペレーティングシステムを１つのプロセッサで実行したいという要望がある。
【０００４】
１つのプロセッサ上で複数のオペレーティングシステムを稼動させる機構としては、大型計算機で実現されている仮想計算機方式（OSシリーズ第11巻、VM、岡崎世雄著、共立出版株式会社）がある。仮想計算機方式では、仮想計算制御プログラムが全ハードウェアを占有して管理し、それを仮想化して仮想計算機を構成する。仮想計算機を構成する制御部は、物理メモリ、入出力機器装置、外部割り込みなどを仮想化する。
【０００５】
一方、１つのプロセッサで複数のオペレーティングシステムのインタフェースを提供する技術として、マイクロカーネルがある。マイクロカーネルでは、マイクロカーネル上に、ユーザに見せるオペレーティングシステムの機能を提供するオペレーティングシステムサーバを構築する。ユーザは、そのサーバを経由して計算機資源を利用する。オペレーティングシステム毎にサーバを用意すれば、ユーザは、様々なオペレーティングシステム環境の提供を受けることができる。
【０００６】
【発明が解決しようとする課題】
１つのプロセッサ上で複数のオペレーティングシステムが稼動する環境では、各々のオペレーティングシステムが自立して動作するため、各々のオペレーティングシステムに実装されたアプリケーションが個別且つ非同期に動作する。しかしながら、各々のオペレーティングシステム上で動作するアプリケーションの種類によっては、互いに同期をとりながら情報交換することで機能を達成する場合もある。このような場合、各々のオペレーティングシステム上でアプリケーションが情報を共有したり、同期をとったりする仕組みが必要である。そこで、各々のオペレーティングシステムから参照可能なメモリ領域を提供する共有メモリや、各々のオペレーティングシステム間で通信するためのメッセージ通信などの技術が提案されている。
【０００７】
しかしながら、共有メモリを用いて、複数のオペレーティングシステム間で情報を共有し連係動作する場合、以下のような問題がある。
【０００８】
すなわち、あるオペレーティングシステムのアプリケーションが共有メモリに情報を登録している最中に、ＯＳコンテクスト切換えが発生して他のオペレーティングシステムに切換わると、当該他のオペレーティングシステムのアプリケーションが、共有メモリに登録されている書き換え途中の不正な情報を参照してしまう。
【０００９】
また、あるオペレーティングシステムのアプリケーションが共有メモリに情報を登録あるいは変更したことを、他のオペレーティングシステムのアプリケーションが直ちに認識することができない。たとえば、ポーリングにより情報の更新を監視していたとしても、ポーリング間隔時間より短い時間で情報の更新を認識することはできない。また、この場合、周期的に情報更新を判断しなければならないため、プロセッサの負荷を増加させる。
【００１０】
また、通信メッセージを用いて、複数のオペレーティングシステム間で情報を共有し連係動作する場合、各々のオペレーティングシステムのアプリケーションが、予め、共有すべき情報が記憶された共有メモリのアドレスや各々のアプリケーションタスクのタスクＩＤなどのインタフェース情報を知っていないと、情報の交換ができないという問題がある。
【００１１】
１つのプロセッサ上で複数のオペレーティングシステムが稼動する環境を、たとえば、ナビゲーション装置などの位置情報表示装置に適用した場合、これらの装置では、各々のオペレーティングシステムのアプリケーションが最新の位置情報を利用して処理を行うことが要求される。このため、上述した問題による影響が顕著となる。
【００１２】
また、開発済みのシステム環境に、複数のオペレーティングシステム間で共有している情報を利用するアプリケーションを新たに追加する場合、従来手法では、新たに追加するアプリケーションのために、既存アプリケーションの修正が必要になり、このため、開発工数や期間が増加する。
【００１３】
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、１つのプロセッサ上で複数のオペレーティングシステムが稼動する情報処理装置において、複数のオペレーティングシステム間で正しい情報を確実に共有できるフレームワーク（共有オブジェクト）を提供することにある。また、複数のオペレーティングシステム間で情報を迅速に交換できるフレームワークを提供することにある。
【００１４】
【課題を解決するための手段】
上記課題を解決するために、本発明では、複数のオペレーティングシステムを搭載し、当該複数のオペレーティングシステムを切替えて稼動させるＯＳ切り替え機能を備えた情報処理装置に、複数のオペレーティングシステムから参照可能なメモリ資源に、あるオペレーティングシステムのアプリケーションが登録した共有情報を、他のオペレーティングシステムのアプリケーションが参照可能とする共有機能を与える。
【００１５】
そして、前記共有機能に、あるオペレーティングシステムのアプリケーションが前記メモリ資源に共有情報を登録あるいは参照している期間中における、他のオペレーティングシステムのアプリケーションによる共有情報の前記メモリ資源への登録あるいは参照を禁止させ、これにより、複数のオペレーティングシステム間で正しい情報（あるオペレーティングシステムのアプリケーションが書き換え途中の不正な情報でない情報）を確実に共有できるようにする。
【００１６】
あるいは、前記共有機能に、あるオペレーティングシステムのアプリケーションが前記メモリ資源に共有情報を登録あるいは参照したとき、他のオペレーティングシステムのアプリケーションに、共有情報が前記メモリ資源に登録あるいは参照されたことを通知させ、これにより、複数のオペレーティングシステム間で情報を迅速に交換できるようにする。
【００１７】
【発明の実施の形態】
以下、図面を参照して、本発明の１実施形態について、複数のオペレーティングシステムを搭載し、当該複数のオペレーティングシステムを切替えて１つのプロセッサ上で稼動させるＯＳ切り替え機能を備えた情報処理装置を、車載用ナビゲーション装置に適用した場合を例にとり説明する。
【００１８】
図１は、本発明の１実施形態が適用された車載用ナビゲーション装置の機能ブロック図である。
【００１９】
図１において、演算処理部100は、位置を測定するための各種センサ（車輪速センサ108、方位センサ109、ジャイロ110およびＧＰＳ受信装置111）から出力されるセンサ情報から現在位置を検出し、得られた現在位置の情報を基に地図表示に必要な地図メッシュデータを地図データベース103から読み出す。そして、読み出した地図メッシュデータをグラフィックス展開して、そこに現在地を示すマークを重ねてディスプレイ102へ表示する（現在位置表示処理）。また、ユーザから指示された目的地と現在地とを結ぶ最適な経路を探索し、当該経路を地図に重ねてディスプレイ102に表示して、ユーザを目的地に誘導する（経路誘導処理）。また、ユーザが必要とする動的情報を通信装置107を用いて情報サービスセンタ（不図示）に問い合わせ、入手した動的情報をディスプレイ102へ表示する（動的情報提供処理）。また、演算処理部100は、上述の処理の他、様々な処理を行う中心的なユニットである。
【００２０】
入出力制御部101は、演算処理部100と周辺デバイス102〜112を接続するユニットであり、周辺デバイス102〜112のインタフェースに応じたＩ/Ｏを備える。詳細は図２で説明する。
【００２１】
ディスプレイ102は、演算処理部100で生成されたグラフィックス情報を表示するユニットである。ＣＲＴや液晶ディスプレイで構成される。なお、演算処理部100とディスプレイ102との間の信号S1は、ＲＧＢ信号やＮＴＳＣ(National Television System Committee)信号で接続するのが一般的である。
【００２２】
地図データベース103は、ＣＤ-ＲＯＭやＤＶＤ-ＲＯＭ、ＩＣカード、ハードディスクといった記憶媒体で構成される。地図データベース103には、地図表示で必要とする地図メッシュデータや案内情報や検索情報などが格納される。
【００２３】
音声入出力装置104は、スピーカとマイクを備えて構成され、経路誘導処理などにおいて演算処理部100が生成したユーザへのメッセージ（例えば、誘導案内音声）を、音声信号に変換し、スピーカから出力する。また、ユーザが発した声をマイクで受け付けて音声認識し、その認識結果を演算処理部100に送る。なお、音声入出力装置104にマイクで受け付けた音声信号をデジタル信号に変換する機能のみを搭載し、音声認識は演算処理部100で実行するようにしてもよい。
【００２４】
入力装置105は、ユーザからの指示を受け付けるユニットである。スクロールキーや縮尺変更キーなどのハードスイッチ、ジョイスティックおよびディスプレイ102上に設置されたタッチパネルなどを備えて構成される。なお、入力装置105は、赤外線で通信するリモコンを備えるものであってもよい。
【００２５】
ＬＡＮ装置106は、本ナビゲーション装置を搭載する車両内に設置された様々な機器と双方向通信するための装置である。車載ＬＡＮは、その用途毎に異なるのが一般的であり、情報系、制御系、電装系、診断系に分類できる。また、各々の用途で要求される伝送スピードや品質が異なる。このため、複数の方式のＬＡＮが用いられている場合は、これら複数のＬＡＮに対応するように、ＬＡＮ装置106を構成することが好ましい。
【００２６】
通信装置107は、公衆回線網や専用回線網と接続して双方向通信するための装置である。公衆回線網に接続するための機器としては、携帯電話やPHSなどがある。また、専用回線網に接続するための機器としては、ＭＣＡ無線機などがある。また、有料道路の料金を徴収するために設置が進んでいるＥＴＣといったＤＳＲＣのための装置も、通信装置107に含まれる。通信装置107を介して、本車載用ナビゲーション装置からインターネットに接続することで、極めて豊富な最新コンテンツを車内に取り込むことができる。
【００２７】
放送受信装置112は、地上に設置された放送局や衛星から送られる放送波を受信するための装置である。放送波は、大きくアナログ放送とデジタル放送に分離され、主にデジタル放送で受信した内容を受信機でデコードし、演算処理部100でフィルタリング処理することで必要な情報を抽出する。
【００２８】
本車載用ナビゲーション装置では、位置を検出するために使用するセンサとして、車輪速センサ108、方位センサ109、ジャイロ110およびＧＰＳ受信装置111を採用している。車輪速センサ108は、車輪の回転数と車輪の円周との積から距離を測定し、さらに対となる車輪の回転数の差から車両が曲がった角度を計測する。方位センサ109は、地球が保持している磁場を検知して、車両が向いている方角を検出する。ジャイロ110は、光ファイバジャイロや振動ジャイロといった、車両が回転した角度を検出する装置である。ＧＰＳ受信装置111は、３個以上のＧＰＳ衛星からの信号を受信して、各ＧＰＳ衛星および車両間の距離とその変化率を測定することで、車両の現在位置、移動速度および移動方位を測定する。なお、位置検出のために、上記のセンサ全てが必須な訳ではない。各々のセンサを、単独であるいは組み合わせて採用すればよい。
【００２９】
次に、図１に示す演算処理部100および入出力制御部101のハードウェア構成について説明する。
【００３０】
図２は、図１に示す演算処理部100および入出力制御部101のハードウェア構成図である。
【００３１】
入出力制御部101は、上述したように、演算処理部100と周辺デバイス102〜112を接続するユニットであり、周辺デバイス102〜112のインタフェースに応じたＩ/Ｏを備える。図示するように、Ｉ/Ｏには、Ａ/Ｄ変換器153、ＳＣＩ(Serial Communication Interface)154、ＰＩＯ(Parallel Input Output)155、カウンタ156、描画コントローラ157などがある。
【００３２】
Ａ/Ｄ変換器153は、入力されたアナログ信号をデジタル信号に変換する。ＳＣＩ154は、所定の通信速度で時系列的に通信するシリアル信号をパラレル信号に変換し、また、パラレル信号をシリアル信号に変換する。ＰＩＯ155は、パラレル信号を所定のタイミングでサンプリングする。カウンタ156は、パルス信号を積分することで所定時間単位に入力されたパルス数をカウントする。描画コントローラ157は、描画データを画素情報に高速に変換し、所定のビットレートでディスプレイ102に表示信号を出力する。
【００３３】
図示するように、このようなＩ/Ｏを備えた入出力制御部101は、プロセッサバス160を介して演算処理部100に接続される。また、周辺デバイス102〜112との入出力動作完了などを通知するため、割込み信号線161が演算処理部100のプロセッサ150に接続される。なお、図２では、割込み信号線161とプロセッサバス160があたかも別個独立しているように示しているが、実際には、割込み信号線161はプロセッサバス160の一部である。
【００３４】
演算処理部100は、図示するように、数値演算および各デバイスを制御するといった様々な処理を実行するプロセッサ150と、地図データや検索データや演算データなどのデータ類、および、処理プログラムを格納するメモリ151と、高速にメモリとメモリ間およびメモリと各デバイス間のデータ転送を実行するＤＭＡ（Direct Memory Access）コントローラ152と、を備えて構成される。
【００３５】
次に、上述した車載用ナビゲーション装置のソフトウエア構成について説明する。
【００３６】
図３は、図２に示す車載用ナビゲーション装置のハードウェア構成とソフトウェア構成との関係を示した図である。
【００３７】
メモリ151は、オペレーティングシステムプログラム（第１のＯＳ）206、オペレーティングシステムプログラム（第２のＯＳ）207、第１のＯＳ206上で動作するタスク（アプリケーション）プログラム（タスクＡ〜Ｃ）200〜202、第２のＯＳ207上で動作するタスク（アプリケーション）プログラム（タスクＤ〜Ｆ）203〜205、および、ＯＳ間制御機能プログラム214を保持する。第１のＯＳ206は、入出力ドライバ210、割込みハンドラ212およびリスケジューラ208を有する。同様に、第２のＯＳ207は、入出力ドライバ211、割込みハンドラ213およびリスケジューラ209を有する。
【００３８】
プロセッサ150は、複数のオペレーティングシステムを動作させるためのマイクロプロセッサである。メモリ151に保持されている各プログラムを読み出して実行する。また、プロセッサ150は、割込み信号線161によって通知される外部割込みなどから内部割込みをマスクできる機能を装備するものとする。ここで、割込みマスクとは、プログラムが割込みマスクを解除するまで、特定の割込みが入ることを遅延させる機能である。一般に、割込みマスク機能には、下記の３種類が存在する。
【００３９】
（１）全割込みマスク    ：全ての割込みをマスクする。
【００４０】
（２）個別割込みマスク  ：個々の割込みを各々マスクできるようにする。
【００４１】
（３）割込みレベルマスク：各割込みにレベルを設定し、設定レベル以下の割込みをマスクする。
【００４２】
プロセッサ150の種類によって、（１）と（２）の組合せ、あるいは（１）と(３）の組合せのいずれかを装備することが多い。後者の組合せを装備するプロセッサを採用する場合、対応する入出力装置の重要性や最小応答時間に応じて割込みレベルを割り当てることになる。
【００４３】
本実施形態における車載用ナビゲーション装置では、２つのオペレーティングシステム（第１のＯＳ206、第２のＯＳ207）が並列に動作する。各オペレーティングシステムは、自身に割り当てられたメモリおよびプロセッサ資源を用い、タスク（第１のＯＳではタスクＡ200〜Ｃ202、第２のＯＳではタスクＤ203〜Ｆ205）を実行する。なお、図３では、オペレーティングシステム数が２、全タスク数が６の場合を例示しているが、これらの数よりも多いまたは少ないオペレーティングシステム、タスクを実装することも可能である。
【００４４】
本実施形態では、各オペレーティングシステム上のタスク数の動的な変更は想定していない。しかし、各オペレーティングシステムが動的にタスク生成・削除を行うことは可能である。また、第１のＯＳ206と第２のＯＳ207の組み合わせは、いかなる種類のものの組み合わせであってもよい。たとえば、第１のＯＳ206を事務処理ＯＳ、第２のＯＳ207をリアルタイムＯＳとしてもかまわない。
【００４５】
なお、以下の説明では、便宜上、第２のＯＳ207は、第１のＯＳ206より優先順位が高いものと仮定する。この場合、タスクＤ203〜Ｆ205が実行状態ならば、第２のＯＳ207がプロセッサ資源が使用し、タスクＤ203〜Ｆ205のすべてがアイドル状態またはウェイト状態のときに、第１のＯＳ206にコンテクストが切換えられ、第１のＯＳ206がプロセッサ資源を使用する。
【００４６】
ＯＳ間制御機能プログラム214は、第１のＯＳ206と第２のＯＳ207を１つのプロセッサ150上で連携しながら動作させる仕掛け（共有機能）を提供する。ＯＳ間制御機能プログラム214は、第１のＯＳ206と第２のＯＳ207の両方からアクセス可能なＯＳ間共有メモリ215を提供する機能、第１のＯＳ206と第２のＯＳ207の間でのメッセージ転送を実現するＯＳ間通信機能216、第１のＯＳ206と第２のＯＳ207の間で排他制御および同期を実現するＯＳ間セマフォ機能217、そして、第１のＯＳ206と第２のＯＳ207の実行環境の切り替えを実現するＯＳコンテクスト切換機能218を提供する。
【００４７】
ＯＳ間共有メモリ215は、複数のオペレーティングシステム間で高速なデータ交換を実現することを目的としたものであり、第１のＯＳ206と第２のＯＳ207の両方から読み書きが可能である。
【００４８】
ＯＳ間通信機能216は、第１のＯＳ206と第２のＯＳ207のそれぞれに対応するメッセージキューを準備し、第１のＯＳ206および第２のＯＳ207間でのメッセージ受け渡しを行う。
【００４９】
ＯＳ間セマフォ機能217は、バイナリセマフォで、第１のＯＳ206および第２のＯＳ207間での排他制御を実現するために使用する。
【００５０】
なお、ＯＳ間共有メモリ215、ＯＳ間通信機能216およびＯＳ間セマフォ機能217は、本車載用ナビゲーション装置において、第１のＯＳ206および第２のＯＳ207間での情報の共有・交換を可能とするフレームワークを提供する。以下、このフレームワークを共有オブジェクトと呼ぶこととする。
【００５１】
ＯＳコンテクスト切換機能218は、割込み要求やＯＳ間制御機能プログラム214の各機能の呼び出しにより、オペレーティングシステムの切換が必要と判断されたときに、コンテクストを切り替える。
【００５２】
各オペレーティングシステム206、207が備える割込みハンドラ212、213は、入出力装置からの割込み要求を受ける。割込みハンドラ212、213は、割込みの種別毎に呼び出され、ユーザが定義した割込み処理プログラムを実行する。
【００５３】
各オペレーティングシステム206、207が備える入出力ドライバ210、211は、入出力装置との間でのデータ入出力を処理する。入出力ドライバ210、211は、各タスク（入出力ドライバ210ではタスクＡ200〜タスクＣ202、入出力ドライバ211ではタスクＤ203〜タスクＦ205）から入出力装置を制御するためのインタフェースを提供する。
【００５４】
各オペレーティングシステム206、207が備えるリスケジューラ208、209は、タスク（リスケジューラ208ではタスクＡ200〜タスクＣ202、リスケジューラ209ではタスクＤ203〜タスクＦ205）の生成・削除・停止・再開や、外部割込み・内部割込みに伴ってタスク切り替えを行わなければならない場合に起動される。リスケジューラ208、209は、直前に実行していたタスクの実行環境（プログラムカウンタ、ステータスレジスタ、汎用レジスタなど）をタスク管理テーブルに格納し、新たに実行すべきタスクを決定し、そのタスクの実行環境をタスク管理テーブルから取り出して各レジスタに設定することで、選択したタスクを実行する。
【００５５】
次に、図２に示すプロセッサ150の内部構成について説明する。
【００５６】
図４は、図２に示すプロセッサ150の内部構成例を示す図である。
【００５７】
キャッシュメモリ170は、メモリ151上のデータあるいは命令を一時的に格納するバッファ記憶装置である。ＣＰＵ171は、演算回路であり、メモリ151あるいはキャッシュメモリ170上に存在する命令を順次読み出して実行する。命令実行に際して、演算結果を一時的に保持するための汎用レジスタ172、実行命令アドレスを保持するプログラムカウンタ173、そして、実行状態を保持するステータスレジスタ174を用いる。キャッシュメモリ170、ＣＰＵ171、汎用レジスタ172、プログラムカウンタ173およびステータスレジスタ174は、互いに、データ転送を行うデータバス175とアドレス指定を行うアドレスバス176によって接続されている。
【００５８】
割込み信号線161とタイマ装置177は、割込みコントローラ177に接続される。割込みコントローラ177は、ＣＰＵ171に対して割込み状態信号179を生成する役割を果たす。割込み状態信号179は、ＣＰＵ171に対して現在如何なる種類の割込みが発生しているかを示す信号である。通常、ステータスレジスタ174は、現在の割込みマスクに関する情報を有しており、割込み状態信号179で指定される割込みを受け付けるか否かを決定する。割込みを受け付ける場合、割込みコントローラ177は、プログラムカウンタ173やステータスレジスタ174などの値を書き換え、対応する割込み処理プログラムを実行させる。
【００５９】
次に、上記構成の車載用ナビゲーション装置において、第１のＯＳ206および第２のＯＳ207間での情報の共有・交換を可能とする共有オブジェクトについて説明する。
【００６０】
図５は、本発明の１実施形態が適用された車載用ナビゲーション装置において、第１のＯＳ206および第２のＯＳ207間での情報の共有・交換を可能とする共有オブジェクトを説明するための図である。
【００６１】
図５において、共有オブジェクト219は、第１、２のＯＳ206、207上で動作するタスクＡ200〜Ｆ205から、全てのタスクが共有すべき情報の排他管理や同期処理を実行する。本車載用ナビゲーション装置において共有オブジェクト219が管理する情報は、たとえば、自車両の現在位置、目的地、経由地といったノード単位で管理すべき位置情報、渋滞情報や所定地点までの経路情報といったリンク単位で管理すべき位置情報、これらの位置情報に付加された静的情報・動的情報などがある。ここで、静的情報とは、施設の名称やサービス内容といった時間によって変化しない情報を指す。また、動的情報とは、営業時間や駐車場の満空情報といった時間と共に変化する情報を指す。なお、共有オブジェクト219が管理する情報は、これらに限ったものではない。つまり、複数のオペレーティングシステム上で動作する全てのタスクが共有すべき情報は、これらのタスク各々の用途
（目的）や情報処理装置の用途に応じて定まるものであり、共有オブジェクト219は、複数のオペレーティングシステム上で動作する全てのタスクが共有すべき様々な情報を管理することができる。
【００６２】
ところで、第１、２のＯＳ206、207からＯＳ間共有メモリ215を参照するとき、次のような問題が発生する。
【００６３】
すなわち、第１に、たとえば、第１のＯＳ206上で実行されているタスクからＯＳ間共有メモリ215に情報登録をしている最中に、ＯＳコンテクスト切換が発生し、第２のＯＳ207上で実行されるタスクがこの情報を参照しようとするとする場合、情報登録が中途半端な情報（不正な情報）を参照してしまうおそれがある。
【００６４】
また、第２に、たとえば、第１のＯＳ206上で実行されているタスクからＯＳ間共有メモリ215に情報登録をしても、第２のＯＳ207上で実行されるタスクがその事実を直ちに認識することができない。
【００６５】
さらに、第３に、複数のオペレーティングシステム上で動作する各々のアプリケーション（タスク）に、ＯＳ間共有メモリ215へ情報を登録・参照するための機能を個別に実装してしまうと、新たな情報を複数のオペレーティングシステム間で共有しようとしたとき、アプリケーションプログラムの修正が発生し、開発工数や期間が増加してしまう。
【００６６】
そこで、本実施形態では、複数のオペレーティングシステム上で動作する各々のアプリケーションから、複数のオペレーティングシステムで共有すべき情報を管理する共有オブジェクト219を分離、独立させている。そして、共有オブジェクト219に、複数のオペレーティングシステム各々からＯＳ間共有メモリ215へ排他的にアクセスさせる機能を持たせることで、あるオペレーティングシステム上のアプリケーションが書き換え途中の情報が、他のオペレーティングシステム上のアプリケーションに参照されてしまうのを防いでいる。また、共有オブジェクト219に、あるオペレーティングシステム上のアプリケーションがＯＳ間共有メモリ215への情報登録・参照を行った事実を、他のアプリケーション上のアプリケーションに通知する機能を持たせることで、複数のオペレーティングシステム間で情報の交換を迅速に行えるようにしている。
【００６７】
これらの機能は、第１、２のＯＳ206、207上で動作する各タスクＡ200〜Ｆ205が、共有オブジェクト219からＯＳ間共有メモリ215、ＯＳ間通信機能216およびＯＳ間セマフォ機能217を組み合わせて呼び出すことにより実現される。
【００６８】
なお、第１、２のＯＳ206、207上で動作する各タスク（アプリケーション）Ａ200〜Ｆ205が共有オブジェクト219にアクセスするためのインタフェースとして、各タスクＡ200〜Ｆ205に対して、共有オブジェクト219の作成、共有オブジェクト219への登録、共有オブジェクト219の参照、共有オブジェクト219の削除といったＡＰＩ(Application Programing Interface)を提供する。また、共有オブジェクト219毎のアクセスを実現するため、共有オブジェクト219毎に異なるＡＰＩを設ける、あるいは、ＡＰＩに対する引数で共有オブジェクト219を判別するように実装する。
【００６９】
第１、２のＯＳ206、207上で動作する各タスクＡ200〜Ｆ205は、これらの共通のＡＰＩを用い、共有オブジェクト219にアクセスする。以下、共有オブジェクト219の作成・削除、共有オブジェクト219への登録、および、共有オブジェクト219の参照について、図６〜図８を用いて説明する。
【００７０】
まず、共有オブジェクト219の作成処理について説明する。
【００７１】
図６は、第１、２のＯＳ206、207上で動作する各タスクＡ200〜Ｆ205が、共通のＡＰＩを用いて、共有オブジェクト219を作成する際の処理を示したフロー図である。
【００７２】
共有オブジェクト219を作成するタスクは、作成対象の共有オブジェクトの属性や必要なメモリ量から、この共有オブジェクトが使用するＯＳ間共有メモリを取得する（ステップ1001）。ここで、ＯＳ間共有メモリは、第１、２のＯＳ206、207の共有メモリとして割り当てられたメモリ空間より、未使用のメモリ空間を探し出し、そのメモリ区間を、作成対象の共有オブジェクトに割り当てる。なお、ＯＳ間共有メモリを取得できなかった場合（ステップ1002でＮｏ）、たとえば、空きメモリ空間が不足している場合は、所定のエラー処理（取得した資源の解放）を行う（ステップ1005）。
【００７３】
次に、共有オブジェクトを作成するタスクは、ＯＳ間共有メモリを取得できたならば（ステップ1002でＹｅｓ）、各タスクによるＯＳ間共有メモリへの排他的なアクセスを管理するためのＯＳ間セマフォを取得する（ステップ1003）。ここで使用するＯＳ間セマフォは、バイナリセマフォである。複数のオペレーティングシステム上の１つのタスクのみセマフォを取得できる。なお、ＯＳ間セマフォを取得できなかった場合（ステップ1004でＮｏ）、所定のエラー処理（取得した資源の解放）を行う（ステップ1005）。ここで、解放する資源とは、ＯＳ間共有メモリおよびＯＳ間セマフォである。これらの資源を解放することで、メモリ資源のリークを防止できる。
【００７４】
次に、共有オブジェクトを作成するタスクは、ＯＳ間セマフォを取得できたならば（ステップ1004でＹｅｓ）、ＯＳ間共有メモリに情報を登録あるいは参照したときに、ＯＳ間メッセージ通信を用いてメッセージを送信するか否かを判定する（ステップ1006）。ここでの判定処理は、たとえば、共有オブジェクト作成時における当該タスクへの入力パラメータより判定し、メッセージ通信先が入力されている場合は、通信要求有りと判断する。メッセージ送信の必要なしと判定した場合（ステップ1006でＮｏ）、共有オブジェクトの作成処理を終了する。
【００７５】
一方、メッセージ送信の必要ありと判定した場合（ステップ1006でＹｅｓ）、ＯＳ間共有メモリに情報を登録あるいは参照したときに、ＯＳ間メッセージ通信を用いてメッセージ送信する相手先のタスクを登録する（ステップ1007）。ここで登録するタスクは、１つであってもよいし、複数であってもよい。それから、共有オブジェクトの作成処理を終了する。
【００７６】
なお、以上では、共有オブジェクトの作成時に、ＯＳ間共有メモリに情報を登録あるいは参照したときにＯＳ間メッセージ通信を用いてメッセージ送信する相手先のタスクを登録する構成について説明したが、ＯＳ間共有メモリに情報を登録あるいは参照するタスクから、メッセージを通知するアプリケーションを設定する構成としてもよい。この場合、共有オブジェクトの作成後も、自由にメッセージ通知先を設定できるため、既存のアプリケーションの修正無しに情報を登録・参照するアプリケーションを新たに追加することができるようになる。
【００７７】
次に、共有オブジェクト219の削除処理について説明する。
【００７８】
この処理は、共有オブジェクト219を削除するタスクが、削除対象の共有オブジェクトが使用しているＯＳ間共有メモリおよびＯＳ間セマフォを解放することで行う。
【００７９】
次に、共有オブジェクト219のＯＳ間共有メモリ215への情報登録処理について説明する。
【００８０】
図７は、第１、２のＯＳ206、207上で動作する各タスクＡ200〜Ｆ205が、共通のＡＰＩを用いて、共有オブジェクト219のＯＳ間共有メモリ215へ情報を登録する際の処理を示したフロー図である。
【００８１】
共有オブジェクトのＯＳ間共有メモリへ情報を登録するタスクは、アクセス対象の共有オブジェクトのオブジェクト種別に応じて、対応するＯＳ間セマフォを取得する（ステップ1011）。セマフォを取得する方法としては、セマフォが取得できないときに直ちにエラーリターンする方法や、所定時間取得できないときにエラーリターンする方法や、セマフォを取得できるまで永遠に待つ方法などがある。ここでは、所定時間取得できないときにエラーリターンする方法を採用することが好ましい。エラーリターンした場合は、共有オブジェクトへの登録処理を終了する。
【００８２】
次に、共有オブジェクトのＯＳ間共有メモリへ情報を登録するタスクは、アクセス対象の共有オブジェクトのオブジェクト種別に応じて定まるメモリ空間（ＯＳ間共有メモリ）に、登録すべき情報を登録する（ステップ1012）。
【００８３】
それから、現在登録処理中の共有オブジェクトに、情報登録されたときにメッセージ通信すべきタスクが登録されているならば（ステップ1013でＹｅｓ）、登録されているタスクに対し、共有オブジェクトへの登録が実行されたことをメッセージ通信で通知する（ステップ1014）。ここで、共有オブジェクトのＯＳ間共有メモリへ情報を登録するタスクが、メッセージ通知先のタスクと同一のオペレーティングシステム上で動作している場合は、そのオペレーティングシステムに備えられたメッセージ通信を用い、異なるオペレーティングシステム上で動作している場合は、ＯＳ間メッセージ通信を用いる。その後、ステップ1011で取得したＯＳ間セマフォを解放して（ステップ1015）、共有オブジェクトへの登録処理を終了する。
【００８４】
一方、現在登録処理中の共有オブジェクトに、情報登録されたときにメッセージ通信すべきタスクが登録されていないならば（ステップ1013でＮｏ）、ステップ1011で取得したＯＳ間セマフォを直ちに解放して（ステップ1015）、共有オブジェクトへの登録処理を終了する。
【００８５】
次に、共有オブジェクト219のＯＳ間共有メモリ215の情報参照処理について説明する。
【００８６】
図８は、第１、２のＯＳ206、207上で動作する各タスクＡ200〜Ｆ205が、共通のＡＰＩを用いて、共有オブジェクト219のＯＳ間共有メモリ215に登録されている情報を参照する際の処理を示したフロー図である。
【００８７】
共有オブジェクトのＯＳ間共有メモリの情報を参照するタスクは、アクセス対象の共有オブジェクトのオブジェクト種別に応じて、対応するＯＳ間セマフォを取得する（ステップ1021）。セマフォを取得する方法としては、セマフォが取得できないときに直ちにエラーリターンする方法や、所定時間取得できないときにエラーリターンする方法や、セマフォを取得できるまで永遠に待つ方法などがある。ここでは、所定時間取得できないときにエラーリターンする方法を採用することが好ましい。エラーリターンした場合は、共有オブジェクトの参照処理を終了する。
【００８８】
次に、共有オブジェクトのＯＳ間共有メモリの情報を参照するタスクは、アクセス対象の共有オブジェクトのオブジェクト種別に応じて定まるメモリ空間（ＯＳ間共有メモリ）に登録されている情報を参照する（ステップ1022）。
【００８９】
それから、現在参照処理中の共有オブジェクトに、情報参照されたときにメッセージ通信すべきタスクが登録されているならば（ステップ1023でＹｅｓ）、登録されているタスクに対し、共有オブジェクトの参照が実行されたことをメッセージ通信で通知する（ステップ1024）。ここで、共有オブジェクトのＯＳ間共有メモリの情報を参照するタスクが、メッセージ通知先のタスクと同一のオペレーティングシステム上で動作している場合は、そのオペレーティングシステムに備えられたメッセージ通信を用い、異なるオペレーティングシステム上で動作している場合は、ＯＳ間メッセージ通信を用いる。その後、ステップ1021で取得したＯＳ間セマフォを解放して（ステップ1025）、共有オブジェクトの参照処理を終了する。
【００９０】
一方、現在参照処理中の共有オブジェクトに、情報参照されたときにメッセージ通信すべきタスクが登録されていないならば（ステップ1023でＮｏ）、ステップ1021で取得したＯＳ間セマフォを直ちに解放して（ステップ1025）、共有オブジェクトの参照処理を終了する。
【００９１】
図９は、上述した共有オブジェクトを、車載用ナビゲーション装置に組み込んだときのより具体的な構成を示した図である。
【００９２】
この図では、第１のＯＳ206のアプリケーションとして、通信アプリケーション300を実装し、第２のOS207のアプリケーションとして、ナビアプリケーション305を実装した例を示している。また、第１のＯＳ206には、様々な通信アプリケーションを実行できることが望ましいため、汎用の実行・開発環境が提供される汎用ＯＳを用い、第２のＯＳ207には、カーナビゲーションといったリアルタイム処理を要求するアプリケーションを実行するため、リアルタイムＯＳを用いるものとする。
【００９３】
通信アプリケーション300、ＸＭＬパーサ301、ＨＴＭＬブラウザ302およびＰＯＩマネージャ303は、第１のＯＳ206上のタスクに相当する。
【００９４】
通信アプリケーション300は、衛星や地上に設けられた放送局などから一方的に送信された信号を受信する放送系アプリケーションと、電話回線や移動通信回線といった公衆回線網を用いて双方向に通信する通信系アプリケーションとに分類できる。本実施形態で説明する通信アプリケーション300は、放送で送信された信号を受信し、受信信号ストリームからＸＭＬ記述の情報をデコードし、ＸＭＬパーサ301にその情報を転送する放送系アプリケーションに属する。
【００９５】
ＸＭＬパーサ301は、ＸＭＬで記述された情報からタグを解析し、当該情報をＨＴＭＬ形式で記述された情報と、ＰＯＩ(Point Oｆ Interrest)と呼ばれる位置情報を含む施設情報とに分離する。そして、ＨＴＭＬ形式の情報をＨＴＭＬブラウザ302に転送し、位置情報をＰＯＩマネージャ303に転送する。なお、ＸＭＬパーサ301は、ＨＴＭＬ形式の情報やＰＯＩ情報のみならず、様々な書式の情報を取り扱うことができる。
【００９６】
ＨＴＭＬブラウザ302は、ＨＴＭＬ形式の情報を解析し、テキストや画像といった情報をディスプレイ102に表示する。ＨＴＭＬ形式の情報は、インターネット上で情報を配信する最も一般的な形式の記述法である。
【００９７】
ＰＯＩマネージャ303は、受信したＰＯＩ情報を、第１のＯＳ206を介して、共有オブジェクト219のＯＳ間共有メモリ215に登録する。また、共有オブジェクト219のＯＳ間共有メモリ215に登録されたＰＯＩ情報を、第１のＯＳ206を介して参照する。ここで、共有オブジェクト219に登録するＰＯＩ情報は、施設の位置情報やそれに付随する静的・動的な情報、道路渋滞情報、推奨経路情報などを含む。ここで、道路渋滞情報や推奨経路情報の表現方法として、位置情報点列の羅列で表現する方法や、線状のリンクで表現する方法など様々な方法がある。
【００９８】
ナビアプリケーション305、ナビ基本機能306およびＰＯＩハンドラ307が、第２のＯＳ207上のタスクに相当する。
【００９９】
ナビ基本機能306は、ナビゲーション装置で必要とする基本機能を備えたライブラリである。ナビ基本機能には、地図表示機能、検索機能、自車位置測定機能、推奨経路探索機能、推奨経路誘導機能などがある。
【０１００】
ＰＯＩハンドラ307は、ＰＯＩマネージャ303が共有オブジェクト219のＯＳ間共有メモリ215に登録したＰＯＩ情報を、第２のＯＳ207を介して参照する。また、第２のＯＳ207を介して、共有オブジェクト219のＯＳ間共有メモリ215に必要な情報を登録する。
【０１０１】
ナビアプリケーション305は、ＰＯＩハンドラ307で参照したＰＯＩ情報やユーザ操作情報を解析し、ナビ基本機能306を呼び出すことで、ディスプレイ102やスピーカといった出力インタフェースを介して、ユーザにナビ情報を提供する。
【０１０２】
図１０は、図９に示す車載用ナビゲーション装置において、放送で受信したＰＯＩ情報を地図に重ねて表示する場合の動作を説明するための図である。
【０１０３】
上述したように、本実施形態が適用された車載用ナビゲーション装置は、２つのオペレーティングシステム（第１のＯＳ206、第２のＯＳ207）が１つのプロセッサ150上で動作する。また、放送を受信する通信アプリケーション300と、地図を表示するナビアプリケーション305とが異なるオペレーティングシステム上で動作する。そこで、以下の要領によりＰＯＩ情報を地図に重ねて表示している。
【０１０４】
まず、放送局320は、音声、動画、ＰＯＩ情報を含む様々なコンテンツをＸＭＬで記述した情報を放送する。なお、便宜上、ここでは、放送局320から放送されたＸＭＬ記述の情報を受信しているが、公衆回線網を介して当該情報を受信するようにしてもよい。
【０１０５】
受信したＸＴＭＬ記述の情報は、一旦、ストリームサーバ322に記憶される。ストリームサーバ322は、一時的に放送波をバッファリングするためのメモリであってもよいし、ハードディスクや記録が可能なＣＤやＤＶＤなどの記憶媒体であってもよい。
【０１０６】
ストリームサーバ322に蓄えられた情報は、ＸＭＬパーサ301にてタグが解析され、ＨＴＭＬ形式で記述された情報と、ＰＯＩ情報とに分離される。そして、ＨＴＭＬ形式の情報はＨＴＭＬブラウザ302に渡され、ＰＯＩ情報はＰＯＩマネージャ303に渡される。
【０１０７】
ＨＴＭＬブラウザ302は、ＸＭＬパーサ301から受け取ったＨＴＭＬ形式の情報を解析し、テキストや画像といった情報をディスプレイ102に表示する。
【０１０８】
ＰＯＩマネージャ303は、先に図７を用いて説明した共有オブジェクトへの登録機能を使って、ＸＭＬパーサ301から受け取ったＰＯＩ情報を共有オブジェクト219のＯＳ間共有メモリ215に登録する。共有オブジェクト219の構成については、後述する。
【０１０９】
ここで、ＰＯＩ情報を登録する共有オブジェクト219は、図５で先に説明したように、あるタスクが情報を登録・参照している最中は、他のタスクの当該共有オブジェクト219へのアクセスが制限される。このため、ＰＯＩマネージャ303が情報を登録している最中に、ＰＯＩハンドラ307が同一の情報を参照することはない。また、ＰＯＩハンドラ307が情報を参照している最中に、ＰＯＩマネージャ303が当該情報を更新することもない。
【０１１０】
また、あるタスクが情報を登録・参照した場合、予め登録されたタスクにその事実を知らせるメッセージを通知する。ここでは、共有オブジェクト219にＰＯＩ情報が登録された場合に、その旨のメッセージをナビアプリケーション305に送信するようにしている。したがって、ＰＯＩマネージャ303がＰＯＩ情報を共有オブジェクト219に登録すると、その旨を知らせるメッセージが、ＯＳ間メッセージを利用して、ナビアプリケーション305に通知される。このため、ＰＯＩ情報が更新されると、ナビアプリケーション305は、直ちにＰＯＩハンドラ307を用いて、共有オブジェクト219に登録されたＰＯＩ情報を参照することができる。
【０１１１】
ナビアプリケーション305は、ナビ基本機能が備える地図表示機能を用い、所定地点を中心とする平面地図や、上空から地点から俯瞰した鳥瞰図などを表示する。ここで、ＰＯＩハンドラ307を用いて参照したＰＯＩ情報に含まれる識別ＩＤから、表示すべきシンボルの形状を決定し、付加ＩＤから色や点滅などのシンボルを表示する形態を決定する。ここで、識別ＩＤは、レストランや駐車場といった施設の属性を示す情報であり、ＰＯＩ情報に含まれる静的情報に相当する。また、付加ＩＤは、たとえばレストランが営業中か否かや駐車場に空きがあるか否かといった情報であり、ＰＯＩ情報に含まれる動的情報に相当する。このようにして決定されたシンボルを、地図上の、ＰＯＩ情報に含まれる位置情報から決定される位置に重ねて表示する。
【０１１２】
付加ＩＤに応じてシンボルの色を変化させることにより、同じシンボル形状でも異なる情報（たとえばレストランが営業中か否かや駐車場に空きがあるか否かなど）をユーザに提供することができる。このため使い勝手が向上する。なお、ナビアプリケーション305は、表示されたシンボルがユーザによる入力操作で選択されたとき、ＰＯＩ情報に含まれるその詳細な付加情報を、別ウインドウなどを用いて表示するように動作させてもよい。
【０１１３】
このように、共有オブジェクト219を導入することにより、１つのプロセッサ上で複数のオペレーティングシステムが稼動する環境において、それぞれのオペレーティングシステムに得意な処理を行わせつつ、それぞれのオペレーティングシステムに実装された各アプリケーションを連携して動作させることができる。
【０１１４】
このため、上記のように、第２のＯＳ207であるリアルタイムＯＳ上のナビアプリケーション305により表示した地図上に、第１のＯＳ206である汎用ＯＳ上の通信アプリケーション300で入手したＰＩＯ情報を地図に重ねて表示することが可能となり、使い勝手のよいナビゲーション装置を提供することができる。
【０１１５】
図１１は、図１０で説明したナビゲーション装置にて実装した共有オブジェクトの一構成例である。
【０１１６】
共有オブジェクトのデータ構成としては様々なものが考えられるが、ここでは、種別毎に共有オブジェクトを独立して記憶する場合の例について説明する。
【０１１７】
それぞれの種別の共有オブジェクト（ＯＢＪ）340は、１対１に対応するセマフォ341を備える。セマフォ341は、タスクが当該セマフォ341に対応する共有ＯＢＪ340へ排他的にアクセスするのに使用する。
【０１１８】
図中の符号350〜355は、ＩＤｎの共有ＯＢＪ340に登録されたＰＯＩ情報を示している。共有ＯＢＪ340に登録されるＰＯＩ情報は、ＰＯＩの位置を示す経度350および緯度351と、ＰＯＩ情報を受信した時刻352と、ＰＯＩがどのような施設なのかを示す識別ＩＤ353と、ＰＯＩの付加的な情報をＩＤコードで表現した付加ＩＤ354と、ＰＯＩの付加的な情報を文字列で表現した付加情報355とで構成される。ここで、ＰＯＩの位置を表現する方法は、図示した経度・緯度以外に、地図データのメッシュＩＤやメッシュ内の正規化Ｘ座標値、Ｙ座標値であってもよい。
【０１１９】
なお、図１１に示した共有オブジェクトのデータ構成は、あくまでも一例にすぎない。共有オブジェクトのデータ構成としては様々なものが考えられる。たとえば、後に図１２を用いて説明するように、ナビゲーション装置に表示した地図上のシンボルあるいは地点をユーザに選択させ、選択されたシンボルあるいは地点に対応する位置に関する情報を情報サービスセンタから入手する場合、共有ＯＢＪ340に蓄えるＰＯＩ情報は、選択されたシンボルあるいは地点に対応する位置を示す経度および緯度や、シンボルが選択された場合は当該シンボルの識別ＩＤなどで構成される。
【０１２０】
図１２は、図９に示す車載用ナビゲーション装置において、地図に重ねて表示されているシンボルあるいは地図上の地点がユーザにより選択された場合に、当該選択されたシンボルあるいは地点に対応する位置に関する情報を情報サービスセンタから入手して表示する場合の動作を説明するための図である。
【０１２１】
ナビアプリケーション305は、ナビ基本機能が備える地図表示機能を用い、所定地点を中心とする平面地図や、上空から地点から俯瞰した鳥瞰図などを表示する。さらに、ナビ検索機能が備える検索機能を用い、現在表示している地図表示エリア内に存在する施設情報から所定の施設情報を選択し、そのシンボルを地図に重ねて表示する。ここで、検索機能は、車載用ナビゲーション装置内に実装された記憶媒体から情報を検索するため、時間と共に情報が変化する動的情報や、当該記憶媒体に記憶することができない大量の情報を表示することはできない。そこで、車載用ナビゲーション装置では、インターネット325などのネットワークに接続された情報サービスセンタ326に情報を要求し、得られた情報をディスプレイ102やスピーカより出力してユーザに提示する。
【０１２２】
上述したように、本実施形態が適用された車載用ナビゲーション装置は、２つのオペレーティングシステム（第１のＯＳ206、第２のＯＳ207）が１つのプロセッサ150上で動作する。また、インターネット325を介した通信を行う通信アプリケーション300と、地図を表示するナビアプリケーション305とが異なるオペレーティングシステム上で動作する。そこで、以下の要領により、ユーザが選択したシンボルあるいは地図上の地点に対応する位置に関する情報を、情報サービスセンタから入手して表示している。
【０１２３】
まず、ナビアプリケーション305は、ナビ基本機能が備える地図表示機能を用い、所定地点を中心とする平面地図や上空から地点から俯瞰した鳥瞰図などを表示するとともに、当該地図上に表示したシンボルあるいは地点の選択を、入力装置105や音声入出力装置104を介してユーザから受け付ける。そして、選択された地点の位置情報、あるいは、選択されたシンボルの位置情報および識別ＩＤといったＰＯＩ情報を検出する。
【０１２４】
ＰＯＩハンドラ307は、先に図７を用いて説明した共有オブジェクトへの登録機能を用い、ナビアプリケーション305で検出されたＰＯＩ情報を、共有オブジェクト219に登録する。共有オブジェクト219は、ＰＯＩ情報が登録された旨のメッセージを、当該メッセージの送信先として予め登録された通信アプリケーション300に、ＯＳ間通信メッセージを利用して送信する。これを受けて、通信アプリケーション300は、ＰＯＩマネージャ303を介して、共有オブジェクト219にアクセスし、そこに登録されているＰＯＩ情報を読み出す。
【０１２５】
次に、通信アプリケーション300は、インターネット325などのネットワークを介して情報サービスセンタ326と通信し、情報要求を情報サービスセンタ326に送信する。これを受けて、情報サービスセンタ326は、要求内容を解析し、要求に対応した回答情報を通信アプリケーション300に返信する。
【０１２６】
たとえば、通信アプリケーション300は、ＰＯＩマネージャ303が参照したＰＯＩ情報に含まれる位置情報や識別ＩＤを要求情報として情報サービスセンタ326に送信する。そして、送信した位置情報や識別ＩＤに対応する情報を、ＨＴＭＬ形式で情報サービスセンタ326から受け取り、ＨＴＭＬブラウザ302に送る。
【０１２７】
あるいは、通信アプリケーション300は、ＰＯＩマネージャ303が参照したＰＯＩ情報に含まれる位置情報や識別ＩＤから、参照すべき情報を提供しているサーバのアドレスを検索する。そして、検索されたアドレス情報を用いて該アドレスのサーバにアクセスし、要求情報を送信する。それから、ＨＴＭＬ形式のファイルをサーバから受け取り、ＨＴＭＬブラウザ302に送る。
【０１２８】
ＨＴＭＬブラウザ302は、通信アプリケーション300から受け取ったＨＴＭＬ形式のファイルを解析し、テキストや画像といった情報をディスプレイ102に表示する。
【０１２９】
このように、共有オブジェクト219を導入することにより、１つのプロセッサ上で複数のオペレーティングシステムが稼動する環境において、それぞれのオペレーティングシステムに得意な処理を行わせつつ、それぞれのオペレーティングシステムに実装された各アプリケーションを連携して動作させることができる。
【０１３０】
このため、上記のように、第２のＯＳ207であるリアルタイムＯＳ上のナビアプリケーション305において、ユーザにより選択されたシンボルあるいは地図上の地点について、当該シンボルあるいは地図上の地点に対応する位置に関する情報を、第１のＯＳ206である汎用ＯＳ上の通信アプリケーション300により情報サービスセンタ326から入手し、表示することが可能となり、使い勝手のよいナビゲーション装置を提供することができる。
【０１３１】
図１３は、図９に示す車載用ナビゲーション装置において、地図に重ねて表示されているシンボルあるいは地図上の地点がユーザにより選択された場合に、当該選択されたシンボルあるいは地点に対応する位置に関する情報を情報サービスセンタから入手し、当該情報を地図上に重ねて表示する場合の動作を説明するための図である。
【０１３２】
つまり、図１３に示す動作は、先に図１２を用いて説明した、地図に重ねて表示されているシンボルあるいは地図上の地点がユーザにより選択された場合に、当該選択されたシンボルあるいは地点に対応する位置に関する情報を情報サービスセンタから入手して表示する場合の動作と、先に図１０を用いて説明した、受信した情報を地図に重ねて表示する場合の動作とを、組み合わせたものになる。
【０１３３】
まず、ナビアプリケーション305は、ナビ基本機能が備える地図表示機能を用い、所定地点を中心とする平面地図や上空から地点から俯瞰した鳥瞰図などを表示するとともに、当該地図上に表示したシンボルあるいは地点の選択を、入力装置105や音声入出力装置104を介してユーザから受け付ける。そして、選択された地点の位置情報、あるいは、選択されたシンボルの位置情報および識別ＩＤといったＰＯＩ情報を検出する。
【０１３４】
ＰＯＩハンドラ307は、先に図７を用いて説明した共有オブジェクトへの登録機能を用い、ナビアプリケーション305で検出されたＰＯＩ情報を、共有オブジェクト219に登録する。共有オブジェクト219は、ＰＯＩ情報が登録された旨のメッセージを、当該メッセージの送信先として予め登録された通信アプリケーション300に、ＯＳ間通信メッセージを利用して送信する。これを受けて、通信アプリケーション300は、ＰＯＩマネージャ303を介して、共有オブジェクト219にアクセスし、そこに登録されているＰＯＩ情報を読み出す。
【０１３５】
次に、通信アプリケーション300は、インターネット325などのネットワークを介して情報サービスセンタ326と通信し、情報要求を情報サービスセンタ326に送信する。これを受けて、情報サービスセンタ326は、要求内容を解析し、要求に対応した回答情報を通信アプリケーション300に返信する。
【０１３６】
たとえば、通信アプリケーション300は、ＰＯＩマネージャ303が参照したＰＯＩ情報に含まれる位置情報や識別ＩＤを要求情報として情報サービスセンタ326に送信する。そして、送信した位置情報や識別ＩＤに対応する情報を、ＸＭＬ形式で情報サービスセンタ326から受け取り、ＸＭＬパーサ301に送る。
【０１３７】
あるいは、通信アプリケーション300は、ＰＯＩマネージャ303が参照したＰＯＩ情報に含まれる位置情報や識別ＩＤから、参照すべき情報を提供しているサーバのアドレスを検索する。そして、検索されたアドレス情報を用いて該アドレスのサーバにアクセスし、要求情報を送信する。それから、ＸＭＬ形式の情報をサーバから受け取り、ＸＭＬパーサ301に送る。
【０１３８】
ＸＭＬパーサ301は、通信アプリケーション300から受け取ったＸＭＬ形式の情報のタグを解析し、当該情報を、ＨＴＭＬ形式で記述された情報とＰＯＩ情報に分離する。そして、ＨＴＭＬ形式の情報をＨＴＭＬブラウザ302に送り、ＰＯＩ情報をＰＯＩマネージャ303に送る。
【０１３９】
ＨＴＭＬブラウザ302は、ＸＭＬパーサ301から受け取ったＨＴＭＬ形式の情報を解析し、テキストや画像といった情報をディスプレイ102に表示する。
【０１４０】
ＰＯＩマネージャ303は、先に図７を用いて説明した共有オブジェクトへの登録機能を用い、ＸＭＬパーサ301から受け取ったＰＯＩ情報を、共有オブジェクト219に登録する。共有オブジェクト219は、ＰＯＩ情報が登録された旨のメッセージを、当該メッセージの送信先として予め登録されたナビアプリケーション305に、ＯＳ間通信メッセージを利用して送信する。これを受けて、ナビアプリケーション305は、ＰＯＩハンドラ307を介して、共有オブジェクト219にアクセスし、そこに登録されているＰＯＩ情報を読み出す。そして、このＰＯＩ情報に含まれる付加ＩＤから色や点滅などのシンボルを表示する形態を決定する。上述したように、付加ＩＤとは、たとえばレストランが営業中か否かや駐車場に空きがあるか否かといった情報であり、ＰＯＩ情報に含まれる動的情報に相当する。このようにして決定されたシンボルを、地図上の、ＰＯＩ情報に含まれる位置情報から決定される位置に重ねて表示する。
【０１４１】
このように、共有オブジェクト219を導入することにより、１つのプロセッサ上で複数のオペレーティングシステムが稼動する環境において、それぞれのオペレーティングシステムに得意な処理を行わせつつ、それぞれのオペレーティングシステムに実装された各アプリケーションを連携して動作させることができる。
【０１４２】
このため、上記のように、第２のＯＳ207であるリアルタイムＯＳ上のナビアプリケーション305において、ユーザにより選択されたシンボルあるいは地図上の地点について、当該シンボルあるいは地図上の地点に対応する位置に関する情報を、第１のＯＳ206である汎用ＯＳ上の通信アプリケーション300により情報サービスセンタ326から入手し、ナビアプリケーション305により、当該情報を地図に重ねて表示することが可能となり、使い勝手のよいナビゲーション装置を提供することができる。
【０１４３】
以上、本発明の１実施形態について説明した。
【０１４４】
本実施形態によれば、上記の共有オブジェクトを導入したことにより、複数のオペレーティングシステムが１つのプロセッサ上で動作するナビゲーション装置において、各々のオペレーティングシステムに実装されたアプリケーションから位置情報を登録、参照することができる。このため、異なるオペレーティングシステム間で位置情報を用い連携動作するアプリケーションを容易に開発することが可能になる。
【０１４５】
これにより、たとえば、一方のオペレーティングシステムに実装されたアプリケーションにより放送や通信で位置情報を受信し、他方のオペレーティングシステムに実装されたアプリケーションにより、受信した位置情報を地図に重ねて表示するといった連携動作が可能となる。あるいは、一方のオペレーティングシステムに実装されたアプリケーションにより表示されている地図上で情報を入手する地点を選択すると、他方のオペレーティングシステムに実装されたアプリケーションがこの選択された地点の情報を入手し表示するといった連携動作が可能となる。
【０１４６】
このように、共有オブジェクトを導入することで、使い勝手のよいユーザインタフェースを提供できる。
【０１４７】
また、本実施形態によれば、一方のオペレーティングシステムのアプリケーションから位置情報を共有オブジェクトに登録・変更している最中に、他方のオペレーティングシステムのアプリケーションが共有オブジェクトに位置情報を登録あるいは参照することを禁止できる。このため、誤った位置情報が参照されてしまうのを防止できる。
【０１４８】
また、一方のオペレーティングシステムのアプリケーションから位置情報を共有オブジェクトに登録・更新したとき、複数のオペレーティングシステムで動作しているアプリケーションに対して位置情報の登録、参照があった旨を通知する。このため、この通知に同期して直ちに位置情報を参照することが可能となり、リアルタイム性が改善される。また、このために要するプロセッサ負荷も少なくて済む。
【０１４９】
なお、上記の実施形態では、本発明を車載用ナビゲーション装置に適用した場合を例にとり説明した。しかしながら、本発明はこれに限定されない。複数のオペレーティングシステムを搭載し、当該複数のオペレーティングシステムを切替えて１つのプロセッサ上で稼動させるＯＳ切り替え機能を備えた情報処理装置に広く適用可能である。
【０１５０】
また、上記の実施形態において、共有ＯＢＪ340のＩＤ（図１１参照）毎に、当該共有ＯＢＪ340への情報登録を許可するタスクあるいはオペレーティングシステムを予め定義しておくことで、フィルタリングを行うようにしてもよい。すなわち、共有ＯＢＪ340の種別に応じて、当該共有ＯＢＪへの登録を許可するタスクあるいはオペレーティングシステムを制限するようにしてもよい。
【０１５１】
【発明の効果】
以上説明したように、本発明によれば、１つのプロセッサ上で複数のオペレーティングシステムが稼動する情報処理装置において、複数のオペレーティングシステム間で正しい情報を確実に共有できるフレームワーク（共有オブジェクト）を提供することができる。また、複数のオペレーティングシステム間で情報を迅速に交換できるフレームワークを提供することができる。
【図面の簡単な説明】
【図１】図１は、本発明の１実施形態が適用された車載用ナビゲーション装置の機能ブロック図である。
【図２】図２は、図１に示す演算処理部100および入出力制御部101のハードウェア構成図である。
【図３】図３は、図２に示す車載用ナビゲーション装置のハードウェア構成とソフトウェア構成との関係を示した図である。
【図４】図４は、図２に示すプロセッサ150の内部構成例を示す図である。
【図５】本発明の１実施形態が適用された車載用ナビゲーション装置において、第１のＯＳ206および第２のＯＳ207間での情報の共有・交換を可能とする共有オブジェクトを説明するための図である。
【図６】第１、２のＯＳ206、207上で動作する各タスクＡ200〜Ｆ205が、共通のＡＰＩを用いて、共有オブジェクト219を作成する際の処理を示したフロー図である。
【図７】第１、２のＯＳ206、207上で動作する各タスクＡ200〜Ｆ205が、共通のＡＰＩを用いて、共有オブジェクト219のＯＳ間共有メモリ215へ情報を登録する際の処理を示したフロー図である。
【図８】第１、２のＯＳ206、207上で動作する各タスクＡ200〜Ｆ205が、共通のＡＰＩを用いて、共有オブジェクト219のＯＳ間共有メモリ215に登録されている情報を参照する際の処理を示したフロー図である。
【図９】共有オブジェクトを、車載用ナビゲーション装置に組み込んだときのより具体的な構成を示した図である。
【図１０】図９に示す車載用ナビゲーション装置において、放送で受信したＰＯＩ情報を地図に重ねて表示する場合の動作を説明するための図である。
【図１１】図１０で説明したナビゲーション装置にて実装した共有オブジェクトの一構成例である。
【図１２】図９に示す車載用ナビゲーション装置において、地図に重ねて表示されているシンボルあるいは地図上の地点がユーザにより選択された場合に、当該選択されたシンボルあるいは地点に対応する位置に関する情報を情報サービスセンタから入手して表示する場合の動作を説明するための図である。
【図１３】図９に示す車載用ナビゲーション装置において、地図に重ねて表示されているシンボルあるいは地図上の地点がユーザにより選択された場合に、当該選択されたシンボルあるいは地点に対応する位置に関する情報を情報サービスセンタから入手し、当該情報を地図上に重ねて表示する場合の動作を説明するための図である。
【符号の説明】
100…演算処理部、101…入出力制御部、102…ディスプレイ
103…地図データベース、104…音声入出力装置、105…入力装置、106…LAN装置
107…通信装置、108…車輪速センサ、109…方位センサ、110…ジャイロ
111…GPS受信装置、112…放送受信装置、150…プロセッサ、151…メモリ
152…DMAコントローラ、153…A/D変換器、154…SCI、155…PIO、156…カウンタ
157…描画コントローラ、160…プロセッサバス、161…割込み信号線
170…キャッシュメモリ、171…CPU、172…汎用レジスタ、173…PC、174…SR
175…データバス、176…アドレスバス、177…割込みコントローラ
178…タイマ装置、200…タスクA、201…タスクB、202…タスクC、203…タスクD
204…タスクE、205…タスクF、206…第１のOS、207…第２のOS、
208、209…リスケジューラ、210、211…入出力ドライバ
212、213…割込みハンドラ、214…OS間制御機能、215…OS間共有メモリ
216…OS間通信機能、217…OS間セマフォ機能、218…OSコンテクスト切換
219…共有オブジェクト、300…通信アプリケーション、301…XMLパーサ
302…HTMLブラウザ、303…POIマネージャ、305…ナビアプリケーション
306…POIハンドラ、307…ナビ基本機能、320…放送局、322…ストリームサーバ
325…インターネット、326…情報サービスセンタ
【図１】
0004402797.tif 000002
【図２】
0004402797.tif 000003
【図３】
0004402797.tif 000004
【図４】
0004402797.tif 000005
【図５】
0004402797.tif 000006
【図６】
0004402797.tif 000007
【図７】
0004402797.tif 000008
【図８】
0004402797.tif 000009
【図９】
0004402797.tif 000010
【図１０】
0004402797.tif 000011
【図１１】
0004402797.tif 000012
【図１２】
0004402797.tif 000013
【図１３】
0004402797.tif 000014