以下、図面を参照しながら実施形態に係るコントローラについて説明する。本実施形態にかかるコントローラは、コントローラノードとして示される。コントローラノードは、通信ネットワークを介して接続された他のコントローラノードとの間でデータを送受信することで、共有メモリを備えることとなる。なお、以下、複数の実施形態を説明するが、先に説明した実施形態等の構成要素と略同一の機能の構成要素には同一の符号を付けて、重複した説明を省略する。
(第1の実施形態)
図1は、第1の実施形態による通信システム1において各コントローラが備える仮想共有メモリを説明した図である。
図1に示すように、実施形態による通信システム1は、複数のコントローラノード100(コントローラノード100の各々は第1のコントローラノード100_1〜第Nのコントローラノード100_Nと称する)と、PC150と、を備える。そして、複数のコントローラノード100(第1のコントローラノード100_1〜第Nのコントローラノード100_N)と、PC150と、は、通信ネットワーク180を介して接続されている。
複数のコントローラノード100(第1のコントローラノード100_1〜第Nのコントローラノード100_N)は、通信ネットワーク180を介して、他のコントローラノード100やPC150と通信を行う。複数のコントローラノード100(第1のコントローラノード100_1〜第Nのコントローラノード100_N)は、通信システム1において、一意となるノード番号が設定されている。
また、複数のコントローラノード100(第1のコントローラノード100_1〜第Nのコントローラノード100_N)は、通信システム1の通信ネットワーク180への参入/離脱を制御するための(図示しない)ネットワーク制御機能や、ネットワーク内のノード間で送信の順番を制御する(図示しない)送信制御機能と、を備えている。
PC150は、通信I/F151と、アプリケーション制御部152と、共有メモリ設定部153と、を備える。さらに、PC150は、複数のコントローラノード100に対してアプリケーションのダウンロード制御を行うと共に、複数のコントローラノード100(第1のコントローラノード100_1〜第Nのコントローラノード100_N)に対して、共有メモリを生成するための設定を行う。
通信I/F151は、通信ネットワーク180を介して、複数のコントローラノード100(第1のコントローラノード100_1〜第Nのコントローラノード100_N)との間で情報を送受信するためのインターフェースとする。
アプリケーション制御部152は、複数のコントローラノード100(第1のコントローラノード100_1〜第Nのコントローラノード100_N)にダウンロードするアプリケーションに関する制御を行う。
例えば、アプリケーション制御部152は、複数のコントローラノード100にダウンロードさせるアプリケーションが読み込み又は書き込みを行う、仮想共有メモリのブロックを設定する。これにより、仮想共有メモリにおいてブロック単位で書き込まれるデータを定めることができる。また、アプリケーション制御部152は、通信I/F151を介して、当該アプリケーションを、複数のコントローラノード100にダウンロードする制御も行う。
本実施形態は、データの読み込み、書き込み、及び伝送制御を、仮想共有メモリのブロック単位で行う例について説明するが、仮想共有メモリのブロック単位に制限するものではなく、所定領域単位であれば良い。
共有メモリ設定部153は、アプリケーション制御部152により設定されたアプリケーションが読み込み又は書き込みを行う共有メモリに応じて、各コントローラノード100の仮想共有メモリに関する設定を行う。具体的には、共有メモリ設定部153は、仮想共有メモリの生成に必要な情報(例えば仮想共有メモリ番号、ブロックサイズ、ブロック個数)を設定し、仮想共有メモリ定義パラメータとして生成する。さらに、共有メモリ設定部153は、仮想共有メモリのブロック毎に、伝送周期や、当該ブロックの情報を送信するコントローラノード100を設定し、周期送信設定パラメータを生成する。なお、仮想共有メモリ定義パラメータ、及び周期送信設定パラメータは後述する。
そして、共有メモリ設定部153は、生成した仮想共有メモリ定義パラメータ及び周期送信設定パラメータを、通信I/F151を介して、複数のコントローラノード100(第1のコントローラノード100_1〜第Nのコントローラノード100_N)の各々に送信する。
そして、複数のコントローラノード100(第1のコントローラノード100_1〜第Nのコントローラノード100_N)は、通信I/F101を介して、PC150から、仮想共有メモリ定義パラメータ及び周期送信設定パラメータを受信する。
そして、複数のコントローラノード100(第1のコントローラノード100_1〜第Nのコントローラノード100_N)の各々は、仮想共有メモリ定義パラメータに従って、仮想共有メモリを設定する。
図1に示される例では、第1の仮想共有メモリ、第2の仮想共有メモリ、…、第Xの仮想共有メモリが、仮想共有メモリ定義パラメータに従って設定されたものとする。そして、複数のコントローラノード100(第1のコントローラノード100_1〜第Nのコントローラノード100_N)の各々は、第1の仮想共有メモリ、第2の仮想共有メモリ、…、第Xの仮想共有メモリのブロック毎に、当該ブロックに格納されたデータを、周期送信設定パラメータに従って周期伝送する。これにより、各コントローラノード100の仮想共有メモリに格納されたデータの等値化を実現できる。
図1に示される例では、第1の仮想共有メモリのブロックk1、第2の仮想共有メモリのブロックk2、及び第3の仮想共有メモリのブロックk3に格納されたデータが、周期伝送(伝送制御)により等値化されたことを示している。
ところで、近年においては、通信システムと接続するコントローラノードの数が増加する傾向にあるため、共有メモリも大容量化が要求される。しかしながら、要求に基づいてRAM等の揮発性メモリ(実メモリ)を大容量化するのは難しい。そこで、本実施形態においては、RAM等の揮発性メモリ(実メモリ)と、HDD等の不揮発性メモリと、を組み合わせた仮想メモリを用いて共有メモリの大容量化を図ることとした。
図2は、コントローラノード100のハードウェア構成を例示した図である。図2に示されるように、コントローラノード100は、通信I/F101と、I/Oインターフェース201と、RAM(Random Access Memory)202と、HDD(Hard Disk Drive)203と、プロセッサ204と、ROM(Read Only Memory)205と、を備えている。
通信I/F101は、通信ネットワーク180と接続するためのインターフェースとする。
I/Oインターフェース201は、コントローラノード100が制御/監視対象となる制御・監視機器250と接続するためのインターフェースとする。当該制御・監視機器250としては、例えばプラントに設けられた機器等が考えられる。そして、本実施形態のコントローラノード100は、当該制御・監視機器250との間で信号の送受信を行う。
RAM202は、HDD203より高速に読み書き可能な揮発性メモリであって、コントローラノード100が、作業領域として用いるほかに、仮想共有メモリの一部としても用いられる。
HDD203は、情報を読み書き可能な不揮発性の記憶部であって、アプリケーション等が格納される他に、仮想共有メモリの一部としても用いられる。
プロセッサ204は、コントローラノード100全体を制御する制御部として機能する。プロセッサ204は、ROM205からプログラムを読み出して実行した結果をRAM202上に展開することで、各構成が実現される。
図3は、コントローラノード100のブロック構成を例示した図である。図3に示されるように、HDD203には、パラメータ記憶領域(記憶部)311が設けられている。本実施形態は、パラメータ記憶領域311をHDD203に備える例について説明するが、パラメータ記憶領域(記憶部)311をHDD203とは、別の構成として設けても良い。
パラメータ記憶領域311は、仮想共有メモリ定義パラメータ(仮想共有メモリ定義情報)と、周期設定パラメータと、周期送信設定パラメータ(送信設定情報)と、を記憶する。
図4は、仮想共有メモリ定義パラメータを例示した図である。仮想共有メモリ定義パラメータは、PC150から受信したパラメータであって、複数のコントローラノード100で共通したパラメータとする。図4に示されるように、仮想共有メモリ定義パラメータは、仮想共有メモリ番号と、ブロックサイズと、ブロック個数と、を対応付けて記憶している。仮想共有メモリ番号は、仮想共有メモリを識別するための情報とする。ブロックサイズは、仮想共有メモリで生成される1ブロック当たりのサイズを示している。ブロック個数は、仮想共有メモリに設けられるブロックの個数を示している。
本実施形態においては、仮想共有メモリ番号を複数設定することで、複数の仮想メモリ空間を定義することができる。
図5は、周期設定パラメータを例示した図である。図5に示されるように、周期設定パラメータは、送信周期番号と、周期と、を対応付けて記憶している。送信周期番号は、周期送信設定パラメータに設定される送信周期を示している。周期は、送信周期番号に対応する実時間における周期を示している。周期設定パラメータは、予めコントローラノード100に記憶されていても良いし、PC150から送信されても良い。
図6は、周期送信設定パラメータを例示した図である。周期送信設定パラメータは、PC150から受信したパラメータであって、複数のコントローラノード100で共通したパラメータとする。図6に示されるように、周期送信設定パラメータは、仮想共有メモリ番号と、ブロック番号と、送信周期番号と、送信ノード番号と、対応付けて記憶している。図6に示される例では、仮想共有メモリ番号、及びブロック番号で識別されるブロック毎に、送信周期番号と、送信ノード番号と、が対応付けられている。送信周期番号には、周期設定パラメータの“送信周期番号”が示されている。周期設定パラメータを参照することで、実時間による送信周期を取得できる。送信ノード番号は、当該ブロックを送信するコントローラノード100を示している。換言すれば、送信ノード番号で示されたコントローラノード100が、当該ブロックに対して書き込みが許可されており、当該コントローラノード100が当該ブロックに書き込んだデータを送信することを示している。
図3に戻り、ROM205に格納されたプログラムをプロセッサ204が実行することで、ソフトウェア構成300を実現する。本実施形態においては、ソフトウェア構成300として、制御部301と、アプリケーション305と、を備えている。
アプリケーション305は、PC150からダウンロードされたアプリケーションであって、I/Oインターフェース201を介して、制御・監視機器250の制御又は監視を行うアプリケーションとする。また、アプリケーション305は、PC150により行われた設定に従って、仮想共有メモリに対してデータの読み込み及び書き込みを行う。
制御部301は、生成部304と、設定部302と、伝送制御部303と、を備え、コントローラノード100全体の制御を行う。
生成部304は、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを、HDD203のパラメータ記憶領域311に生成する。本実施形態の生成部304は、PC150から受信した、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを、HDD203のパラメータ記憶領域311に記憶させることで、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを生成する。本実施形態は、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを生成するために、PC150から受信する例について説明するが、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータの生成手法を制限するものではない。また、本実施形態は、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを生成する例について説明するが、仮想共有メモリ定義パラメータ、周期設定パラメータ、及び周期設定送信パラメータを全て生成する手法に制限するものではない。例えば、仮想共有メモリ定義パラメータ、及び周期設定送信パラメータを生成し、周期設定パラメータを予め記憶していても良い。
設定部302は、仮想共有メモリ定義パラメータに基づいて、共有するメモリ空間として、HDD203及びRAM202を用いた仮想メモリ空間を設定する。本実施形態の設定部302は、仮想共有メモリ定義パラメータに仮想共有メモリ番号が複数設定されている場合に、仮想共有メモリを複数設定する。
例えば、設定部302は、仮想共有メモリ定義パラメータに登録されている仮想共有メモリ番号毎に、ブロックサイズ×ブロック数の領域を、仮想共有メモリとして設定(確保)する。設定(確保)する手法は、どのような手法を用いても良く、例えばmalloc関数を用いることが考えられる。
図7は、設定部302により設定された仮想共有メモリを例示した図である。図7に示された仮想共有メモリ310は、図4に示される仮想共有メモリ定義パラメータに従って、X個の仮想共有メモリが設定されたものとする。設定された仮想共有メモリは、ブロックサイズ毎に分割され、分割されたブロック毎に、先頭ブロックから順番にブロック番号が割り当てられている。そして、仮想共有メモリでは、図6に示される周期送信設定パラメータに従ってブロック単位で送信制御が行われる。
周期送信設定パラメータに示されるように、ブロック単位で送信周期番号が設定されている。送信周期番号に対応する周期は、周期設定パラメータに予め記憶されている。これにより、ブロック毎の送信周期(伝送周期)が設定される。また、ブロック毎に、送信ノード番号が設定されている。これにより、当該ブロックを送信するコントローラノード100が特定できる。
図6及び図7で示される例では、仮想共有メモリ番号‘1’及びブロック番号‘1’の仮想共有メモリのブロックは、送信ノード番号‘1’で識別される第1のコントローラノード100_1が読み書き可能であって、第1のコントローラノード100_1が送信制御を行う。
他の例としては、仮想共有メモリ番号‘X’及びブロック番号‘102400’の仮想共有メモリのブロックは、送信ノード番号‘N’で識別される第Nのコントローラノード100_Nが読み書き可能であって、第Nのコントローラノード100_Nが送信制御を行う。これにより、第1のコントローラノード100_1は、仮想共有メモリ番号‘X’及びブロック番号‘102400’の仮想共有メモリのブロックの読み込みのみ可能となる。
伝送制御部303は、周期送信設定パラメータに基づいて、仮想共有メモリのブロック毎に、当該ブロックに記憶されたデータを、送信周期番号に対応する周期に従って、通信I/F101を介して、他のコントローラノード100との間で伝送制御を行う。
本実施形態においては、通信ネットワーク180に参加しているいずれかのコントローラノード100が、自ノードの送信タイミングとなった場合に、伝送制御部303は、周期送信設定パラメータにおいて、送信ノード番号が自ノードを示しているブロックについて、送信周期番号で示される周期毎に、仮想共有メモリ番号及びブロック番号で識別されるブロックの情報を、通信ネットワーク180に接続されている他のコントローラノード100(自コントローラノードを除いた全てのコントローラノード)に対してブロードキャストする。
図8は、本実施形態の周期伝送されるフレームフォーマットを例示した図である。図8に示されるように、フレームフォーマットは、ヘッダ801と、仮想共有メモリ番号802と、ブロック番号803と、ブロックデータ804と、を備える。ブロックデータ804には、仮想共有メモリ番号802、及びブロック番号803で識別されるブロックのデータが格納される。
伝送制御部303が、図8で示されるフレームフォーマットに従ってデータを送信する。そして、他のコントローラノード100の伝送制御部303は、当該データを受信した場合に、仮想共有メモリ番号802、ブロック番号803で識別されるブロックに、ブロックデータ804内のデータを書き込む。
そして、通信ネットワーク180に接続されている全てのコントローラノード100が上述した処理を行うことで、通信ネットワーク180に接続されている全てのコントローラノード100の共有メモリの等値化を実現できる。次に、本実施形態のPC150における、コントローラノード100に対する仮想共有メモリの設定処理について説明する。
図9は、本実施形態のPC150における、コントローラノード100に対する仮想共有メモリの設定処理の手順を示すフローチャートである。
まず、PC150の共有メモリ設定部153は、コントローラノード100が仮想共有メモリを設定するための、仮想共有メモリの数、仮想共有メモリ毎のブロックサイズ、及び仮想共有メモリ毎のブロックの個数の入力を受け付ける(S901)。
そして、共有メモリ設定部153は、入力を受け付けた仮想共有メモリの数、仮想共有メモリ毎のブロックサイズ、及び仮想共有メモリ毎のブロックの個数に基づいて、仮想共有メモリ定義パラメータを生成する(S902)。
次に、アプリケーション制御部152が、コントローラノード100毎に、コントローラノード100にダウンロードする、アプリケーション305のデータの書き込み先及び読み込み先となる仮想共有メモリ番号及びブロック番号を設定する(S903)。
さらに、アプリケーション制御部152は、S903で設定される仮想共有メモリ番号及びブロック番号毎に、アプリケーション305が書き込むデータの種別に応じた伝送周期を示した伝送周期番号と、ブロックに書き込みを行うコントローラノード100に応じた送信元番号と、を設定する(S904)。
そして、共有メモリ設定部153は、S903及びS904に基づいて、周期送信設定パラメータを生成する(S905)。
そして、PC150は、通信I/F151を介して、通信ネットワーク180に接続された全てのコントローラノード100に対して、仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータとを送信する(S906)。周期設定パラメータは、予めPC150の記憶部に格納されているデータとする。
上述した処理手順により、通信ネットワーク180に接続された全てのコントローラノード100に、仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータを受信できる。これにより、全てのコントローラノード100の生成部304が、受信した仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータとを、HDD203のパラメータ記憶領域311に記憶(生成)できる。
図10は、本実施形態のコントローラノード100における、共有メモリに格納されているデータの等値化処理の手順を示すフローチャートである。
まず、生成部304が、PC150から受信した、仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータとを、HDD203のパラメータ記憶領域311に記憶する(S1001)。本実施形態は、PC150から受信した、仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータとを記憶させることで、これらのデータをパラメータ記憶領域311に生成する。なお、すでに、仮想共有メモリ定義パラメータと周期設定パラメータと周期送信設定パラメータとが、パラメータ記憶領域311に生成されている場合には、S1001の処理を行わなくても良い。
まず、設定部302は、仮想共有メモリ定義パラメータに従って、HDD203及びRAM202を用いて、仮想共有メモリを設定する(S1002)。
次に、伝送制御部303は、周期送信設定パラメータに従って、送信ノード番号が自装置を示しているブロック毎に、当該ブロックに記憶されたデータを、送信周期番号で示された送信周期毎に送信する(S1003)。
伝送制御部303は、他のコントローラノード100から、図8で示される所定のフレームフォーマットに従ったデータを受信する(S1004)。
そして、伝送制御部303は、受信したデータのうち、ブロックデータに格納されたデータを、仮想共有メモリ番号及びブロック番号で識別されるブロックに書き込む(S1005)。その後、再びS1003から処理を繰り返す。
上述した処理を行うことで、通信ネットワーク180に接続された全てのコントローラノード100間で仮想共有メモリの等値化を実現できる。
従来、コントローラノード100において、共有メモリを大容量化したいという要望があった。これに対して、本実施形態では、RAM202とHDD203とを組み合わせた、仮想共有メモリを備えることとした。これにより、共有メモリの大容量化を実現している。
共有メモリを大容量化した場合、仮想共有メモリの等値化を実現するためには、通信ネットワーク180に接続された全てのコントローラノード100でデータの送受信を行うが、通信負荷が大きくなる。そこで、本実施形態のコントローラノード100は、送信するデータの種類に応じて送信周期を設定することとした。例えば、リアルタイム性が必要な制御情報等は送信周期を短くし、リアルタイム性が高くない画像データ等は送信周期を長く設定する。
このように、データの種類に応じた送信周期が設定されているので、通信ネットワーク180の負荷軽減が図れているため、大容量化された共有メモリによる等値化が可能となる。
(第2の実施形態)
第1の実施形態においては、コントローラノード100間で共有メモリの等値化を実現する手法について説明した。しかしながら、関連する情報が複数のブロックに跨がっている場合、当該複数のブロック全てが更新されてから、当該複数のブロックについて読み込みを開始したいという要望がある。そこで、本実施形態においては、関連する情報が格納された複数のブロックの更新手法について説明する。なお、本実施形態は、第1の実施形態と同様の構成を備えているものとして、構成の説明を省略する。
本実施形態においては、第1のコントローラノード100_1の伝送制御部303が、仮想共有メモリのうち、関連する情報が格納される、複数のブロックが更新されることを示す開始通知を、通信I/F101を介して、他のコントローラノード100に送信制御する。本実施形態では、当該開始通知を、ブロック同期送信開始通知と称する。関連する情報とは、例えば、更新前と更新後のブロックの情報が混在している場合に、異常と判別されるような情報が考えられる。つまり、他のコントローラノード100に、複数のブロックの更新が完了するまで読み込みを制限したい場合に、当該通知を行うこととする。
これにより、他のコントローラノード100は、ブロック同期送信開始通知を受信した場合に、ブロック同期送信開始通知で示された、更新対象である複数のブロックが更新されるまで、当該複数のブロックに対して読み込みを行わないよう制御する。
図11は、ブロック同期送信開始通知のフレームフォーマットを例示した図である。図11に示されるように、ブロック同期送信開始通知は、ヘッダ1101と、同期区分1102と、仮想共有メモリ番号1103と、同期ブロック指定マップ1104と、を備えている。
同期区分1102は、当該通知の区分を示した情報が格納される。ブロック同期送信開始通知の場合、同期区分には“開始”が格納される。仮想共有メモリ番号1103は、これから更新を行う複数のブロックが格納された共有メモリを示す仮想共有メモリ番号が格納される。同期ブロック指定マップ1104は、更新が行われるブロックを指定するマップが格納される。
図12は、同期ブロック指定マップ1104を例示した図である。図12に示される同期ブロック指定マップ1104の各枠は、“ブロック番号[‘0’又は‘1’]”を示している。つまり、ブロック毎に‘0’又は‘1’が設定されているものとする。‘0’は更新対象でないことを示し、‘1’は更新対象であることを示している。
図12に示される例では、少なくとも、ブロック番号31〜40、102392〜102395で示されるブロックが更新対象となることを示している。
その後、伝送制御部303は、第1の実施形態と同様に、周期送信設定パラメータに従って、送信ノード番号が自装置を示しているブロック毎に、当該ブロックのデータを、送信周期番号で示された送信周期毎に送信する。
そして、伝送制御部303は、仮想共有メモリのうち、関連する情報が格納される、複数のブロックの更新、換言すれば、当該複数のブロックの送信制御が終了した場合に、複数のブロックの更新が終了したことを示す終了通知を、通信I/F101を介して、他のコントローラノード100に送信制御する。本実施形態では、当該終了通知を、ブロック同期送信終了通知と称する。
図13は、ブロック同期送信終了通知のフレームフォーマットを例示した図である。図13に示されるように、ブロック同期送信終了通知は、ヘッダ1301と、同期区分1302と、仮想共有メモリ番号1303と、同期ブロック指定マップ1304と、を備えている。同期区分は、当該通知の区分を示した情報が格納される。ブロック同期送信終了通知の場合、同期区分には“終了”が格納される。
本実施形態においては、関連する情報の複数の更新が行われている場合であっても、フレームフォーマットに、仮想共有メモリ番号1303と、同期ブロック指定マップ1304と、を含めることで、いずれの関連する情報の更新が終了したのか特定できる。
次に、ブロック同期送信開始通知、及びブロック同期送信終了通知の受信側のコントローラノード100について説明する。
コントローラノード100の伝送制御部303は、他のコントローラノード100から、ブロック同期送信開始通知を受信した場合に、更新対象となるブロックを管理するためのブロック同期受信管理情報を生成する。
図14は、本実施形態の伝送制御部303により生成されるブロック同期受信管理情報を例示した図である。図14に示されるブロック同期受信管理情報は、同期区分1401と、仮想共有メモリ番号1402と、同期ブロック指定マップ1403と、同期ブロック受信マップ1404と、が対応付けて格納されている。同期区分1401には、当該伝送制御部303が受信した通知の種類を示している。例えば、当該伝送制御部303がブロック同期送信開始通知を受信した場合には“開始”が格納され、当該伝送制御部303がブロック同期送信終了通知を受信した場合には“終了”が格納される。
仮想共有メモリ番号1402には、ブロック同期送信開始通知に格納されていた仮想共有メモリ番号が設定される。同期ブロック指定マップ1403には、ブロック同期送信開始通知に格納されていた同期ブロック指定マップ1104が格納される。
同期ブロック受信マップ1404は、ブロックの更新(受信)が終了したか否かを保持するマップとする。同期ブロック受信マップ1404は、初期状態では、ブロック同期送信開始通知に格納されていた同期ブロック指定マップ1104が格納される。換言すれば、同期ブロック受信マップ1404は、初期状態では、同期ブロック指定マップ1403と同じ情報が格納される。同期ブロック受信マップ1404では、更新対象となっているブロックを“オン”とし、更新対象となっていないブロックを“オフ”とする。
そして、伝送制御部303は、仮想共有メモリのブロックの情報を受信する伝送制御が行われる毎に、ブロック同期受信管理情報の同期ブロック指定マップ1403を参照し、受信したブロックの情報が、更新対象であるか否かを判別する。そして、伝送制御部303は、更新対象のブロックと判別した場合に、同期ブロック受信マップ1404の該当ブロックを“オフ”に更新する。つまり、同期ブロック受信マップ1404が全て“オフ”になった場合に、更新対象のブロックが全て更新されたことになる。
そして、伝送制御部303は、ブロック同期送信終了通知を受信した際に、同期ブロック受信マップ1404が全て“オフ”か否かを判別する。全て“オフ”と判別した場合には、伝送制御部303は、更新対象のブロックが全て更新されたものとする。そして、伝送制御部303は、同期区分1401を“終了”に更新する。
そして、伝送制御部303は、コントローラノード100内のアプリケーション等に更新完了した旨の通知を行うと共に、更新が行われた複数のブロックの読み込みを、アプリケーション305に対して許可する。その後、伝送制御部303は、ブロック同期受信管理情報を開放する。
一方、伝送制御部303は、ブロック同期送信終了通知を受信した際に、同期ブロック受信マップ1404が全て“オフ”ではないと判別した場合には、伝送制御部303は、更新対象のブロックの受信に異常があったものとして、すでに更新済みのブロックのデータを無効とする制御(例えば、ロールバック制御)を行う。
本実施形態においては、上述した処理を行うことで、仮想共有メモリの複数のブロックに、関連するデータが格納された場合でも、関連するデータの整合性を確保できる。これにより仮想共有メモリの安全性の向上を図ることができる。
上述した実施形態においては、揮発性メモリと不揮発性メモリとを組み合わせて仮想共有メモリを生成した上で、仮想共有メモリについてブロック毎に定めた周期でデータを送信することで、共有メモリ領域の大容量化と通信負荷の軽減の両立を実現できる。
さらにブロック毎に周期を設定できるので、コントローラノード100間で高速にアクセスが必要なブロックについては、高速なアクセスを実現できる。
また、仮想共有メモリを、仮想共有メモリ番号で管理することで、仮想共有メモリを複数備えることを可能としている。このように、仮想共有メモリを複数備えることで、連続性が必要な大きな容量のデータを、コントローラノード100間で複数共有することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。