以下、本発明の一側面に係る情報処理装置及び情報処理方法を、実施の形態(以下、「本実施形態」と表記する)として説明する。ただし、以下に挙げる実施形態は例示であり、本発明は以下の実施形態の構成に限定されない。
なお、以下に挙げる実施形態において、例えば、スレッド名を「PLATFROM制御」等、自然言語(日本語)等で例示しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメタ、マシン語等で指定される。
§1 ハードウェア構成
まず、本実施形態の一実施例である車載用オーディオ・ビジュアル・ナビゲーション一体機1(以降、AVN一体機1と称する)について説明する。図1は、本実施形態の一実施例であるAVN一体機1のハードウェア構成例を示すブロック図である。
制御部100は、AVN一体機1の各部、或いは接続された外部機器からの信号、また使用者の操作に基づく各操作部からの操作指示信号等を受信し、それら信号に基づきAVN一体機1の各部、或いは外部機器を統括的に制御する。制御部100は、例えば、1又は複数のマイクロコンピュータ(マイコン)と、このマイコンの処理に利用される周辺回路(ROM(Read Only Memory)、RAM(Random Access Memory)、インタフェース回路等)を備え、ROM等の周辺回路に記憶されたプログラムに従い動作する。
外部記憶媒体再生部101は、例えば、USB(Universal Serial Bus)メモリやSDカード等の外部記憶媒体を接続するためのコネクタを備える。そして、外部記憶媒体再生部101は、当該コネクタに接続された外部記憶媒体に記憶された各種データから所望のデータを読み出し、読み出した画像信号、音声信号又は文字信号等を分配回路107に出力する。なお、外部記憶媒体再生部101は、制御部100からの制御信号により、コネクタに接続された外部記憶媒体からデータを読み出す動作等を制御される。
ラジオ受信部102及びTV(television)受信部103は、アンテナにより受信された放送波から、セレクタ113等により特定の周波数の放送波を選択受信し、復調して当該放送の音声信号および、画像信号(テレビ放送の場合)を分配回路107に出力する。ラジオ受信部102及びTV受信部103は、同調回路、復調・復号回路等を備える。そして、ラジオ受信部102及びTV受信部103は、制御部100からの制御信号により、そのオン/オフ、受信周波数等の各種動作を制御される。
ディスク再生部104は、ディスク(例えば、DVD(Digital Versatile Disc)やBD(Blu-ray Disc))に記憶されているデータをピックアップにより読込み、読込んだデータに基づく音声信号、画像信号等を分配回路107に出力する。ディスク再生部104は、光学ピックアップ、ピックアップ・ディスク駆動機構、ピックアップ・ディスク駆動機構の制御回路、読取信号の復号回路等を備える。そして、ディスク再生部104は、制御部100からの制御信号により、読込み処理のオン/オフ、読込み位置等の各種動作を制御される。
HD(ハードディスク)再生部105は、磁気記憶媒体であるハードディスクに記憶された各種データから所望のデータを読み出し、読み出した画像信号、音声信号又は文字信号等を分配回路107に出力する。ハードディスクは、MP3ファイル等の音楽データやJ
PEG(Joint Photographic Experts Group)ファイルやMPEG(Moving Picture Experts Group)ファイル等の画像データ、ナビゲーション用の地図データ等を記憶している。HD再生部105は、HDドライブ、読取信号号の復号回路等を備える。そして、HD再生部105は、制御部100からの制御信号により、読み出し処理のオン/オフ、読み出すデータ等の各種動作を制御される。
ナビゲーション部106は、地図上に自車位置や目的地までの経路を表示したり、交差点等で音声等により右左折等の進行方向案内を行い、また後述する交通情報通信システム(VICS(登録商標))情報受信部111から交通情報、GPS(登録商標)情報受信部112から自車位置情報を入手して表示したりして、目的地までの経路案内を行う。ナビゲーション部106は、ナビゲーションの為に利用される地図情報を記憶する記憶装置(媒体)、各種演算処理を行うCPU(Central Processing Unit)、各種処理のために
データを記憶するRAM等のメモリ等を備える。そして、ナビゲーション部106は、制御部101からの制御信号により、ナビゲーション処理のオン/オフ、各種動作を制御される。なお、ナビゲーションの為に利用される地図情報を記憶する記憶装置(媒体)は、外部記憶媒体再生部101に接続される上述の外部記憶装置、ディスク再生部103によって処理される上述のディスク、HD再生部105に備えられる上述のHDドライブであってもよい。
分配回路107は、制御部100の制御信号により制御され、出力することが指定された各種ソース(外部記録媒体再生部101等)の音声信号と画像信号を音声調整回路109及び画像調整回路108に出力する。分配回路107は、リレーあるいはスイッチングトランジスタ等の電子回路を含むスイッチ群を備える。
画像調整回路108は、制御部100の制御信号により制御され、分配回路107から入力された画像信号に対し、輝度や色調、コントラストなどを調整し、調整した各画像信号を画像出力部110に出力する。画像調整回路108は、画像データを記憶するメモリ、画像データを演算処理するデジタルシグナルプロセッサ等の演算回路等を備える。
音声調整回路109は、制御部100の制御信号により制御され、分配回路107から入力された音声信号に対し、音量、音声を調整し、調整した音声信号をスピーカ123に出力する。音声調整回路109は、音声データを記憶するメモリ、画像データを演算処理するデジタルシグナルプロセッサ等の演算回路、トランジスタ・抵抗・コンデンサ・コイル等を含む増幅・減衰回路や共振回路等を備える。スピーカ123は、音声調整回路110により入力された音声信号を、音声出力する。
画像出力部110は、制御部100の制御信号により制御され、画像調整回路108から入力された画像信号と、画像信号を表示部122に表示させるために制御部100から入力された表示画像信号とに基づいて画像合成等の処理を施し、当該処理を施した画像信号に基づき表示部122を駆動する。画像出力部110は、例えば、演算処理により画像処理を行なう画像用に特化された演算処理回路である画像ASIC、画像処理・出力用に画像データを記憶するビデオメモリ、画像出力用ビデオメモリに記憶された画像データに基づき表示部を駆動する画像駆動回路等を備える。
VICS情報受信部111は、VICSに係る交通情報を受信し、受信した交通情報をナビゲーション部106に出力する。VICS情報受信部で、交通情報通信システムからのデータを受信する受信機(FM受信機,電波ビーコン受信機,光ビーコン受信機)、受信したデータを復号する復号回路等を備える。
GPS信号受信回路112は、GPS衛星からのGPS信号に基づき自車位置を検出し、検出した現在地情報をナビゲーション部106に出力する。GPS情報受信部112は、GPS信号を受信するGPS信号受信回路、受信したGPS信号に基づき自車位置を算出する演算部を備える。
操作部114は、AVN一体機1に対して使用者が各種操作を行うための入力部である。具体的には、操作部114は、例えば、押釦スイッチ、回転操作スイッチ、ジョイスティック等である。操作部114は、AVN一体機1に対する使用者による各種操作の操作状態を制御部100に出力する。
リモコン送受信部115は、使用者によるリモコン116に対する入力操作の操作状態を制御部100に出力する。本実施例では、リモコン送受信部115は、使用者のリモコン116に対する回転操作、傾動操作、押圧操作を検出する。
リモコン116は、AVN一体機1本体から離れた場所、例えば運転席と助手席間のひじ掛け付近や、ステアリングホイールに設置されたインストルメントパネル等であってもよい。なお、リモコン116は、回転操作量・方向に応じた信号を出力するロータリエンコーダ、感圧センサにより構成され傾動操作方向に応じた信号を出力するジョイスティック等の傾動センサ、押圧操作によりオンオフ状態が変化する押圧スイッチを備える。
メモリ117は、各種データや制御プログラムを記憶するメモリ(記憶媒体)で、例えばHDD(Hard Disk Drive)や、書換え可能なフラッシュメモリ等を備える。メモリ1
17は、制御部100の制御信号により制御され、制御部100に備えられたROM等の周辺回路に所望のデータを出力する。
カメラ119は、例えば車両後部に備え付けられたカメラであり、撮影映像を外部音声/映像入力部118に出力する。なお、撮影映像は音声データを含んでもよい。
ETC(Electronic Toll Collection System)車載機120は、使用者が高速道路の
通行料金等を支払うため、料金所に取り付けられたアンテナと無線通信を行い、適正な料金情報を交換する。なお、ETC車載機120のこのような動作は、制御部100の制御信号により制御される。
通信ユニット121は、AVN一体機1がインターネット等のコンピュータネットワークに接続するため、様々な場所に取り付けられたアンテナと無線通信を行い、パケット等のデータの送受信を行う。
表示部122は、画像出力部110により入力された画像信号に基づき画像を表示する。表示部122は、例えば、液晶ディスプレイ、有機ELディスプレイ、プラズマディスプレイ、冷陰極フラットパネルディスプレイ等の液晶パネル201と、液晶パネル201を背面から証明するバックライト200と、抵抗膜方式や静電容量方式等のタッチパネル202とを備える。タッチパネル202は、AVN一体機1に対する使用者による各種操作の操作状態を制御部100に出力する。
なお、AVN一体機1は、本実施形態における情報処理装置の一実施例であり、情報処理装置の種類を限定するものではない。本実施形態における情報処理装置は、例えば、CPU等の1又は複数のプロセッサや、プロセッサの処理に利用される周辺回路(ROM、RAM、インタフェース回路等)を備える汎用コンピュータ等であってもよい。
また、本実施形態におけるAVN一体機1は、例えば、車載される自動車のアクセサリ電源のオン及びオフに応じて、その起動及び停止がなされる。
§2 第1の実施形態
次に、本実施形態の第1の実施形態について説明する。
§2−1 プロセス構成
まず、第1の実施形態におけるプロセス構成について説明する。以下のプロセス構成、各種手段、及び周知の機能は、例えば、メモリ117等に格納された各種プログラム及びデータが、制御部100の周辺回路であるRAM等に展開されて、制御部100のマイコンにより実行され、各構成(外部記憶媒体再生部101等)が制御されることによって実現される。
図2は、第1の実施形態においてAVN一体機1上で実現されるプロセス構成の一例を示す。図2に示されるとおり、第1の実施形態におけるAVN一体機1は、当該プロセス構成として、親プロセス50と子プロセス51を備える。
親プロセス50は、その機能構成として、システム管理スレッド50a、管理情報50b、スレッドA50c、子プロセス管理スレッド50dを備える。システム管理スレッド50aはプロセス内スレッド管理手段50eを備える。子プロセス管理スレッド50dは子プロセス管理手段50fを備える。
また、子プロセス51は、その機能構成として、システム管理スレッド51a、管理情報50b、スレッドB50c、子プロセス管理スレッド51dを備える。システム管理スレッド51aはプロセス内スレッド管理手段51eを備える。子プロセス管理スレッド51dは子プロセス管理手段51fを備える。
なお、親プロセス50、子プロセス51、及びこれらのプロセスに含まれる各スレッドは、プロセス及びスレッドの機能として知られる周知の機能を備えている。
なお、上述したとおり、各プロセス内スレッド管理手段(50e、51e)及び各子プロセス管理手段(50f、51f)は、例えば、メモリ117等に格納された各種プログラム及びデータが、制御部100の周辺回路であるRAM等に展開されて、制御部100のマイコンにより実行され、各構成(外部記憶媒体再生部101等)が制御されることによって実現される。また、各管理情報(50b、51b)は、例えば、メモリ117等により格納され、利用される際に制御部100の周辺回路であるRAM等に展開されることで実現される。
以下、プロセス内スレッド管理手段及び子プロセス管理手段について説明する。
<プロセス内スレッド管理手段>
プロセス内スレッド管理手段は、所定の起動要因及び停止要因に応じて、管理情報を用いて、プロセス内に存在するスレッドの起動及び停止を管理する。管理情報には、そのプロセス内に存在するスレッドの起動要因及び停止要因が格納されている。プロセス内スレッド管理手段は、管理情報に格納された当該スレッドの起動要因及び停止要因に従って、プロセス内に存在するスレッドの起動及び停止を管理する。
例えば、親プロセス50におけるシステム管理スレッド50aは、プロセス内スレッド管理手段50eにより、管理情報50bを用いて、スレッドA50c及び子プロセス管理スレッド50dの起動及び停止を管理する。
例えば、子プロセス51におけるシステム管理スレッド51aは、プロセス内スレッド管理手段51eにより、管理情報51bを用いて、スレッドA51c及び子プロセス管理スレッド51dの起動及び停止を管理する。
管理情報の一例を図3に示す。図3(A)は、親プロセス50の管理情報50bのレコード例を示す。また、図3(B)は、子プロセス51の管理情報51bのレコード例を示す。各管理情報はそれぞれ、図15において示した従来の管理情報と同様である。すなわち、各管理情報のレコードはそれぞれ、スレッドのタイプを指定するためのスレッド名、各スレッドの実行の優先度を示すスレッド優先度、スレッドをメモリに格納する際に必要なメモリサイズを示すスタックサイズ、各スレッドを一意に特定するためのスレッドID、及びスレッドの停止方法を指定するパラメタであるスレッド属性(停止要因)を格納するフィールドを備える。
本実施形態では、スレッドの起動要因として、各スレッドの実行の優先度を定めるスレッド優先度が用いられる。スレッド優先度は、実行中及び待機中にあるスレッドの中でどのスレッドを実行中のスレッドとするのかを定めるものである。本実施形態では、スレッド優先度は、この実行の優先度として用いられると共に、起動の優先度(起動要因)としても用いられる。すなわち、本実施形態では、スレッドの起動要因は、自身よりも優先度の高いスレッドが起動されたことである。ただし、スレッドの起動要因は、このようなスレッド間の関係により定められる条件に限定される訳ではない。スレッドの起動要因は、例えば、AVN一体機1が備えるカメラ119が操作されたこと等、ハードウェアの動作により定められる条件であってもよい。この点は、スレッドの停止要因についても同様である。これらの起動要因及び停止要因は、管理情報に格納することにより、任意に定めることができる。
なお、プロセス内スレッド管理手段を備えるシステム管理スレッド(システム管理スレッド50a、システム管理スレッド51a)の起動及び停止は、自身の親プロセスにあたる子プロセス管理スレッドが備える子プロセス管理手段によって管理される。
<子プロセス管理手段>
子プロセス管理手段は、例えば、子プロセス管理スレッドに対する起動命令及び停止命令等の起動要因及び停止要因に応じて、自身の子プロセスにあたるシステム管理スレッドの起動及び停止を管理する。起動要因及び停止要因は、任意に定められる。例えば、ハードウェア構成のある構成(例えば、ナビゲーション部106等)の起動及び停止が起動要因及び停止要因として設定されてもよい。なお、本実施形態では、当該起動要因及び停止要因は、当該子プロセス管理スレッドに対する起動命令及び停止命令であるとする。
なお、子プロセス管理手段(子プロセス管理スレッド)と子プロセスの関係は、図2に示されるとおり、1対1であってもよいし、1対複数であってもよい。つまり、子プロセス管理手段(子プロセス管理スレッド)が管理する子プロセスのシステム管理スレッドは1つであってもよいし、複数であってもよい。
ここで、子プロセス管理手段が、自身の子プロセスにあたるシステム管理スレッドの起動を実行する場合、当該実行に係る起動対象のシステム管理スレッドは既に生成されている必要がある。
子プロセス管理手段は、例えば、起動対象のシステム管理スレッドの状態を気にせず、当該システム管理スレッドの起動を実行してもよい。この場合、当該起動対象のシステム管理スレッドが生成されていない場合に限り、エラーが起こる。このエラーにより、子プロセス管理手段は、起動対象のシステム管理スレッドが生成されていないことを認識し、当該起動対象のシステム管理スレッドを生成及び起動を実行してもよい。
また、子プロセス管理手段は、例えば、起動対象のシステム管理スレッドからのプロセス状態通知等により、起動対象のシステム管理スレッドの起動が可能であると認識した後に、起動対象のシステム管理スレッドの起動を実行してもよい。なお、プロセス状態通知は、プロセスの状態を通知するものであり、例えば、起動対象のシステム管理スレッドが生成されていること、又は、起動対象のシステム管理スレッドを含むプロセス内のスレッドが全て生成されていること等を通知するものである。
この場合、例えば、各プロセス又はスレッドはOS等の周知の機能によって生成されてもよい。そして、当該周知の機能によりシステム管理スレッドが生成された後、当該システム管理スレッドは、例えば、自身のプロセス内のスレッドが全て生成された時点において、自身の起動及び停止を管理する子プロセス管理スレッドに対してプロセス状態通知を発する。このプロセス状態通知を発する時点は、当該システム管理スレッドが生成された後、任意の時点でよい。子プロセス管理手段は、このプロセス状態通知により、起動対象のシステム管理スレッドが生成され、当該起動対象のシステム管理スレッドの起動が可能であることを認識する。そして、例えば、子プロセス管理手段は、当該認識した後に、起動対象のシステム管理スレッドの起動を実行してもよい。
その他、例えば、子プロセス管理手段は、起動対象のシステム管理スレッドの状態を通知により確認した後に、当該起動対象のシステム管理スレッドの起動を実行する等、周知の方法により当該起動対象のシステム管理スレッドの起動を実行する。この点は、上述のプロセス内スレッド管理手段によるスレッドの起動においてもあてはまる。
なお、本実施形態では、起動対象のシステム管理スレッドは、自身のプロセス内のスレ
ッドが全て生成された時点において、自身の起動及び停止を管理する子プロセス管理スレッドに対して、自身は停止したままにおいて、プロセス状態通知を発することにする。そして、子プロセス管理手段は、当該プロセス状態通知により、起動対象のシステム管理スレッドが生成され、起動命令を発することが可能であることを認識した後に、当該起動対象のシステム管理スレッドの起動を実行することにする。このようにプロセス状態通知が発せられるため、システム管理スレッドが生成される時点においては、自身のプロセス内のスレッドは全て生成されている。したがって、プロセス内スレッド管理手段は特に起動対象のスレッドが生成されていることを確認する必要はない。
なお、このような起動対象のシステム管理スレッドが、自身が起動可能であることを自身の起動を行う子プロセス管理スレッドに対して行う通知(例えば、プロセス状態通知)を、以下、準備完了通知と称する。
一方、子プロセス管理手段は、自身の子プロセスにあたるシステム管理スレッドの停止を実行する場合、例えば、上記起動を行ったシステム管理スレッドに対してのみ、当該システム管理スレッドの停止を実行する。停止の実行に際して、子プロセス管理手段は、上述の起動の実行のような点を考慮する必要はない。なぜなら、停止対象のシステム管理スレッドが存在しない場合、子プロセス管理手段は停止命令をする必要がないからである。この点は、上述のプロセス内スレッド管理手段によるスレッドの停止においてもあてはまる。
<その他>
なお、本実施形態では、プロセス内スレッド管理手段を備えたシステム管理スレッドが、プロセス内の各スレッドの起動及び停止を管理する。また、子プロセス管理手段を備えた子プロセス管理スレッドが、子プロセスのシステム管理スレッドの起動及び停止を管理する。したがって、プロセス内では、システム管理スレッドが管理を行うスレッドであり、その他のスレッドが管理されるスレッドである。また、プロセス間では、親プロセスの子プロセス管理スレッドが管理を行うスレッドであり、当該親プロセスの子プロセスのシステム管理スレッドが管理されるスレッドである(図2参照)。
ここで、本実施形態では、管理を行うスレッドの管理されるスレッドに対する起動命令及び停止命令は、起動要求通知及び停止要求通知という通知によって実現される。本実施形態では、管理を行うスレッドは、管理されるスレッドに対して起動要求通知及び停止要求通知を送る。管理されるスレッドは、当該起動要求通知及び停止要求通知に応じて、自身の起動及び停止を実行する。そして、本実施形態では、当該管理されるスレッドは、自身の起動及び停止を完了した後、管理を行うスレッドに対して、起動要求通知及び停止要求通知に対する起動完了通知及び停止完了通知を返す。ただし、これらの態様は、いかなる態様であってもよい。これらの通知による起動命令及び停止命令の実現方法は、本発明を限定するものではない。
なお、ここで用いる起動要求通知及び停止要求通知は、起動に関する情報を通知すること及び停止に関する情報を通知することを指し、これらに関する情報であればいかなる態様であってもよい。例えば、管理を行うスレッドは、自身の状態を通知する。そして、管理されるスレッドは、当該管理を行うスレッドの状態に応じて、起動または停止を実行してもよい。このとき、例えば、管理を行うスレッドが、システム管理スレッドであるならば、当該起動要求通知及び停止要求通知は、システム管理スレッドの状態を通知するシステム状態通知により実現される。また、例えば、管理を行うスレッドが、子プロセス管理スレッドであるならば、当該起動要求通知及び停止要求通知は、親プロセスの状態を通知するプロセス状態通知により実現される。すなわち、起動要求通知及び停止要求通知は、管理されるスレッドの起動及び停止の実行に用いられる通知であれば、いかなる態様であ
ってもよい。この点は、起動完了通知及び停止完了通知についても同様である。起動完了通知及び停止完了通知は、スレッドの起動状態に関する情報を通知すること及び停止状態に関する情報を通知することを指し、これらに関する情報であればいかなる態様であってもよい。各通知の態様は、本発明を限定するものではない。
また、後述する動作例では、起動要求通知及び停止要求通知、並びに、これらに対応する起動完了通知及び停止完了通知は、それぞれ1回の通知であるが、通知の回数は限定されない。例えば、各通知は、段階的に行われてもよい。例えば、管理を行うスレッドから管理されるスレッドに対して停止要求通知が発せられた場合、管理されるスレッドは、管理を行うスレッドに対して、自身の停止処理の段階に応じた停止完了通知を送信してもよい。この場合、管理を行うスレッドは、管理されるスレッドの段階的な状態を認識することができる。
なお、子プロセス管理手段を備えた子プロセス管理スレッドが、子プロセスのシステム管理スレッドの起動及び停止を管理する際の起動要求通知、停止要求通知、起動完了通知及び停止完了通知は、プロセス間通信によって実現される。
§2−2 動作例
次に、第1の実施形態における各スレッドの起動及び停止についての管理方法について、以下の動作例を用いて説明する。図4は、第1の実施形態におけるスレッドの起動処理の手順の一例を示したシーケンスチャートである。また、図5は、第1の実施形態におけるスレッドの停止処理の手順の一例を示したシーケンスチャートである。なお、これらのシーケンスチャートでは、起動要求通知、起動完了通知、停止要求通知、停止完了通知はそれぞれ、起動要求、起動完了、停止要求、停止完了と記載を省略した。
なお、これらのシーケンスチャートでは、各システム管理スレッドのプロセス内スレッド管理手段が用いる管理情報は、図3に与えられるレコード例を前提としている。ここで、本実施形態において、各管理情報のスレッド優先度は、その値が小さいほど優先度は高い。また、各スレッドのスレッド属性(停止要因)は、任意に設定される。ここでは、説明を簡略化するために、スレッド属性(停止要因)は、管理を行うスレッドに対して停止命令がなされたこと、及び、自分よりも起動の優先度の高いスレッドが停止したこととする。
なお、これらのシーケンスチャートの前提として、各プロセス及びスレッドは周知のOSの機能により既に生成されているものとする。
<スレッドの起動時>
まず、任意の方法により、システム管理スレッド50aが起動される。システム管理スレッド50aが起動されると、システム管理スレッド50aが備えるプロセス内スレッド管理手段50eは、管理情報50bのスレッド優先度を参照する(スレッド優先度については図3(A)を参照)。そして、図4に示されるとおり、プロセス内スレッド管理手段50eは、スレッド優先度が一番高いスレッドA50cに対して起動要求通知を送信する(S200)。なお、本実施形態では、上述のとおり、スレッド優先度の値が低い程、優先度が高い。
スレッドA50cは、当該起動要求通知を受信すると、自身の起動を実行する。そして、スレッドA50cは、自身の起動が完了すると、システム管理スレッド50aに対して起動完了通知を返信する(S201)。
スレッドA50cから起動完了通知を受信すると、プロセス内スレッド管理手段50e
は、再度、管理情報50bのスレッド優先度を参照する。そして、図4に示されるとおり、プロセス内スレッド管理手段50eは、管理情報50bの中でスレッドA50cの次にスレッド優先度の高い子プロセス管理スレッド50dに対して起動要求通知を送信する(S202)。
子プロセス管理スレッド50dは、当該起動要求通知を受信すると、自身の起動を実行する。そして、自身の起動が完了すると、システム管理スレッド50aに対して起動完了通知を返信する(S203)。
ここで、子プロセス51及び子プロセス51に含まれているスレッドは既に生成されているものとする。このとき、システム管理スレッド51aは、子プロセス管理スレッド50dに対して、自身は停止したままにおいて、準備完了通知を送信する(S204)。当該準備完了通知は、上述のとおり、例えば、プロセス状態通知である。
準備完了通知を受信した後、起動が完了した子プロセス管理スレッド50dの子プロセス管理手段50fは、自身の子プロセスである子プロセス51のシステム管理スレッド51aに対して起動要求通知を送信する(S205)。
システム管理スレッド51aは、当該起動要求通知を受信すると、自身の起動を実行する。そして、自身の起動が完了すると、システム管理スレッド51aは、子プロセス管理スレッド50dに対して起動完了通知を返信する(S206)。
起動が完了したシステム管理スレッド51aのプロセス内スレッド管理手段51eは、管理情報51bのスレッド優先度を参照する(スレッド優先度については図3(B)を参照)。そして、図4に示されるとおり、プロセス内スレッド管理手段51eは、子プロセス管理スレッド51dに対して起動要求通知を送信する(S207)。
子プロセス管理スレッド51dは、当該起動要求通知を受信すると、自身の起動を実行する。そして、自身の起動が完了すると、システム管理スレッド51aに対して起動完了通知を返信する(S208)。
また、上述と同様に、子プロセス管理スレッド51dが起動を管理する不図示の子プロセス及び当該子プロセスに含まれるスレッドは既に生成されているものとする。そして、当該子プロセスのシステム管理スレッドから子プロセス管理スレッド51dに対して準備完了通知が送信される(S209)。
準備完了通知を受信した後、起動が完了した子プロセス管理スレッド51dの子プロセス管理手段51fは、自身の子プロセスである当該不図示の子プロセスのシステム管理スレッドに対して起動要求通知を送信する(S210)。そして、当該不図示のシステム管理スレッドは、起動要求通知を受信すると、自身の起動を実行する。そして、自身の起動が完了すると、当該不図示のシステム管理スレッドは、子プロセス管理スレッド50dに対して起動完了通知を返信する(S211)。
子プロセス管理スレッド51dから起動完了通知を受信すると、プロセス内スレッド管理手段51eは、再度、管理情報51bのスレッド優先度を参照する。そして、図4に示されるとおり、プロセス内スレッド管理手段51eは、管理情報51bの中で子プロセス管理スレッド51dの次にスレッド優先度の高いスレッドB51cに対して起動要求通知を送信する(S212)。
スレッドB51cは、当該起動要求通知を受信すると、自身の起動を実行する。そして
、スレッドB51cは、自身の起動が完了すると、システム管理スレッド51aに対して起動完了通知を返信する(S213)。
以上により、親プロセス50及び子プロセス51に存在する全てのスレッドは、起動が完了する。
なお、これらの処理順序は、単なる一例に過ぎず他の順序であってもよい。例えば、上記シーケンスチャートでは、S209〜S211の処理が行われた後に、S212の処理が行われているが、S212の処理と、S209〜S211の処理は並列に行われてもよい。また、例えば、S204及びS209の準備完了通知は、S200の前に行われていてもよい。また、例えば、S203の処理とS205以降の処理は前後してもよい。上記のシーケンスチャートにおける処理の順序は、本発明を限定するものではない。以下に登場する各シーケンスチャートについてもこの点は同様である。
<スレッドの停止時>
例えば、上記<スレッドの起動時>の処理の後、親プロセス50及び子プロセス51のスレッドが起動しているものとする。この状況において、親プロセス50のシステム管理スレッド50aは、所定の対象(例えば、親プロセス50の親プロセスの子プロセス管理スレッドに含まれる子プロセス管理手段)から停止要求通知を受信したとする。
このとき、システム管理スレッド50aに含まれるプロセス内スレッド管理手段50eは、管理情報50bのスレッド属性を参照する。スレッド属性は、任意に設定される。ここでは、上述のとおり、スレッド属性は、管理を行うスレッドに対して停止命令がなされたこと、及び、自分よりも起動の優先度の高いスレッドが停止したこととする。したがって、図5に示されるとおり、プロセス内スレッド管理手段50eは、まず、起動の優先度が一番高いスレッドA50cに対して停止要求通知を送信する(S300)。
スレッドA50cは、停止要求通知を受信すると、自身の停止を実行する。そして、スレッドA50cは、自身の停止が完了すると、システム管理スレッド50aに対して停止完了通知を返信する(S301)。
システム管理スレッド50aのプロセス内スレッド管理手段50eは、スレッドA50cから停止完了通知を受信すると、再度、管理情報50bのスレッド属性を参照する。そして、図5に示されるとおり、プロセス内スレッド管理手段50eは、スレッドA50cの次に起動の優先度の高い子プロセス管理スレッド50dに対して停止要求通知を送信する(S302)。
子プロセス管理スレッド50dは、プロセス内スレッド管理手段50eから停止要求通知を受信すると、自身の停止を開始する。子プロセス管理スレッド50dの子プロセス管理手段50fは、当該停止要求通知に応じて、子プロセス51のシステム管理スレッド51aに対して、停止要求通知を送信する(S303)。
システム管理スレッド51aのプロセス内スレッド管理手段51eは、子プロセス管理スレッド50dから停止要求通知を受信すると、管理情報51bのスレッド属性を参照する。そして、プロセス内スレッド管理手段51eは、図5に示されるとおり、当該スレッド属性に応じて、優先度の一番高い子プロセス管理スレッド51dに対して停止要求通知を送信する(S304)。
子プロセス管理スレッド51dは、プロセス内スレッド管理手段51eから停止要求通知を受信すると、自身の停止を開始する。子プロセス管理スレッド51dの子プロセス管
理手段50fは、当該停止要求通知に応じて、自身が起動及び停止を管理する不図示の子プロセスのシステム管理スレッドに対して、停止要求通知を送信する(S305)。
そして、不図示の子プロセスの停止が完了すると、子プロセス管理スレッド51dは、当該不図示の子プロセスのシステム管理スレッドから停止完了通知を受信する(S306)。
子プロセス管理スレッド51dは、自身が起動及び停止を管理する不図示の子プロセスの停止に応じて、自身の停止を完了する。そして、子プロセス管理スレッド51dは、自身の停止を完了した後、システム管理スレッド51aに対して停止完了通知を返信する(S307)。
システム管理スレッド51aのプロセス内スレッド管理手段51eは、子プロセス管理スレッド51dから停止完了通知を受信すると、再度、管理情報51bのスレッド属性を参照する。そして、図5に示されるとおり、プロセス内スレッド管理手段51eは、子プロセス管理スレッド51dの次に起動の優先度の高いスレッドB51cに対して停止要求通知を送信する(S308)。
スレッドB51cは、停止要求通知を受信すると、自身の停止を実行する。そして、スレッドB51cは、自身の停止が完了すると、システム管理スレッド51aに対して停止完了通知を返信する(S309)。
システム管理スレッド51aのプロセス内スレッド管理手段51eは、子プロセス管理スレッド51dから停止完了通知を受信すると、再度、管理情報51bのスレッド属性を参照する。そして、停止すべき対象がなくなった時点において、システム管理スレッド51aは、自身の停止を完了し、図5に示されるとおり、子プロセス管理スレッド50dに対して停止完了通知を返信する(S310)。
子プロセス管理スレッド51dは、システム管理スレッド51aからの停止完了通知に応じて、自身の停止を完了し、システム管理スレッド50aに対して停止完了通知を送信する(S311)。
システム管理スレッド50aのプロセス内スレッド管理手段50eは、子プロセス管理スレッド50dから停止完了通知を受信すると、再度、管理情報50bのスレッド属性を参照する。そして、停止すべき対象がなくなった時点において、システム管理スレッド50aは、自身の停止を完了する。
以上により、親プロセス50及び子プロセス51に存在する全てのスレッドは、停止が完了する。
§2−3 第1の実施形態の作用及び効果
以上によれば、第1の実施形態におけるスレッドの起動及び停止の管理は、プロセス内では、当該プロセス内に設けられたシステム管理スレッドのプロセス内スレッド管理手段によって行われる。また、プロセス内のスレッドの起動及び停止の管理を行うシステム管理スレッドの起動及び停止の管理は、親プロセスの子プロセス管理スレッドの子プロセス管理手段によって行われる。
これによって、第1の実施形態においては、プロセス内のスレッドの起動及び停止の管理は、従来のタスクによる制御方法におけるシンプルな方法でのシステム設計及び構築と同様の方法によって行うことができる。したがって、第1の実施形態は、シンプルなシス
テムの設計及び構築を可能とする。
また、第1の実施形態において、プロセス間通信は、子プロセス管理手段を含む子プロセス管理スレッドとシステム管理スレッドの間で行われる通信に限られる。したがって、第1の実施形態は、各スレッドの起動及び停止を管理する際に発生するプロセス間通信を極力抑えることができる。
また、システム管理スレッドのプロセス内スレッド管理手段によって行われるプロセス内のスレッドの起動及び管理方法は、当該システム管理スレッドを備えるプロセスで同一である。したがって、第1の実施形態は、当該システム管理スレッドを各プロセスに備えることで、各プロセス内のスレッドの管理手法を同一にすることができる。
また、システム管理スレッドのプロセス内スレッド管理手段によって行われるプロセス内のスレッドの起動及び停止の管理方法は、従来におけるタスクによる制御方法と同様の管理方法であり、従来の技術を移植することが容易である。
§3 第2の実施形態
次に、本実施形態の第2の実施形態について説明する。第2の実施形態は、本実施形態に係る情報処理装置の一例であるAVN一体機1において、周知のOSの一例であるWindows Automotive 5.5を用いた一実施形態である。また、第2の実施形態は、当該OS(Windows Automotive 5.5)が用いられたAVN一体機1に対して第1の実施形態を適用した一実施例でもある。
§3−1 プロセス構成
まず、図6及び図7を用いて、第2の実施形態におけるプロセス構成について説明する。なお、以下のプロセス構成、各種機能構成、各種手段、及び周知の機能は、例えば、メモリ117等に格納された各種プログラム及びデータが、制御部100の周辺回路であるRAM等に展開されて、制御部100のマイコンにより実行され、各構成(外部記憶媒体再生部101等)が制御されることによって実現される。この点、第1の実施形態と同様である。なお、図6〜図13において、各スレッドについての「スレッド」の標記を省略した。
<機能構成>
図6は、第2の実施形態においてAVN一体機1上で実現される機能構成及びプロセス構成の一例を示す。図6に示されるとおり、第2の実施形態におけるAVN一体機1は、当該機能構成として、スナップショット制御部2a、スナップショット保持部2b、ReadyGuardプロセス制御部3a、及びReadyGuardプロセス保持部3bを備える。なお、上述のとおり、スナップショット制御部2a及びReadyGuardプロセス制御部3aは、例えば、メモリ117等に格納された各種プログラム及びデータが、制御部100の周辺回路であるRAM等に展開されて、制御部100のマイコンにより実行され、各構成(外部記憶媒体再生部101等)が制御されることによって実現される。また、スナップショット保持部2b及びReadyGuardプロセス保持部3bは、例えば、メモリ117等が備える不揮発性メモリによって実現される。
スナップショット制御部2aは、スナップショットブートと呼ばれるWindows Automotive 5.5の機能を実現する。スナップショットブートとは、システム起動中の任意の時点のシステム状態(メモリ内容、OSの状態など)をスナップショットとして不揮発性のメモリに保存しておき、システムの起動時に当該保存したシステム状態を復元(ブート)することで起動時間を短縮する機能である。
スナップショット保持部2bは、上述のスナップショットを格納する。なお、後述するとおり、本実施形態では、ReadyGuardプロセス4は、AVN一体機1の起動(例えば、アクセサリ電源オン)に応じて、ReadyGuardプロセス制御部3aによりブートされる。したがって、本実施形態では、スナップショット保持部2bに格納されるスナップショットは、ReadyGuardプロセス4を除いた、MAINプロセス5、Xプロセス6、Yプロセス7、及び、これらのプロセスに含まれるスレッドが生成された時点のシステム状態であるとする。ただし、当該格納されるスナップショットは、任意の時点のシステム状態でよい。当該格納されるスナップショットは、本発明を限定するものではない。
なお、スナップショット制御部2aが、スナップショット保持部2bよりスナップショットを取得し、当該スナップショットを制御部100のRAM等に展開するタイミングは任意でよい。本実施形態では、ReadyGuardプロセス4及び当該プロセス内の各スレッドが起動した時点において、スナップショット制御部2aは、当該スナップショットを制御部100のRAM等に展開する。また、スナップショット制御部2aは、当該時点をシステム管理スレッド4aからの通知により認識する。
ReadyGuardプロセス制御部3aとReadyGuardプロセス保持部3bは、AVN一体機1の起動(例えば、アクセサリ電源オン)に応じたReadyGuardプロセス4の起動を実現する。ReadyGuardプロセス保持部3bはReadyGuardプロセス4を格納している。そして、ReadyGuardプロセス制御部3aは、AVN一体機1の起動に応じて、ReadyGuardプロセス保持部3bからReadyGuardプロセス4を取得し、当該ReadyGuardプロセス4を制御部100のRAM等に展開する。そして、ReadyGuardプロセス制御部3aは、ReadyGuardプロセス4を起動する。これは、ReadyGuardと呼ばれる周知の機能を実現するための動作である。
ここで、ReadyGuardと呼ばれる周知の機能について簡単に説明する。Windows Automotive 5.5には、ReadyGuardと呼ばれる機能がある。ReadyGuardとは、システム上で障害が発生した場合に、システム全体のリブートを行わず、あらかじめ定義した高信頼ソフトウェアの動作を継続させたまま、残りの部分(OSを含めた、その他のソフトウェア)を再起動する機構を提供する技術である。
ReadyGuardでは、この機構を実現するために最初にReadyGuardOSが起動され、その後、メインOSが起動される。ReadyGuardOSは、固定プロセス及び固定スレッドで構成された高信頼ソフトウェアが動作するための静的領域(スタティック領域)を構造体として確保する。そしてその後、その構造体の制御は、メインOSへ引き継がれる。このように、OSがその内部に高信頼ソフトウェアの動作を保証するOS(ReadyGuardOS)を備えることにより、ReadyGuardは、上記残りの部分(メインOSを含めた、その他のソフトウェア)を再起動する機構を実現する。
なお、本実施形態において、ReadyGuardOSに対応するプロセスがReadyGuardプロセス4であり、メインOSに対応するプロセスがMAINプロセス5である。
また、本実施形態において、ReadyGuardプロセス制御部3aは、AVN一体機1の停止(例えば、アクセサリ電源オフ)に基づいて、ReadyGuardプロセス4の停止を実行する。
<プロセス構成>
また、図6に示されるとおり、第2の実施形態におけるAVN一体機1は、当該プロセス構成として、ReadyGuardプロセス4、MAINプロセス5、Xプロセス6及びYプロセス7を備える。図7は、図6におけるプロセス構成の詳細を例示する。
図7に示されるとおり、ReadyGuardプロセス4は、プロセス内スレッド管理手段4eを備えたシステム管理スレッド4a、管理情報4b、PLATFORM制御スレッド4c、及び子プロセス管理手段4fを備えたMAINプロセス管理スレッド4dを備える。
また、図7に示されるとおり、MAINプロセス5は、プロセス内スレッド管理手段5fを備えたシステム管理スレッド5a、管理情報5b、子プロセス管理手段5gを備えたXプロセス管理スレッド5c、子プロセス管理手段5hを備えたYプロセス管理スレッド5d、及びA制御スレッド5eを備える。
また、図7に示されるとおり、Xプロセス6は、プロセス内スレッド管理手段6eを備えたシステム管理スレッド6a、管理情報6b、B制御スレッド6c、及びC制御スレッド6dを備える。
また、図7に示されるとおり、Yプロセス7は、プロセス内スレッド管理手段7dを備えたシステム管理スレッド7a、管理情報7b、及びD制御スレッド7cを備える。
各プロセスに含まれるシステム管理スレッド(4a、5a、6a、7a)は、第1の実施形態におけるシステム管理スレッドと同様の機能を含む。すなわち、各プロセス内スレッド管理手段(4e、5f、6e、7d)は、第1の実施形態におけるプロセス内スレッド管理手段と同様の機能を有する。
また、各プロセスに含まれる各プロセス管理スレッド(4d、5c、5d)は、第1の実施形態における子プロセス管理スレッドと同様の機能を含む。すなわち、各子プロセス管理手段(4f、5g、5h)は、第1の実施形態における子プロセス管理手段と同様の機能を有する。
また、各管理情報(4b、5b、6b、7b)は、第1の実施形態における管理情報と同様のデータを含む。図8(A)は、管理情報4bの一例としてのレコード例である。図8(B)は、管理情報5bの一例としてのレコード例である。図8(C)は、管理情報6bの一例としてのレコード例である。図8(D)は、管理情報7bの一例としてのレコード例である。
また、その他の各スレッド(4c、5e、6c、6d、7c)は、任意のスレッドである。
なお、例えば、スレッドが起動と停止を繰り返すような状態(チャタリング)で、当該スレッドの起動及び停止を管理しようとすると、管理を行うスレッドは、起動中に停止を又は停止中に起動を行わなければならない。この時、スレッドの状態(例えば、起動がどの段階にあるか)に応じた管理が行われなければならないため、当該管理の処理が複雑となってしまう。この管理の処理が複雑となってしまうことを防ぐため、当該第2の実施形態では、MAINプロセスのシステム管理スレッド4aは、管理対象のスレッドを管理する場合、当該スレッドに対する起動命令または停止命令が完了した後に、次の管理(起動命令または停止命令)を行うことにする(ハンドシェイク)。
また、当該第2の実施形態では、AVN一体機1上で実行される全てのプロセスは、ツリー構造になっているものとする。なお、AVN一体機1上で実行されるプロセスまたはスレッドは、動的に生成されてもよい。当該プロセスの生成やスレッドの生成は周知の方法で行われる。例えば、子プロセスが生成された場合、当該周知の方法によって、子プロセス内にシステム管理スレッドが生成され、親プロセス内に当該子プロセスの起動及び停止を管理する子プロセス管理スレッドが生成されてもよい。また、例えば、スレッドが生成された場合、当該周知の方法によって、管理情報に当該スレッドの管理情報が登録されてもよい。これにより、全てのプロセスはツリー構造となり、図6及び図7で示されるプロセス及びスレッドの構成は維持される。
なお、当該第2の実施形態では、AVN一体機1は、上記スナップショット保持部2bに格納するためのスナップショット生成処理を実行するものとする。生成されるスナップショットは、上述のとおり、MAINプロセス5、Xプロセス6、Yプロセス7、及び、これらのプロセスに含まれるスレッドが生成された時点におけるシステム状態である。
当該スナップショットの生成処理は、例えば、AVN一体機1上で実行されるOSの周知の機能、各プロセスのシステム管理スレッド、及びスナップショット制御部2aによって実現される。例えば、OSの周知の機能によりスナップショットの取得対象のプロセス及びシステム管理スレッドが生成される。そして、生成されたシステム管理スレッドは、プロセス内システム管理手段により、管理情報に基づいて各スレッド(管理対象のスレッド)を生成する。全てのプロセス及びスレッドが生成された時点において、スナップショット制御部2aは、各プロセス及びスレッドの状態(具体的には、制御部100の周辺回路であるRAM等に展開されているメモリ状態)をスナップショット保持部2bに格納する。なお、プロセス内システム管理手段は、任意の順番により各スレッドを生成する。
この全てのプロセス及びスレッドが生成されたことをスナップショット制御部2aが認識するために、当該第2の実施形態では、MAINプロセスのシステム管理スレッドが他のプロセス及びスレッドが生成されたことを管理するものとする。この時、例えば、MAINプロセスを除く各プロセスのシステム管理スレッドは、MAINプロセスのシステム管理スレッドに対して、自己のプロセス及び各スレッドが生成されたことを通知する。そして、当該通知に応じて、MAINプロセスのシステム管理スレッドは、スナップショット制御部2aに対して、スナップショット格納の準備が整ったことを通知する。これにより、スナップショット制御部2aは、全てのプロセス及びスレッドが生成されたことを認識する。
§3−2 動作例
次に、第2の実施形態における各スレッドの起動及び停止についての管理方法について、以下の動作例を用いて説明する。図9は、第2の実施形態におけるスナップショットの取得処理手順の一例を示したシーケンスチャートである。図10は、第2の実施形態における各スレッドの起動処理手順の一例を示したシーケンスチャートである。図11は、第2の実施形態におけるスレッドの停止処理手順の一例を示したシーケンスチャートである。図12は、第2の実施形態において、スナップショットが制御部100の周辺回路であるRAM等に展開(ロード)される前に、AVN一体機1を停止し、その後AVN一体機1を起動させた時の処理手順の一例を示したシーケンスチャートである。図13は、第2の実施形態において、あるスレッドを停止している最中に、AVN一体機1を起動した時の処理手順の一例を示したシーケンスチャートである。なお、これらのシーケンスチャートでは、起動要求通知、起動完了通知、停止要求通知、停止完了通知はそれぞれ、起動要求、起動完了、停止要求、停止完了と記載を省略した。
なお、各システム管理スレッドに含まれるプロセス内システム管理手段が用いる管理情
報は、図8で示される管理情報を前提とする。また、第1の実施形態と同様である各スレッドの起動手順及び停止手順については、説明を簡略化する。
<スナップショット取得時>
最初に、図9に示されるスナップショット取得時の処理手順例について説明する。
なお、上述のとおり、OSの周知の機能により、MAINプロセス5、Xプロセス6、Yプロセス7、及び、各プロセスのシステム管理スレッド(5a、6a、7a)は生成され、制御部100の周辺回路であるRAM等に展開されている。
図9に示されるとおり、各プロセスのシステム管理スレッドは、例えば、管理情報(5b、6b、7b)に基づいて、自己のプロセス内のスレッドを生成する(S401、S402、S403、S405、S406、S408)。なお、当該動作は、非同期でよい。
その後、Xプロセス6及びYプロセス7のシステム管理スレッド(6a、7a)は、MAINプロセス5のシステム管理スレッド5aに対して、自己のプロセス及び各スレッドが生成されたことを通知する(S407、S409)。
MAINプロセス5のシステム管理スレッド5aは、自己の各スレッドの生成を完了し、Xプロセス6及びYプロセス7のシステム管理スレッド(6a、7a)から当該通知を受信すると、スナップショット制御部2aに対して、ナップショット格納の準備が整ったことを通知する。スナップショット制御部2aは、MAINプロセス5のシステム管理スレッド5aの当該通知により、全てのプロセス及びスレッドが生成されたことを認識し、この時点におけるシステム状態(制御部100の周辺回路であるRAM等のメモリ状態)をスナップショットとしてスナップショット保持部2bに格納する。
以上により、第2の実施形態におけるスナップショットが取得される。
<スレッドの起動時>
次に、図10に示される各スレッドの起動時の処理手順例について説明する。
まず、AVN一体機1の起動により、ReadyGuard制御部3aは、ReadyGuard保持部3bに格納されているReadyGuardプロセス4及び当該プロセス内のスレッドを制御部100の周辺回路であるRAM等に展開する。そして、ReadyGuard制御部3aはReadyGuardプロセス4のシステム管理スレッド4aを起動する。
当該起動後、図10に示されるとおり、ReadyGuardプロセス4のシステム管理スレッド4aに含まれるプロセス内システム管理手段4eは、管理情報4bのスレッド優先度に基づいて、各スレッド(4c、4d)の起動を実行する(S500〜S503)。例えば、図10に示されるとおり、システム管理スレッド4aに含まれるプロセス内システム管理手段4eは、管理情報4bに基づいて、各スレッド(4c、4d)に対し起動要求通知を送信する(S500、S502)。各スレッド(4c、4d)は、起動完了後、システム管理スレッド4aに対して起動完了通知を返信する(S501、S503)。以下、起動要求通知と起動完了通知の応答については第1の実施形態と同様であるため、記載を省略する。
ReadyGuardプロセス4のシステム管理スレッド4aは、各スレッド(4c、4d)を起動後、全てのスレッドの起動を完了したことをスナップショット制御部2aに通知する。スナップショット制御部2aは、当該通知により、スナップショット保持部2
bに格納されているスナップショット(システム状態)を制御部100の周辺回路であるRAM等に展開する(S504)。なお、第2の実施形態における当該システム状態は、上述のとおり、MAINプロセス5、Xプロセス6、Yプロセス7、及び、各プロセス内の各スレッドが生成された状態である。
スナップショットのロードが完了すると、MAINプロセス5のシステム管理スレッド5aは、MAINプロセス管理スレッド4dに対して、準備完了通知を送信する(S505)。
準備完了通知を受信後、ReadyGuardプロセス4のMAINプロセス管理スレッド4dに含まれる子プロセス管理手段4fは、MAINプロセス5のシステム管理スレッド5aの起動を実行する(S506、S507)。
起動したシステム管理スレッド5aに含まれるプロセス内システム管理手段5fは、管理情報5bのスレッド優先度に基づいて、各スレッド(5c、5d、5e)の起動を実行する(S508、S509、S517、S518、S524、S525)。
プロセス内システム管理手段5fにより起動されたXプロセス管理スレッド5cに含まれる子プロセス管理手段5gは、Xプロセス6のシステム管理スレッド6aからの準備完了通知(S510)に基づいて、Xプロセス6のシステム管理スレッド6aの起動を実行する(S511、S512)。
子プロセス管理手段5gにより起動されたXプロセス6のシステム管理スレッド6aは、管理情報6bのスレッド優先度に基づいて、各スレッド(6c、6d)の起動を実行する(S513〜S516)。
また、プロセス内システム管理手段5fにより起動されたYプロセス管理スレッド5dに含まれる子プロセス管理手段5hは、Yプロセス7のシステム管理スレッド7aからの準備完了通知(S519)に基づいて、Yプロセス7のシステム管理スレッド7aの起動を実行する(S520、S521)。
子プロセス管理手段5hにより起動されたYプロセス7のシステム管理スレッド7aは、管理情報7bのスレッド優先度に基づいて、D制御スレッド7cの起動を実行する(S522、S523)。
以上により、存在する全てのプロセス及びスレッドの起動が完了する。
<スレッドの停止時>
次に、図11に示される各スレッドの停止時の処理手順例について説明する。
第1の実施形態と同様、上記<スレッドの起動時>の処理の後、各プロセス及び各スレッドが起動しているものとする。
例えば、ユーザのAVN一体機1に対するアクセサリ電源オフの操作により、ReadyGuardプロセス制御部3aは、ReadyGuardプロセス4の停止を開始する。
このReadyGuardプロセス制御部3aの動作に応じて、ReadyGuardプロセス4のシステム管理スレッド4aに含まれるプロセス内スレッド管理手段4eは、管理情報4bのスレッド属性に基づいて、各スレッド(4c、4d)の停止を開始する。
まず、プロセス内スレッド管理手段4eは、管理情報4bのスレッド属性に基づいて、PLATFROM制御スレッド4cの停止を実行する(S601、S602)。
次に、プロセス内スレッド管理手段4eは、管理情報4bのスレッド属性に基づいて、MAINプロセス管理スレッド4dの停止を実行する(S603〜S622)。
このMAINプロセス管理スレッド4dの停止は、プロセス内スレッド管理手段4eからの停止要求通知により開始される(S603)。そして、当該停止要求通知により、MAINプロセス管理スレッド4dの子プロセス管理手段4fは、自身が管理しているMAINプロセス5のシステム管理スレッド5aに停止要求通知を送信し、当該プロセス及びスレッドの停止を開始する(S604)。
子プロセス管理手段4fから停止要求通知を受信すると、システム管理スレッド5aのプロセス内スレッド管理手段5fは、管理情報5bのスレッド属性に基づいて、各スレッド(5c、5d、5e)の停止を実行する(S605〜S620)。
まず、プロセス内スレッド管理手段5fは、管理情報5bのスレッド属性に基づいて、Xプロセス管理スレッド5cの停止を実行する(S605〜S612)。
プロセス内スレッド管理手段5fは、Xプロセス管理スレッド5cに対して停止要求通知を送信する(S605)。当該停止要求通知を受信すると、Xプロセス管理スレッド5cの子プロセス管理手段5gは、Xプロセス6のシステム管理スレッド6aに対して停止要求通知を送信する(S606)。
Xプロセス6のシステム管理スレッド6a(プロセス内スレッド管理手段6e)は、子プロセス管理手段5gからの停止要求通知により、管理情報6bに基づいて、自己が管理する各スレッド(6c、6d)の停止を実行する(S607〜S610)。各スレッド(6c、6d)の停止、システム管理スレッド6aの停止、及びXプロセス6の停止が完了すると、システム管理スレッド6aは、Xプロセス管理スレッド5cに対して停止完了通知を返信する(S611)。
Xプロセス管理スレッド5cは、システム管理スレッド6aより停止完了通知を受信すると、自身を停止し、システム管理スレッド5aに対して停止完了通知を返信する(S612)。
以上により、プロセス内スレッド管理手段5fは、管理情報5bのスレッド属性に基づいた、Xプロセス管理スレッド5cの停止を完了する(S605〜S612)。
次に、プロセス内スレッド管理手段5fは、管理情報5bのスレッド属性に基づいて、Yプロセス管理スレッド5dの停止を実行する(S613〜S618)。
プロセス内スレッド管理手段5fは、Yプロセス管理スレッド5dに対して停止要求通知を送信する(S613)。当該停止要求通知を受信すると、Yプロセス管理スレッド5dの子プロセス管理手段5hは、Yプロセス7のシステム管理スレッド7aに対して停止要求通知を送信する(S614)。
Yプロセス7のシステム管理スレッド7a(プロセス内スレッド管理手段7d)は、子プロセス管理手段5hからの停止要求通知により、管理情報7bに基づいて、自己が管理するD制御スレッド7cの停止を実行する(S615、S616)。D制御スレッド7cの
停止、システム管理スレッド7aの停止、及びYプロセス7の停止が完了すると、システム管理スレッド7aは、Yプロセス管理スレッド5dに対して停止完了通知を返信する(S617)。
Yプロセス管理スレッド5dは、システム管理スレッド7aより停止完了通知を受信すると、自身を停止し、システム管理スレッド5aに対して停止完了通知を返信する(S618)。
以上により、プロセス内スレッド管理手段5fは、管理情報5bのスレッド属性に基づいた、Yプロセス管理スレッド5dの停止を完了する(S613〜S618)。
最後に、プロセス内スレッド管理手段5fは、管理情報5bのスレッド属性に基づいて、A制御スレッド5eの停止を実行する(S619〜S620)。
各スレッドの停止(5c、5d、5e)を完了すると、システム管理スレッド5aは、自身及びMAINプロセス5を停止し、MAINプロセス管理スレッド4dに対して停止完了通知を返信する(S621)。
MAINプロセス管理スレッド4dは、システム管理スレッド5aより停止完了通知を受信すると、自身を停止し、システム管理スレッド4aに対して停止完了通知を返信する(S622)。
以上により、プロセス内スレッド管理手段4eは、管理情報4bのスレッド属性に基づいた、MAINプロセス管理スレッド4dの停止を完了する(S603〜S622)。この後、システム管理スレッド4aは自身及びReadyGuardプロセス4を停止する。
これより、存在する全てのプロセス及びスレッドの停止が完了する。
<起動後、停止し、更に起動させた時>
次に、図12に示される、スナップショットがロードされる前に、AVN一体機1を停止し、その後AVN一体機1を起動させた時の処理手順例について説明する。
まず、上記<スレッドの起動時>と同様、ユーザによるAVN一体機1の起動(例えば、アクセサリ電源のオン)により、ReadyGuard制御部3aは、ReadyGuard保持部3bに格納されているReadyGuardプロセス4及び当該プロセス内のスレッドを制御部100の周辺回路であるRAM等に展開する。そして、ReadyGuard制御部3aはReadyGuardプロセス4のシステム管理スレッド4aを起動する。
当該起動後、図12に示されるとおり、ReadyGuardプロセス4のシステム管理スレッド4aに含まれるプロセス内システム管理手段4eは、管理情報4bのスレッド優先度に基づいて、各スレッド(4c、4d)の起動を実行する(S700〜S703)。
ReadyGuardプロセス4のシステム管理スレッド4aは、各スレッド(4c、4d)を起動後、全てのスレッドの起動を完了したことをスナップショット制御部2aに通知する。スナップショット制御部2aは、当該通知により、スナップショット保持部2bに格納されているスナップショット(システム状態)を制御部100の周辺回路であるRAM等に展開する(S704)。なお、第2の実施形態における当該システム状態は、
上述のとおり、MAINプロセス5、Xプロセス6、Yプロセス7、及び、各プロセス内の各スレッドが生成された状態である。
この時点において、ユーザがAVN一体機1のアクセサリ電源をオフ(ACC−OFF)にしたとする(S705)。
当該アクセサリ電源のオフに応じて、ReadyGuard制御部3aは、ReadyGuardプロセス4の停止を開始する。このReadyGuard制御部3aの動作に応じて、ReadyGuardプロセス4のシステム管理スレッド4aに含まれるプロセス内スレッド管理手段4eは、管理情報4bのスレッド属性に基づいて、各スレッド(4c、4d)の停止を開始する。
まず、プロセス内スレッド管理手段4eは、管理情報4bのスレッド属性に基づいて、PLATFROM制御スレッド4cの停止を実行する(S706、S707)。
次に、プロセス内スレッド管理手段4eは、管理情報4bのスレッド属性に基づいて、MAINプロセス管理スレッド4dの停止を実行する(S708〜S710)。
プロセス内スレッド管理手段4eは、MAINプロセス管理スレッド4dに対して停止要求通知を送信する(S708)。
プロセス内スレッド管理手段4eから停止要求通知を受信すると、MAINプロセス管理スレッド4dの子プロセス管理手段4fは、子プロセスであるMAINプロセス5の停止を実行する。ただし、スナップショットが制御部100の周辺回路であるRAM等に展開されるまで、停止の対象が当該RAM等に存在しないこととなる。この場合、子プロセス管理手段4fは、システム管理スレッド5aからの準備完了通知を待って(S709)、停止の対象であるMAINプロセス5の停止を実行する。なお、この場合、MAINプロセス5は、制御部100の周辺回路であるRAM等に展開されたのみであり、起動していないため、子プロセス管理手段4fは何も動作しない。
その後、MAINプロセス管理スレッド4dは、システム管理スレッド4aに対して停止完了通知を返信する(S710)。
この時点において、ユーザがAVN一体機1のアクセサリ電源を再度オン(ACC−ON)にしたとする(S711)。
制御部100の周辺回路であるRAM等には、既にReadyGuardプロセス4及び当該プロセス内のスレッドが停止状態で展開されているため、ReadyGuard制御部3aは、ReadyGuardプロセス4のシステム管理スレッド4aを起動する。
当該起動後、ReadyGuardプロセス4のシステム管理スレッド4aに含まれるプロセス内システム管理手段4eは、管理情報4bのスレッド優先度に基づいて、各スレッド(4c、4d)の起動を実行する(S712〜S715)。上述と同様である。
また、この時点において既にスナップショットはロードされており、準備完了通知は既に受信しているため(S709)、ReadyGuardプロセス4のMAINプロセス管理スレッド4dに含まれる子プロセス管理手段4fは、MAINプロセス5のシステム管理スレッド5aの起動を実行する(S716、S717)。
これ以降の各スレッドの起動については、図10におけるS508以降の処理と同様で
ある。これらの処理により、各プロセス及び各スレッドの起動が完了する。
<スレッド停止中に起動させた時>
最後に、図13に示される、あるスレッド(システム管理スレッド6a)を停止している最中に、AVN一体機1を起動させた時の処理手順例について説明する。
例えば、ユーザのAVN一体機1に対するアクセサリ電源オフの操作により、ReadyGuardプロセス制御部3aは、ReadyGuardプロセス4の停止を開始する。
このReadyGuardプロセス制御部3aの動作に応じて、ReadyGuardプロセス4のシステム管理スレッド4aに含まれるプロセス内スレッド管理手段4eは、管理情報4bのスレッド属性に基づいて、各スレッド(4c、4d)の停止を開始する。
ここで、プロセス内スレッド管理手段4eがPLATFROM制御スレッド4cの停止を実行してから、プロセス内スレッド管理手段6eがB制御スレッド6cの停止を完了するまでの処理(S801〜S808)までの処理については、図11におけるS601〜S608までの処理と同様である。
この時点において、ユーザがAVN一体機1のアクセサリ電源をオン(ACC−ON)にしたとする(S809)。
制御部100の周辺回路であるRAM等には、既にReadyGuardプロセス4及び当該プロセス内のスレッドが停止状態で展開されているため、ReadyGuard制御部3aは、ReadyGuardプロセス4のシステム管理スレッド4aを起動する。
当該起動後、ReadyGuardプロセス4のシステム管理スレッド4aに含まれるプロセス内システム管理手段4eは、管理情報4bのスレッド優先度に基づいて、各スレッド(4c、4d)の起動を実行する(S810〜S813)。
なお、この時点において各プロセス(MAINプロセス5、Xプロセス6、Yプロセス7)の停止は完了していない。このため、当該各プロセス及び当該各プロセス内の各スレッドは、既に制御部100の周辺回路であるRAM等に展開された状態となっている。したがって、ReadyGuardプロセス4のMAINプロセス管理スレッド4dに含まれる子プロセス管理手段4fは、MAINプロセス5のシステム管理スレッド5aの起動を実行する(S814、S815)。
MAINプロセス5のシステム管理スレッド5aは起動すると、管理情報5bに基づき、プロセス内スレッド管理手段5fによるXプロセス管理スレッド5cの起動を実行しようとする。この時、Xプロセス管理スレッド5cに対する先行する停止命令が完了していないため、プロセス内スレッド管理手段5fは、上記ハンドシェイクを行うため、当該先行する停止命令の完了を待つ。
この時、Xプロセス6内においては、引き続き停止命令が実行されている(S816、S817)。システム管理スレッド6aのプロセス内スレッド管理手段6eが各スレッド(6c、6d)の停止を完了すると、システム管理スレッド6aは、Xプロセス管理スレッド5cに対して、停止完了通知を返信する(S818)。Xプロセス管理スレッド5cは、システム管理スレッド6aより停止完了通知を受信すると、システム管理スレッド5aに対して、停止完了通知を返信する(S819)。これにより、上記先行する停止命令が完了する。
システム管理スレッド5aのプロセス内スレッド管理手段5fは、上記先行する停止命令が完了すると、管理情報5bのスレッド優先度に基づいて、Xプロセス管理スレッド5cの起動を実行する(S820、S821)。
なお、Xプロセス管理スレッド5cの起動関連の処理(S820〜S827)は、図10におけるS508〜S516からS510の処理を省略した処理と同様である。上述のとおり、各プロセス(MAINプロセス5、Xプロセス6、Yプロセス7)及び各プロセス内の各スレッドは既に制御部100の周辺回路であるRAM等に展開された状態となっているため、S510の処理(システム管理スレッド6aからXプロセス管理スレッド5cへの準備完了通知)は省略される。
以上により、存在する全てのプロセス及びスレッドの起動が完了する。
§3−3 第2の実施形態の作用及び効果
以上によれば、第2の実施形態は、少なくとも上記第1の実施形態と同様の作用及び効果を得ることができる。
すなわち、第2の実施形態におけるスレッドの起動及び停止の管理は、プロセス内においては、当該プロセス内に設けられたシステム管理スレッドのプロセス内スレッド管理手段(4e、5f、6e、7d)によって行われる。また、プロセス内のスレッドの起動及び停止の管理を行うシステム管理スレッドの起動及び停止の管理は、親プロセスの子プロセス管理手段(4f、5g、5h)によって行われる。
これによって、第2の実施形態においては、プロセス内のスレッドの起動及び停止の管理は、従来のタスクによる制御方法におけるシンプルな方法でのシステム設計及び構築と同様の方法によって行うことができる。したがって、第2の実施形態は、シンプルなシステムの設計及び構築を可能とする。
また、第2の実施形態において、プロセス間通信は、子プロセス管理手段を含む子プロセス管理スレッド(4d、5c、5d)とシステム管理スレッド(5a、6a、7a)の間で行われる通信に限られる。したがって、第2の実施形態は、各スレッドの起動及び停止を管理する際に発生するプロセス間通信を極力抑えることができる。
また、システム管理スレッドのプロセス内スレッド管理手段(4e、5f、6e、7d)によって行われるプロセス内のスレッドの起動及び停止の管理方法は、当該システム管理スレッドを備えるプロセスで同一である。したがって、第1の実施形態は、当該システム管理スレッドを各プロセスに備えることで、各プロセス内のスレッドの管理手法を同一にすることができる。
また、第2の実施形態は、第1の実施形態とは異なり、装置(AVN一体機1)の起動及び停止に基づいて、上記プロセス及びスレッドの起動及び停止を実行する。これによって、第2の実施形態は、装置の動作に応じたプロセス及びスレッドの管理を行うことができる。
また、第2の実施形態は、第1の実施形態とは異なり、装置内で実行される全てのプロセスはツリー構造を形成しているため、上記管理の対象となる。これによって、装置内で実行される全てのプロセスに対して、上述までの効果を得ることができる。
§4 補足
以上、本発明の実施形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈される。また、当業者は、上記本実施形態の記載から、特許請求の範囲の記載および技術常識に基づいて等価な範囲を実施することができる。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられる。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解される意味と同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
なお、以上までの説明において、本発明に係る情報処理装置の一実施形態について説明したが、本発明に係る情報処理方法の一実施形態についても同様に説明することができる。つまり、上記情報処理装置の各処理を各ステップとする手順が本発明に係る情報処理方法の一実施形態である。