JP5975419B2 - 情報処理装置、情報処理方法、及びプログラム - Google Patents

情報処理装置、情報処理方法、及びプログラム Download PDF

Info

Publication number
JP5975419B2
JP5975419B2 JP2012060355A JP2012060355A JP5975419B2 JP 5975419 B2 JP5975419 B2 JP 5975419B2 JP 2012060355 A JP2012060355 A JP 2012060355A JP 2012060355 A JP2012060355 A JP 2012060355A JP 5975419 B2 JP5975419 B2 JP 5975419B2
Authority
JP
Japan
Prior art keywords
information
shared memory
transaction
data
memory area
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.)
Expired - Fee Related
Application number
JP2012060355A
Other languages
English (en)
Other versions
JP2013196129A (ja
Inventor
遼 大木
遼 大木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2012060355A priority Critical patent/JP5975419B2/ja
Publication of JP2013196129A publication Critical patent/JP2013196129A/ja
Application granted granted Critical
Publication of JP5975419B2 publication Critical patent/JP5975419B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明に係るいくつかの態様は、情報処理装置、情報処理方法、及びプログラムに関する。
近年、トランザクション処理の際に参照されるデータの使用方法が種々検討されている(例えば、特許文献1参照)。
特許文献1には、発生したトランザクションから共有エリアを動的に割り当て、必要がなくなれば共有エリアを開放することにより、共有エリアとプロセスとの関係を意識せずにプログラムを設計することのできる情報処理装置の方式が開示されている。
特開平10−049430号公報
ところで、トランザクションが参照する共有メモリ領域のデータを更新する際には、当該データの整合性を確保するため、トランザクションの処理終了後、この処理とは排他的に、当該データの更新処理を実行することが多い。
しかしながら、共有メモリ領域の参照処理と更新処理とを排他制御すると、更新処理が終了するまで次のトランザクションを実行できないため、処理速度の遅延が発生することがあった。
また、特許文献1記載の手法は、あくまでトランザクション同士の処理についてのみ考慮したものであり、参照処理と更新処理との関係に関しては、何ら考慮されていない。
本発明のいくつかの態様は前述の課題に鑑みてなされたものであり、共有メモリ領域のデータの参照と更新とを平行して処理することのできる情報処理装置、情報処理方法、及びプログラムを提供することを目的の1つとする。
本発明に係る情報処理装置は、第1のデータが記憶された記憶媒体上の位置に関する第1の位置情報を記憶する第1の記憶手段と、前記第1の記憶手段に記憶された前記第1の位置情報に基づき、第1のデータを参照して第1のトランザクションを処理する第1の処理手段と、前記第1のデータを更新した第2のデータを、前記第1のデータとは異なる前記記憶媒体上の位置に記録する更新手段と、前記第2のデータが記録された前記記憶媒体上の位置に関する第2の位置情報を記憶する第2の記憶手段と、前記第1の記憶手段に記憶された前記第1の位置情報が、前記第2の記憶手段に記憶された前記第2の位置情報と異なる場合に、前記第1の記憶手段に前記第2の位置情報を記録する位置情報更新手段とを備える。
本発明に係る情報処理方法は、第1のデータが記憶された記憶媒体上の位置に関する第1の位置情報を第1の記憶手段に記録するステップと、前記第1の記憶手段に記憶された前記第1の位置情報に基づき、第1のデータを参照して第1のトランザクションを処理するステップと、前記第1のデータを更新した第2のデータを、前記第1のデータとは異なる前記記憶媒体上の位置に記録するステップと、前記第2のデータが記録された前記記憶媒体上の位置に関する第2の位置情報を前記第2の記憶手段に記録するステップと、前記第1の記憶手段に記憶された前記第1の位置情報が、前記第2の記憶手段に記憶された前記第2の位置情報と異なる場合に、前記第1の記憶手段に前記第2の位置情報を位置情報更新手段に記録するステップとを備える。
本発明に係るプログラムは、情報処理装置に、第1のデータが記憶された記憶媒体上の位置に関する第1の位置情報を第1の記憶手段に記録するステップと、前記第1の記憶手段に記憶された前記第1の位置情報に基づき、第1のデータを参照して第1のトランザクションを処理するステップと、前記第1のデータを更新した第2のデータを、前記第1のデータとは異なる前記記憶媒体上の位置に記録するステップと、前記第2のデータが記録された前記記憶媒体上の位置に関する第2の位置情報を前記第2の記憶手段に記録するステップと、前記第1の記憶手段に記憶された前記第1の位置情報が、前記第2の記憶手段に記憶された前記第2の位置情報と異なる場合に、前記第1の記憶手段に前記第2の位置情報を位置情報更新手段に記録するステップとを実行させる。
尚、本発明において、「部」や「手段」とは、単に物理的手段を意味するものではなく、その「部」や「手段」が有する機能をソフトウェアによって実現する場合も含む。また、1つの「部」や「手段」が有する機能が2つ以上の物理的手段や装置により実現されても、2つ以上の「部」や「手段」の機能が1つの物理的手段や装置により実現されても良い。
本発明によれば、共有メモリ領域のデータの参照と更新とを平行して処理することのできる情報処理装置、情報処理方法、及びプログラムを提供することができる。
本発明の実施形態1における情報処理装置の構成を説明するための図である。 図1に示した情報処理装置の処理の流れを示すフローチャートである。 図1に示した情報処理装置の処理の流れを示すフローチャートである。 図1に示した情報処理装置の処理の流れを示すフローチャートである。 図1に示した情報処理装置の処理の具体例を説明するための図である。
以下に本発明の実施形態を説明する。以下の説明及び参照する図面の記載において、同一又は類似の構成には、それぞれ同一又は類似の符号が付されている。
(実施形態)
図1乃至図5は、本発明の実施形態を説明するための図である。以下、これらの図を参照しながら、以下の流れに沿って本実施形態を説明する。まず、「1」で実施形態全体の概要を示す。その上で、「2」でシステム構成を、「3」で処理の流れを説明する。「4」では、本実施形態の処理の流れを、具体例を挙げて説明する。最後に、「5」以降で、本実施形態に係る効果等を説明する。
(1 概要)
複数のプログラムから平行して同一のデータにアクセス可能な共有メモリと呼ばれる技術がある。本実施形態では、トランザクションで共有メモリ上のデータを参照すると共に、同じデータを、当該トランザクションとは別プロセスに係る更新コマンドで更新する場合を考える。
このようなシステムの処理は、以下のような処理に分解することができる。
(a)データの更新に伴い、トランザクションが参照すべき共有メモリ上の領域(データが記憶される位置であり、以下「共有メモリ領域」ともいう。)は随時変更され、トランザクションから参照されなくなった共有メモリ領域のデータ(更新前のデータ)は削除される。
(b)共有メモリ上のデータの更新及び削除は、トランザクションのプロセスとは別のプロセスで実行される。
(c)トランザクションの処理中は、共有メモリ上のデータが更新されても、当該トランザクションが参照する共有メモリ領域は変更しない。
(d)トランザクションが実行されるプロセスは、共有メモリ上のデータが更新されると、トランザクションが参照すべき共有メモリ領域を変更する。
このようなシステムでは、トランザクション処理とは別に、データが更新されたらトランザクションが参照する共有メモリ領域を変更する処理が必要となるため、例えば、以下の2つのスレッドを用意し、この2つのスレッドを排他制御することとなる。
(1)トランザクションを実行するスレッド
(2)データの更新を受信し、トランザクションで参照すべき共有メモリ領域を変更すると共に、参照されなくなった共有メモリ領域を開放するスレッド
ここで、上記2つのスレッドを排他制御すると、データの変更に伴う共有メモリ領域の誤参照やメモリリークを防いでデータの整合性を保つことができるようになる。
しかしながら、CPU(Central Processing Unit)数が多いシステムでこのような手法を行うと、この処理がクリティカルセクションとなるので待ち合わせが発生し、CPU性能を十分に発揮できずに性能が頭打ちとなってしまう。
そこで、本実施形態の情報処理装置1は、図1のような構成を有する。情報処理装置1のシステムは、共有メモリ100と、共有メモリ100を参照及び更新するプロセス200と、共有メモリ100を更新する共有メモリ更新コマンド300と、プロセス200に含まれる各スレッドが参照及び更新する共有メモリ参照テーブル400とを含む。
図1の例において、プロセス200及び共有メモリ更新コマンド300は、それぞれCPU上で実行されるプログラム、又はプログラムの一部であり、プロセス200及び共有メモリ更新コマンド300は、共有メモリ100上のデータに、平行してアクセス可能である。つまり、プロセス200が共有メモリ100上のデータを参照しながら、共有メモリ更新コマンド300が同じデータを更新することが有りうる。
プロセス200は、トランザクションスレッド210、変更スレッド220、及び共有メモリ領域開放スレッド230の各スレッドを含む。トランザクションスレッド210、変更スレッド220、及び共有メモリ領域開放スレッド230、それぞれ共有メモリ参照テーブル400を参照し、データ(情報)を更新する。
共有メモリ参照テーブル400は、図示しない記憶媒体上で管理される情報管理テーブルであり、トランザクション参照メモリ領域情報410、次回トランザクション参照メモリ領域情報420、及び参照済みメモリ領域情報430を管理する。
トランザクション参照メモリ領域情報410には、トランザクションスレッド210により処理されるトランザクションで参照する、共有メモリ100上の共有メモリ領域120のアドレスが格納される。
次回トランザクション参照メモリ領域情報420には、現在または直前にトランザクションスレッド210により実行されていたトランザクションの次に実行されるトランザクションが参照すべき共有メモリ領域120のアドレスが格納される。
参照済みメモリ領域情報430には、トランザクションスレッド210が以前処理していたトランザクションが参照していた(すなわち、現在参照されていない)共有メモリ領域120のアドレスが格納される。
このような共有メモリ参照テーブル400の管理により、情報処理装置1は、トランザクションを実行するトランザクションスレッド210と、共有メモリ更新コマンド300による共有メモリ100更新に係るスレッドとの間の排他を回避している。
トランザクションスレッド210によるトランザクション中に共有メモリ100の更新が発生した場合(トランザクションスレッド210が参照するデータの更新が発生した場合)、まず、更新後のデータは、更新前のデータが格納される共有メモリ領域120とは異なる共有メモリ領域120に格納される。
そして、トランザクション参照メモリ領域情報410には、更新前のデータが格納される共有メモリ領域120のアドレスを格納し続けると共に(すなわち、少なくともトランザクション終了までは更新しない)、次回トランザクション参照メモリ領域情報420には、更新後のデータ(最新のデータ)が格納される共有メモリ領域120のアドレスを格納する。これにより、たとえトランザクション中に共有メモリ100が更新されたとしても、今回のトランザクションでは更新前のデータを参照しつつ、次回のトランザクションでは、最新のデータが格納された共有メモリ領域120を参照することができるようになる。
また、次回のトランザクションの実行開始時、もしくはそれよりも前に(例えば、前回のトランザクションの終了処理時)、次回トランザクション参照メモリ領域情報420に格納された最新のデータの共有メモリ領域120のアドレスをトランザクション参照メモリ領域情報410に格納すると共に、それまでにトランザクション参照メモリ領域情報410に格納されていた、更新前のデータに係る共有メモリ領域120のアドレスは、参照済みメモリ領域情報430に格納する。共有メモリ領域開放スレッド230は、参照済みメモリ領域情報430にアドレスが格納されている、参照されなくなった共有メモリ領域120を定期的に開放(削除)することで、メモリリークを防ぐ。
このような処理により、排他制御を行わずに、トランザクションによる共有メモリ100の参照と、共有メモリ更新コマンド300による共有メモリ100の更新とを処理することができるので、CPU性能が頭打ちとなることを防ぐことが可能となる。
(2 システム構成)
以下、情報処理装置1の構成を、図1を参照しながら説明する。上述した通り、情報処理装置1のシステムは、共有メモリ100と、共有メモリを参照及び更新するプロセス200と、共有メモリ100を更新する共有メモリ更新コマンド300と、プロセス200に含まれる各スレッドが参照及び更新する共有メモリ参照テーブル400とを含む。
共有メモリ100は、プロセス200や共有メモリ更新コマンド300を含むプロセス、及びその他のプロセスが同時並行的にアクセス可能な記憶媒体(もしくは、記憶媒体の一部)である。共有メモリ100には、世代番号110が管理されると共に、共有メモリ領域120が確保される。
世代番号110は、共有メモリ更新コマンド300により新たな共有メモリ領域120が確保される毎に加算(又は減算)される番号である。この世代番号110の値は、最新のデータが格納された共有メモリ領域120のメモリ番号121と一致する。
共有メモリ領域120は、共有メモリ更新コマンド300によりデータが記録若しくは更新される際に、当該データを格納するために共有メモリ100上に確保される記憶領域である。ここで、共有メモリ領域120の領域内には、メモリ番号121が管理される。メモリ番号121は、各共有メモリ領域120を識別するための識別子としての役割を果たす番号である。
尚、本実施形態の説明において、共有メモリ領域120A、120B等の個別の領域に言及しない場合には、「共有メモリ領域120」として総称する。この点、メモリ番号121についても同様である。
プロセス200は、トランザクションスレッド210、変更スレッド220、及び共有メモリ領域開放スレッド230の各スレッドを含む。トランザクションスレッド210、変更スレッド220、及び共有メモリ領域開放スレッド230は、それぞれ共有メモリ参照テーブル400中の情報を参照すると共に更新する。
トランザクションスレッド210は、共有メモリ100(に記憶されるデータ)を参照しながら実行するトランザクションのスレッドである。トランザクションスレッド210は、トランザクション開始手段211及びトランザクション終了手段213を含む。
ここで、トランザクション開始手段211は、トランザクションスレッド210を開始する。この開始処理の中でトランザクション開始手段211は、共有メモリ参照テーブル400中の、トランザクション参照メモリ領域情報410と、次回トランザクション参照メモリ領域情報420とを確認する。双方に設定された共有メモリ領域120のアドレスが異なる場合には、トランザクション開始手段211は、次回トランザクション参照メモリ領域情報420に設定されていた共有メモリ領域120のアドレスをトランザクション参照メモリ領域情報410に格納すると共に、それまでトランザクション参照メモリ領域情報410に格納されていた共有メモリ領域120のアドレスを参照済みメモリ領域情報430に格納する(追加する)。
トランザクション終了手段213は、トランザクションスレッド210を終了する。この終了処理の中で、トランザクション終了手段213は、トランザクション開始手段211と同様に、共有メモリ参照テーブル400中の、トランザクション参照メモリ領域情報410と、次回トランザクション参照メモリ領域情報420とを確認する。双方に設定された共有メモリ領域120のアドレスが異なる場合には、トランザクション終了手段213は、次回トランザクション参照メモリ領域情報420に設定されていた共有メモリ領域120のアドレスをトランザクション参照メモリ領域情報410に格納すると共に、それまでトランザクション参照メモリ領域情報410に格納されていた共有メモリ領域120のアドレスを参照済みメモリ領域情報430に格納する(追加する)。
尚、本実施形態では、トランザクション開始手段211及びトランザクション終了手段213の双方が、共有メモリ参照テーブル400中の、トランザクション参照メモリ領域情報410と、次回トランザクション参照メモリ領域情報420とを確認し、相違がある場合には情報を更新しているが、これに限られるものではない。具体的には、たとえばトランザクション開始手段211のみを備え、トランザクション開始時に実行するようにしても良い。
変更スレッド220は、最新データが記憶された共有メモリ領域120のアドレスを設定するためのスレッドであり、共有メモリ設定手段221を含む。ここで、共有メモリ設定手段221は、共有メモリ更新手段310から共有メモリ領域120の新たな作成を通知されると、共有メモリ100から世代番号110を読込み、この世代番号110と同一の番号を持つ共有メモリ領域120のアドレスを、共有メモリ参照テーブル400中の次回トランザクション参照メモリ領域情報420に設定する。
共有メモリ領域開放スレッド230は、参照されなくなったデータが格納されている共有メモリ100上に確保された共有メモリ領域120を確保するためのスレッドであり、共有メモリ開放手段231を含む。
共有メモリ開放手段231は、定期間隔で、参照済みメモリ領域情報430にアドレスが設定されている共有メモリ領域120を開放することで、参照されなくなった、古いデータを削除する。また、共有メモリ開放手段231は、この開放処理後、参照済みメモリ領域情報430を未設定に変更する(書き換える)。
共有メモリ更新コマンド300は、共有メモリ100のデータを更新するための命令であり、共有メモリ更新手段310を含む。共有メモリ更新手段310は、新たに共有メモリ領域120を作成すると共に、世代番号110に1加算する。また、共有メモリ更新コマンド300は、作成した新たな共有メモリ領域120中に、当該加算後の世代番号110をメモリ番号121として格納する。
共有メモリ参照テーブル400は、トランザクション参照メモリ領域情報410、次回トランザクション参照メモリ領域情報420、及び参照済みメモリ領域情報430を管理する。各共有メモリ領域120のアドレスが、トランザクション参照メモリ領域情報410、次回トランザクション参照メモリ領域情報420、及び参照済みメモリ領域情報430の少なくともいずれかに格納される。
トランザクション参照メモリ領域情報410には、トランザクションスレッド210が参照する、共有メモリ100上の共有メモリ領域120のアドレスが格納される。
次回トランザクション参照メモリ領域情報420には、最新のデータが格納される共有メモリ領域120(次に実行されるトランザクションが参照すべき共有メモリ領域120)のアドレスが格納される。
参照済みメモリ領域情報430には、トランザクションスレッド210が以前処理していたトランザクションが参照していた(すなわち、現在参照されていない)共有メモリ領域120のアドレスが格納される。参照済みメモリ領域情報430には、複数の共有メモリ領域120のアドレスを格納することができる。
(3 処理の流れ)
次に、情報処理装置1による処理の流れを、図2乃至図4をそれぞれ参照しながら説明する。以下、「3.1」で共有メモリ100へのデータ更新時の処理の流れを、「3.2」でトランザクション開始時又は終了時の処理の流れを説明する。
(3.1 データ更新時の処理の流れ)
図2及び図3を参照しながら、共有メモリ100へのデータ更新時(作成時)の処理の流れを説明する。図2及び図3は、それぞれ、共有メモリ100へのデータ更新時(作成時)の、共有メモリ更新手段310及び共有メモリ設定手段221の処理の流れを説明するためのフローチャートである。
共有メモリ更新手段310は、共有メモリ100のデータを更新するために、まず共有メモリ100の空き領域に、新たな共有メモリ領域120を確保すると共に、データを格納する(S201)。次に、共有メモリ更新手段310は、世代番号110を更新(1加算)すると共に(S203)、更新後の世代番号110を、新たに確保した共有メモリ領域120のメモリ番号121として設定する(S205)。
これらの処理が終了すると、共有メモリ更新手段310は、共有メモリ領域120を新たに作成した旨のイベントを、共有メモリ設定手段221に通知する(S207)。
共有メモリ設定手段221は、共有メモリ更新手段310から共有メモリ領域120を作成した旨のイベントを受信すると(S301)、共有メモリ100にアクセスして、現在の世代番号110を取得する(S303)。その上で、共有メモリ設定手段221は、当該世代番号110と同一の番号を持つメモリ番号121をもつ共有メモリ領域120を探索し、当該共有メモリ領域120のアドレスを、次回トランザクション参照メモリ領域情報420に設定する(S305)。
以上により、共有メモリ100の更新処理が完了する。
(3.2 トランザクションの開始時又は終了時の処理の流れ)
続いて、トランザクション開始時又は終了時の処理の流れを、図4を参照しながら説明する。尚、本実施形態では、トランザクション開始時及び終了時に、それぞれトランザクション開始手段211及びトランザクション終了手段213が、図4に示す同一の処理を行うが、ここでは、トランザクション開始手段211の処理として説明する。
トランザクション開始手段211は、トランザクションスレッド210によるトランザクション処理の開始時に、トランザクション参照メモリ領域情報410に設定された共有メモリ領域120のアドレスと、次回トランザクション参照メモリ領域情報420に設定された共有メモリ領域120のアドレスとが、同一であるか異なるかを確認する(S401)。設定されたアドレスが相違する場合(参照先の共有メモリ領域120が異なる場合。S401のYes)、トランザクション開始手段211は、トランザクション参照メモリ領域情報410に設定されていた共有メモリ領域120のアドレスを、参照済みメモリ領域情報430に設定(追加)する(S403)。そして、トランザクション開始手段211は、次回トランザクション参照メモリ領域情報420に設定されていた共有メモリ領域120のアドレスを、トランザクション参照メモリ領域情報410に設定する(S405)。
これにより、トランザクション実行前(前回のトランザクション実行時も含む)までに、最新のデータが格納された共有メモリ領域120の位置が変更されていた場合であっても、トランザクションスレッド210が、最新のデータが格納された共有メモリ領域120を参照できるようになる。
(4 具体例の説明)
以下、図5を参照しながら、本実施形態に係る情報処理装置1の処理の具体例を説明する。図5は、共有メモリ100のデータ更新及び開放に関する処理の流れの具体例を説明するための図である。以下、共有メモリ100及び共有メモリ参照テーブル400の状態遷移に着目しながら説明する。
トランザクションスレッド210によるトランザクションが開始される前、共有メモリ参照テーブル400には、トランザクション参照メモリ領域情報410に「共有メモリ領域A」(共有メモリ領域120Aのアドレス)が、次回トランザクション参照メモリ領域情報420に「共有メモリ領域B」(同じく、共有メモリ領域120Bのアドレス)が、それぞれ設定されている。参照済みメモリ領域情報430には、何も設定されていない(未設定)。
また、共有メモリ100には、共有メモリ領域120A及び120Bが確保されてデータが格納されると共に、それぞれのメモリ番号121A及び121Bには「1」、「2」が設定されている。世代番号110には、現在のメモリ番号121の中で最も大きい値(最新のデータが格納されている共有メモリ領域120B)と一致する「2」が設定されている。
トランザクションスレッド210のトランザクション開始手段211がトランザクションを開始すると、図4を参照して説明した通り、まず、トランザクション開始手段211は、トランザクション参照メモリ領域情報410と次回トランザクション参照メモリ領域情報420とを確認し、両者に設定された共有メモリ領域120のアドレスが一致しているか否かを確認する。
図5の例では、トランザクション参照メモリ領域情報410には「共有メモリ領域A」が、次回トランザクション参照メモリ領域情報420には「共有メモリ領域B」が、それぞれ設定されている。つまり両者が異なるため、トランザクション開始手段211は、トランザクション参照メモリ領域情報410に設定されていた「共有メモリ領域A」(共有メモリ領域120Aのアドレス)を参照済みメモリ領域情報430に設定すると共に、次回トランザクション参照メモリ領域情報420に設定されていた「共有メモリ領域B」(共有メモリ領域120Bのアドレス)を、トランザクション参照メモリ領域情報410に格納する。
次に、トランザクションスレッド210によるトランザクション中に、共有メモリ更新コマンド300が共有メモリ100を更新する場合を考える。
共有メモリ更新コマンド300の共有メモリ更新手段310は、共有メモリ100に、新たな共有メモリ領域120C(「共有メモリ領域C」)を確保すると共に、世代番号110を1加算して「3」を世代番号110に設定し、当該世代番号110と同一の値である「3」を、共有メモリ領域120Cのメモリ番号121Cに設定する。
共有メモリ更新手段310は、これらの処理が完了した後、その旨を変更スレッド220の共有メモリ設定手段221に通知する。
共有メモリ設定手段221は、新たな共有メモリ領域120Cを作成した旨のイベントを受信すると、共有メモリ100の世代番号110を参照して、最新のメモリ番号121が「3」である旨を知ると、「3」をメモリ番号121Cに持つ共有メモリ領域120Cのアドレス(「共有メモリ領域C」)を、次回トランザクション参照メモリ領域情報420に格納する。
図5の例では、共有メモリ設定手段221が次回トランザクション参照メモリ領域情報420を変更後、トランザクションスレッド210のトランザクション終了手段213が、トランザクションを終了する。この時、まずトランザクション終了手段213は、トランザクション参照メモリ領域情報410と次回トランザクション参照メモリ領域情報420とを確認し、両者に設定された共有メモリ領域120のアドレスが一致しているか否かを確認する。
今回の例では、トランザクション参照メモリ領域情報410には「共有メモリ領域B」が、次回トランザクション参照メモリ領域情報420には「共有メモリ領域C」が、それぞれ設定されている。つまり両者が異なるため、トランザクション終了手段213は、トランザクション参照メモリ領域情報410に設定されていた「共有メモリ領域B」(共有メモリ領域120Bのアドレス)を参照済みメモリ領域情報430に格納(追加)すると共に、次回トランザクション参照メモリ領域情報420に設定されていた「共有メモリ領域C」(共有メモリ領域120Cのアドレス)を、トランザクション参照メモリ領域情報410に格納する。
図5の例では、トランザクションスレッド210のトランザクション終了後、定期間隔で動作している共有メモリ開放手段231が、使用されていない共有メモリ領域120の開放処理を行う。具体的には、共有メモリ開放手段231は、まず、共有メモリ参照テーブル400の参照済みメモリ領域情報430を参照し、現在参照されていない共有メモリ領域120A(「共有メモリ領域A」)及び共有メモリ領域120B(「共有メモリ領域B」)のアドレスを取得する。そして、共有メモリ開放手段231は、共有メモリ領域120A及び120Bを開放し、これらの領域に記憶されていたデータを削除する。削除完了後、共有メモリ開放手段231は、共有メモリ参照テーブル400の参照済みメモリ領域情報430を、「未設定」に変更する。
(5 本実施形態の効果)
上述したように、本実施形態に係る情報処理装置1は、次回トランザクション参照メモリ領域情報420に、共有メモリ更新コマンド300で作成した共有メモリ領域120の情報を格納し、トランザクションの開始時又は終了時の少なくとも一方に、次回トランザクション参照メモリ領域情報420の情報を、トランザクション参照メモリ領域情報410に設定する。これにより、トランザクション中でも、当該トランザクションによる参照処理との排他制御を行わずに、また誤参照することなく、共有メモリ100に対する更新を行うことができる。
また、参照済みメモリ領域情報430に、参照済みの共有メモリ領域120の情報を退避することで、共有メモリ開放手段231が、参照されなくなった共有メモリ領域120を定期間隔で開放すると共に、メモリリークを防ぐことができる。
(5 付記事項)
尚、前述の各実施形態の構成は、組み合わせたり或いは一部の構成部分を入れ替えたりしてもよい。また、本発明の構成は前述の実施形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加えてもよい。
また、前述の各実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
第1のデータが記憶された記憶媒体上の位置に関する第1の位置情報を記憶する第1の記憶手段と、前記第1の記憶手段に記憶された前記第1の位置情報に基づき、第1のデータを参照して第1のトランザクションを処理する第1の処理手段と、前記第1のデータを更新した第2のデータを、前記第1のデータとは異なる前記記憶媒体上の位置に記録する更新手段と、前記第2のデータが記録された前記記憶媒体上の位置に関する第2の位置情報を記憶する第2の記憶手段と、前記第1の記憶手段に記憶された前記第1の位置情報が、前記第2の記憶手段に記憶された前記第2の位置情報と異なる場合に、前記第1の記憶手段に前記第2の位置情報を記録する位置情報更新手段とを備える情報処理装置。
(付記2)
前記位置情報更新手段は、前記第1のトランザクションの次に実行される第2のトランザクションの開始に伴い、前記第1の記憶手段に前記第2の位置情報を記録する、付記1に記載の情報処理装置。
(付記3)
前記位置情報更新手段は、前記第1のトランザクションの終了に伴い、前記第1の記憶手段に前記第2の位置情報を記録する、付記1又は付記2記載の情報処理装置。
(付記4)
前記位置情報更新手段が前記第1の記憶手段に前記第2の記憶情報を記録する際に、前記第1の記憶手段に記憶されていた前記第1の位置情報が記録される第3の記憶手段を更に備える、付記1乃至付記3記載の情報処理装置。
(付記5)
前記第3の記憶手段に記憶された前記第1の位置情報と、前記第1の位置情報に対応する前記第1のデータとを削除する削除手段を更に備える、付記4記載の情報処理装置。
(付記6)
第1のデータが記憶された記憶媒体上の位置に関する第1の位置情報を第1の記憶手段に記録するステップと、前記第1の記憶手段に記憶された前記第1の位置情報に基づき、第1のデータを参照して第1のトランザクションを処理するステップと、前記第1のデータを更新した第2のデータを、前記第1のデータとは異なる前記記憶媒体上の位置に記録するステップと、前記第2のデータが記録された前記記憶媒体上の位置に関する第2の位置情報を前記第2の記憶手段に記録するステップと、前記第1の記憶手段に記憶された前記第1の位置情報が、前記第2の記憶手段に記憶された前記第2の位置情報と異なる場合に、前記第1の記憶手段に前記第2の位置情報を位置情報更新手段に記録するステップとを備える情報処理方法。
(付記7)
情報処理装置に、第1のデータが記憶された記憶媒体上の位置に関する第1の位置情報を第1の記憶手段に記録するステップと、前記第1の記憶手段に記憶された前記第1の位置情報に基づき、第1のデータを参照して第1のトランザクションを処理するステップと、前記第1のデータを更新した第2のデータを、前記第1のデータとは異なる前記記憶媒体上の位置に記録するステップと、前記第2のデータが記録された前記記憶媒体上の位置に関する第2の位置情報を前記第2の記憶手段に記録するステップと、前記第1の記憶手段に記憶された前記第1の位置情報が、前記第2の記憶手段に記憶された前記第2の位置情報と異なる場合に、前記第1の記憶手段に前記第2の位置情報を位置情報更新手段に記録するステップとを実行させるためのプログラム。
1・・・情報処理装置、100・・・共有メモリ、110・・・世代番号、120・・・共有メモリ領域、121・・・メモリ番号、200・・・プロセス、210・・・トランザクションスレッド、211・・・トランザクション開始手段、213・・・トランザクション終了手段、220・・・変更スレッド、221・・・共有メモリ設定手段、230・・・共有メモリ領域開放スレッド、231・・・共有メモリ開放手段、300・・・共有メモリ更新コマンド、310・・・共有メモリ更新手段、400・・・共有メモリ参照テーブル、410・・・トランザクション参照メモリ領域情報、420・・・次回トランザクション参照メモリ領域情報、430・・・参照済みメモリ領域情報

Claims (7)

  1. 第1のデータが記憶された記憶媒体上の第1メモリ番号を持つ位置に関する第1の位置情報を記憶する第1の記憶手段と、
    前記第1メモリ番号を世代情報として管理する手段と、
    前記第1の記憶手段に記憶された前記第1の位置情報に基づき、前記第1のデータを参照して第1のトランザクションを処理する第1の処理手段と、
    前記第1のデータを更新した第2のデータを、前記第1のデータとは異なる前記記憶媒体上の第2メモリ番号を持つ位置に記録すると共に、前記世代情報に前記第2メモリ番号を登録する更新手段と、
    前記世代情報を参照することにより、前記第2のデータが記録された前記記憶媒体上の前記第2メモリ番号を持つ位置に関する第2の位置情報を記憶する第2の記憶手段と、
    前記第1の記憶手段に記憶された前記第1の位置情報が、前記第2の記憶手段に記憶された前記第2の位置情報と異なる場合に、前記第1の記憶手段に前記第2の位置情報を記録する位置情報更新手段と
    を備える情報処理装置。
  2. 前記位置情報更新手段は、前記第1のトランザクションの次に実行される第2のトランザクションの開始に伴い、前記第1の記憶手段に前記第2の位置情報を記録する、
    請求項1に記載の情報処理装置。
  3. 前記位置情報更新手段は、前記第1のトランザクションの終了に伴い、前記第1の記憶手段に前記第2の位置情報を記録する、
    請求項1又は請求項2に記載の情報処理装置。
  4. 前記位置情報更新手段が前記第1の記憶手段に前記第2の記憶情報を記録する際に、前記第1の記憶手段に記憶されていた前記第1の位置情報が記録される第3の記憶手段
    を更に備える、請求項1乃至請求項3記載の情報処理装置。
  5. 前記第3の記憶手段に記憶された前記第1の位置情報と、前記第1の位置情報に対応する前記第1のデータとを削除する削除手段
    を更に備える、請求項4記載の情報処理装置。
  6. 第1のデータが記憶された記憶媒体上の第1メモリ番号を持つ位置に関する第1の位置情報を第1の記憶手段に記録するステップと、
    前記第1メモリ番号を世代情報として管理する手段と、
    前記第1の記憶手段に記憶された前記第1の位置情報に基づき、前記第1のデータを参照して第1のトランザクションを処理するステップと、
    前記第1のデータを更新した第2のデータを、前記第1のデータとは異なる前記記憶媒体上の第2メモリ番号を持つ位置に記録すると共に、前記世代情報に前記第2メモリ番号を登録するステップと、
    前記世代情報を参照することにより、前記第2のデータが記録された前記記憶媒体上の前記第2メモリ番号を持つ位置に関する第2の位置情報を前記第2の記憶手段に記録するステップと、
    前記第1の記憶手段に記憶された前記第1の位置情報が、前記第2の記憶手段に記憶された前記第2の位置情報と異なる場合に、前記第1の記憶手段に前記第2の位置情報を位置情報更新手段に記録するステップと
    を備える情報処理方法。
  7. 情報処理装置に、
    第1のデータが記憶された記憶媒体上の第1メモリ番号を持つ位置に関する第1の位置情報を第1の記憶手段に記録するステップと、
    前記第1メモリ番号を世代情報として管理するステップと、
    前記第1の記憶手段に記憶された前記第1の位置情報に基づき、前記第1のデータを参照して第1のトランザクションを処理するステップと、
    前記第1のデータを更新した第2のデータを、前記第1のデータとは異なる前記記憶媒体上の第2メモリ番号を持つ位置に記録すると共に、前記世代情報に前記第2メモリ番号を登録するステップと、
    前記世代情報を参照することにより、前記第2のデータが記録された前記記憶媒体上の前記第2メモリ番号を持つ位置に関する第2の位置情報を前記第2の記憶手段に記録するステップと、
    前記第1の記憶手段に記憶された前記第1の位置情報が、前記第2の記憶手段に記憶された前記第2の位置情報と異なる場合に、前記第1の記憶手段に前記第2の位置情報を位置情報更新手段に記録するステップと
    を実行させるためのプログラム。
JP2012060355A 2012-03-16 2012-03-16 情報処理装置、情報処理方法、及びプログラム Expired - Fee Related JP5975419B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012060355A JP5975419B2 (ja) 2012-03-16 2012-03-16 情報処理装置、情報処理方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012060355A JP5975419B2 (ja) 2012-03-16 2012-03-16 情報処理装置、情報処理方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2013196129A JP2013196129A (ja) 2013-09-30
JP5975419B2 true JP5975419B2 (ja) 2016-08-23

Family

ID=49395055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012060355A Expired - Fee Related JP5975419B2 (ja) 2012-03-16 2012-03-16 情報処理装置、情報処理方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP5975419B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305767A (ja) * 1999-04-19 2000-11-02 Nec Corp 分散処理システム
JP5343399B2 (ja) * 2008-05-22 2013-11-13 富士通株式会社 管理プログラム、管理方法、及び管理装置

Also Published As

Publication number Publication date
JP2013196129A (ja) 2013-09-30

Similar Documents

Publication Publication Date Title
CN108009008B (zh) 数据处理方法和***、电子设备
JP6198226B2 (ja) 順次並んだスワップ・ファイルを使用するワーキング・セットのスワップ
US20200320036A1 (en) Data unit cloning in memory-based file systems
US10585691B2 (en) Distribution system, computer, and arrangement method for virtual machine
US20140173226A1 (en) Logical object deletion
US20160098295A1 (en) Increased cache performance with multi-level queues of complete tracks
JP2016535380A (ja) 順方向専用にページ化されたデータストレージ管理
US11516287B2 (en) Method and apparatus for performing simple storage service seamless migration using index objects
CN103559139A (zh) 一种数据存储方法及装置
CN109086462A (zh) 一种分布式文件***中元数据的管理方法
JP5719083B2 (ja) データベース装置、プログラムおよびデータ処理方法
US11176089B2 (en) Systems and methods for implementing dynamic file systems
US20230289207A1 (en) Techniques for Concurrently Supporting Virtual NUMA and CPU/Memory Hot-Add in a Virtual Machine
JP2012155561A (ja) 情報処理装置及び書き込み制御方法
US9703599B2 (en) Assignment control method, system, and recording medium
JP5975419B2 (ja) 情報処理装置、情報処理方法、及びプログラム
US10430287B2 (en) Computer
JP2006079463A (ja) 時系列データ記録用バッファ管理方法、装置、システムおよびプログラム
JP2014127015A (ja) 情報処理装置、分散データベースシステム、およびバックアップ方法
US11163642B2 (en) Methods, devices and computer readable medium for managing a redundant array of independent disks
JP2009157441A (ja) 情報処理装置、ファイル再配置方法およびプログラム
CN104461382A (zh) 运行多个文件***的文件服务器的内部写方法和服务器
CN112579384B (zh) 一种sas域的节点监控方法、装置、***及节点
JP5473016B2 (ja) データ共有システム、端末装置、データ共有方法、及びプログラム
JP2017117437A (ja) 下位レベルキャッシュにおけるキャシュラインのエイジを制御することによりメモリへのライトバックを低減すること

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160627

R150 Certificate of patent or registration of utility model

Ref document number: 5975419

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160710

LAPS Cancellation because of no payment of annual fees