(57)【要約】【課題】実システムとは別の開発環境上において、各アプリケーションのＯＳ間制御機能を使用した各アプリケーションのデバックを行うことができるアプリケーションデバッグ装置を提供すること。【解決手段】ホストＯＳ７は、ホストＯＳ７とゲストＯＳとの双方から参照可能な共有フォルダを備え、ＲＴＯＳシミュレータプログラム２内のＲＴＯＳアプリケーション、及び、仮想ＰＣ４，５内のゲストＯＳアプリケーションは、それぞれＲＴＯＳシミュレータプログラム２内のＲＴＯＳアプリケーションとゲストＯＳアプリケーションとの間のＯＳ間通信処理を行うＯＳ間通信機能処理部１５，１７，１８を備える。【選択図】図１
2020154636.tif 000002
【特許請求の範囲】
【請求項１】
第１のデバッグ対象プログラムがＲＴＯＳ用のアプリケーションプログラムであり、第２のデバッグ対象プログラムが汎用ＯＳ用のアプリケーションプログラムであって、第１の開発環境ＯＳ上において、ＲＴＯＳシミュレータプログラム上の前記第１のデバッグ対象プログラムを動作させ、前記第１の開発環境ＯＳをホストＯＳとしたＰＣ仮想化プログラムにおいて生成した第１の仮想ＰＣ上の汎用ＯＳであるゲストＯＳ上で前記第２のデバッグ対象プログラムを動作させ、前記第１のデバッグ対象プログラムと前記第２のデバッグ対象プログラムとを同時に動作させてデバッグを行うアプリケーションデバッグ装置であって、
前記ホストＯＳは、前記ホストＯＳと前記ゲストＯＳとの双方から参照可能な共有フォルダを備え、
前記ＲＴＯＳシミュレータプログラム及び前記第２のデバッグ対象プログラムは、それぞれ前記第１のデバッグ対象プログラムと前記第２のデバッグ対象プログラムとの間のＯＳ間通信処理を行うＯＳ間通信機能処理部を備えたことを特徴とするアプリケーションデバッグ装置。
【請求項２】
前記共有フォルダは、ＯＳ間通信機能に関する情報を記述したＯＳ間通信機能管理情報ファイルと、共有メモリに格納されたデータそのものを格納する１以上の共有メモリファイルと、ＯＳ間のアクセスの排他を管理するためのＯＳ間通信機能排他ファイルと、を備えたことを特徴とする請求項１に記載のアプリケーションデバッグ装置。
【請求項３】
前記ＯＳ間通信機能管理情報ファイルは、共有メモリの識別情報と、共有メモリの割当情報と、を保持し、
前記共有メモリファイルは、前記共有メモリの識別情報に対応して前記共有メモリに格納された情報を保持し、
前記ＯＳ間通信機能排他ファイルは、０以上のサイズの情報を保持することを特徴とする請求項２に記載のアプリケーションデバッグ装置。
【請求項４】
前記ＯＳ間通信機能処理部は、
前記ＲＴＯＳシミュレータプログラム内のタスク、又は前記第２のデバッグ対象プログラム内のスレッドとの間での排他処理を行うＯＳ内排他処理部と、
前記ＯＳ間通信機能管理情報ファイルの内容を格納するＯＳ間通信管理情報メモリ領域と、
前記共有メモリファイルの内容を格納する１又は複数の共有メモリ領域と、
前記共有フォルダ内の各種ファイルへのアクセス処理を行う共有フォルダ配置ファイルアクセス処理部と、
一方のＯＳ上のデバッグ対象プログラムから、他方のＯＳ上のデバッグ対象プログラムへの通知を送信する処理を行うＯＳ間通知処理部と、
一方のＯＳ上のデバッグ対象プログラムから送信された通知を受信し、受信した通知を待ち受けしている処理の待受けを解除する処理を行うＯＳ間通知受信処理部と、
各ＯＳ上のデバッグ対象プログラムからＯＳ間通信機能を使用するためのインタフェースであるアプリケーションインタフェースと、
を備えたことを特徴とする請求項２又は３に記載のアプリケーションデバッグ装置。
【請求項５】
前記共有フォルダ配置ファイルアクセス処理部は、前記ＯＳ間通信機能管理情報ファイルの内容を前記ＯＳ間通信管理情報メモリ領域に読み出し又は書き込みするＯＳ間通信管理情報ファイルアクセス処理と、前記共有メモリファイルの内容を前記共有メモリ領域へ読み出し又は書き込みする共有メモリファイルアクセス処理と、前記ＯＳ間通信機能排他ファイルをオープン又はクローズするＯＳ間通信機能排他ファイルアクセス処理と、を行うことを特徴とする請求項４に記載のアプリケーションデバッグ装置。
【請求項６】
前記ＯＳ間通知処理部及び前記ＯＳ間通知受信処理部は、前記ホストＯＳと前記ゲストＯＳとの間で利用可能な通信機能を有することを特徴とする請求項４又は５に記載のアプリケーションデバッグ装置。
【請求項７】
前記共有フォルダは、さらに１以上のＯＳ間通知ファイルを備え、
前記ＯＳ間通知処理部及び前記ＯＳ間通知受信処理部は、前記ホストＯＳと前記ゲストＯＳとの間で前記ＯＳ間通知ファイルへの書き込みと読み出しとを行うことを特徴とする請求項４又は５に記載のアプリケーションデバッグ装置。
【請求項８】
前記アプリケーションインタフェースは、
前記第１のデバッグ対象プログラム又は前記第２のデバッグ対象プログラムへ共有メモリを割り当てる共有メモリ割当処理部と、
前記共有メモリ割当処理部によって割り当てられた共有メモリを解放する共有メモリ解放処理部と、
前記共有メモリ割当処理部によって割り当てられた共有メモリへ情報を書き込む共有メモリ書込み処理部と、
前記共有メモリ割当処理部によって割り当てられた共有メモリから情報を読み出す共有メモリ読出し処理部と、
通知を送信する通知送信処理部と、
前記通知の待受けを行う通知待受け処理部と、
を備えたことを特徴とする請求項４〜７のいずれか一つに記載のアプリケーションデバッグ装置。
【請求項９】
前記通知送信処理部と前記通知待受け処理部との間で送受信する情報は、前記共有メモリの識別情報を含むことを特徴とする請求項８に記載のアプリケーションデバッグ装置。
【請求項１０】
第１のデバッグ対象プログラムがＲＴＯＳ用のアプリケーションプログラムであり、第２のデバッグ対象プログラムが汎用ＯＳ用のアプリケーションプログラムであって、第１の開発環境ＯＳ上において、ＲＴＯＳシミュレータプログラム上の前記第１のデバッグ対象プログラムを動作させ、前記第１の開発環境ＯＳをホストＯＳとしたＰＣ仮想化プログラムにおいて生成した第１の仮想ＰＣ上の汎用ＯＳであるゲストＯＳ上で前記第２のデバッグ対象プログラムを動作させ、前記第１のデバッグ対象プログラムと前記第２のデバッグ対象プログラムとを同時に動作させてデバッグを行うアプリケーションデバッグ装置であって、
前記ホストＯＳ上で動作し、前記ＲＴＯＳと前記ゲストＯＳとの双方と通信が可能なＯＳ間通信管理プロセス部を備え、
前記第１のデバッグ対象プログラムと前記第２のデバッグ対象プログラムとは、それぞれ前記ＯＳ間通信管理プロセス部と通信を行うためのＯＳ間通信機能処理部を備えることを特徴とするアプリケーションデバッグ装置。
【請求項１１】
前記ＯＳ間通信管理プロセス部は、前記第１のデバッグ対象プログラムと前記第２のデバッグ対象プログラムとの双方からアクセス可能な共有メモリ領域を備えたことを特徴とする請求項１０に記載のアプリケーションデバッグ装置。
【請求項１２】
前記ＯＳ間通信機能処理部は、前記ＯＳ間通信管理プロセス部が有する共有メモリ領域への通信を介した書込要求機能及び読出要求機能を有することを特徴とする請求項１０又は１１に記載のアプリケーションデバッグ装置。
【請求項１３】
前記ＯＳ間通信機能処理部は、ＯＳ間の通知を送受信する機能を有することを特徴とする請求項１０〜１２のいずれか一つに記載のアプリケーションデバッグ装置。
【請求項１４】
前記ＯＳ間通信機能処理部は、前記ＲＴＯＳシミュレータプログラムと前記第２のデバッグ対象プログラムとに対し、同一の構成であることを特徴とする請求項１〜１３のいずれか一つに記載のアプリケーションデバッグ装置。
【請求項１５】
前記ゲストＯＳで使用した汎用ＯＳを第２の開発環境ＯＳとし、前記第２の開発環境ＯＳ上で動作するＲＴＯＳシミュレータプログラムを備えたことを特徴とする請求項１〜１４のいずれか一つに記載のアプリケーションデバッグ装置。
【請求項１６】
前記第２の開発環境ＯＳをホストＯＳとしたＰＣ仮想化プログラムによって生成した第２の仮想ＰＣと、前記第２の仮想ＰＣ上のゲストＯＳ上で動作するＲＴＯＳシミュレータプログラムと、を備えたことを特徴とする請求項１５に記載のアプリケーションデバッグ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実システムとは別の開発環境上において、各アプリケーションのＯＳ間制御機能を使用した各アプリケーションのデバックを行うことができるアプリケーションデバッグ装置に関する。
【背景技術】
【０００２】
通常の情報処理装置では、１つのＯＳが稼動し、このＯＳが情報処理装置を構成するプロセッサやメモリや入出力装置といった資源を管理して、効率よく動作できるように資源スケジュール管理を行っている。また、ＯＳには、様々な種類があり、ユーザインターフェースやマルチメディア、通信などの処理に優れるものや、リアルタイム処理に優れるものなど様々なものがある。これらの特徴を引き出すため、複数のＯＳを１つのプロセッサで実行し、それぞれのＯＳ上で、各ＯＳの特徴に応じたアプリケーションを連係動作させたいという要望がある。
【０００３】
実システムにおいて、１つのプロセッサ上で複数のＯＳが稼働する環境では、各ＯＳが自立して動作するため、各ＯＳに実装されたアプリケーションが個別、かつ、非同期に動作する。しかしながら、各ＯＳ上で動作するアプリケーションの種類によっては、互いに同期をとりながら情報交換することで機能を達成する場合もある。このような場合、各ＯＳ上でアプリケーションが情報を共有したり、同期をとったりするための仕組みが設けられている。
【０００４】
この実システムにおいて各ＯＳ上でアプリケーションが情報を共有したり、同期をとったりする仕組みとしては、特許文献１に記載されている。特許文献１には、各ＯＳから参照可能なメモリ領域を提供する共有メモリや、共有メモリへのアクセス排他機能、各ＯＳ間で通信するためのメッセージ通信機能を提供するＯＳ間制御機能を設けることにより、実システム上で、ＯＳ上のアプリケーション間の正しく迅速な情報共有を実現している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−２４３０８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１で提供されるＯＳ間制御機能は、ハードウェアとＯＳとの中間に位置しており、ハードウェアに依存するため、実システム上で動作させることが前提となっている。このため、実システムとは別の開発環境上では、実システムのハードウェアに依存したＯＳ間制御機能を動作させることができないため、アプリケーションからＯＳ間制御機能を利用したデバッグを行うことができないという課題があった。
【０００７】
本発明は、上記に鑑みてなされたものであって、実システムとは別の開発環境上において、各アプリケーションのＯＳ間制御機能を使用した各アプリケーションのデバックを行うことができるアプリケーションデバッグ装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明にかかるアプリケーションデバッグ装置は、第１のデバッグ対象プログラムがＲＴＯＳ用のアプリケーションプログラムであり、第２のデバッグ対象プログラムが汎用ＯＳ用のアプリケーションプログラムであって、第１の開発環境ＯＳ上において、ＲＴＯＳシミュレータプログラム上の前記第１のデバッグ対象プログラムを動作させ、前記第１の開発環境ＯＳをホストＯＳとしたＰＣ仮想化プログラムにおいて生成した第１の仮想ＰＣ上の汎用ＯＳであるゲストＯＳ上で前記第２のデバッグ対象プログラムを動作させ、前記第１のデバッグ対象プログラムと前記第２のデバッグ対象プログラムとを同時に動作させてデバッグを行うアプリケーションデバッグ装置であって、前記ホストＯＳは、前記ホストＯＳと前記ゲストＯＳとの双方から参照可能な共有フォルダを備え、前記ＲＴＯＳシミュレータプログラム及び前記第２のデバッグ対象プログラムは、それぞれ前記第１のデバッグ対象プログラムと前記第２のデバッグ対象プログラムとの間のＯＳ間通信処理を行うＯＳ間通信機能処理部を備えたことを特徴とする。
【０００９】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記共有フォルダは、ＯＳ間通信機能に関する情報を記述したＯＳ間通信機能管理情報ファイルと、共有メモリに格納されたデータそのものを格納する１以上の共有メモリファイルと、ＯＳ間のアクセスの排他を管理するためのＯＳ間通信機能排他ファイルと、を備えたことを特徴とする。
【００１０】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記ＯＳ間通信機能管理情報ファイルは、共有メモリの識別情報と、共有メモリの割当情報と、を保持し、前記共有メモリファイルは、前記共有メモリの識別情報に対応して前記共有メモリに格納された情報を保持し、前記ＯＳ間通信機能排他ファイルは、０以上のサイズの情報を保持することを特徴とする。
【００１１】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記ＯＳ間通信機能処理部は、前記ＲＴＯＳシミュレータプログラム内のタスク、又は前記第２のデバッグ対象プログラム内のスレッドとの間での排他処理を行うＯＳ内排他処理部と、前記ＯＳ間通信機能管理情報ファイルの内容を格納するＯＳ間通信管理情報メモリ領域と、前記共有メモリファイルの内容を格納する１又は複数の共有メモリ領域と、前記共有フォルダ内の各種ファイルへのアクセス処理を行う共有フォルダ配置ファイルアクセス処理部と、一方のＯＳ上のデバッグ対象プログラムから、他方のＯＳ上のデバッグ対象プログラムへの通知を送信する処理を行うＯＳ間通知処理部と、一方のＯＳ上のデバッグ対象プログラムから送信された通知を受信し、受信した通知を待ち受けしている処理の待受けを解除する処理を行うＯＳ間通知受信処理部と、各ＯＳ上のデバッグ対象プログラムからＯＳ間通信機能を使用するためのインタフェースであるアプリケーションインタフェースと、を備えたことを特徴とする。
【００１２】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記共有フォルダ配置ファイルアクセス処理部は、前記ＯＳ間通信機能管理情報ファイルの内容を前記ＯＳ間通信管理情報メモリ領域に読み出し又は書き込みするＯＳ間通信管理情報ファイルアクセス処理と、前記共有メモリファイルの内容を前記共有メモリ領域へ読み出し又は書き込みする共有メモリファイルアクセス処理と、前記ＯＳ間通信機能排他ファイルをオープン又はクローズするＯＳ間通信機能排他ファイルアクセス処理と、を行うことを特徴とする。
【００１３】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記ＯＳ間通知処理部及び前記ＯＳ間通知受信処理部は、前記ホストＯＳと前記ゲストＯＳとの間で利用可能な通信機能を有することを特徴とする。
【００１４】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記共有フォルダは、さらに１以上のＯＳ間通知ファイルを備え、前記ＯＳ間通知処理部及び前記ＯＳ間通知受信処理部は、前記ホストＯＳと前記ゲストＯＳとの間で前記ＯＳ間通知ファイルへの書き込みと読み出しとを行うことを特徴とする。
【００１５】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記第１のデバッグ対象プログラム又は前記第２のデバッグ対象プログラムへ共有メモリを割り当てる共有メモリ割当処理部と、前記共有メモリ割当処理部によって割り当てられた共有メモリを解放する共有メモリ解放処理部と、前記共有メモリ割当処理部によって割り当てられた共有メモリへ情報を書き込む共有メモリ書込み処理部と、前記共有メモリ割当処理部によって割り当てられた共有メモリから情報を読み出す共有メモリ読出し処理部と、通知を送信する通知送信処理部と、前記通知の待受けを行う通知待受け処理部と、を備えたことを特徴とする。
【００１６】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記通知送信処理部と前記通知待受け処理部との間で送受信する情報は、前記共有メモリの識別情報を含むことを特徴とする。
【００１７】
また、本発明にかかるアプリケーションデバッグ装置は、第１のデバッグ対象プログラムがＲＴＯＳ用のアプリケーションプログラムであり、第２のデバッグ対象プログラムが汎用ＯＳ用のアプリケーションプログラムであって、第１の開発環境ＯＳ上において、ＲＴＯＳシミュレータプログラム上の前記第１のデバッグ対象プログラムを動作させ、前記第１の開発環境ＯＳをホストＯＳとしたＰＣ仮想化プログラムにおいて生成した第１の仮想ＰＣ上の汎用ＯＳであるゲストＯＳ上で前記第２のデバッグ対象プログラムを動作させ、前記第１のデバッグ対象プログラムと前記第２のデバッグ対象プログラムとを同時に動作させてデバッグを行うアプリケーションデバッグ装置であって、前記ホストＯＳ上で動作し、前記ＲＴＯＳと前記ゲストＯＳとの双方と通信が可能なＯＳ間通信管理プロセス部を備え、前記第１のデバッグ対象プログラムと前記第２のデバッグ対象プログラムとは、それぞれ前記ＯＳ間通信管理プロセス部と通信を行うためのＯＳ間通信機能処理部を備えることを特徴とする。
【００１８】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記ＯＳ間通信管理プロセス部は、前記第１のデバッグ対象プログラムと前記第２のデバッグ対象プログラムとの双方からアクセス可能な共有メモリ領域を備えたことを特徴とする。
【００１９】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、記ＯＳ間通信機能処理部は、前記ＯＳ間通信管理プロセス部が有する共有メモリ領域への通信を介した書込要求機能及び読出要求機能を有することを特徴とする。
【００２０】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記ＯＳ間通信機能処理部は、ＯＳ間の通知を送受信する機能を有することを特徴とする。
【００２１】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記ＯＳ間通信機能処理部は、前記ＲＴＯＳシミュレータプログラムと前記第２のデバッグ対象プログラムとに対し、同一の構成であることを特徴とする。
【００２２】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記ゲストＯＳで使用した汎用ＯＳを第２の開発環境ＯＳとし、前記第２の開発環境ＯＳ上で動作するＲＴＯＳシミュレータプログラムを備えたことを特徴とする。
【００２３】
また、本発明にかかるアプリケーションデバッグ装置は、上記の発明において、前記第２の開発環境ＯＳをホストＯＳとしたＰＣ仮想化プログラムによって生成した第２の仮想ＰＣと、前記第２の仮想ＰＣ上のゲストＯＳ上で動作するＲＴＯＳシミュレータプログラムと、を備えたことを特徴とする。
【発明の効果】
【００２４】
本発明によれば、実システムとは別の開発環境上において、各アプリケーションのＯＳ間制御機能を使用した各アプリケーションのデバックを行うことができる。
【図面の簡単な説明】
【００２５】
【図１】図１は、本発明の実施の形態１であるアプリケーションデバッグ装置の概要構成を示すブロック図である。
【図２】図２は、ＲＴＯＳシミュレータプログラムの構成を示すブロック図である。
【図３】図３は、仮想ＰＣの構成を示すブロック図である。
【図４】図４は、ホストＯＳ上に配置される共有フォルダの構成を示すブロック図である。
【図５】図５は、ＯＳ間通信機能管理情報ファイルの構成を示す図である。
【図６】図６は、ＯＳ間通信機能処理部の構成を示すブロック図である。
【図７】図７は、ＯＳ間通知処理部の処理手順を示すフローチャートである。
【図８】図８は、ＯＳ間通知受信処理部の処理手順を示すフローチャートである。
【図９】図９は、共有メモリ割当処理部による処理手順を示すフローチャートである。
【図１０】図１０は、共有メモリ解放処理部による処理手順を示すフローチャートである。
【図１１】図１１は、タ共有メモリ書込み処理部による処理手順を示すフローチャートである。
【図１２】図１２は、共有メモリ読出し処理部による処理手順を示すフローチャートである。
【図１３】図１３は、通知送信処理部による処理手順を示すフローチャートである。
【図１４】図１４は、通知待受け処理部による処理手順を示すフローチャートである。
【図１５】図１５は、共有メモリ割当処理の一例を説明する説明図である。
【図１６】図１６は、共有メモリ書込み処理及び共有メモリ読出し処理の一例を説明する説明図である。
【図１７】図１７は、ＯＳ間通知処理の一例を説明する説明図である。
【図１８】図１８は、共有メモリ解放処理の一例を説明する説明図である。
【図１９】図１９は、ＲＴＯＳアプリケーションとゲストＯＳアプリケーションとの間での非同期通信を行う場合の一例を示すシーケンス図である。
【図２０】図２０は、ＲＴＯＳアプリケーションとゲストＯＳアプリケーションとの間での同期通信を行う場合の一例を示すシーケンス図である。
【図２１】図２１は、本実施の形態２によるホストＯＳ内の共有フォルダの構成を示す図である。
【図２２】図２２は、本実施の形態２によるＯＳ間通信機能処理部の構成を示すブロック図である。
【図２３】図２３は、本実施の形態２のＯＳ間通知処理部の処理手順を示すフローチャートである。
【図２４】図２４は、本実施の形態２のＯＳ間通知受信処理部の処理手順を示すフローチャートである。
【図２５】図２５は、本実施の形態２によるＯＳ間通知処理の一例を説明する説明図である。
【図２６】図２６は、本実施の形態３によるアプリケーションデバッグ装置の概要構成を示すブロック図である。
【図２７】図２７は、ＯＳ間通信管理プロセス部の構成を示すブロック図である。
【図２８】図２８は、ＲＴＯＳアプリケーションとゲストＯＳアプリケーションとに対して同一の共有メモリ領域を割り当てる割当処理を説明する説明図である。
【図２９】図２９は、ＲＴＯＳアプリケーションからの共有メモリ領域への書き込み処理とゲストＯＳアプリケーションからの読み出し処理の一例を示す説明図である。
【図３０】図３０は、ＲＴＯＳアプリケーションとゲストＯＳアプリケーションとからの共有メモリ領域の割当解除処理の一例を示す説明図である。
【図３１】図３１は、ＯＳ間の通知の送受信処理の一例としてＲＴＯＳアプリケーションからのＯＳ間通知の送信とゲストＯＳアプリケーションでの受信とを行う場合について説明する説明図である。
【図３２】図３２は、ＯＳ間の同期通信処理を説明するシーケンス図である。
【発明を実施するための形態】
【００２６】
以下、添付図面を参照してこの発明を実施するための形態について説明する。
【００２７】
（実施の形態１）
＜全体構成＞
図１は、本発明の実施の形態１であるアプリケーションデバッグ装置１の概要構成を示すブロック図である。図１に示すように、アプリケーションデバッグ装置１は、ＲＴＯＳ（リアルタイムオペレーティングシステム）シミュレータプログラム２、ホストＯＳ（オペレーティングシステム）用プログラム開発環境３、仮想ＰＣ（パーソナルコンピュータ）４，５、ＰＣ仮想化プログラム６、ホストＯＳ７、及び、ＣＰＵを含むＰＣハードウェア８を有する。
【００２８】
ＲＴＯＳシミュレータプログラム２は、ホストＯＳ用プログラム開発環境３上で、デバッグ対象プログラムとして呼び出されて動作する。また、ＲＴＯＳシミュレータプログラム２は、ホストＯＳ用のプログラムとして動作する。
【００２９】
ホストＯＳ７は、ＲＴＯＳシミュレータプログラム２と仮想ＰＣ４，５との双方からアクセス可能な共有フォルダ１０を有する。
【００３０】
ＰＣ仮想化プログラム６は、仮想ＰＣ４，５を生成し、生成した仮想ＰＣ４，５上で、ゲストＯＳ１１を動作させることが可能である。なお、複数の仮想ＰＣ４，５を同時に動作させてもよい。ＰＣ仮想化プログラム６は、ゲストＯＳ１１からホストＯＳ７に配置される共有フォルダ１０へのアクセスを許可するもの、及び、ホストＯＳ７−ゲストＯＳ１１間、又は異なるゲストＯＳ間で、ＴＣＰ／ＩＰ通信等の双方向の通信を許可するものであればよい。
【００３１】
図２は、ＲＴＯＳシミュレータプログラム２の構成を示すブロック図である。図２に示すように、ＲＴＯＳシミュレータプログラム２は、ＲＴＯＳ用アプリケーションプログラムであるＲＴＯＳアプリケーション１３，１４と、ＯＳ間通信機能処理部１５と、ＲＴＯＳ処理部１６とを有する。
【００３２】
ＲＴＯＳ処理部１６は、ＲＴＯＳの機能をエミュレートする処理を行う。ＲＴＯＳ処理部１６は、基本的に実システムのＲＴＯＳのソースコードをそのまま、若しくは実システム上とホストＯＳ７上とで差異のある箇所に若干の修正を加えて、ホストＯＳ７用にリコンパイルして処理する。
【００３３】
ＯＳ間通信機能処理部１５は、アプリケーション間でＯＳ間通信を行うための処理を行う。ＲＴＯＳシミュレータプログラム２におけるＯＳ間通信機能処理は、ＲＴＯＳ処理単位で組込み、動作する。なお、本処理の詳細については後述する。
【００３４】
ＲＴＯＳアプリケーション１３，１４は、本発明における第１のデバッグ対象プログラムの一つである。ＲＴＯＳアプリケーション１３，１４は、０個以上のタスク処理を含むＲＴＯＳ上で動作するプログラムであり、実システム上で動作させるアプリケーションプログラムと同一のものでよい。
【００３５】
図３は、仮想ＰＣ４の構成を示すブロック図である。なお、仮想ＰＣ５も仮想ＰＣ４と同じ構成である。仮想ＰＣ４は、ゲストＯＳ１１と、ＯＳ間通信機能処理部１７，１８をそれぞれ含むゲストＯＳ用アプリケーションプログラムであるゲストＯＳアプリケーション１９，２０とを有する。ゲストＯＳアプリケーション１９，２０は、本発明における第２のデバッグ対象プログラムの一つである。
【００３６】
ゲストＯＳ１１は、実システム上で使用するＯＳと同じもの、又はアプリケーション互換性をもったＯＳである。本実施の形態１では、ゲストＯＳ１１は、汎用ＯＳとなる。
【００３７】
ＯＳ間通信機能処理部１７，１８は、アプリケーション間でＯＳ間通信を行うための処理を行う。仮想ＰＣ４，５におけるＯＳ間通信機能処理は、アプリケーションプロセス単位で組込み、動作する。なお、本処理の詳細については後述する。
【００３８】
ゲストＯＳアプリケーション１９，２０は、ゲストＯＳ１１上のプロセス単位で動作し、それぞれ、ＯＳ間通信機能処理部１７，１８、及び図示しない１以上のスレッド処理を含む。ゲストＯＳアプリケーション１９，２０は、実システム上で動作するアプリケーションプログラムと同一のものでよい。
【００３９】
図４は、ホストＯＳ７上に配置される共有フォルダ１０の構成を示すブロック図である。図４に示すように、共有フォルダ１０は、ＯＳ−仮想ＰＣ間の共有フォルダであり、ＯＳ間通信機能管理情報ファイル２１、共有メモリファイル２２及びＯＳ間通信機能排他ファイル２３を有する。
【００４０】
ＯＳ間通信機能管理情報ファイル２１は、ＯＳ間通信機能に関する情報を記述したファイルであり、ＲＴＯＳシミュレータプログラム２（ＲＴＯＳアプリケーション１３，１４）及びゲストＯＳアプリケーション１９，２０内のＯＳ間通信機能処理部１７，１８によって参照される。
【００４１】
図５は、ＯＳ間通信機能管理情報ファイル２１の構成を示す図である。ＯＳ間通信機能管理情報ファイルには、ＯＳ間通信機能処理部１５，１７，１８で使用する共有メモリ情報を保持する。共有メモリ情報は、共有メモリＩＤと割当情報とを有する。共有メモリＩＤは、共有メモリを識別するためのＩＤである。共有メモリＩＤは、各共有メモリを一意に識別できるものであれば、数値でも文字列でもよい。
【００４２】
割当情報は、共有メモリの割当情報を示す情報である。割当情報は、共有メモリ名称と、割当ＯＳフラグと、共有メモリサイズとを有する。この他に、ＯＳ間通信機能で必要とする情報があれば、追加してもよい。
【００４３】
共有メモリ名称は、異なるＯＳ上のアプリケーション間で共有メモリに紐づけるための情報である。各アプリケーションで、同一の共有メモリ名称を指定して共有メモリを割り当てた場合、同一の共有メモリＩＤの共有メモリが割り当てられる。
【００４４】
割当ＯＳフラグは、あるＩＤの共有メモリが、どのＯＳ上のアプリケーションに割り当てられているかを示す情報であり。割当ＯＳフラグは、ＯＳ上のアプリケーションへの割当状況を識別できるものであれば、数値でも文字列でもよい。例えば、割当ＯＳフラグを８ビット値として表現し、ＲＴＯＳシミュレータプログラム２上のアプリケーションに割り当てた場合、０ビット目をＯＮにし、ゲストＯＳ上のアプリケーションに割り当てた場合、１ビット目をＯＮにする。この場合、図５に示すように、割当ＯＳフラグが「０ｘ０３」であれば、ＲＴＯＳシミュレータプログラム２上のＲＴＯＳアプリケーションと、ゲストＯＳ１１上のゲストＯＳアプリケーションとに対して割当済みであることを示す。また、図５に示すように、割当ＯＳフラグが「０ｘ０１」であれば、ＲＴＯＳシミュレータプログラム２上のＲＴＯＳアプリケーションに対してのみ割当済みであることを示す。
【００４５】
共有メモリサイズは、共有メモリの割当要求時に指定された共有メモリの割当サイズを示す情報である。一例として、図５に示すように、あるＯＳ上のアプリケーションから、割当情報として、共有メモリ名称「ＳＭＥＭ＿０１」、割当ＯＳフラグ「０ｘ０３」、共有メモリサイズ「０ｘ１０００」を指定して、共有メモリ割当要求が行われた場合、ＯＳ間通信機能処理は、ＯＳ間通信機能管理情報ファイル２１から共有メモリ情報を検索し、共有メモリ名称が「ＮＵＬＬ」である情報、すなわち未割当の共有メモリ情報に割当情報を登録し、対応する共有メモリＩＤ「０ｘ００」を返す。その後、他のＯＳ上のアプリケーションから、同一の共有メモリ名称「ＳＭＥＭ＿０１」を含む割当情報を指定して、共有メモリ割当要求が行われた場合、ＯＳ間通信機能処理は、ＯＳ間通信機能管理情報ファイル２１から共有メモリ情報を検索し、割当情報が「ＳＭＥＭ＿０１」である共有メモリ情報を見つけた場合、対応する共有メモリＩＤを返す。
【００４６】
共有メモリファイル２２は、ＯＳ間通信機能処理により、共有メモリに格納されたデータそのものを格納するファイルである。共有メモリファイル２２は、ＯＳ間通信機能管理情報ファイル２１に登録されている共有メモリＩＤ毎に用意する。
【００４７】
ＯＳ間通信機能排他ファイル２３は、ＯＳ間で、ホストＯＳ−仮想ＰＣ間の共有フォルダ１０内のファイルへのアクセスを排他するためのファイルである。ＯＳ間通信機能排他ファイル２３が書き込みモードでオープン状態の場合、あるＯＳ上のアプリケーションが、共有フォルダ１０内の何らかのファイルにアクセスしていることを示し、クローズ状態の場合、どのＯＳ上のアプリケーションもアクセスしていないことを示す。ＯＳ間通信機能排他ファイル２３は、ファイルのオープン／クローズ状態により、上記の排他を行うためのものなので、何らかのデータを書き込む必要はないが、排他を行う際に必要な情報があれば、データを書き込んでもよい。
【００４８】
図６は、ＯＳ間通信機能処理部１５の構成を示すブロック図である。なお、ＯＳ間通信機能処理部１７，１８は、動作ＯＳが異なるのみで、ＯＳ間通信機能処理部１５と同じ機能を有した構成である。ＯＳ間通信機能処理部１５は、ＯＳ内排他処理部３０、ＯＳ間通信管理情報メモリ領域３１、共有メモリ領域３２、共有フォルダ配置ファイルアクセス処理部３３、ＯＳ間通知処理部３４、ＯＳ間通知受信処理部３５及びアプリケーションインタフェース３６を有する。
【００４９】
ＯＳ内排他処理部３０は、同一ＯＳ内で共有フォルダ１０内のファイルへのアクセスを排他する処理を行う。ＲＴＯＳの場合、タスク単位で排他の処理を行う。ゲストＯＳの場合、プロセス内のスレッド単位で排他の処理を行う。排他は、同一ＯＳ内で共有フォルダ１０内のファイルへのアクセスの排他が行えるのであれば、ミューテックス等のＯＳ資源を使用して実現してもよいし、その他の手段を用いてもよい。
【００５０】
ＯＳ間通信管理情報メモリ領域３１は、共有フォルダ１０内のＯＳ間通信機能管理情報ファイル２１の内容を格納するためのメモリ領域である。このメモリ領域は、アプリケーションインタフェース３６から常に参照できるならば、動的確保、静的確保のどちらでもよいが、動的確保は処理時間が余分にかかり、あるいは確保する度にメモリ領域へのポインタ値が変わる等の課題があるため、静的確保することが好ましい。
【００５１】
共有メモリ領域３２は、共有フォルダ１０内の共有メモリファイル２２の内容を格納するためのメモリ領域である。領域サイズは、共有メモリの最大サイズを共有メモリＩＤ分、確保する。このメモリ領域は、全共有メモリ分を連続した領域で確保してもよいし、共有メモリＩＤ毎に離散した領域で確保してもよい。また、アプリケーションインタフェース３６から常に参照できるならば、動的確保、静的確保のどちらでもよいが、動的確保は、ＯＳ間通信管理情報メモリ領域３１の場合と同様の理由のため、静的確保することが好ましい。
【００５２】
共有フォルダ配置ファイルアクセス処理部３３は、共有フォルダ１０内の各種ファイルへのアクセス処理を行う。ＯＳ間通信機能管理情報ファイル２１及び共有メモリファイル２２に対しては、ファイルからデータを読み出し、対応するメモリ領域に書き込むファイル読み出し処理と、メモリ領域の内容を、対応するファイルへ書き込むファイル書き込み処理とを行う。ＯＳ間通信機能排他ファイル２３に対しては、ＯＳ間通信機能排他ファイル２３を書き込みモードでオープンできるまで待ち、ファイルが開けたらファイルポインタを保存するＯＳ間共有フォルダアクセス権獲得処理と、ＯＳ間通信機能ファイルのファイルポインタを指定して、ファイルをクローズするＯＳ間共有ファルダアクセス権開放処理とをもつ。この他に、ＯＳ間通信機能処理として必要なファイルアクセス処理があれば、追加してもよい。
【００５３】
ＯＳ間通知処理部３４は、あるＯＳ上のアプリケーションから、他のＯＳ上のアプリケーションへの通知を送信する処理を行う。この通知は、ホストＯＳとゲストＯＳとの間で情報を送受信できる方式であれば、ＴＣＰ／ＩＰ通信等のどのような方式でもよい。本実施の形態では、通知方式にソケットインターフェースを使用して通知を送受信する例で説明する。送信する通知情報は、共有メモリＩＤである。この他に、ＯＳ間通信機能処理として必要な情報があれば、追加して送信してもよい。
【００５４】
ここで、図７に示したフローチャートを参照して、ＯＳ間通知処理部３４の処理手順について説明する。図７に示すように、ＯＳ間通知処理部３４は、まず、送信先のＯＳ間通知受信処理部とソケット接続する（ステップＳ１０１）。この接続後、指定された共有メモリＩＤを送信する（ステップＳ１０２）。この送信完了後、ソケット接続を切断し（ステップＳ１０３）、本処理を終了する。
【００５５】
図６に戻り、ＯＳ間通知受信処理部３５は、あるＯＳ上のアプリケーションから送信された通知を受信し、受信した通知を待ち受けしている処理の待受けを解除する処理を行う。この処理は、ＲＴＯＳシミュレータプログラム２内では、アプリケーションとは別のタスク、ゲストＯＳ１１上のアプリケーション内では、アプリケーションスレッドとは別のスレッドとして動作する。
【００５６】
ここで、図８に示したフローチャートを参照して、ＯＳ間通知受信処理部３５の処理手順について説明する。図８に示すように、まず、ＯＳ間通知受信処理部３５は、ソケット受信の待ち受けを開始する（ステップＳ２０１）。その後、ソケット接続要求があるか否かを判定する（ステップＳ２０２）。ソケット接続要求がない場合（ステップＳ２０２，Ｎｏ）には、本判定処理を繰り返し、ソケット接続要求があった場合（ステップＳ２０２，Ｙｅｓ）には、ソケット接続して通知を受信し、通知された共有メモリＩＤに対して通知待受けをしている処理の待ちを解除し（ステップＳ２０３）、その後、ステップＳ２０１に移行し、再びソケット受信の待受けを開始する処理を繰り返す。
【００５７】
図６に戻り、アプリケーションインタフェース３６は、各ＯＳ上のアプリケーションからＯＳ間通信機能を使用するためのインタフェースであり、共有メモリ割当処理部４０、共有メモリ解放処理部４１、共有メモリ書込み処理部４２、共有メモリ読出し処理部４３、通知送信処理部４４及び通知待受け処理部４５を有する。なお、この他に、アプリケーションインタフェース３６として必要な処理があれば、追加してもよい。
【００５８】
共有メモリ割当処理部４０は、アプリケーションから指定された割当情報をもとに、共有メモリを割り当てる処理を行う。
【００５９】
ここで、図９に示したフローチャートを参照して、共有メモリ割当処理部４０による処理手順について説明する。図９に示すように、まず、共有メモリ割当処理部４０は、ＯＳ内での共有フォルダアクセス権を獲得する（ステップＳ３０１）。なお、ＯＳ内での共有フォルダアクセス権を獲得できない場合は獲得待ちにする。その後、ＯＳ内での共有フォルダアクセス権を獲得した場合、さらにＯＳ間での共有フォルダアクセス権を獲得する（ステップＳ３０２）。なお、ＯＳ間の共有フォルダアクセス権を獲得できない場合は獲得待ちにする。
【００６０】
その後、ＯＳ間の共有フォルダアクセス権を獲得すると、ＯＳ間通信機能管理情報ファイル２１の内容を、ＯＳ間通信管理情報メモリ領域３１に読み出す（ステップＳ３０３）。その後、ＯＳ間通信機能管理情報に、アプリケーションから指定された割当情報が登録されていない場合、未使用の共有メモリＩＤを割り当て、この割当情報をＯＳ間通信機能管理情報に登録し、割当情報が登録済みの場合、割当情報に対応する共有メモリＩＤを取得し、アプリケーションから指定された割当情報の割当ＯＳフラグで、登録済みの割当情報を追加更新する（ステップＳ３０４）。そして、共有メモリ割当処理部４０は、ＯＳ間通信機能管理情報ファイル２１の内容を、ＯＳ間通信管理情報メモリ領域３１の内容に更新する（ステップＳ３０５）。
【００６１】
その後、共有メモリ割当処理部４０は、ＯＳ間の共有フォルダアクセス権を解放し（ステップＳ３０６）、さらにＯＳ内の共有フォルダアクセス権を解放し（ステップＳ３０７）、呼び出し元のアプリケーションに割り当てられた共有メモリＩＤを返して、本処理を終了する。
【００６２】
図６に戻り、共有メモリ解放処理部４１は、アプリケーションから指定された共有メモリＩＤをもとに、アプリケーションに割り当てられた共有メモリを解消する処理を行う。
【００６３】
ここで、図１０に示したフローチャートを参照して、共有メモリ解放処理部４１による処理手順について説明する。図１０に示すように、まず、共有メモリ解放処理部４１は、ＯＳ内の共有フォルダアクセス権を獲得する（ステップＳ４０１）。なお、獲得できない場合は獲得待ちになる。ＯＳ内の共有フォルダアクセス権を獲得すると、その後、ＯＳ間の共有フォルダアクセス権を獲得する（ステップＳ４０２）。なお、獲得できない場合は獲得待ちになる。ＯＳ間の共有フォルダアクセス権を獲得すると、ＯＳ間通信機能管理情報ファイル２１の内容を、ＯＳ間通信管理情報メモリ領域３１に読み出す（ステップＳ４０３）。
【００６４】
その後、ＯＳ間通信管理情報メモリ領域３１上の管理情報から、アプリケーションから指定された共有メモリＩＤに対応する共有メモリ情報を検索し、対応する共有メモリ情報が登録されていた場合、登録されている割当情報の割当ＯＳフラグをクリアし、クリアした結果、割当ＯＳフラグが全クリア、すなわちどのＯＳ上のアプリケーションにも割り当てられていない状態の場合、割当情報そのものをクリアする（ステップＳ４０４）。
【００６５】
その後、ＯＳ間通信機能管理情報ファイル２１の内容を、ＯＳ間通信管理情報メモリ領域３１の内容に更新する（ステップＳ４０５）。その後、ＯＳ間の共有フォルダアクセス権を解放し（ステップＳ４０６）、さらに、ＯＳ内の共有フォルダアクセス権を解放し（ステップＳ４０７）、本処理を終了する。
【００６６】
図６に戻り、共有メモリ書込み処理部４２は、アプリケーションに割り当てられた共有メモリへデータを書き込む処理を行う。
【００６７】
ここで、図１１に示したフローチャートを参照して、共有メモリ書込み処理部４２による処理手順について説明する。図１１に示すように、まず、共有メモリ書込み処理部４２は、ＯＳ内の共有フォルダアクセス権を獲得する（ステップＳ５０１）。なお、獲得できない場合は獲得待ちになる。ＯＳ内の共有フォルダアクセス権を獲得すると、その後、ＯＳ間の共有フォルダアクセス権を獲得する（ステップＳ５０２）。なお、獲得できない場合は獲得待ちになる。ＯＳ間の共有フォルダアクセス権を獲得すると、指定された共有メモリＩＤに対応する共有メモリ領域３２に、指定されたデータを書き込む（ステップＳ５０３）。
【００６８】
その後、指定された共有メモリＩＤに対応する共有メモリファイル２２の内容を、対応する共有メモリ領域３２の内容に更新する（ステップＳ５０４）。その後、ＯＳ間の共有フォルダアクセス権を解放し（ステップＳ５０５）、さらに、ＯＳ内の共有フォルダアクセス権を解放し（ステップＳ５０６）、本処理を終了する。
【００６９】
図６に戻り、共有メモリ読出し処理部４３は、アプリケーションに割り当てられた共有メモリからデータを読み出す処理を行う。
【００７０】
ここで、図１２に示したフローチャートを参照して、共有メモリ読出し処理部４３による処理手順について説明する。図１２に示すように、まず、共有メモリ読出し処理部４３は、ＯＳ内の共有フォルダアクセス権を獲得する（ステップＳ６０１）。なお、獲得できない場合は獲得待ちになる。ＯＳ内の共有フォルダアクセス権を獲得すると、その後、ＯＳ間の共有フォルダアクセス権を獲得する（ステップＳ６０２）。なお、獲得できない場合は獲得待ちになる。ＯＳ間の共有フォルダアクセス権を獲得すると、指定された共有メモリＩＤに対応する共有メモリファイル２２の内容を、対応する共有メモリ領域３２に読み出す（ステップＳ６０３）。
【００７１】
その後、指定された共有メモリＩＤに対応する共有メモリ領域３２の内容を読み出し、アプリケーションから指定された領域に書き込む（ステップＳ６０４）。その後、ＯＳ間の共有フォルダアクセス権を解放し（ステップＳ６０５）、さらに、ＯＳ内の共有フォルダアクセス権を解放し（ステップＳ６０６）、本処理を終了する。
【００７２】
図６に戻り、通知送信処理部４４は、同じＩＤの共有メモリを割り当てられた他のＯＳ上のアプリケーションに対し、通知を送信する処理を行う。
【００７３】
ここで、図１３に示したフローチャートを参照して、通知送信処理部４４による処理手順について説明する。図１３に示すように、通知送信処理部４４は、アプリケーションから指定された共有メモリＩＤを指定して、ＯＳ間通知送信処理部を呼び出して（ステップＳ７０１）、本処理を終了する。
【００７４】
図６に戻り、通知待受け処理部４５は、同じＩＤの共有メモリを割り当てられた他のＯＳ上のアプリケーションから送信された通知を待ち受けする処理を行う。
【００７５】
ここで、図１４に示したフローチャートを参照して、通知待受け処理部４５による処理手順について説明する。図１４に示すように、通知待受け処理部４５は、まず、アプリケーションから指定された共有メモリＩＤを指定して、ＯＳ間通知受信処理部３５からの通知を待ち受ける（ステップＳ８０１）。その後ＯＳ間通知受信処理部３５からの通知があったか否かを判定する（ステップＳ８０２）。通知がない場合（ステップＳ８０２，Ｎｏ）には、本判定処理を繰り返し、通知があった場合（ステップＳ８０３，Ｙｅｓ）には、待受けを解除して本処理を終了する。
【００７６】
＜共有メモリ割当処理の一例＞
次に、ＯＳ間通信機能処理部１５，１７によるＲＴＯＳアプリケーションとゲストＯＳアプリケーションに同一の共有メモリを割り当てる処理の一例について説明する。図１５は、共有メモリ割当処理の一例を説明する説明図である。図１５に示すように、まず、ＲＴＯＳアプリケーション１３のタスクＡは、割当情報を指定してＲＴＯＳ側の共有メモリ割当処理部４０である共有メモリ割当処理部４０ａを呼び出す（ステップＳ１）。
【００７７】
その後、共有メモリ割当処理部４０ａは、共有フォルダアクセス権を獲得した後（ステップＳ２）、ＲＴＯＳ側のＯＳ間通信管理情報メモリ領域３１ａを、最新のＯＳ間通信機能管理情報ファイル２１の内容に更新し（ステップＳ３）、指定された割当情報から、共有メモリＩＤの割当を行う。
【００７８】
その後、共有メモリ割当処理部４０ａは、割当結果を格納したＯＳ間通信機能管理情報で、ＯＳ間通信機能管理情報ファイル２１を更新し（ステップＳ４）、共有フォルダアクセス権を解放する（ステップＳ５）。
【００７９】
その後、共有メモリ割当処理部４０ａは、割り当てられた共有メモリＩＤを、呼び出し元のタスクＡのＩＤ保存領域に格納する（ステップＳ６）。
【００８０】
その後、ゲストＯＳアプリケーション１９内のスレッドＡから、ＲＴＯＳアプリケーション１３内のタスクＡが指定した割当情報と同じ共有メモリ名称及び共有メモリサイズを格納した割当情報を指定して、ゲストＯＳ側の共有メモリ割当処理部４０である共有メモリ割当処理部４０ｂを呼び出す（ステップＳ７）。
【００８１】
共有メモリ割当処理部４０ｂは、共有フォルダアクセス権を獲得した後（ステップＳ８）、ゲストＯＳ側のＯＳ間通信管理情報メモリ領域３１ｂを、最新のＯＳ間通信機能管理情報ファイル２１の内容に更新し、指定された割当情報から、共有メモリＩＤの割当を行う（ステップＳ９）。
【００８２】
その後、共有メモリ割当処理部４０ｂは、割当結果を格納したＯＳ間通信機能管理情報で、ＯＳ間通信機能管理情報ファイル２１を更新し（ステップＳ１０）、共有フォルダアクセス権を解放する（ステップＳ１１）。
【００８３】
その後、共有メモリ割当処理部４０ｂは、割り当てられた共有メモリＩＤを、呼び出し元のスレッドＡのＩＤ保存領域に格納する（ステップＳ１２）。
【００８４】
この結果、スレッドＡのＩＤ保存領域に格納された共有メモリＩＤは、タスクＡのＩＤ保存領域に格納されている共有メモリＩＤと同一になる。これにより、同一の割当情報を指定することで、ＲＴＯＳアプリケーションとゲストＯＳアプリケーションとに、同一の共有メモリを割り当てることができる。
【００８５】
＜共有メモリ書込み処理及び共有メモリ読出し処理の一例＞
次に、ＯＳ間通信機能により、ＲＴＯＳアプリケーションから共有メモリにデータをゲストＯＳアプリケーションから読み出す処理の一例について説明する。図１６は、共有メモリ書込み処理及び共有メモリ読出し処理の一例を説明する説明図である。図１６に示すように、ＲＴＯＳアプリケーション１３内のタスクＡは、共有メモリＩＤと共有メモリに書き込むデータを格納したデータ領域を指定して、ＲＴＯＳ側の共有メモリ書込み処理部４２である共有メモリ書込み処理部４２ａを呼び出す（ステップＳ２１）。
【００８６】
その後、共有メモリ書込み処理部４２ａは、共有フォルダアクセス権を獲得した後（ステップＳ２２）、指定された共有メモリＩＤに対応するＲＴＯＳ側の共有メモリ領域３２ａを、指定されたデータ領域の内容で更新する（ステップＳ２３）。
【００８７】
その後、共有メモリ書込み処理部４２ａは、指定された共有メモリＩＤに対応する共有メモリファイル２２を、更新した共有メモリ領域３２ａの内容で更新し（ステップＳ２４）、共有フォルダアクセス権を解放する（ステップＳ２５）。
【００８８】
その後、ゲストＯＳアプリケーション１９内のスレッドＡは、ＲＴＯＳアプリケーション１３内のタスクＡが指定した共有メモリＩＤと同じＩＤと、共有メモリから読み出したデータを格納するデータ領域を指定して、ゲストＯＳ側の共有メモリ読出し処理部４３である共有メモリ読出し処理部４３ｂを呼び出す（ステップＳ２６）。
【００８９】
その後、共有メモリ読出し処理部４３ｂは、共有フォルダアクセス権を獲得した後（ステップＳ２７）、指定された共有メモリＩＤに対応するゲストＯＳ側の共有メモリ領域３２ｂを、対応する共有メモリファイル２２の内容で更新する（ステップＳ２８）。
【００９０】
その後、共有メモリ読出し処理部４３ｂは、指定されたデータ領域を、更新した共有メモリ領域３２ｂの内容で更新し（ステップＳ２９）、共有フォルダアクセス権を解放する（ステップＳ３０）。
【００９１】
解放後、スレッドＡのデータ領域に格納された内容は、タスクＡのデータ領域に格納されている内容と同一になる。この結果、ＲＴＯＳアプリケーション１３から共有メモリに書き込んだデータを、ゲストＯＳアプリケーション１９から読み出すことができる。
【００９２】
＜ＯＳ間通知処理の一例＞
次に、ＯＳ間通信機能処理部１５，１７により、ＲＴＯＳアプリケーション１３から送信したＯＳ間通知を、ゲストＯＳアプリケーションが受信する処理について説明する。図１７は、ＯＳ間通知処理の一例を説明する説明図である。図１７に示すように、まず、ゲストＯＳアプリケーション１９内のスレッドＡは、共有メモリＩＤを指定して、ゲストＯＳ側の通知待受け処理部４５である通知待受け処理部４５ｂを呼び出す（ステップＳ４１）。その後、スレッドＡは、通知待ち状態となり、動作が停止する。
【００９３】
その後、ＲＴＯＳアプリケーション１３のタスクＡは、スレッドＡで待ち受けている共有メモリＩＤを指定して、ＲＴＯＳ側の通知送信処理部４４ａを呼び出す（ステップＳ４２）。その後、通知送信処理部４４ａは、ＲＴＯＳ側のＯＳ間通知処理部３４ａを呼び出し（ステップＳ４３）、ＯＳ間通知処理部３４ａは、指定された共有メモリＩＤを、ゲストＯＳアプリケーション１９のＯＳ間通知受信処理部３５ｂにソケット通信部５０によるソケット通信で送信する（ステップＳ４４）。
【００９４】
その後、ＯＳ間通知受信処理部３５ｂは、受信した共有メモリＩＤの通知を待ち受けているスレッドＡの通知待ちを解除する（ステップＳ４５）。
【００９５】
解除後、スレッドＡは、通知待受け処理を終了し、動作を再開する。この結果、ＲＴＯＳアプリケーション１３から送信したＯＳ間通知を、ゲストＯＳアプリケーションが受信することができる。
【００９６】
＜共有メモリ解放処理の一例＞
次に、ＯＳ間通信機能処理部１５，１７により、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９とに割り当てた共有メモリの解放処理の一例について説明する。図１８は、共有メモリ解放処理の一例を説明する説明図である。図１８に示すように、まず、ＲＴＯＳアプリケーション１３内のタスクＡは、共有メモリＩＤを指定して、ＲＴＯＳ側の共有メモリ解放処理部４１である共有メモリ解放処理部４１ａを呼び出す（ステップＳ５１）。
【００９７】
共有メモリ解放処理部４１ａは、共有フォルダアクセス権を獲得した後（ステップＳ５２）、ＲＴＯＳ側のＯＳ間通信管理情報メモリ領域３１ａを、最新のＯＳ間通信機能管理情報ファイル２１の内容に更新し、更新したＯＳ間通信機能管理情報から、指定された共有メモリＩＤの共有メモリ情報を検索し、見つけた共有メモリ情報の割当情報をクリアする（ステップＳ５３）。
【００９８】
その後、共有メモリ解放処理部４１ａは、クリア結果を格納したＯＳ間通信機能管理情報で、ＯＳ間通信機能管理情報ファイル２１を更新し（ステップＳ５４）、共有フォルダアクセス権を解放する（ステップＳ５５）。
【００９９】
その後、ゲストＯＳアプリケーション１９内のスレッドＡから、タスクＡで指定した共有メモリＩＤを指定して、ゲストＯＳ側の共有メモリ解放処理部４１ｂを呼び出す（Ｓ５６）。共有メモリ解放処理部４１ｂは、共有フォルダアクセス権を獲得した後（ステップＳ５７）、ゲストＯＳ側のＯＳ間通信管理情報メモリ領域３１ｂを、最新のＯＳ間通信機能管理情報ファイル２１の内容に更新し、更新したＯＳ間通信機能管理情報から、指定された共有メモリＩＤの共有メモリ情報を検索し、見つけた共有メモリ情報をクリアする（ステップＳ５８）。
【０１００】
その後、共有メモリ解放処理部４１ｂは、クリア結果を格納したＯＳ間通信機能管理情報で、ＯＳ間通信機能管理情報ファイル２１を更新し（ステップＳ５９）、共有フォルダアクセス権を解放する（ステップＳ６０）。
【０１０１】
解放後、ＯＳ間通信機能管理情報ファイル２１には、タスクＡ及びスレッドＡに割り当てた共有メモリ情報がクリアされた状態になっており、次回以降の他のアプリケーションに割当が可能な状態となっている。この結果、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９とに割り当てた共有メモリを解放することができ、解放されたメモリは、他のアプリケーションが使用することができる。
【０１０２】
＜非同期通信＞
次に、共有メモリへの読み出し／書き込みによるＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９との間での非同期通信について説明する。図１９は、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９との間での非同期通信を行う場合の一例を示すシーケンス図である。図１９に示すように、ゲストＯＳ側のＯＳ間通信機能処理部１７は、ゲストＯＳアプリケーションから共有メモリ読出し処理を受けて（ステップＳ７１）、共有メモリファイル２２に読み出すデータがない場合は、ゲストＯＳアプリケーション１９にデータなしを返送する処理（ステップＳ７２）を繰り返す。この繰り返しは、ポーリングや定周期割込み等によって行われる。
【０１０３】
ここで、ＲＴＯＳ側のＯＳ間通信機能処理部１５は、ＲＴＯＳアプリケーション１３から共有メモリ書込み処理を受ける（ステップＳ７３）と、共有メモリファイル２２へのデータ書き込みを行う（ステップＳ７４）。書き込み完了後、ＲＴＯＳアプリケーション１３のデータ送信処理は完了となる。
【０１０４】
一方、ゲストＯＳ側のＯＳ間通信機能処理部１７は、ゲストＯＳアプリケーション１９からの指示により繰り返し共有メモリ読出し処理を行っており、ＲＴＯＳ側から共有メモリファイル２２へのデータ書き込みが完了していると、共有メモリファイル２２から、書き込まれた共有メモリデータを読み出し（ステップＳ７５）、ゲストＯＳアプリケーション１９に読み出した共有メモリデータを渡して一連のデータ送受信処理は完了する。
【０１０５】
これにより、ホストＯＳ７上の共有フォルダ１０に配置した共有メモリファイル２２を介して、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９との間における大容量データなどの非同期通信を行うことができる。
【０１０６】
＜同期通信＞
次に、共有メモリへの読み出し／書き込みによるＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９との間での同期通信について説明する。図２０は、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９との間での同期通信を行う場合の一例を示すシーケンス図である。図２０に示すように、ゲストＯＳ側のＯＳ間通信機能処理部１７は、ゲストＯＳアプリケーションからの通知待受けを受けて、ＲＴＯＳ側からのデータ送信完了の通知を待ち受ける（ステップＳ８１）。
【０１０７】
一方、ＲＴＯＳ側のＯＳ間通信機能処理部１５は、ＲＴＯＳアプリケーション１３から共有メモリ書込み処理を受ける（ステップＳ８２）と、共有メモリファイル２２へのデータ書き込みを行う（ステップＳ８３）。さらに、ＯＳ間通信機能処理部１５は、ＲＴＯＳアプリケーション１３の通知送信を受けて（ステップＳ８４）、データ送信が完了したことを示す通知を、ソケット通信部５０を介してゲストＯＳ側のＯＳ間通信機能処理部１７に送信する（ステップＳ８５）。その後、ＯＳ間通信機能処理部１５は、通知待受け処理を行い、ゲストＯＳアプリケーション１９側からのデータ受信完了の通知を待ち受ける。
【０１０８】
ゲストＯＳ側のＯＳ間通信機能処理部１７は、データ送信完了の通知を受けると、ゲストＯＳアプリケーション１９に対して通知受信処理を行う（ステップＳ８６）。ＯＳ間通信機能処理部１７は、データ送信完了の通知を受信したゲストＯＳアプリケーション１９に対する通知待受けが解除され、共有メモリファイル２２から、書き込まれたデータを読み出す共有メモリ読出し処理を行い（ステップＳ８７）、データをゲストＯＳアプリケーション１９に渡される。
【０１０９】
ゲストＯＳ側のＯＳ間通信機能処理部１７は、ゲストＯＳアプリケーション１９から、データ受信が完了したことを示す通知送信を受けると（ステップＳ８８）、この通知を通知送信処理によって、ソケット通信部５０を介してＲＴＯＳアプリケーション１３側に送信する（ステップＳ８９）。その後、ＲＴＯＳ側のＯＳ間通信機能処理部１５は、この通知を受けて、ＲＴＯＳアプリケーション１３に通知受信処理を行い（ステップＳ９０）、ＲＴＯＳアプリケーション１３の通知待受けが解除され、一連のデータ送受信処理は完了する。
【０１１０】
これにより、ホストＯＳ上の共有フォルダ１０に配置された共有メモリファイル２２を介すること、及び、共有メモリへの書き込み／読み出し完了後にＯＳ間通知を行うことで、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９との間で同期通信を行うことができる。
【０１１１】
上記では、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９との間でのＯＳ間通信の動作を説明したが、異なる仮想ＰＣ上のゲストＯＳアプリケーションとの間、あるいは異なるＲＴＯＳシミュレータプログラム上のＲＴＯＳアプリケーションプログラム上のＲＴＯＳアプリケーションとの間でのＯＳ間通信も同様に適用可能である。
【０１１２】
また、ゲストＯＳとして使用した汎用ＯＳをホストＯＳ７とし、このホストＯＳ７上で動作するようにＲＴＯＳシミュレータプログラムをリコンパイルして構成することにより、ＲＴＯＳシミュレータプログラム上のＲＴＯＳアプリケーションと汎用ＯＳ上のアプリケーションとの間でのＯＳ間通信も同様に適用できる。
【０１１３】
さらに、ゲストＯＳとして使用した汎用ＯＳをホストＯＳ７としたＰＣ仮想化プログラムで仮想ＰＣを生成し、この仮想ＰＣのゲストＯＳ上で動作するようにＲＴＯＳシミュレータプログラムをリコンパイルして構成することにより、ＲＴＯＳシミュレータプログラム上のＲＴＯＳアプリケーションと汎用ＯＳ上のアプリケーションとの間でのＯＳ間通信も同様に適用できる。
【０１１４】
本実施の形態１では、ＰＣ仮想化プログラムのホストＯＳ上で、ＲＴＯＳシミュレータプログラム上のＲＴＯＳアプリケーションと、ＰＣ仮想化プログラムにより生成した仮想ＰＣのゲストＯＳ上でゲストＯＳアプリケーションとを同時に動作させるアプリケーション開発環境において、ホストＯＳとゲストＯＳとの間の共有フォルダ上に、ＯＳ間通信機能管理情報ファイルと、共有メモリファイルと、ＯＳ間通信機能排他ファイルとを配置し、これらのファイル群を使用した共有メモリ送受信機能を設け、ＲＴＯＳシミュレータプログラムとゲストＯＳアプリケーションとの間の通知送受信機能を設けることにより、実システムに依存せず、デバッグ対象となるＲＴＯＳアプリケーションとゲストＯＳアプリケーションとのＯＳ間通信機能を動作させてデバッグを行うことができる。
【０１１５】
（実施の形態２）
上記の実施の形態１では、ＲＴＯＳアプリケーションとゲストアプリケーションとの同期通信を、ソケット通信部５０を用いた通知処理及び通知受信処理によって行っていたが、本実施の形態２のアプリケーションデバッグ装置１ａでは、共有フォルダ１０にＯＳ間通知ファイル２４を設け、このＯＳ間通知ファイル２４を用いた通知処理及び通知受信処理を行うことによって同期通信を行うようにしている。
【０１１６】
図２１は、本実施の形態２によるホストＯＳ７内の共有フォルダ１０の構成を示す図である。また、図２２は、本実施の形態２によるＯＳ間通信機能処理部１５（１７，１８）の構成を示すブロック図である。図２１に示すように、共有フォルダ１０には、新たにＯＳ間通知ファイル２４が設けられる。ＯＳ間通知ファイル２４は、ＯＳ通知機能で使用するファイルであり、図２２に示したＯＳ間通知処理部３４に対応するＯＳ間通知処理部３４´、及び、ＯＳ間通知受信処理部３５に対応するＯＳ間通知受信処理部３５´から参照される。なお、ＯＳ間通知ファイル２４は、１つでもよいし、共有メモリＩＤごとに設けてもよい。
【０１１７】
ＯＳ間通知処理部３４´は、あるＯＳ上のアプリケーションから、他のＯＳ上のアプリケーションへの通知を送信する処理を行う。本実施の形態２では、通知方式に共有フォルダ１０を使用して通知を送受信する例を示している。送信する通知情報は、共有メモリＩＤである。この他に、ＯＳ間通信機能処理として必要な情報があれば、追加して送信してもよい。
【０１１８】
図２３は、本実施の形態２のＯＳ間通知処理部３４´の処理手順を示すフローチャートである。図２３に示すように、ＯＳ間通知処理部３４´は、まず、ＯＳ間通知ファイル２４が存在するか否かを判定する（ステップＳ１１１）。ＯＳ間通知ファイル２４が存在する場合（ステップＳ１１１，Ｙｅｓ）には、本判定処理を繰り返す。一方、ＯＳ間通知ファイル２４が存在しない場合（ステップＳ１１１，Ｎｏ）には、ＯＳ間通知ファイル２４を書き込みモードで生成する（ステップＳ１１２）。その後、ＯＳ間通知ファイル２４に、指定された共有メモリＩＤを書き込む（ステップＳ１１３）。その後、ＯＳ間通知ファイル２４をクローズして（ステップＳ１１４）、本処理を終了する。
【０１１９】
ＯＳ間通知受信処理部３５´は、あるＯＳ上のアプリケーションから送信された通知を受信し、受信した通知を待ち受けている処理の待ちを解除する処理を行う。本処理は、ＲＴＯＳシミュレータプログラム２内では、アプリケーションとは別のタスク、ゲストＯＳアプリケーション内１９，２０内では、アプリケーションスレッドとは別のスレッドとして動作する。
【０１２０】
図２４は、本実施の形態２のＯＳ間通知受信処理部３５´の処理手順を示すフローチャートである。図２４に示すように、ＯＳ間通知受信処理部３５´は、まず、ＯＳ間通知ファイル２４が存在するか否かを判定する（ステップＳ２１１）。ＯＳ間通知ファイル２４が存在しない場合（ステップＳ２１１，Ｎｏ）には、本判定処理を繰り返す。一方、ＯＳ間通知ファイル２４が存在する場合（ステップＳ２１１，Ｙｅｓ）には、ＯＳ間通知ファイル２４を書き込みモード、かつ、読み込みモードでオープンできたか否かを判定する（ステップＳ２１２）。ＯＳ間通知ファイル２４をオープンできなかった場合（ステップＳ２１２，Ｎｏ）には、本判定処理を繰り返す。
【０１２１】
一方、ＯＳ間通知ファイル２４をオープンできた場合（ステップＳ２１２，Ｙｅｓ）には、ＯＳ間通知ファイル２４から共有メモリＩＤを読み込む（ステップＳ２１３）。その後、ＯＳ間通知ファイル２４をクローズする（ステップＳ２１４）。さらに、ＯＳ間通知ファイル２４を削除する（ステップＳ２１５）。その後、ＯＳ間通知受信処理部３５´は、読み込んだ共有メモリＩＤに対して通知待受けしている処理の待ち状態を解除し（ステップＳ２１６）、ステップＳ２１１に戻って、上述した処理を繰り返す。
【０１２２】
＜ＯＳ間通知処理の一例＞
図２５は、本実施の形態２によるＯＳ間通知処理の一例を説明する説明図である。このＯＳ間通知処理は、ＲＴＯＳアプリケーション１３から送信したＯＳ間通知を、ゲストＯＳアプリケーション１９に受信させる処理である。図２５に示すように、まず、ゲストＯＳアプリケーション１９内のスレッドＡは、共有メモリＩＤを指定して、ゲストＯＳ側の通知待受け処理部４５ｂを呼び出す（ステップＳ１００１）。その後、スレッドＡは、通知待ち状態となり、動作が停止する。
【０１２３】
その後、ＲＴＯＳアプリケーション１３のタスクＡは、スレッドＡで待ち受けている共有メモリＩＤを指定して、ＲＴＯＳ側の通知送信処理部４４ａを呼び出す（ステップＳ１００２）。その後、通知送信処理部４４ａは、ＲＴＯＳ側のＯＳ間通知処理部３４ａ´を呼び出し（ステップＳ１００３）、ＯＳ間通知処理部３４ａ´は、指定された共有メモリＩＤを、ＯＳ間通知ファイル２４に書き込む（ステップＳ１００４）。
【０１２４】
その後、ＯＳ間通知受信処理部３５ｂ´は、ＯＳ間通知ファイル２４を読み込み、共有メモリＩＤを取得する（ステップＳ１００５）。その後、ＯＳ間通知受信処理部３５ｂ´は、受信した共有メモリＩＤの通知を待ち受けているスレッドＡの通知待ちを解除する（ステップＳ１００６）。
【０１２５】
解除後、スレッドＡは、通知待受け処理を終了し、動作を再開する。この結果、ＲＴＯＳアプリケーション１３から送信したＯＳ間通知を、ゲストＯＳアプリケーションが受信することができる。
【０１２６】
なお、その他のＯＳ間のデータ送受信は、実施の形態１と同じである。
【０１２７】
（実施の形態３）
本実施の形態３では、共有フォルダ１０に替えて、ホストＯＳ上にＯＳ間通信管理プロセス部６０を単独で設け、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９との間のＯＳ間通信を実現している。
【０１２８】
図２６は、本実施の形態３によるアプリケーションデバッグ装置１ｂの概要構成を示すブロック図である。図２６に示すように、本実施の形態３では、共有フォルダ１０を設けず、ホストＯＳ７上で動作するプログラムであるＯＳ間通信管理プロセス部６０を新たに設けている。
【０１２９】
図２７は、ＯＳ間通信管理プロセス部６０の構成を示すブロック図である。図２７に示すように、ＯＳ間通信管理プロセス部６０は、仮想ＰＣ４のゲストＯＳと通信するゲストＯＳ通信機能部６１、ＲＴＯＳシミュレータプログラム２と通信するＲＴＯＳ通信機能部６２、及び、共有メモリ管理情報６４及び共有メモリ領域６５を管理する共有メモリ領域管理機能部６３を有する。
【０１３０】
共有メモリ領域管理機能部６３では、共有メモリ管理情報６４及び共有メモリ領域６５に対する仮想ＰＣ４からのアクセス要求と、ＲＴＯＳシミュレータプログラム２からのアクセス要求との排他処理を行う必要があるが、この排他処理は、ミューテックス等のＯＳ資源を使用して実現してもよいし、その他の手段を用いてもよい。
【０１３１】
＜共有メモリ領域の割当処理＞
図２８は、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９とに対して同一の共有メモリ領域６５を割り当てる割当処理を説明する説明図である。図２８に示すように、まず、ＲＴＯＳシミュレータプログラム２のＲＴＯＳアプリケーション１３からの共有メモリ領域６５の割当を行う場合、共有メモリ領域割当要求をＯＳ間通信管理プロセス部６０に対して送信する（ステップＳ２０１１）。ＯＳ間通信管理プロセス部６０は、共有メモリ領域６５の割当が完了した場合、ＲＴＯＳアプリケーション１３側に割当完了通知を行う。
【０１３２】
一方、ゲストＯＳアプリケーション１９から共有メモリ領域６５の割当を行う場合、共有メモリ領域割当要求をＯＳ間通信管理プロセス部６０に対して送信する（ステップＳ２０１２）。ＯＳ間通信管理プロセス部６０は、ゲストＯＳアプリケーション１９からの共有メモリ領域割当要求の内容から、共有メモリ名称と割当ＯＳフラグとが同一の共有メモリＩＤをＲＴＯＳアプリケーション１３側に返信する。なお、ＯＳ間通信管理プロセス部６０は、実施の形態１と同様に、ゲストＯＳの割当ＯＳフラグを更新する。
【０１３３】
これにより、実施の形態１と同様に、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９とに対して同一の共有メモリ領域を割り当てることができる。
【０１３４】
＜共有メモリ領域の書き込み・読み出し処理＞
図２９は、ＲＴＯＳアプリケーション１３からの共有メモリ領域６５への書き込み処理とゲストＯＳアプリケーション１９からの読み出し処理の一例を示す説明図である。図２９に示すように、まず、ＲＴＯＳアプリケーション１３のタスクＡから共有メモリＩＤと書き込みデータとを指定した共有メモリ領域書込要求をＯＳ間通信管理プロセス部６０に対して送信する（ステップＳ２０２１）。共有メモリ領域書込要求を受信したＯＳ間通信管理プロセス部６０は、共有メモリＩＤに該当する共有メモリ領域６５に対するアクセス権を取得し、共有メモリ領域６５を書き込みデータで更新する。
【０１３５】
その後、ゲストＯＳアプリケーション１９のスレッドＡから、ＯＳ間通信管理プロセス部６０に対して、共有メモリＩＤと読み出しサイズと読み出しデータ格納領域とを指定した共有メモリ領域読出要求を行う（ステップＳ２０２２）。ＯＳ間通信管理プロセス部６０は、共有メモリＩＤに該当する共有メモリ領域６５に対するアクセス権を取得し、共有メモリ領域６５から、読み出しサイズだけデータを読み出してデータ格納領域に格納して、ゲストＯＳアプリケーション１９に応答を返す。
【０１３６】
これにより、共有メモリ領域６５を用いてＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９との間のデータの送受信が可能になる。
【０１３７】
＜共有メモリ領域の割当解除処理＞
図３０は、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９とからの共有メモリ領域６５の割当解除処理の一例を示す説明図である。図３０に示すように、まず、ＲＴＯＳアプリケーション１３のタスクＡから、共有メモリＩＤを指定した共有メモリ割当解除要求をＯＳ間通信管理プロセス部６０に対して送信する（ステップＳ２０３１）。ＯＳ間通信管理プロセス部６０は、共有メモリ管理情報６４に対して、共有メモリＩＤを用いてＲＴＯＳアプリケーション１３への共有メモリ割当情報のクリアを行う。
【０１３８】
次に、ゲストＯＳアプリケーション１９のスレッドＡから、共有メモリＩＤを指定した共有メモリ割当解除要求をＯＳ間通信管理プロセス部６０に対して送信する（ステップＳ２０３２）。ＯＳ間通信管理プロセス部６０は、共有メモリ管理情報６４に対して、共有メモリＩＤをもとにゲストＯＳアプリケーション１９への共有メモリ割当情報のクリアを行う。
【０１３９】
これにより、ＲＴＯＳアプリケーション１３とゲストＯＳアプリケーション１９とに割り当てた共有メモリ領域６５を解除し、他のアプリケーションに割り当てることが可能になる。
【０１４０】
＜通知の送受信処理＞
図３１は、ＯＳ間の通知の送受信処理の一例としてＲＴＯＳアプリケーション１３からのＯＳ間通知の送信とゲストＯＳアプリケーション１９での受信とを行う場合について説明する説明図である。なお、このＯＳ間の通知の送受信処理は、ＴＣＰ／ＩＰ通信などの一般的なネットワークの通信を用いて実現される。図３１に示すように、まず、ゲストＯＳアプリケーション１９のスレッドＡから共有メモリＩＤを指定してＯＳ間通信機能処理部１７の通知待受け処理部４５ｂを呼び出す。通知待受け処理部４５ｂの呼び出しによってスレッドＡは通知待ち状態となり停止する。通知待受け処理部４５ｂは、ネットワークの通信の接続を待ち受ける。
【０１４１】
次に、ゲストＯＳアプリケーション１９のタスクＡから、スレッドＡが待ち受けている共有メモリＩＤを指定してＯＳ間通信機能処理部１５の通知送信処理部４４ａを呼び出す。通知送信処理部４４ａは、ゲストＯＳアプリケーション１９に接続し、共有メモリＩＤを指定したＯＳ間通知を送信し、切断する（ステップＳ２０４１）。これに対し、通知待受け処理部４５ｂは、ＲＴＯＳアプリケーション１３の通知送信処理部４４ａが送信した共有メモリＩＤを受信し、該当する共有メモリＩＤを指定して待受けしているスレッドがないかを検索する。検索の結果、該当する共有メモリＩＤを指定して待ち受けているスレッドＡの通知待ち状態を解除して終了する（ステップＳ２０４２）。
【０１４２】
＜ＯＳ間の同期通信処理＞
図３２は、ＯＳ間の同期通信処理を説明するシーケンス図である。図３２に示すように、まず、ゲストＯＳアプリケーション１９から通知待受け処理を行い（ステップＳ２１０１）、ＲＴＯＳアプリケーション１３からの共有メモリ領域６５へのデータ書き込み完了の通知を待ち受ける。
【０１４３】
その後、ＲＴＯＳアプリケーション１３から共有メモリ領域書込要求により（ステップＳ２１０２）、ＯＳ間通信管理プロセス部６０内の共有メモリ領域６５にデータを買い込む（ステップＳ２１０３）。
【０１４４】
その後、ＲＴＯＳアプリケーション１３から共有メモリ領域６５にデータを書き込んだことを示す通知をゲストＯＳアプリケーション１９のＯＳ間通信機能処理部１７に対して直接送信する（ステップＳ２１０４）。ゲストＯＳアプリケーション１９は、ＲＴＯＳアプリケーション１３からの通知を受信したことによって通知待受けが解除される（ステップＳ２１０５）。なお、ＲＴＯＳアプリケーション１３は、この通知の送信後、通知待受け処理を行い（ステップＳ２１０６）、ゲストＯＳアプリケーション１９からのデータ読み出し完了の通知を待ち受ける。
【０１４５】
通知待受けが解除されたゲストＯＳアプリケーション１９は、共有メモリ領域読出要求を行い（ステップＳ２１０７，Ｓ２１０８）、ＯＳ間通信管理プロセス部６０内の共有メモリ領域６５からデータを読み出す（ステップＳ２１０９，２１１０）。データの読み出しを完了すると、ゲストＯＳアプリケーション１９は、ＲＴＯＳアプリケーション１３のＯＳ間通信機能処理部１５に対して、データ読み出し完了の通知を直接送信する（ステップＳ２１１１）。ＲＴＯＳアプリケーション１３は、この通知を受信したことによって（ステップＳ２１１２）、通知待受けが解除され、データ受信処理は完了する。
【０１４６】
なお、上記の実施の形態及び変形例で図示した各構成は機能概略的なものであり、必ずしも物理的に図示の構成をされていることを要しない。すなわち、各装置及び構成要素の分散・統合の形態は図示のものに限られず、その全部又は一部を各種の使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【符号の説明】
【０１４７】
１，１ａ，１ｂ  アプリケーションデバッグ装置
２  ＲＴＯＳシミュレータプログラム
３  ホストＯＳ用プログラム開発環境
４，５  仮想ＰＣ
６  ＰＣ仮想化プログラム
７  ホストＯＳ
８  ＰＣハードウェア
１０  共有フォルダ
１１  ゲストＯＳ
１３，１４  ＲＴＯＳアプリケーション
１５，１７，１８  ＯＳ間通信機能処理部
１６  ＲＴＯＳ処理部
１９，２０  ゲストＯＳアプリケーション
２１  ＯＳ間通信機能管理情報ファイル
２２  共有メモリファイル
２３  ＯＳ間通信機能排他ファイル
２４  ＯＳ間通知ファイル
３０  ＯＳ内排他処理部
３１，３１ａ，３１ｂ  ＯＳ間通信管理情報メモリ領域
３２，３２ａ，３２ｂ  共有メモリ領域
３３  共有フォルダ配置ファイルアクセス処理部
３４，３４ａ  ＯＳ間通知処理部
３５，３５ｂ  ＯＳ間通知受信処理部
３６  アプリケーションインタフェース
４０，４０ａ，４０ｂ  共有メモリ割当処理部
４１，４１ａ，４１ｂ  共有メモリ解放処理部
４２，４２ａ  共有メモリ書込み処理部
４３，４３ｂ  共有メモリ読出し処理部
４４，４４ａ  通知送信処理部
４５，４５ｂ  通知待受け処理部
５０  ソケット通信部
６０  ＯＳ間通信管理プロセス部
６１  ゲストＯＳ通信機能部
６２  ＲＴＯＳ通信機能部
６３  共有メモリ領域管理機能部
６４  共有メモリ管理情報
６５  共有メモリ領域
【図１】
2020154636.tif 000003
【図２】
2020154636.tif 000004
【図３】
2020154636.tif 000005
【図４】
2020154636.tif 000006
【図５】
2020154636.tif 000007
【図６】
2020154636.tif 000008
【図７】
2020154636.tif 000009
【図８】
2020154636.tif 000010
【図９】
2020154636.tif 000011
【図１０】
2020154636.tif 000012
【図１１】
2020154636.tif 000013
【図１２】
2020154636.tif 000014
【図１３】
2020154636.tif 000015
【図１４】
2020154636.tif 000016
【図１５】
2020154636.tif 000017
【図１６】
2020154636.tif 000018
【図１７】
2020154636.tif 000019
【図１８】
2020154636.tif 000020
【図１９】
2020154636.tif 000021
【図２０】
2020154636.tif 000022
【図２１】
2020154636.tif 000023
【図２２】
2020154636.tif 000024
【図２３】
2020154636.tif 000025
【図２４】
2020154636.tif 000026
【図２５】
2020154636.tif 000027
【図２６】
2020154636.tif 000028
【図２７】
2020154636.tif 000029
【図２８】
2020154636.tif 000030
【図２９】
2020154636.tif 000031
【図３０】
2020154636.tif 000032
【図３１】
2020154636.tif 000033
【図３２】
2020154636.tif 000034