JP2016173741A - 情報処理装置、情報処理方法、及び、プログラム - Google Patents
情報処理装置、情報処理方法、及び、プログラム Download PDFInfo
- Publication number
- JP2016173741A JP2016173741A JP2015053608A JP2015053608A JP2016173741A JP 2016173741 A JP2016173741 A JP 2016173741A JP 2015053608 A JP2015053608 A JP 2015053608A JP 2015053608 A JP2015053608 A JP 2015053608A JP 2016173741 A JP2016173741 A JP 2016173741A
- Authority
- JP
- Japan
- Prior art keywords
- address
- container
- memory
- information
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】 複数の実行環境で動作するプロセスにおける共有メモリを用いたプロセス間通信を実現する。【解決手段】 本発明の情報処理装置は、物理メモリと、データを共有する複数のプロセスと、データを共有するため共有メモリと、共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含むコンテナとを含み、仮想メモリアドレスと物理メモリのアドレスとの第1の対応関係と、共有メモリとなっている物理メモリのアドレス間の第2の対応関係とを基に、共有メモリに書き込みデータとその仮想メモリアドレスとを受信した場合に、仮想メモリアドレスに対応する物理メモリのアドレスにデータを書き込み、さらに、第2の対応関係を基に共有メモリとなっている第2の物理メモリのアドレスを特定し、特定したアドレスにデータを書き込む。【選択図】 図1
Description
本発明は、アプリケーション、プロセス、又はタスクなどのソフトウェア間の通信に関し、特に、ソフトウェアを実行する環境間において通信する情報処理装置、情報処理方法、及びプログラムに関する。
複数のプロセスを用いて動作するアプリケーションは、動作している複数のプロセスを連携させるために、プロセス間通信を用いる(例えば、特許文献1を参照)。プロセスが、同一の装置上で動作している場合、プロセス間通信の一つとして、共有メモリを介したプロセス間通信が、用いられている(例えば、特許文献1及び3を参照)。
アプリケーションは、プロセス間通信を用いて、複数のプロセスの組み合わせた機能を実現できる。そのため、アプリケーションは、想定される全ての機能を含む大きなプロセスを用いるのではなく、必要な各機能を実現する小さなプロセスの組合せを用いて、所望の機能を実現できる。つまり、アプリケーションは、必要となるプロセス量を削減できる。プロセスの量が少なくすることは、エラーなどの不具合の要因の混入の可能性を低減できる。また、プロセスの量が少なくすることは、不要な処理の削減にもつながる。つまり、プロセス間通信は、アプリケーションの実行における、信頼性の向上及びパフォーマンス向上などの効果を奏することができる。
また、アプリケーション(及びそのプロセス)は、少なくとも一部の機能として、アプリケーション(及びそのプロセス)が動作する実行環境(例えば、OS(Operating System)、及び、そのOS上で動作するライブラリ)の機能を用いている。しかし、OS及びライブラリは、セキュリティ対策又は機能追加のために、改版(バージョンアップ)される。さらに、OSの改版の時期とライブラリの改版の時期とは、必ずしも、一致するとは限らない。そのため、アプリケーションが用いるプロセスの一部が、改版後の新しい実行環境(OS又はライブラリ)で動作しなくなる場合がある。
また、アプリケーションが動作する情報処理装置では、情報処理装置の実行環境を仮想化する技術が、用いられている(例えば、特許文献2を参照)。仮想化技術には、例えば、サーバなどの装置をソフトウェアで仮想化する仮想化装置(VM:Virtual Machine)がある。また、OSレベルの仮想化として、コンテナを用いた仮想化技術がある。
そこで、実行環境の改版の伴い、一部のプロセスが動作しなくなった場合、アプリケーションの使用者は、仮想化技術を用いて、次のようにアプリケーションの実行を実現できる。すなわち、アプリケーションが動作する情報処理装置は、新しい実行環境では動作できないプロセスが動作可能である古い実行環境(旧版の実行環境)と、新しい実行環境(新版の実行環境)とを起動する。そして、アプリケーションは、動作しなくなったプロセスを旧版の環境で動作させ、その他のプロセスを新版の実行環境で動作させる。このような構成を基に、アプリケーションは、動作しなくなったプロセスを実行させることができる。
ただし、一般的に、仮想化された実行環境は、相互に隔離されている。つまり、旧版の実行環境と、新版の実行環境とは、隔離されている。そのため、仮想化された実行環境は、実行環境間でのメモリの共有など、リソースを共有できない。つまり、共有メモリを用いて通信するプロセスを含むアプリケーションは、複数の実行環境にプロセスを配置した場合、プロセス間通信を実行できない。そのため、旧版の実行環境と、新版の実行環境とを用いる場合、アプリケーションの利用者は、アプリケーション又はプロセスを改造する必要があった。
このように、特許文献1ないし3に記載の技術は、プロセス間通信に共有メモリを用いるアプリケーションに対応できないという問題点があった。あるいは、特許文献1ないし3に記載の技術は、アプリケーション又はプロセスにおけるプロセス間通信の部分の改造が必要であるという問題点があった。
発明の目的は、上記問題を解決し、プロセス間通信に関する部分の改造を必要としないで、複数の実行環境で動作するプロセスにおける共有メモリを用いたプロセス間通信を実現する情報処理装置、情報処理方法、及び、プログラムを提案することにある。
本発明の一形態における情報処理装置は、データを記憶する物理メモリと、他のプロセスとデータを共有する複数のプロセスと、複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナと、複数のコンテナに含まれる共有メモリの仮想メモリアドレスと物理メモリのアドレスとの対応である第1の対応関係と、複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、いずれかコンテナに含まれる仮想メモリアドレス処理手段から書き込みデータとデータを書き込む共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、仮想メモリアドレスに対応する第1の物理メモリのアドレスに受信したデータを書き込み、第2の対応関係を基に、第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、第2の物理メモリのアドレスに受信したデータを書き込むコンテナ接続手段を含むホストOSとを含む。
本発明の一形態におけるデータ処理方法は、データを記憶する物理メモリと、他のプロセスとデータを共有する複数のプロセスと、複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナとを含む情報処理装置において、複数のコンテナに含まれる共有メモリの仮想メモリアドレスと物理メモリのアドレスとの対応である第1の対応関係と、複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、いずれかコンテナに含まれる仮想メモリアドレス処理手段から書き込みデータとデータを書き込む共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、仮想メモリアドレスに対応する第1の物理メモリのアドレスに受信したデータを書き込み、第2の対応関係を基に、第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、第2の物理メモリのアドレスに受信したデータを書き込む。
本発明の一形態におけるプログラムは、データを記憶する物理メモリと、他のプロセスとデータを共有する複数のプロセスと、複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナとを含むコンピュータにおいて、複数のコンテナに含まれる共有メモリの仮想メモリアドレスと物理メモリのアドレスとの対応である第1の対応関係と、複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、いずれかコンテナに含まれる仮想メモリアドレス処理手段から書き込みデータとデータを書き込む共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、仮想メモリアドレスに対応する第1の物理メモリのアドレスに受信したデータを書き込む処理と、第2の対応関係を基に、第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、第2の物理メモリのアドレスに受信したデータを書き込む処理とをコンピュータに実行させる。
本発明に基づけば、プロセス間通信に関する部分の改造を必要としないで、複数の実行環境で動作するプロセスにおける共有メモリを用いたプロセス間通信を実現するとの効果を奏することができる。
次に、本発明の実施形態について図面を参照して説明する。
なお、各図面は、本発明の実施形態を説明するものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。
また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。
なお、以下の実施形態の説明では、OS(Operating System)レベルの仮想化として、コンテナの技術を用いて説明する。ただし、これは、本実施形態を、コンテナに限定するものではない。本実施形態は、コンテナと同様に、OSレベルでの仮想化であれば、他の仮想化を用いてもよい。
また、以下の説明では、コンテナ内での動作として、プロセス間における共有メモリを用いる動作について説明する。ただし、これは、本実施形態を、プロセス及び共有メモリに限定するものではない。本実施形態は、プロセスに限らず、アプリケーション、タスク、モジュール、又はスレッドなど仮想環境内で動作する動作単位が、メモリ又はIOデバイス(Input Output device)などのリソースを共有する機能を備えていれば、適用可能である。
(説明の前提)
まず、本発明の実施形態を説明するための前提として、一般的なコンテナについて、図を参照して説明する。まず、コンテナが一つの場合について説明する。
まず、本発明の実施形態を説明するための前提として、一般的なコンテナについて、図を参照して説明する。まず、コンテナが一つの場合について説明する。
図24は、一般的な、一つのコンテナを含む情報処理装置90の構成の一例を示すブロック図である。図24に示すように、情報処理装置90は、ホストOS910と、コンテナ920とを含む。
ホストOS910は、一般的なOSとしての処理に加え、コンテナを管理する処理を実現する。そのため、ホストOS910は、コンテナ管理部912を含む。
コンテナ920は、コンテナ管理部912に管理されて、ホストOS910上での仮想的な実行環境としてのコンテナの機能を実現する。そして、コンテナ920は、複数のプロセス220における共有メモリ230の共有動作を実現する。そのため、プロセス220は、共有メモリ230を介したプロセス間通信を実現できる。
次に、複数のコンテナの例として、二つのコンテナの場合について説明する。
図25は、一般的な、二つのコンテナを含む情報処理装置91の構成の一例を示すブロック図である。図25に示すように、情報処理装置90は、ホストOS910と、二つのコンテナ920とを含む。
図25に示すプロセス220は、各コンテナ920内では、図24と同様に、共有メモリ230を介したプロセス間通信を実現できる。しかし、各コンテナ920は、隔離されている。つまり、各コンテナ920における共有メモリ230は、隔離されている。そのため、プロセス220は、他のコンテナ920内の共有メモリ230にアクセスできない。つまり、プロセス220は、他のコンテナ920で動作するプロセス220と、共有メモリ230を共有することができない。
ここで、例えば、図25の右側のコンテナ920が、旧版の実行環境であり、左側のコンテナ920が、新版の実行環境であるとする。そして、アプリケーションが用いるプロセス220に、旧版の実行環境で動作するプロセス220(以下、旧版のプロセス220と呼ぶ)と、新版の実行環境で動作するプロセス220(以下、新版のプロセス220と呼ぶ)とが、含まれるとする。この場合、旧版のプロセス220は、旧版の実行環境である右側のコンテナ920に配置する必要がある。一方、新版のプロセス220は、新版の実行環境である左側のコンテナ920に配置することが望ましい。しかし、プロセス220は、コンテナ920をまたいで共有メモリ230を使用できない。つまり、旧版のプロセス220と新版のプロセス220とは、プロセス間通信を実行できない。
共有メモリ230を共有するためには、旧版のプロセス220と新版のプロセス220とは、同じコンテナ920に配置する必要がある。例えば、新版のプロセス220は、旧版の実行環境のコンテナ920でも動作可能とする。この場合、新版のプロセス220と旧版のプロセス220とを、旧版の実行環境である右側のコンテナ920に配置するすると、新版のプロセス220と旧版のプロセス220とは、共有メモリ230を用いたプロセス間通信を実行できる。しかし、この場合、新版のプロセス220は、新版の実行環境である左側のコンテナ920において実行できた機能の一部が実行できなくなる。
また、新版のプロセス220が、旧版の実行環境に対応していない場合は、プロセス220を再配置することは、できない。
このように、一般的なコンテナを用いる装置は、全てのプロセス220が、新版の実行環境に対応しない限り、新版の実行環境であるコンテナ920を使用できないという問題点があった。
<第1の実施形態>
次に、本発明における第1の実施形態について、図面を参照して説明する。
次に、本発明における第1の実施形態について、図面を参照して説明する。
[構成の説明]
まず、本発明における第1の実施形態に係る情報処理装置10の構成について説明する。
まず、本発明における第1の実施形態に係る情報処理装置10の構成について説明する。
図1は、第1の実施形態に係る情報処理装置10の構成の一例を示すブロック図である。
図1に示すように、情報処理装置10は、ホストOS100と、コンテナ200と、物理メモリ300とを含む。ただし、図1において、ホストOS100を一つ、コンテナ200を二つ示しているのは、一例である。情報処理装置10は、複数のホストOS100を含んでもよく、二つの超えるコンテナ200を含んでもよい。情報処理装置10が、複数のホストOS100を含む場合、各ホストOS100は、以下で説明する機能を含めば、他の機能は異なっていてもよい。また、各コンテナ200は、以下で説明する機能を含めば、他の機能は異なっていてもよい。そのため、ホストOS100及びコンテナ200において、本実施形態に関連しない部分の説明を省略する。
また、各コンテナ200は、特に区別する必要はない。ただし、以下の説明おいて、データの共有を説明する場合に、共有データの送信元のコンテナ200を第1のコンテナ200と、共有データの受信先のコンテナ200を第2のコンテナ200と呼ぶ場合もある。
物理メモリ300は、実際にデータを記憶する素子又は装置である。例えば、物理メモリ300は、D−RAM(Dynamic-RAM)である。なお、物理メモリ300は、D−RAMのような揮発性メモリに限らず、不揮発性メモリ(例えば、フラッシュメモリ)を含んでもよい。あるいは、物理メモリ300は、磁気ディスク装置のような記憶装置でもよい。
コンテナ200は、ホストOS100で動作するコンテナとして、プロセス220が所定の動作を実行するための実行環境を提供する。さらに、本実施形態のコンテナ200は、後ほど説明するように、ホストOS100と連携して、共有メモリ230の共有を実現する。
そのため、コンテナ200は、複数のプロセス220と、共有メモリ230と、仮想メモリアドレス処理部210とを含む。
プロセス220は、所定の処理を実行する。なお、既に説明した通り、プロセス220は、一般的には必ずしもプロセスと呼ばれていない機能単位、例えば、アプリケーション、モジュール、又は、スレッド等でもよい。以下、これらをまとめてプロセス220と呼ぶ。プロセス220は、他のプロセス220と間で、共有メモリ230を共有する。そして、プロセス220は、共有メモリ230を用いてプロセス間通信を実行する。
なお、本実施形態の情報処理装置10は、後ほど説明するように、異なるコンテナ200に含まれるプロセス220との間でも、コンテナ200をまたいだ共有メモリ230を用いたプロセス間通信を実行できる。つまり、本実施形態の情報処理装置10において動作するプロセス220は、異なるコンテナ200に含まれるプロセス220ともプロセス間通信を実行できる。ただし、本実施形態の情報処理装置10は、一般的なコンテナ200で動作するプロセス220を、そのまま用いることができる。そのため、プロセス220の詳細な説明を省略する。
共有メモリ230は、プロセス220におけるプロセス間通信に用いられる、プロセス間で共有されるメモリ(リソース)である。プロセス220は、共有メモリ230へのアクセスとして、仮想メモリアドレスを用いる。共有メモリ230における仮想メモリアドレスは、後ほど説明するように、仮想メモリアドレス処理部210と、ホストOS100との動作を基に、具体的な物理メモリ300に割り当てられる。なお、図1には示していないが、情報処理装置10は、仮想メモリアドレスとして、図示しない補助記憶装置などを用いた仮想記憶を用いてもよい。この場合、ホストOS100は、一般的な仮想記憶の処理を用いて、仮想メモリアドレスと、物理メモリ300及び保持記憶装置とを対応させればよい。
また、本実施形態の情報処理装置10は、共有メモリ230の作成(確保)方法に、特に制限はない。情報処理装置10は、一般的なコンテナに用いられている共有メモリ230の作成(確保)方法を用いればよい。また、コンテナ200は、一般的なコンテナと同様に、プロセス220の動作に先立ち、共有メモリ230を作成すればよい。そのため、以下の説明では、共有メモリ230の作成の詳細な説明を省略し、共有メモリ230は、作成済みとして説明する。
このように、情報処理装置10は、用いるプロセス220及び共有メモリ230として、特に制限はなく、一般的なプロセス220と共有メモリ230を用いることができる。
仮想メモリアドレス処理部210は、プロセス220がプロセス間通信に用いる共有メモリ230における仮想メモリアドレスを、ホストOS100に通知する。ホストOS100は、受信した仮想メモリアドレスに対応する物理メモリ300のアドレス(物理メモリアドレス)のデータを処理する。なお、仮想メモリアドレス処理部210の処理方法は、特に制限はない。例えば、仮想メモリアドレス処理部210は、一般的なOSに用いられている仮想メモリアドレスの処理と同様の処理を実行すればよい。
図12は、本実施形態に係る仮想メモリアドレス2110の一例を示す図である。
図12に示す仮想メモリアドレス2110は、番号2111と、プロセス2112と、コンテナ2113と、仮想メモリアドレス2114とを含む。
番号2111は、仮想メモリアドレス2110の情報の組を識別するための情報(例えば、番号又は識別子)である。図12に示す仮想メモリアドレス2110は、各行が1つの情報の組となっている。
プロセス2112は、対象となるプロセス220を示す情報(例えば、識別子又は名称)である。
コンテナ2113は、プロセス2112において示されているプロセス220が稼働するコンテナ200を示す情報(例えば、識別子又は名称)である。
仮想メモリアドレス2114は、プロセス2112で示されているプロセス220が用いる共有メモリ230の仮想メモリアドレスである。図12は、仮想メモリアドレス2114の値として、16進数を用いている。そのため、図12は、仮想メモリアドレス2114のアドレスに「h」を付している。以下、16進数は、同様に「h」を付し、その説明を省略する。
例えば、図12に示す1行目の仮想メモリアドレス2110は、プロセスaが、コンテナA内の仮想メモリアドレス4000h−7000hの範囲を、共有メモリ230として使用することを示す。
図1を参照した説明に戻る。
ホストOS100は、一般的なOSとしての動作、及び、一般的なコンテナ200の管理を実行する。さらに、本実施形態のホストOS100は、後ほど説明するように、コンテナ200間での共有メモリ230の共有を実現する。なお、以下、ホストOS100の一般的なOSとしての動作の説明を省略し、本実施形態に係る構成及び動作について説明する。
ホストOS100は、図1に示すように、コンテナ接続部120と、プロセス配置部130とを含む。
プロセス配置部130は、プロセス220を適切なコンテナ200に配置する処理を実行する。
コンテナ接続部120は、コンテナ200間における共有メモリ230を共有する処理を実行する。
以下、プロセス配置部130とコンテナ接続部120との詳細について、図面を参照して説明する。
まず、プロセス配置部130について、図面を参照して説明する。
図2は、プロセス配置部130の構成の一例を示すブロック図である。
プロセス配置部130は、情報受信部131と、再配置判定部132と、再配置処理部133と、配置先判定部134と、配置処理部135とを含む。
情報受信部131は、プロセス220とコンテナ200とに関連する情報を受信する。より詳細には、情報受信部131は、コンテナ200から、再配置されたプロセス220に関する情報と、プロセス220が動作するコンテナ200に関する情報と(以下、合わせて「再配置情報」と呼ぶ)を受信する。以下、コンテナ200に関する情報を「コンテナ情報1310」と呼ぶ。また、プロセス220に関する情報を「プロセス設計情報1330」と呼ぶ。また、情報受信部131は、コンテナ200の構成に関する情報(以下、「構成情報1320」)を受信する。
ただし、情報受信部131は、再配置情報及び構成情報1320を、別の構成から受信してもよい。例えば、情報受信部131は、ホストOS100のコンテナ200を監視している構成から、再配置情報及び構成情報1320を取得してもよい。あるいは、情報受信部131は、利用者が操作する図示しない管理装置から、再配置情報及び構成情報1320を受信してもよい。
なお、情報受信部131は、受信した情報を、必要に応じて、再配置判定部132等に送信してもよい。あるいは、情報受信部131は、受信した情報を、図示しない記憶部に保存してもよい。この場合、プロセス配置部130に含まれる各構成は、必要に応じて、その記憶部から情報を読み出せばよい。
本実施形態に係るコンテナ情報1310、プロセス設計情報1330、及び、構成情報1320が含む情報は、特に制限はない。また、コンテナ情報1310、プロセス設計情報1330、及び、構成情報1320の形式は、ホストOS100が取り扱える形式であれば、特に制限はない。
以下、各情報の一例を示す。
図9は、コンテナ情報1310の一例を示す図である。
図9に示すコンテナ情報1310は、コンテナ1311と、ホスト1312とを含む。図9に示すコンテナ情報1310は、各行が1組の情報となっている。
コンテナ1311は、コンテナ200を示す情報(例えば、識別子又は名称)である。
ホスト1312は、コンテナ200が動作するホストOS100を示す情報(例えば、識別子又は名称)である。
例えば、図9の1行目に示されるコンテナ情報1310は、コンテナAが、ホストOS1上で動作していることを示す。
図10は、プロセス設計情報1330の一例を示す図である。
図10に示すプロセス設計情報1330は、番号1331と、通信元1332と、通信先1333と、通信手段1334と、共有メモリ作成鍵1335と、ライブラリリスト1336とを含む。
番号1331は、プロセス設計情報1330の情報の組を識別するための情報(例えば、番号又は識別子)である。図10に示すプロセス設計情報1330は、各行が1組の情報となっている。
通信元1332は、プロセス設計情報1330の対象となるプロセス220を示す情報(例えば、識別子又は名称)である。つまり、図10に示す情報の組は、通信元1332におけるプロセス220に関する情報の組である。例えば、1行目は、プロセスaに関する情報である。
通信先1333は、通信元1332に示されるプロセス220のプロセス間通信における通信先のプロセス220を示す情報(例えば、識別子又は名称)である。
通信手段1334は、通信元1332のプロセス220と、通信先1333のプロセス220とがプロセス間の通信に用いる手段を示す。通信手段1334は、例えば、図10に示す共有メモリ、メッセージキュー、又は、ソケットなどである。ただし、情報処理装置10は、図10に示す以外の通信手段をプロセス間通信に用いてもよい。
共有メモリ作成鍵1335は、共有メモリ230を作成及び使用するときに用いる情報(例えば、鍵)の値である。例えば、共有メモリ作成鍵1335は、共有メモリ230を作成及び使用するときに用いる暗号鍵でもよい。あるいは、共有メモリ作成鍵1335は、情報処理装置10が、共有メモリ230を作成(確保)及び使用する時に用いる名称(又は識別コード)でもよい。通信元1332に示されるプロセス220は、共有メモリ作成鍵1335を用いて、作成された共有メモリ230にアクセスする。
ライブラリリスト1336は、プロセス220に対応したライブラリに関する情報(例えば、識別子又は名称)のリストである。ライブラリリスト1336は、複数のライブラリに関する情報を含んでもよい。
例えば、図10のプロセス設計情報1330の1行目のデータは、次のようなプロセス220に関する設計情報である。すなわち、プロセスaは、プロセスbと、共有メモリ作成鍵1335として「3647afcd3531」を用いて作成された共有メモリ230を用いて、プロセス間通信を実現する。そして、プロセスaは、ライブラリとして、setXを用いる。
図11は、構成情報1320の一例を示す図である。
図11に示す構成情報1320は、番号1321と、プロセス1322と、ホスト1323とコンテナ1324とを含む。
番号1321は、構成情報1320の情報の組を識別するための情報(例えば、番号又は識別子)である。図11に示す構成情報1320は、各行が1組の情報となっている。
プロセス1322は、対象となるプロセス220を示す情報(例えば、識別子又は名称)である。
ホスト1323は、プロセス1322に示されるプロセス220が動作するホストOS100を示す情報(例えば、識別子又は名称)である。
コンテナ1324は、プロセス1322に示されるプロセス220が動作するコンテナ200を示す情報(例えば、識別子又は名称)である。
例えば、図11に示す構成情報1320の1行目のデータは、次のような構成情報1320を示す。すなわち、プロセスaは、ホストOS1上で動作するコンテナAにおいて動作している。
また、プロセス220がコンテナ200を移動すると、構成情報1320は、更新される。より具体的には、例えば、プロセスaが、コンテナAから、再配置に伴いコンテナBに移動すると、図11に示される構成情報1320の1行目のコンテナ1324の情報は、コンテナAから、再配置後のコンテナBに更新される。
図2を参照した説明に戻る。
再配置判定部132は、プロセス220の再配置の判定を開始する情報を受信すると、情報及び構成情報1320を基に、別のコンテナ200に再配置が必要なプロセス220を判定する。そして、再配置判定部132は、再配置されるプロセス220に必要な環境(例えば、ライブラリ)を判定する。
具体的な例を基に、再配置判定部132について、より詳細に説明する。いずれかのコンテナ200が、更新されたとする。この場合、プロセス220の再配置の判定が、必要となる。つまり、コンテナ200の更新の情報は、プロセス220の再配置の判定を開始する情報の一例である。例えば、再配置判定部132は、いずれかのコンテナ200の更新及び更新後の版数の通知(プロセス220の再配置の判定を開始する情報)を受信すると、動作を開始する。なお、情報の送信元は、特に制限はない。例えば、再配置判定部132は、図示しない利用者の管理装置から、この通知を受信する。そして、再配置判定部132は、プロセス設計情報1330とライブラリ情報1340とを基に、更新後のコンテナ200で動作できないライブラリを使用するプロセス220があるか否かを判定する。なお、ライブラリ情報1340は、ホストOS100におけるコンテナ200を管理する構成が作成する情報である。
図15は、ライブラリ情報1340の一例を示す図である。
ライブラリ情報1340は、ライブラリ名1341と、コンテナ版数1342とを含む。
ライブラリ名1341は、ライブラリを識別するための情報(例えば、識別子又は名称)である。
コンテナ版数1342は、ライブラリが対応しているコンテナ200の版数である。
例えば、図15の1行目のライブラリ情報1340は、ライブラリsetXが、コンテナ200の版数2.0〜2.8で動作可能であることを示す。
図2を参照した説明に戻る。
ここで、例えば、コンテナ200の版数が、2.5から3.0に更新された場合を想定する。再配置判定部132は、ライブラリ情報1340を基に、コンテナ200の更新の影響を受けるライブラリを判定する。今の場合、ライブラリsetXが、影響を受ける。そこで、再配置判定部132は、影響を受ける環境として、ライブラリsetXを判定する。
さらに、再配置判定部132は、プロセス設計情報1330を基に、setXを参照するプロセス220、つまり影響を受けるプロセス220を判定する。今の場合、影響を受けプロセス220は、プロセスaである。そこで、再配置判定部132は、再配置するプロセス220として、プロセスaを判定する。
なお、上記のコンテナ200の更新は、プロセス220の再配置の判定を開始する情報の一例である。再配置判定部132の判定の開始は、コンテナ200の更新に限る必要はない。例えば、再配置判定部132は、ライブラリの更新時に、同様に動作してもよい。
再配置処理部133は、再配置判定部132において再配置が必要と判定されたプロセス220を、動作可能な環境(例えば、プロセス220に必要なライブラリが実行可能なコンテナ200)を生成する。そして、再配置処理部133は、生成した環境(コンテナ200)に、再配置が必要と判定されたプロセス220を配置する。つまり、再配置処理部133は、適切なコンテナ200に、プロセス220を再配置する。
なお、再配置処理部133は、生成するコンテナ200の数を削減するために、プロセス220の動作に必要と判定された環境(コンテナ200)を検索してもよい。そして、必要とされる環境(コンテナ200)が動作中の場合、再配置処理部133は、その環境(コンテナ200)にプロセス220を再配置してもよい。
配置先判定部134は、再配置判定部132が判定したプロセス220の再配置後に、追加処理が必要か否かを判定する。より詳細には、配置先判定部134は、再配置されたプロセス220が、コンテナ200間をまたぐプロセス間通信が必要か否かを判定する。そして、その判定を基に、配置先判定部134は、そのプロセス220が稼働しているホストOS100及びコンテナ200における追加の処理、つまり、コンテナ接続部120及び仮想メモリアドレス処理部210の起動が必要か否かを判定する。
配置処理部135は、追加の処理が必要と判定された場合に、追加の処理(ホストOS100におけるコンテナ接続部120を起動、及び/又は、コンテナ200における仮想メモリアドレス処理部210の起動)を実行する。つまり、配置処理部135は、コンテナ接続部120に基づく共有メモリ230の共有化の処理を必要とするプロセス220の再配置が発生した場合、次の処理を実行する。コンテナ接続部120が起動していない場合、配置処理部135は、コンテナ接続部120を起動する。さらに、配置処理部135は、対象となるコンテナ200に仮想メモリアドレス処理部210が動作していない場合、仮想メモリアドレス処理部210を起動する。
ただし、情報処理装置10は、コンテナ接続部120を、予め起動していてもよい。この場合、プロセス配置部130は、配置先判定部134及び配置処理部135を含まなくてもよい。
次に、コンテナ接続部120について、図面を参照して説明する。
コンテナ接続部120は、コンテナ200(第1のコンテナ200)のプロセス220が共有メモリ230に書き込むデータを、第1のコンテナ200に対応する物理メモリ300に書き込む。さらに、コンテナ接続部120は、そのデータを、共有メモリ230を共有する別のコンテナ200(第2のコンテナ200)に対応する物理メモリ300に書き込む(転送する)。
そのため、コンテナ接続部120は、少なくとも次に示す情報を用いる。
(1)メモリアドレス対応表1100:メモリアドレス対応表1100は、仮想メモリアドレスと物理メモリアドレスとの対応関係を保存する。メモリアドレス対応表1100は、ホストOS100の仮想メモリ及びコンテナ200を管理する構成が作成する情報である。以下、メモリアドレス対応表1100は、第1の対応関係とも呼ぶ。
(2)物理メモリアドレス対応表1400:物理メモリアドレス対応表1400は、メモリを共有する各コンテナ200のそれぞれの共有メモリ230に対応する物理メモリ300のアドレス(物理メモリアドレス)の対応関係を保存する。物理メモリアドレス対応表1400は、ホストOS100の仮想メモリ及びコンテナ200を管理する構成が作成する情報である。以下、物理メモリアドレス対応表1100は、第2の対応関係とも呼ぶ。
より詳細には、コンテナ接続部120は、次のような動作を実行する。プロセス220が共有メモリ230にデータを書き込む場合、コンテナ接続部120が、書き込むデータと、その仮想メモリアドレスとを受信する。コンテナ接続部120は、メモリアドレス対応表1100を用いて、仮想メモリアドレスに対応する物理メモリ300のアドレス(物理メモリアドレス)を特定する。そして、コンテナ接続部120は、データを物理メモリ300に書き込む。さらに、コンテナ接続部120は、物理メモリアドレス対応表1400を基に、データを書き込んだ物理メモリ300と共有関係にある物理メモリ300のアドレスを算出する。そして、コンテナ接続部120は、算出したアドレスの物理メモリ300にデータを書き込む。
図3は、コンテナ接続部120の構成の一例を示すブロック図である。
コンテナ接続部120は、仮想メモリアドレス受信部121と、物理メモリアドレス特定部122と、物理メモリ共有部123とを含む。
仮想メモリアドレス受信部121は、コンテナ200から、共有メモリ230に書き込むデータと、その仮想メモリアドレスとを受信する。より詳細には、仮想メモリアドレス受信部121は、コンテナ200の仮想メモリアドレス処理部210から、プロセス間通信として使用する共有メモリ230に書き込むデータを受信する。同様に、仮想メモリアドレス受信部121は、データを書き込む仮想メモリアドレスを受信する。なお、仮想メモリアドレス受信部121は、コンテナ200を判別する情報(例えば、識別子又は名称)を受信してもよい。
仮想メモリアドレス受信部121は、受信した情報(データ、仮想メモリアドレス、及び、コンテナ200を判別する情報)を、物理メモリアドレス特定部122に送信する。
物理メモリアドレス特定部122は、コンテナ200に関する情報と、仮想メモリアドレスと、物理メモリアドレスとの対応関係を示すメモリアドレス対応表1100とを基に、データを書き込む物理メモリ300のアドレスを特定する。
図13は、本実施形態に係るメモリアドレス対応表1100の一例を示す図である。
図13に示すメモリアドレス対応表1100は、番号1101と、仮想メモリアドレス1102と、コンテナ1103と、物理メモリアドレス1104とを含む。
番号1101は、メモリアドレス対応表1100の情報の組を識別するための情報(例えば、番号又は識別子)である。図13に示すメモリアドレス対応表1100は、各行が1組の情報となっている。
コンテナ1103は、共有メモリ230を用いるコンテナ200を示す情報(例えば、識別子、又は、名称)である。
仮想メモリアドレス1102は、コンテナ1103に示されるコンテナ200における共有メモリ230の仮想メモリアドレスを示す情報である。
物理メモリアドレス1104は、仮想メモリアドレス1102に対応する物理メモリ300のアドレスである。
例えば、図13の1行目に示すメモリアドレス対応表1100は、コンテナAにおける仮想メモリアドレス4000h−7000hが、物理メモリアドレス10000h−13000hに対応していることを示している。
また、図13の第1行から第3行は、コンテナAが、共有メモリ230として、3つの仮想メモリアドレス1102の範囲と、それに対応した3つの物理メモリアドレス1104の範囲とを用いることを示す。また、第4行目は、コンテナBが、共有メモリ230として、1つの範囲を用いることを示す。
このように、コンテナ200は、共有メモリ230として、1つ又は複数の範囲を含んでもよい。さらに、コンテナ200は、仮想メモリアドレス1102と物理メモリアドレス1104とが、異なる数に分かれた範囲でも良い。例えば、コンテナ200は、共有メモリ230として、1つの範囲の仮想メモリアドレス1102と、2つに範囲に分かれた物理メモリアドレス1104とを用いてもよい。
なお、図13に示すコンテナAのメモリ範囲とコンテナBのメモリ範囲とは、同じ大きさである。このように、共有メモリ230の大きさは、少なくとも、共有メモリ230を共有するコンテナ200において、同じ大きさであることが望ましい。これは、共有メモリ230の管理が容易となるためである。ただし、情報処理装置10は、共有メモリ230の大きさの異なるコンテナ200を含んでもよい。例えば、1つのコンテナ200が、異なる2つのコンテナ200と、それぞれ共有メモリ230を共有する場合、その1つのコンテナ200は、異なる2つのコンテナ200のそれぞれの共有メモリ230を合わせた大きさの共有メモリ230を含んでもよい。
図3を参照した説明に戻る。
物理メモリアドレス特定部122は、特定した物理アドレスとデータとを、物理メモリ共有部123に送信する。
物理メモリ共有部123は、特定された物理メモリのアドレスを用いて、第1のコンテナ200の共有メモリ230に対応する物理メモリ300に、データを書き込む。
さらに、物理メモリ共有部123は、物理メモリ300に書き込んだデータを、物理メモリアドレス対応表1400を基に、第2のコンテナ200の共有メモリ230に対応する物理メモリ300に書き込む。
図14は、第1の実施形態に係る物理メモリアドレス対応表1400の一例を示す図である。
物理メモリアドレス対応表1400は、番号1401と、コンテナ1402と、物理メモリアドレス1403と、コンテナ1404と、物理メモリアドレス1405とを含む。
番号1401は、物理メモリアドレス対応表1400の情報の組を識別するための情報(例えば、番号又は識別子)である。図14に示す物理メモリアドレス対応表1400は、各行が1組の情報となっている。
コンテナ1402及びコンテナ1404は、共有メモリ230を共有するコンテナ200を示す情報である。
物理メモリアドレス1403及び物理メモリアドレス1405は、それぞれ、コンテナ1402及びコンテナ1404の共有メモリ230として用いられている物理メモリ300のアドレスを示す。
例えば、図14の1行目に示す物理メモリアドレス対応表1400は、コンテナA及びコンテナBが、共有メモリ230を共有することを示す。さらに、1行目に示す物理メモリアドレス対応表1400は、コンテナA及びコンテナBが、それぞれの物理メモリ300のアドレスが、「1000h−1300h」及び「33000h−36000h」であることを示す。例えば、物理メモリ300のアドレス「1000h」は、アドレス「33000h」に対応している。つまり、物理メモリ共有部123は、物理メモリ300のアドレス「1000h」のデータを書き込む場合、アドレス「33000h」にも同じデータを書き込む。
このような動作を基に、コンテナ接続部120は、プロセス間通信として共有メモリ230を共有する各プロセス220における、共有メモリ230に対応する物理メモリ300に、同じデータを書き込む。その結果、異なるコンテナ200で動作するプロセス220は、共有メモリ230を用いたプロセス間通信を実現できる。
[動作の説明]
次に、図面を参照して、本実施形態に係る情報処理装置10の動作について説明する。
次に、図面を参照して、本実施形態に係る情報処理装置10の動作について説明する。
なお、以下の説明において、情報処理装置10は、構成情報1320、更新前のコンテナ情報1310、プロセス設計情報1330、ライブラリ情報1340、メモリアドレス対応表1100、及び、物理メモリアドレス対応表1400を保存済みとする。また、コンテナ200における共有メモリ230の作成は、一般的なコンテナ200における処理と同様である。そのため、共有メモリ230は、作成(確保)済みとする。
まず、情報処理装置10におけるプロセス220の再配置、つまり、プロセス配置部130の動作について、図4を参照して説明する。
図4は、プロセス配置部130の動作の一例を示すフローチャートである。
なお、ライブラリの改版(バージョンアップ)など、プロセス220の移動の要因は、本実施形態に係る構成とは異なる構成に基づいて発生させられる。つまり、本実施形態の情報処理装置10は、図示しない装置等の動作を基に、以下で説明する動作を実現する。そのため、以下の説明は、プロセス220の移動の要因が発生し、再配置の判定を開始する情報が、受信されたものとして説明する。
まず、プロセス配置部130の情報受信部131は、コンテナ200に関するする情報(コンテナ情報1310とプロセス設計情報1330)を受信する(ステップS402)。ここで、情報受信部131における情報の受信は、特に制限はない。例えば、情報処理装置10の利用者が、プロセス220のコンテナ200間での移動に伴い、図示しない入力機器を操作して、情報受信部131に通知を送信してもよい。構成情報1320は、上記のとおり、予め、情報処理装置10に保存されている。
次に、再配置判定部132は、コンテナ情報1310、プロセス設計情報1330、及び、構成情報1320を基に、コンテナ200の配置の変更(再配置)が必要なプロセス220が存在するか否か判断する(ステップS403)。
さらに、再配置判定部132の詳細な動作について、図面を参照して説明する。
図6は、第1の実施形態に係る再配置判定部132の動作の一例を示すフローチャートである。
再配置判定部132は、情報受信部131が受信したコンテナ情報1310と、構成情報1320とを基に、更新された環境(例えば、コンテナ200のライブラリ)を判定する。そして、再配置判定部132は、更新されたコンテナ200で稼動するプロセス220を判定する(ステップS601)。再配置判定部132は、この判定に、図9に示すコンテナ情報1310と、図11に示す構成情報1320とを用いてもよい。
再配置判定部132は、判定されたプロセス220のプロセス設計情報1330を基に、そのプロセス220の稼動に必要な環境(例えば、コンテナ200のライブラリ)を判定する(ステップS602)。再配置判定部132は、この判定に、図10に示すプロセス設計情報1330を用いてもよい。
再配置判定部132は、プロセス220が、現在の環境で稼働可能か否かを判定する(ステップS603)。再配置判定部132は、例えば、プロセス220の稼動に必要なライブラリの版数と、コンテナ200で稼働可能なライブラリの版数とを比較する。
プロセス220が稼働可能の場合場合(ステップS603のYes)、情報処理装置10は、処理を終了する。
プロセス220が稼動できない場合(ステップS603のNo)、再配置判定部132は、判定したプロセス220に関する情報を、再配置処理部133に送信する(ステップS604)。
図4を参照した説明に戻る。
上記のとおり、再配置が必要なプロセス220がない場合(ステップS403のNo)、情報処理装置10は、処理を終了する。
一方、再配置が必要なプロセス220がある場合(ステップS403のYes)、再配置処理部133は、再配置が必要と判断されたプロセス220が稼動可能な環境(例えば、コンテナ200)を起動する(ステップS405)。なお、コンテナ200の起動は、コンテナ200の配置と呼ぶ場合もある。
また、既に説明した通り、情報処理装置10は、起動済みのコンテナ200の中から、プロセス220が稼働可能なコンテナ200を検索してもよい。そして、既にコンテナ200が稼働中に場合、情報処理装置10は、起動の処理を省略してもよい。ただし、情報処理装置10は、検索せずに、コンテナ200を起動してもよい。
次に、再配置処理部133は、ステップS405で起動(配置)又は検索したコンテナ200に、ステップS503で再配置が必要と判定されたプロセス220を配置(再配置)する(ステップS406)。
次に、配置先判定部134は、プロセス220の再配置に伴い、コンテナ接続部120の起動等の追加の処理が必要か否かを判定する(ステップS407)。
より具体的には、配置先判定部134は、再配置判定部132が判定してプロセス220が、共有メモリ230を用いるか、ホストOS100を移動したか、及び、コンテナ200を移動したかを判定する。そして、配置先判定部134は、その判定を基に、コンテナ接続部120、及び/又は、仮想メモリアドレス処理部210の起動が必要か否かを判定する。
例えば、それまで、コンテナ200間における共有メモリ230の共有化が必要ない状態から必要となる状態に変化した場合、コンテナ接続部120と仮想メモリアドレス処理部210の起動が必要である。そこで、このような場合、配置先判定部134は、ホストOS100におけるコンテナ接続部120及び仮想メモリアドレス処理部210の起動が必要、つまり、設定の処理が必要と判定する。
あるいは、コンテナ接続部120及び仮想メモリアドレス処理部210の起動後に、新たに共有メモリ230の共有が必要となるコンテナ200が生成された場合、生成されたコンテナ200において、仮想メモリアドレス処理部210の起動が必要となる。また、コンテナ接続部120は、新たなコンテナ200に対応した動作が必要となる場合もある。そこで、このような場合、再配置処理部133は、仮想メモリアドレス処理部210の起動、及び、コンテナ接続部120の設定変更が必要と判定する。
つまり、配置先判定部134は、共有化のために、コンテナ接続部120及び仮想メモリアドレス処理部210の起動及び/又は設定変更が必要か否かを判定する。あるいは、配置先判定部134は、共有メモリ230の共有化のための処理の起動又は変更が必要か否かを判定する。以下、コンテナ接続部120の起動、仮想メモリアドレス処理部210の起動、及び、コンテナ接続部120の設定変更をまとめて「環境の再配置」と呼ぶ。
次に、配置先判定部134の動作について、図面を参照してさらに説明する。
図7は、配置先判定部134の動作の一例を示すフローチャートである。
まず、配置先判定部134は、再配置されたプロセス220が共有メモリ230を用いるか否かを判定する(ステップS701)。配置先判定部134は、例えば、図10に示すプロセス設計情報1330を用いて判定すればよい。
共有メモリ230を用いない場合(ステップS701でNo)、情報処理装置10は、処理を終了する。
共有メモリ230を用いる場合(ステップS701でYes)、配置先判定部134は、再配置されたプロセス220が、コンテナ200を移動したか否かを判定する(ステップS703)。
コンテナ200を移動していない場合(ステップS703でNo)、情報処理装置10は、処理を終了する。
コンテナ200を移動した場合(ステップS703でYes)、配置先判定部134は、再配置が必要か否かを判定する(ステップS704)。
再配置が不要の場合(ステップS704でNo)、情報処理装置10は、処理を終了する。
再配置が必要な場合(ステップS704でYes)、配置先判定部134は、配置処理部135に、仮想メモリアドレス処理部210及びコンテナ接続部120の再配置、つまり、環境の再配置を指示する(ステップS705)。再配置後、情報処理装置10は、処理を終了する。
図4を参照した説明に戻る。
上記のとおり、再配置が不要の場合(ステップS407のNo)、情報処理装置10は、処理を終了する。
一方、再配置が必要な場合(ステップS407のYes)、配置処理部135は、コンテナ接続部120及び仮想メモリアドレス処理部210を、再配置(つまり、起動(配置)又は設定変更)を実行する(ステップS409)。そして、情報処理装置10は、処理を終了する。
次に、異なるコンテナ200で稼働するプロセス220が、共有メモリ230を用いたプロセス間通信を実現する動作、つまり、コンテナ接続部120の動作ついて、図5を参照して説明する。
図5は、コンテナ接続部120の動作の一例を示すフローチャートである。
なお、以下の説明において、対応情報(メモリアドレス対応表1110など)は、作成済みとする。
コンテナ接続部120の仮想メモリアドレス受信部121は、仮想メモリアドレス処理部210から共有メモリ230のデータと、その仮想メモリアドレスと、第1のコンテナ200に関する情報とを受信する(ステップS501)。
物理メモリアドレス特定部122は、第1のコンテナ200に関する情報と、仮想メモリアドレスと、メモリアドレス対応表1110とを基に、プロセス220が使用する共有メモリ230の物理メモリアドレスを特定する(ステップS503)。
図13に示すメモリアドレス対応表1100を参照して、物理メモリアドレス特定部122の動作について、より詳細に説明する。
例えば、第1のコンテナ200は、コンテナAとし、仮想メモリアドレスが、0100hとする。この場合、物理メモリアドレス特定部122は、仮想メモリアドレス対応表1100の1行目を基に、仮想メモリアドレス“0100h”に対応する物理メモリ300のアドレス“10100h”を特定する。なお、仮想メモリアドレスは、1つのアドレスではなく範囲でもよい。
物理メモリ共有部123は、特定された物理メモリ300のアドレスを基に、プロセス220の共有メモリ230間のデータを処理する(ステップS504)。
具体的には、物理メモリ共有部123は、例えば、次のように動作する。
物理メモリ共有部123は、第1のコンテナ200の共有メモリ230に対応する物理メモリ300にデータを書き込む。そして、物理メモリ共有部123は、物理メモリアドレス対応表1400を基に、第1のコンテナ200の物理メモリ300のアドレスに対応する第2のコンテナ200の物理メモリのアドレスを特定する。そして、物理メモリ共有部123は、特定した第2のコンテナ200に対応する物理メモリ300のアドレスに、同じデータを書き込む。
例えば、物理メモリ共有部123は、第1のコンテナ200に対応する物理メモリ300のアドレス10100hにデータが書き込んだ場合、第2のコンテナに対応する物理メモリ300のアドレス33100hに、同じデータを書き込む。
なお、情報処理装置10は、2つを超えた数のコンテナ200が、共有メモリ230を共有してもよい。その場合、物理メモリアドレス特定部122は、2つを超えた数の物理メモリ300の対応関係(物理メモリアドレス対応表1400)を基に、2つを超えた数の物理メモリ300のアドレスにデータを書き込めばよい。
次に、物理メモリ共有部123の動作の詳細について、図面を参照して説明する。
図8は、物理メモリ共有部123の書き込み動作の一例を示すフローチャートである。
物理メモリ共有部123は、共有メモリ230に書き込むデータを受信する(ステップS801)。
物理メモリ共有部123は、受信したデータを、第1のコンテナ200に対応する物理メモリ300に書き込む(ステップS802)。
次に、物理メモリ共有部123は、共有メモリ230を共有する第2のプロセス220に対応する物理メモリ300のアドレスを取得する(ステップ803)。
物理メモリ共有部123は、取得した物理メモリ300のアドレス、つまり第2のコンテナに対応する物理メモリ300にデータを書き込む(ステップS804)。
そして、情報処理装置10は、データを共有化するための書き込み動作を終了する。
このような動作を基に、情報処理装置10は、各コンテナ200に対応する物理メモリ300に、同じデータを保存する。そのため、データの読み出しにおいて、情報処理装置10は、一般的な仮想メモリの処理を用いて物理メモリからデータを読み出せばよい。この動作は、一般的な仮想アドレスと物理メモリアドレスとの変換処理と同様の動作である。
つまり、情報処理装置10は、共有メモリ230からの読み出しの処理に変更を必要としない。
(効果の説明)
次に、本実施形態の効果について説明する。
次に、本実施形態の効果について説明する。
このように、本実施形態は、プロセス間通信に関する部分を改造しなくても、複数の実行環境で動作するプロセス220における共有メモリ230を用いたプロセス間通信を実現するとの効果を奏することができる。
その理由は、次のとおりである。
コンテナ200で動作する仮想メモリアドレス処理部210が、プロセス220で共有化する共有メモリ230の仮想メモリアドレスをホストOS100に通知する。
そして、ホストOS100のコンテナ接続部120が、複数のコンテナ200における共有メモリ230の仮想メモリアドレスと物理メモリ300のアドレスとの対応関係を判定する。そして、コンテナ接続部120が、対応関係を基に、いずれかのコンテナ200の共有メモリ230に対応する物理メモリ300に書き込まれたデータを、他のコンテナ200の共有メモリ230に対応する物理メモリ300に書き込むためである。つまり、本実施形態は、複数の実行環境(例えば、コンテナ200)で動作するプロセス220における共有メモリ230を用いたプロセス間通信を実現する。
また、プロセス配置部130が、環境の変化(例えば、プロセス220の更新)を基に、必要となる環境の起動(配置)及びプロセス220の再配置を実行する。そして、プロセス配置部130が、必要なコンテナ接続部120及び仮想メモリアドレス処理部210を起動する。
さらに、コンテナ接続部120は、ホストOS100に追加するモジュールとして作成可能である。そのため、ホストOS100は、改造が必要ではない。
また、仮想メモリアドレス処理部210は、コンテナ200に追加するモジュールとして作成可能である。そのため、コンテナ200は、改造が必要ではない。このように、本実施形態は、プロセス間通信に関する部分を改造しなくても、上記機能を実現する。
[変形例1]
以上の説明した情報処理装置10は、次のように構成される。
以上の説明した情報処理装置10は、次のように構成される。
例えば、情報処理装置10の各構成部は、ハードウェア回路で構成されても良い。
また、情報処理装置10は、各構成部が、ネットワークを介して接続した複数の装置を用いて、構成されても良い。
また、情報処理装置10は、複数の構成部を1つのハードウェアで構成しても良い。
また、情報処理装置10は、CPU(Central Processing Unit)と、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータ装置として実現してもよい。情報処理装置10は、上記構成に加え、さらに、入出力接続回路(IOC:Input / Output Circuit)と、ネットワークインターフェース回路(NIC:Network Interface Circuit)とを含むコンピュータ装置として実現しても良い。
図16は、本変形例に係る情報処理装置600の構成の一例を示すブロック図である。
情報処理装置600は、CPU610と、ROM620と、RAM630と、内部記憶装置640と、IOC650と、NIC680とを含み、コンピュータ装置を構成している。
CPU610は、ROM620からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、RAM630と、内部記憶装置640と、IOC650と、NIC680とを制御する。そして、CPU610を含むコンピュータは、これらの構成を制御し、図1に示す、ホストOS100と、コンテナ200としての各機能を実現する。より詳細には、CPU610を含むコンピュータは、上記の構成を制御し、一般的なホストOS100及びコンテナ200としての機能に加え、仮想メモリアドレス処理部210と、コンテナ接続部120と、プロセス配置部130としての各機能を実現する。
CPU610は、各機能を実現する際に、RAM630又は内部記憶装置640を、プログラムの一時記憶として使用しても良い。
また、CPU610は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体700が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでも良い。あるいは、CPU610は、NIC680を介して、図示しない外部の装置からプログラムを受け取り、RAM630に保存して、保存したプログラムを基に動作しても良い。
ROM620は、CPU610が実行するプログラム及び固定的なデータを記憶する。ROM620は、例えば、P−ROM(Programmable-ROM)又はフラッシュROMである。
RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。RAM630は、例えば、D−RAM(Dynamic-RAM)である。RAM630は、物理メモリ300の少なくとも一部として動作する。
内部記憶装置640は、情報処理装置600が長期的に保存するデータ及びプログラムを記憶する。また、内部記憶装置640は、CPU610の一時記憶装置として動作しても良い。内部記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、SSD(Solid State Drive)又はディスクアレイ装置である。内部記憶装置640は、物理メモリ300の一部として動作してもよい。
ここで、ROM620と内部記憶装置640は、不揮発性(non-transitory)の記憶媒体である。一方、RAM630は、揮発性(transitory)の記憶媒体である。そして、CPU610は、ROM620、内部記憶装置640、又は、RAM630に記憶されているプログラムを基に動作可能である。つまり、CPU610は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
IOC650は、CPU610と、入力機器660及び表示機器670とのデータを仲介する。IOC650は、例えば、IOインターフェースカード又はUSB(Universal Serial Bus)カードである。
入力機器660は、情報処理装置600の操作者からの入力指示を受け取る機器である。入力機器660は、例えば、キーボード、マウス又はタッチパネルである。
表示機器670は、情報処理装置600の操作者に情報を表示する機器である。表示機器670は、例えば、液晶ディスプレイである。
NIC680は、ネットワークを介した図示しない外部の装置とのデータのやり取りを中継する。NIC680は、例えば、LAN(Local Area Network)カードである。
このように構成された情報処理装置600は、情報処理装置10と同様の効果を得ることができる。
その理由は、情報処理装置600のCPU610が、プログラムに基づいて情報処理装置10と同様の機能を実現できるためである。
[変形例2]
なお、プロセス配置部130は、プロセス220の移動が必要な場合に動作すればよい。そのため、プロセス220の再配置後は、情報処理装置10は、プロセス配置部130の動作を停止してもよい。つまり、情報処理装置10は、プロセス220の再配置の判定を開始する情報を受信した時に、プロセス配置部130を起動してもよい。あるいは、情報処理装置10は、図示しないネットワークを介して接続する装置で動作するプロセス配置部130を基に、プロセス220を再配置してもよい。
なお、プロセス配置部130は、プロセス220の移動が必要な場合に動作すればよい。そのため、プロセス220の再配置後は、情報処理装置10は、プロセス配置部130の動作を停止してもよい。つまり、情報処理装置10は、プロセス220の再配置の判定を開始する情報を受信した時に、プロセス配置部130を起動してもよい。あるいは、情報処理装置10は、図示しないネットワークを介して接続する装置で動作するプロセス配置部130を基に、プロセス220を再配置してもよい。
図17は、プロセス220の異動後にプロセス配置部130の動作を停止した情報処理装置12の構成の一例を示すブロック図である。
この場合でも、図17に示す情報処理装置12は、情報処理装置10と同様に、プロセス間通信に関する部分の改造を必要としないで、複数の実行環境で動作するプロセスにおける共有メモリ230を用いたプロセス間通信を実現するとの効果を奏する。
その理由は、コンテナ接続部120と仮想メモリアドレス処理部210とが、既に説明した動作を基に、プロセス220における共有メモリ230を用いたプロセス間通信を実現できるためである。
なお、図17に示す情報処理装置12は、本実施形態の最小構成である。つまり、図17は、第1の実施形態に係る情報処理装置10の要部の構成の一例を示すブロック図である。
<第2の実施形態>
本発明における実施形態は、1つの装置内のコンテナ200に限らず、異なる装置で動作するコンテナ200間においても、共有メモリ230を共有してもよい。そこで、第2の実施形態として、共有メモリ230を複数の装置間で共有する場合について説明する。
本発明における実施形態は、1つの装置内のコンテナ200に限らず、異なる装置で動作するコンテナ200間においても、共有メモリ230を共有してもよい。そこで、第2の実施形態として、共有メモリ230を複数の装置間で共有する場合について説明する。
(構成の説明)
図18は、第2の実施形態に係る情報処理システム20の構成の一例を示すブロック図である。
図18は、第2の実施形態に係る情報処理システム20の構成の一例を示すブロック図である。
情報処理システム20は、複数の情報処理装置11を含む。ここで、情報処理システム20は、2台を超える情報処理装置11を含んでもよい。図18は、一例として、情報処理装置11が2台の場合を示している。以下の説明も、説明を明確にするため、図18に示すように、2台の情報処理装置11を含む情報処理システム20を用いて説明する。
情報処理装置11は、コンテナ200と、ホストOS400と、物理メモリ300とを含む。情報処理装置11は、第1の実施形態と同様に、図16に示されるコンピュータ装置を用いて実現されてもよい。
コンテナ200及び物理メモリ300は、第1の実施形態と同様のため、詳細な説明を省略する。
ホストOS400は、コンテナ接続部420と、プロセス配置部430とを含む。コンテナ接続部420は、第1の実施形態に係るコンテナ接続部120の動作に加え、情報処理装置11間における共有に関連する処理を実行する。また、プロセス配置部430は、第1の実施形態に係るプロセス配置部130の動作に加え、情報処理装置11間におけるプロセス220の配置に関する処理を実行する。そのため、第1の実施形態と同様の動作の説明を省略し、本実施形態に特有の構成及び動作を中心に説明する。
図19は、本実施形態に係るプロセス配置部430の構成の一例を示すブロック図である。
プロセス配置部430は、第1の実施形態のプロセス配置部130と比べ、再配置判定部132及び再配置処理部133に換えて、再配置判定部432及び再配置処理部433を含む。さらに、プロセス配置部430は、版数確認部436と、プロセス通信部437とを含む。
配置先判定部134及び配置処理部135は、第1の実施形態と同様のため、詳細な説明を省略する。
再配置判定部432は、第1の実施形態に係る再配置判定部132の動作に加え、プロセス220を配置するコンテナ200の対象として、他の情報処理装置11を含めて判定する。つまり、再配置判定部432は、判定に、自装置と他の情報処理装置11とのホストOS400の版数を用いる。そのため、再配置判定部432は、版数確認部436から、ホストOS400の版数を取得する。なお、情報処理装置11において複数のホストOS100が動作する場合、再配置判定部432は、版数確認部436から、自装置で動作するホストOS400の版数を取得してもよい。
再配置処理部433は、第1の実施形態の再配置処理部133の動作に加え、再配置判定部432の判定結果であるプロセス220の再配置先の環境が、他の情報処理装置11の場合の動作を実行する。より具体的には、再配置処理部433は、プロセス220を他の情報処理装置11で動作する環境(コンテナ200)に再配置する場合、プロセス通信部437を介して、他の情報処理装置11の再配置処理部433に、プロセス220の再配置を依頼する。また、再配置処理部433は、プロセス通信部437を介して、他の情報処理装置11の再配置処理部433からプロセス220の再配置の依頼を受けた場合、第1の実施形態の同様の動作を基に、自装置におけるプロセス220を再配置に関する処理を実行する。
図21は、プロセス220の再配置を示すプロセス再配置情報3810の一例を示す図である。再配置処理部433が、再配置に際して、プロセス再配置情報3810を作成する。
プロセス再配置情報3810は、番号3811と、再配置プロレス3812と、再配置元OS3813と、再配置元コンテナ3814と、再配置先装置3815と、再配置先OS3816と、再配置先コンテナ3817と、ライブラリ3818とを含む。
番号3811は、プロセス再配置情報3810の情報の組を識別するための情報(例えば、番号又は識別子)である。図21に示すプロセス再配置情報3810は、各行が1つの情報の組となっている。
再配置プロセス3812は、再配置されたプロセス220を示す情報(例えば、識別子又は名称)である。
再配置元OS3813は、再配置されたプロセス220が、再配置の前に動作していたホストOS400を示す情報(例えば、識別子又は名称)である。
再配置元コンテナ3814は、再配置されたプロセス220が、再配置の前に動作していたコンテナ200を示す情報(例えば、識別子又は名称)である。
再配置先装置3815は、再配置されたプロセス220が、再配置された装置を示す情報(例えば、識別子、名称、又は、アドレス)である。
再配置先OS3816は、再配置されたプロセス220が、再配置の後に動作しているホストOS400を示す情報(例えば、識別子又は名称)である。
再配置先コンテナ3817は、再配置されたプロセス220が、再配置の後に動作しているコンテナ200を示す情報(例えば、識別子又は名称)である。
ライブラリ3818は、再配置されたプロセス220が用いるライブラリを示す情報(例えば、識別子又は名称)である。
例えば、図21に示す1行目のプロセス再配置情報3810は、OS1のコンテナAで動作していたプロセスaが、DEV2で動作するOS2のコンテナXに再配置されたことを示す。そして、1行目のプロセス再配置情報3810は、再配置されたプロセスaが、ライブラリsetXを用いることを示す。
図22は、複数のホストOS400における共有を示すプロセス設計情報3820の一例を示す図である。再配置処理部433が、再配置に際して、プロセス設計情報3820を作成する。
図22に示すプロセス設計情報3820は、番号3821と、通信元プロセス3822と、通信元OS3823と、通信元コンテナ3824とを含む。さらに、プロセス設計情報3820は、通信先プロセス3825と、通信先装置3826と、通信先OS3827と、通信先コンテナ3828と、共有メモリ作成鍵3829とを含む。
番号3821は、プロセス設計情報3820の情報の組を識別するための情報(例えば、番号又は識別子)である。図22に示すプロセス設計情報3820は、各行が1つの情報の組となっている。
通信元プロセス3822は、共有メモリ230を用いてデータを通信する通信元のプロセス220を示す情報(例えば、識別子又は名称)である。
通信元OS3823は、通信元のプロセス220が動作するホストOS400を示す情報(例えば、識別子又は名称)である。
通信元コンテナ3824は、通信元のプロセス220が動作するコンテナ200を示す情報(例えば、識別子又は名称)である。
通信先プロセス3825は、通信元のプロセス220と通信する通信先のプロセス220を示す情報(例えば、識別子又は名称)である。
通信先装置3826は、通信先のプロセス220が動作する装置を示す情報(例えば、識別子、名称、又は、アドレス)である。
通信先OS3827は、通信先のプロセス220が動作するホストOS400を示す情報(例えば、識別子又は名称)である。
通信先コンテナ3828は、通信先のプロセス220が動作するコンテナ200を示す情報(例えば、識別子又は名称)である。
共有メモリ作成鍵3829は、通信元のプロセス220が、共有メモリ230を利用する場合に用いる共有鍵を示す情報(例えば、鍵の値)である。
例えば、図22の1行目に示すプロセス設計情報3820は、ホストOS1上のコンテナAで動作するプロセスaは、装置DEV2で動作するホストOS2上のコンテナBに含まれるプロセスbと共有メモリ230を用いて通信すること示す。さらに、1行目に示すプロセス設計情報3820は、プロセスaが、この処理に共有メモリ作成鍵「3647afcd3531」を用いることを示す。
図19を参照した説明に戻る。
版数確認部436は、ホストOS400の版数を確認する。版数確認部436は、自装置のホストOS400の版数を確認する場合、ホストOS400の機能を用いる。また、版数確認部436は、他の情報処理装置11のホストOS400の版数を確認する場合は、プロセス通信部437を介して、他の情報処理装置11の版数確認部436に版数の確認を依頼する。また、版数確認部436は、プロセス通信部437を介して、他の情報処理装置11の版数確認部436からホストOS400の版数の確認の依頼を受信した場合、ホストOS400の版数を返信する。
図23は、ホストOS400の版数情報3830の一例を示す図である。版数確認部436が、版数を確認する際に、版数情報3830を作成する。なお、版数確認部436は、版数情報3830を作成後は、作成した版数確認情報3930を用いてもよい。
図23に示す版数情報3830は、番号3831と、ホストOS3832と、版数3833と含む。
番号3831は、版数情報3830の情報の組を識別するための情報(例えば、番号又は識別子)である。図23に示す版数情報3830は、各行が1つの情報の組となっている。
ホストOS3832は、情報の組のホストOS400を示す情報(例えば、識別子又は名称)である。
版数3833は、ホストOS400の版数である。なお、版数3833は、情報処理装置11が再配置を判定するために用いる版数である。例えば、版数3833は、プロセス220が用いるライブラリの互換性を判定するための版数である。版数3833の一例は、ホストOS400の基本部分であるカーネルの版数である。
例えば、図23に示す1行目の版数情報3830は、ホストOS400の名称が「OS1」であり、その版数が、「3.18」であることを示す。
図19を参照した説明に戻る。
プロセス通信部437は、他の情報処理装置11との上記の通信を仲介する。
図20は、本実施形態に係るコンテナ接続部420の構成の一例を示すブロック図である。
コンテナ接続部420は、第1の実施形態のコンテナ接続部120と比べ、物理メモリ共有部123に換えて物理メモリ共有部423を含む。さらに、コンテナ接続部420は、データ通信部424を含む。
仮想メモリアドレス受信部121及び物理メモリアドレス特定部122は、第1の実施形態と同様のため、詳細な説明を省略する。
物理メモリ共有部423は、第1の実施形態に係る物理メモリ共有部423の動作に加え、データ通信部424を介して、他の情報処理装置11の物理メモリ共有部423との協調動作を実行する。
より具体的には、物理メモリ共有部423は、次のような動作を実行する。
プロセス220が、他の情報処理装置11と共有メモリ230を共有する場合、物理メモリ共有部423は、データ通信部424を介して、他の情報処理装置11の物理メモリ共有部423に共有するデータとその仮想メモリアドレスとを送信する。つまり、物理メモリ共有部423は、他の情報処理装置11に、物理メモリ300へのデータの書き込みを依頼する。
また、物理メモリ共有部423は、データ通信部424を介して、他の情報処理装置11の物理メモリ共有部423からデータと、その仮想メモリアドレスを受信した場合、共有メモリ230に対応する物理メモリ300にデータを書き込む。
データ通信部424は、物理メモリ共有部423におけるデータの送信及び受信を中継する。
このように、本実施形態は、第1の実施形態の効果に加え、異なる装置におけるコンテナ200で動作するプロセス220においても、共有メモリ230を用いたプロセス間通信を実現するとの効果を得ることができる。
その理由は、次のとおりである。
プロセス配置部430は、第1の実施形態の動作に加え、他の情報処理装置11にも、プロセス220を再配置する。そして、コンテナ接続部420は、他の情報処理装置11のコンテナ接続部420と協調して、共有メモリ230のデータをそれぞれが管理する物理メモリ300に保存するためである。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
データを記憶する物理メモリと、
他のプロセスとデータを共有する複数のプロセスと、
複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、
共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナと、
複数のコンテナに含まれる共有メモリの仮想メモリアドレスと物理メモリのアドレスとの対応である第1の対応関係と、複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、
いずれかコンテナに含まれる仮想メモリアドレス処理手段から書き込みデータとデータを書き込む共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、仮想メモリアドレスに対応する第1の物理メモリのアドレスに受信したデータを書き込み、
第2の対応関係を基に、第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、第2の物理メモリのアドレスに受信したデータを書き込むコンテナ接続手段を含むホストOSと
を含む情報処理装置。
データを記憶する物理メモリと、
他のプロセスとデータを共有する複数のプロセスと、
複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、
共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナと、
複数のコンテナに含まれる共有メモリの仮想メモリアドレスと物理メモリのアドレスとの対応である第1の対応関係と、複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、
いずれかコンテナに含まれる仮想メモリアドレス処理手段から書き込みデータとデータを書き込む共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、仮想メモリアドレスに対応する第1の物理メモリのアドレスに受信したデータを書き込み、
第2の対応関係を基に、第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、第2の物理メモリのアドレスに受信したデータを書き込むコンテナ接続手段を含むホストOSと
を含む情報処理装置。
(付記2)
ホストOSが
コンテナからプロセス及びコンテナに関連する情報を受信する情報受信手段と、
情報を基に含まれているコンテナの再配置が必要なプロセスを判定する再配置判定手段と、
再配置が必要と判定されたプロセスを動作可能な環境に再配置する再配置処理手段と、
プロセスの再配置後にプロセスのための環境の再配置が必要か否かを判定する配置先判定手段と、
配置先判定手段においてコンテナ接続手段の再配置が必要と判定された場合に、環境を再配置する配置処理手段と
を含むプロセス配置手段をさらに含む
付記1に記載の情報処理装置。
ホストOSが
コンテナからプロセス及びコンテナに関連する情報を受信する情報受信手段と、
情報を基に含まれているコンテナの再配置が必要なプロセスを判定する再配置判定手段と、
再配置が必要と判定されたプロセスを動作可能な環境に再配置する再配置処理手段と、
プロセスの再配置後にプロセスのための環境の再配置が必要か否かを判定する配置先判定手段と、
配置先判定手段においてコンテナ接続手段の再配置が必要と判定された場合に、環境を再配置する配置処理手段と
を含むプロセス配置手段をさらに含む
付記1に記載の情報処理装置。
(付記3)
コンテナ接続手段が、
他の装置とデータを通信するデータ通信手段をさらに含み、
第2の物理メモリのアドレスが、他の装置の物理メモリの場合、データ通信手段を介して、他の装置にデータを送信して、他の装置に送信したデータの第2の物理メモリへの書き込みを依頼する
付記1又は2に記載の情報処理装置。
コンテナ接続手段が、
他の装置とデータを通信するデータ通信手段をさらに含み、
第2の物理メモリのアドレスが、他の装置の物理メモリの場合、データ通信手段を介して、他の装置にデータを送信して、他の装置に送信したデータの第2の物理メモリへの書き込みを依頼する
付記1又は2に記載の情報処理装置。
(付記4)
プロセス配置手段が、
ホストOSの版数を確認する版数確認手段と、
他の装置に通信するプロセス通信手段とをさらに含み、
版数確認手段が、プロセス通信手段を介して、他の装置のホストOSの版数を確認し、
再配置判定手段が、版数確認手段が確認したホストOSの版数を用いて再配置を判定し、
再配置判定手段が、再配置が必要と判定されたプロセスの再配置先が他の装置の場合、プロセス通信手段を介して、他の装置にプロセスの再配置を依頼する
付記3に記載の情報処理装置。
プロセス配置手段が、
ホストOSの版数を確認する版数確認手段と、
他の装置に通信するプロセス通信手段とをさらに含み、
版数確認手段が、プロセス通信手段を介して、他の装置のホストOSの版数を確認し、
再配置判定手段が、版数確認手段が確認したホストOSの版数を用いて再配置を判定し、
再配置判定手段が、再配置が必要と判定されたプロセスの再配置先が他の装置の場合、プロセス通信手段を介して、他の装置にプロセスの再配置を依頼する
付記3に記載の情報処理装置。
(付記5)
データを記憶する物理メモリと、
他のプロセスとデータを共有する複数のプロセスと、
複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、
共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナとを含む情報処理装置において、
複数のコンテナに含まれる共有メモリの仮想メモリアドレスと物理メモリのアドレスとの対応である第1の対応関係と、複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、
いずれかコンテナに含まれる仮想メモリアドレス処理手段から書き込みデータとデータを書き込む共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、仮想メモリアドレスに対応する第1の物理メモリのアドレスに受信したデータを書き込み、
第2の対応関係を基に、第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、第2の物理メモリのアドレスに受信したデータを書き込む
情報処理方法。
データを記憶する物理メモリと、
他のプロセスとデータを共有する複数のプロセスと、
複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、
共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナとを含む情報処理装置において、
複数のコンテナに含まれる共有メモリの仮想メモリアドレスと物理メモリのアドレスとの対応である第1の対応関係と、複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、
いずれかコンテナに含まれる仮想メモリアドレス処理手段から書き込みデータとデータを書き込む共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、仮想メモリアドレスに対応する第1の物理メモリのアドレスに受信したデータを書き込み、
第2の対応関係を基に、第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、第2の物理メモリのアドレスに受信したデータを書き込む
情報処理方法。
(付記6)
データを記憶する物理メモリと、
他のプロセスとデータを共有する複数のプロセスと、
複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、
共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナとを含むコンピュータにおいて、
複数のコンテナに含まれる共有メモリの仮想メモリアドレスと物理メモリのアドレスとの対応である第1の対応関係と、複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、
いずれかコンテナに含まれる仮想メモリアドレス処理手段から書き込みデータとデータを書き込む共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、仮想メモリアドレスに対応する第1の物理メモリのアドレスに受信したデータを書き込む処理と、
第2の対応関係を基に、第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、第2の物理メモリのアドレスに受信したデータを書き込む処理と
をコンピュータに実行させるプログラム。
データを記憶する物理メモリと、
他のプロセスとデータを共有する複数のプロセスと、
複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、
共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナとを含むコンピュータにおいて、
複数のコンテナに含まれる共有メモリの仮想メモリアドレスと物理メモリのアドレスとの対応である第1の対応関係と、複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、
いずれかコンテナに含まれる仮想メモリアドレス処理手段から書き込みデータとデータを書き込む共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、仮想メモリアドレスに対応する第1の物理メモリのアドレスに受信したデータを書き込む処理と、
第2の対応関係を基に、第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、第2の物理メモリのアドレスに受信したデータを書き込む処理と
をコンピュータに実行させるプログラム。
(付記7)
複数の付記3又は4に記載の情報処理装置を含む情報処理システム。
複数の付記3又は4に記載の情報処理装置を含む情報処理システム。
10 情報処理装置
11 情報処理装置
12 情報処理装置
20 情報処理システム
90 情報処理装置
91 情報処理装置
100 ホストOS
120 コンテナ接続部
121 仮想メモリアドレス受信部
122 物理メモリアドレス特定部
123 物理メモリ共有部
130 プロセス配置部
131 情報受信部
132 再配置判定部
133 再配置処理部
134 配置先判定部
135 配置処理部
200 コンテナ
210 仮想メモリアドレス処理部
220 プロセス
230 共有メモリ
300 物理メモリ
400 ホストOS
420 コンテナ接続部
423 物理メモリ共有部
424 データ通信部
430 プロセス配置部
432 再配置判定部
433 再配置処理部
436 版数確認部
437 プロセス通信部
600 情報処理装置
610 CPU
620 ROM
630 RAM
640 内部記憶装置
650 IOC
660 入力機器
670 表示機器
680 NIC
700 記憶媒体
910 ホストOS
912 コンテナ管理部
920 コンテナ
1100 メモリアドレス対応表
1101 番号
1102 仮想メモリアドレス
1103 コンテナ
1104 物理メモリアドレス
1310 コンテナ情報
1311 コンテナ
1312 ホスト
1320 構成情報
1321 番号
1322 プロセス
1323 ホスト
1324 コンテナ
1330 プロセス設計情報
1331 番号
1332 通信元
1333 通信先
1334 通信手段
1335 共有メモリ作成鍵
1336 ライブラリリスト
1340 ライブラリ情報
1341 ライブラリ名
1342 コンテナ版数
1400 物理メモリアドレス対応表
1401 番号
1402 コンテナ
1403 物理メモリアドレス
1404 コンテナ
1405 物理メモリアドレス
2110 仮想メモリアドレス
2111 番号
2112 プロセス
2113 コンテナ
2114 仮想メモリアドレス
3810 プロセス再配置情報
3811 番号
3812 再配置プロセス
3813 再配置元OS
3814 再配置元コンテナ
3815 再配置先装置
3816 再配置先OS
3817 再配置先コンテナ
3818 ライブラリ
3820 プロセス設計情報
3821 番号
3822 通信元プロセス
3823 通信元OS
3824 通信元コンテナ
3825 通信先プロセス
3826 通信先装置
3827 通信先OS
3828 通信先コンテナ
3829 共有メモリ作成鍵
3830 版数情報
3831 番号
3832 ホストOS
11 情報処理装置
12 情報処理装置
20 情報処理システム
90 情報処理装置
91 情報処理装置
100 ホストOS
120 コンテナ接続部
121 仮想メモリアドレス受信部
122 物理メモリアドレス特定部
123 物理メモリ共有部
130 プロセス配置部
131 情報受信部
132 再配置判定部
133 再配置処理部
134 配置先判定部
135 配置処理部
200 コンテナ
210 仮想メモリアドレス処理部
220 プロセス
230 共有メモリ
300 物理メモリ
400 ホストOS
420 コンテナ接続部
423 物理メモリ共有部
424 データ通信部
430 プロセス配置部
432 再配置判定部
433 再配置処理部
436 版数確認部
437 プロセス通信部
600 情報処理装置
610 CPU
620 ROM
630 RAM
640 内部記憶装置
650 IOC
660 入力機器
670 表示機器
680 NIC
700 記憶媒体
910 ホストOS
912 コンテナ管理部
920 コンテナ
1100 メモリアドレス対応表
1101 番号
1102 仮想メモリアドレス
1103 コンテナ
1104 物理メモリアドレス
1310 コンテナ情報
1311 コンテナ
1312 ホスト
1320 構成情報
1321 番号
1322 プロセス
1323 ホスト
1324 コンテナ
1330 プロセス設計情報
1331 番号
1332 通信元
1333 通信先
1334 通信手段
1335 共有メモリ作成鍵
1336 ライブラリリスト
1340 ライブラリ情報
1341 ライブラリ名
1342 コンテナ版数
1400 物理メモリアドレス対応表
1401 番号
1402 コンテナ
1403 物理メモリアドレス
1404 コンテナ
1405 物理メモリアドレス
2110 仮想メモリアドレス
2111 番号
2112 プロセス
2113 コンテナ
2114 仮想メモリアドレス
3810 プロセス再配置情報
3811 番号
3812 再配置プロセス
3813 再配置元OS
3814 再配置元コンテナ
3815 再配置先装置
3816 再配置先OS
3817 再配置先コンテナ
3818 ライブラリ
3820 プロセス設計情報
3821 番号
3822 通信元プロセス
3823 通信元OS
3824 通信元コンテナ
3825 通信先プロセス
3826 通信先装置
3827 通信先OS
3828 通信先コンテナ
3829 共有メモリ作成鍵
3830 版数情報
3831 番号
3832 ホストOS
Claims (6)
- データを記憶する物理メモリと、
他のプロセスとデータを共有する複数のプロセスと、
前記複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、
前記共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナと、
前記複数のコンテナに含まれる共有メモリの仮想メモリアドレスと前記物理メモリのアドレスとの対応である第1の対応関係と、前記複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、
前記いずれかコンテナに含まれる前記仮想メモリアドレス処理手段から書き込みデータと前記データを書き込む前記共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、前記仮想メモリアドレスに対応する第1の物理メモリのアドレスに前記受信したデータを書き込み、
前記第2の対応関係を基に、前記第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、前記第2の物理メモリのアドレスに前記受信したデータを書き込むコンテナ接続手段を含むホストOSと
を含む情報処理装置。 - 前記ホストOSが
前記コンテナからプロセス及びコンテナに関連する情報を受信する情報受信手段と、
前記情報を基に含まれているコンテナの再配置が必要なプロセスを判定する再配置判定手段と、
再配置が必要と判定されたプロセスを動作可能な環境に再配置する再配置処理手段と、
前記プロセスの再配置後に前記プロセスのための環境の再配置が必要か否かを判定する配置先判定手段と、
前記配置先判定手段において環境の再配置が必要と判定された場合に、環境を再配置する配置処理手段と
を含むプロセス配置手段をさらに含む
請求項1に記載の情報処理装置。 - 前記コンテナ接続手段が、
他の装置とデータを通信するデータ通信手段をさらに含み、
前記第2の物理メモリのアドレスが、前記他の装置の物理メモリの場合、前記データ通信手段を介して、前記他の装置にデータを送信して、前記他の装置に送信したデータの前記第2の物理メモリへの書き込みを依頼する
請求項1又は2に記載の情報処理装置。 - 前記プロセス配置手段が、
前記ホストOSの版数を確認する版数確認手段と、
前記他の装置に通信するプロセス通信手段とをさらに含み、
前記版数確認手段が、前記プロセス通信手段を介して、前記他の装置のホストOSの版数を確認し、
前記再配置判定手段が、前記版数確認手段が確認した前記ホストOSの版数を用いて再配置を判定し、
前記再配置判定手段が、再配置が必要と判定されたプロセスの再配置先が前記他の装置の場合、前記プロセス通信手段を介して、前記他の装置にプロセスの再配置を依頼する
請求項3に記載の情報処理装置。 - データを記憶する物理メモリと、
他のプロセスとデータを共有する複数のプロセスと、
前記複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、
前記共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナとを含む情報処理装置において、
前記複数のコンテナに含まれる共有メモリの仮想メモリアドレスと前記物理メモリのアドレスとの対応である第1の対応関係と、前記複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、
前記いずれかコンテナに含まれる前記仮想メモリアドレス処理手段から書き込みデータと前記データを書き込む前記共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、前記仮想メモリアドレスに対応する第1の物理メモリのアドレスに前記受信したデータを書き込み、
前記第2の対応関係を基に、前記第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、前記第2の物理メモリのアドレスに前記受信したデータを書き込む
情報処理方法。 - データを記憶する物理メモリと、
他のプロセスとデータを共有する複数のプロセスと、
前記複数のプロセス間でデータを共有するための仮想メモリである共有メモリと、
前記共有メモリの仮想メモリアドレスを処理する仮想メモリアドレス処理手段とを含む複数のコンテナとを含むコンピュータにおいて、
前記複数のコンテナに含まれる共有メモリの仮想メモリアドレスと前記物理メモリのアドレスとの対応である第1の対応関係と、前記複数のコンテナにおける共有メモリに対応する物理メモリアドレス間の対応であり第2の対応関係とを基に、
前記いずれかコンテナに含まれる前記仮想メモリアドレス処理手段から書き込みデータと前記データを書き込む前記共有メモリのアドレスである仮想メモリアドレスとを受信した場合に、前記仮想メモリアドレスに対応する第1の物理メモリのアドレスに前記受信したデータを書き込む処理と、
前記第2の対応関係を基に、前記第1の物理メモリのアドレスに対応する第2の物理メモリのアドレスを取得し、前記第2の物理メモリのアドレスに前記受信したデータを書き込む処理と
をコンピュータに実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015053608A JP2016173741A (ja) | 2015-03-17 | 2015-03-17 | 情報処理装置、情報処理方法、及び、プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015053608A JP2016173741A (ja) | 2015-03-17 | 2015-03-17 | 情報処理装置、情報処理方法、及び、プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016173741A true JP2016173741A (ja) | 2016-09-29 |
Family
ID=57008213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015053608A Pending JP2016173741A (ja) | 2015-03-17 | 2015-03-17 | 情報処理装置、情報処理方法、及び、プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016173741A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020512640A (ja) * | 2017-11-07 | 2020-04-23 | フジツウ テクノロジー ソリューションズ インタレクチュアル プロパティ ゲーエムベーハー | IoTコンピュータシステム並びにそのようなIoTコンピュータシステム及び外部システムを有する装置 |
JP2021519452A (ja) * | 2018-03-26 | 2021-08-10 | カズアー アドヴァンスド テクノロジーズ リミテッドKAZUAR Advanced Technologies Ltd. | 保護されたコンテナ間のセキュア通信方法およびそのシステム |
EP3893111A1 (en) | 2020-04-08 | 2021-10-13 | Canon Kabushiki Kaisha | Information processing apparatus, and method of controlling communication between container and process in the information processing apparatus |
-
2015
- 2015-03-17 JP JP2015053608A patent/JP2016173741A/ja active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020512640A (ja) * | 2017-11-07 | 2020-04-23 | フジツウ テクノロジー ソリューションズ インタレクチュアル プロパティ ゲーエムベーハー | IoTコンピュータシステム並びにそのようなIoTコンピュータシステム及び外部システムを有する装置 |
US11310203B2 (en) | 2017-11-07 | 2022-04-19 | Fujitsu Technology Solutions Intellectual Property Gmbh | IoT computer system and arrangement comprising an IoT computer system and an external system |
JP7113021B2 (ja) | 2017-11-07 | 2022-08-04 | フジツウ テクノロジー ソリューションズ インタレクチュアル プロパティ ゲーエムベーハー | IoTコンピュータシステム並びにそのようなIoTコンピュータシステム及び外部システムを有する装置 |
JP2021519452A (ja) * | 2018-03-26 | 2021-08-10 | カズアー アドヴァンスド テクノロジーズ リミテッドKAZUAR Advanced Technologies Ltd. | 保護されたコンテナ間のセキュア通信方法およびそのシステム |
JP7256862B2 (ja) | 2018-03-26 | 2023-04-12 | カズアー アドヴァンスド テクノロジーズ リミテッド | 保護されたコンテナ間のセキュア通信方法およびそのシステム |
EP3893111A1 (en) | 2020-04-08 | 2021-10-13 | Canon Kabushiki Kaisha | Information processing apparatus, and method of controlling communication between container and process in the information processing apparatus |
JP7434039B2 (ja) | 2020-04-08 | 2024-02-20 | キヤノン株式会社 | 情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法 |
US11928527B2 (en) | 2020-04-08 | 2024-03-12 | Canon Kabushiki Kaisha | Information processing apparatus, and method of controlling communication between container and process in the information processing apparatus |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200278880A1 (en) | Method, apparatus, and system for accessing storage device | |
US9940123B1 (en) | Updating device code through a bus | |
US12117947B2 (en) | Information processing method, physical machine, and PCIE device | |
US9081612B2 (en) | Virtual machine control method and virtual machine | |
US10289564B2 (en) | Computer and memory region management method | |
CN109471812B (zh) | 存储装置及非易失性存储器的控制方法 | |
JP2018170033A (ja) | 仮想マシンシステム | |
WO2017183565A1 (ja) | ネットワークシステム、パッチファイル適用方法、及び記録媒体 | |
US10956189B2 (en) | Methods for managing virtualized remote direct memory access devices | |
JP2015022553A (ja) | 計算機の制御方法及び計算機 | |
JPWO2017145272A1 (ja) | データ移行方法及び計算機システム | |
WO2018158808A1 (ja) | 情報システム、管理プログラム及び情報システムのプログラム交換方法 | |
US11151064B2 (en) | Information processing apparatus and storage device access control method | |
US20140351833A1 (en) | Multi-computing environment operating on a single native operating system | |
CN110647359A (zh) | 半导体装置、其操作方法和具有其的层叠存储装置 | |
CN112131019A (zh) | 微内核操作系统进程间快速通信方法 | |
US20150127916A1 (en) | Dynamic memory allocation | |
JP2016173741A (ja) | 情報処理装置、情報処理方法、及び、プログラム | |
KR20210043001A (ko) | 하이브리드 메모리 시스템 인터페이스 | |
US20220137998A1 (en) | Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same | |
JP2019164661A (ja) | 情報処理装置、情報処理方法及びプログラム | |
US9858085B2 (en) | Information processing including BIOS apparatus, information processing method thereof, and storage medium | |
JP5867638B2 (ja) | 情報処理装置、及び、情報処理方法 | |
JP5750169B2 (ja) | 計算機システム、プログラム連携方法、及びプログラム | |
CN116436787B (zh) | 网络接口管理方法、使用方法、装置、设备和存储介质 |