(57)【要約】【課題】  メモリ中に、第１のバッファデータを記憶する第１のバッファ、第２のバッファデータを記憶する第２のバッファ、及び記憶装置に残存するリアルタイムデータの永久記憶サイズを示す変数を構成することを含む方法を提供する。【解決手段】  記憶装置上には、リアルタイムデータを記憶するためのファイルが構成され、かつ変数を記憶するためのフィールドが構成される。リアルタイムデータのストリームを受信され、受信したストリームは第１のバッファデータにアペンドされる。ライト基準が満たされると、第１のバッファデータは第２のバッファデータとスワップされ、第２のバッファデータのバッファサイズが変数に加えられ、第２のバッファから第２のバッファデータがライトキャッシュへ送られる。コミット基準が満たされると、ライトキャッシュに記憶されたストリームがファイルにアペンドされ、変数はフィールドに残存する。【選択図】  図１
2015046164.tif 000002
【特許請求の範囲】
【請求項１】
リアルタイムデータを記憶する方法であって、
メモリ中に、第１のバッファデータを記憶するための第１のバッファ、第２のバッファデータを記憶するための第２のバッファ、及び記憶装置に残存する前記リアルタイムデータの残存サイズを示す変数を構成することと、
前記記憶装置上に、前記リアルタイムデータを記憶するファイル及び前記変数を記憶するフィールドを構成することと、
プロセッサによって前記リアルタイムデータのストリームを受信することと、
前記リアルタイムデータの前記ストリームを前記第１のバッファデータにアペンドすることと、
ライト基準が満たされたら、
前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップし、
前記第２のバッファ中の前記第２のバッファデータのバッファサイズを前記変数に加え、
ライト機能を呼び出して前記第２のバッファからライトキャッシュへ前記第２のバッファデータを送る、ことと、
コミット基準が満たされたら、
コミット機能を呼び出して、前記ライトキャッシュに記憶された前記リアルタイムデータの前記ストリームを前記ファイルにアペンドし、
前記変数を前記フィールドに残存させる、ことと、を含む方法。
【請求項２】
前記リアルタイムデータが、医療処置を実施中に収集される電気生理学的（ＥＰ）データを含む、請求項１に記載の方法。
【請求項３】
前記ＥＰデータが、アナログデータ及びデジタルデータから選択される、請求項２に記載の方法。
【請求項４】
前記アナログデータが、電圧、電流及び温度を含むリストから選択される、請求項３に記載の方法。
【請求項５】
前記デジタルデータが、イメージデータ、位置測定値、力測定値、及び呼吸状態を含むリストから選択される、請求項３に記載の方法。
【請求項６】
前記第１のバッファが前記メモリの第１のアドレスに記憶され、前記第２のバッファが前記メモリの第２のアドレスに記憶され、かつ、前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップすることが、バッファポインタに記憶されたバッファアドレスを前記第１のアドレスと第２のアドレスとの間でトグルし、これによって前記第１のバッファと第２のバッファの役割を切り換えることを含む、請求項１に記載の方法。
【請求項７】
前記第１のバッファを保護するための第１のリーダ−ライタ・ロック、及び前記第２のバッファ及び前記変数を保護するための第２のリーダ−ライタ・ロックを構成することを含む、請求項１に記載の方法。
【請求項８】
前記リアルタイムデータの前記ストリームをアペンドする前に、前記第１のリーダ−ライタ・ロック用のライタロックを取得することと、
前記リアルタイムデータの前記ストリームのアペンド後に、前記第１のリーダ−ライタ・ロックから前記ライタロックを解除することと、を含む、請求項７に記載の方法。
【請求項９】
前記ライト基準が満たされたら、前記第１のバッファと第２のバッファをスワップする前に、前記第１のリーダ−ライタ・ロック用の第１のライタロック、及び前記第２のリーダ−ライタ・ロック用の第２のライタロックを取得することと、
前記第１のバッファ中の前記第１のバッファデータと前記第２のバッファ中の前記第２のバッファデータとがスワップされたら、前記第１及び第２のライタロックを解除することとを含む、請求項７に記載の方法。
【請求項１０】
前記ライト機能を呼び出した後、前記バッファサイズを前記変数に加える前に、前記第２のリーダ−ライタ・ロック用のライタロックを取得することと、
前記第２のバッファをクリアすることと、
前記第２のバッファがクリアされたら、前記ライタロックを解除することと、を含む、請求項７に記載の方法。
【請求項１１】
前記変数を前記フィールドに残存させることが、
前記第２のリーダ−ライタ・ロック用のリーダロックを取得することと、
前記変数を更なる変数にコピーすることと、
前記リーダロックを解除することと、
前記更なる変数を前記フィールドに記憶させることと、を含む、請求項７に記載の方法。
【請求項１２】
ある範囲の前記リアルタイムデータを取り出す要求を受信したら、
前記範囲について範囲サイズを計算することと、
前記メモリ中に応答バッファを構成することと、
前記第１のリーダ−ライタ・ロック用の第１のリーダロック及び前記第２のリーダ−ライタ・ロック用の第２のリーダロックを取得することと、
前記範囲と前記第１のバッファとの交わりを含み、第１のサイズを持つ第１のデータを前記応答バッファにコピーすることと、
前記範囲と前記第２のバッファとの交わりを含み、第２のサイズを持つ第２のデータを前記応答バッファにプリペンドすることと、
前記第１及び第２のリーダロックを解除することと、
前記範囲サイズが前記第１のサイズと第２のサイズの和より大きくなったら、
前記ライトキャッシュ及び前記記憶装置から、前記範囲の補集合を含む第３のデータ、及び前記第１及び第２のデータを含む第４のデータを取り出し、
前記第３のデータを前記応答バッファにプリペンドする、ことと、を含む、請求項７に記載の方法。
【請求項１３】
前記第１のバッファを保護する第１のリーダ−ライタ・ロック、前記第２のバッファを保護する第２のリーダ−ライタ・ロック、及び前記変数を保護する第３のリーダ−ライタ・ロックを構成することを含む、請求項１に記載の方法。
【請求項１４】
前記リアルタイムデータの前記ストリームをアペンドする前に前記第１のリーダ−ライタ・ロック用のライタロックを取得することと、
前記リアルタイムデータの前記ストリームのアペンド後に前記第１のリーダ−ライタ・ロックから前記ライタロックを解除することと、を含む、請求項１３に記載の方法。
【請求項１５】
前記ライト基準が満たされたら、前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップする前に、前記第１のリーダ−ライタ・ロック用の第１のライタロック、及び前記第２のリーダ−ライタ・ロック用の第２のライタロックを取得することと、
前記第１のバッファ中の前記第１のバッファデータが前記第２のバッファ中の前記第２のバッファデータとスワップされたら、前記第１及び第２のライタロックを解除することと、を含む、請求項１３に記載の方法。
【請求項１６】
前記ライト機能を呼び出した後、前記バッファサイズを前記変数に加える前に、前記第２のリーダ−ライタ・ロック用の第１のライタロック及び前記第３のリーダ−ライタ・ロック用の第２のライタロックを取得することと、
前記第２のバッファをクリアすることと、
前記第２のバッファがクリアされたら、前記第１及び第２のライタロックを解除することと、を含む、請求項１３に記載の方法。
【請求項１７】
前記変数を前記フィールドに残存させることが、
前記第３のリーダ−ライタ・ロック用のリーダロックを取得することと、
前記変数を更なる変数にコピーすることと、
前記リーダロックを解除することと、
前記更なる変数を前記フィールドに記憶させることと、を含む、請求項１３に記載の方法。
【請求項１８】
ある範囲の前記リアルタイムデータを取り出す要求を受信したら、
前記範囲について範囲サイズを計算することと、
前記メモリ中に応答バッファを構成することと、
前記第１のリーダ−ライタ・ロック用の第１のリーダロック及び前記第２のリーダ−ライタ・ロック用の第２のリーダロックを取得することと、
前記範囲と前記第１のバッファとの交わりを含み、第１のサイズを持つ第１のデータを前記応答バッファにコピーすることと、
前記範囲と前記第２のバッファとの交わりを含み、第２のサイズを持つ第２のデータを前記応答バッファにプリペンドすることと、
前記第１及び第２のリーダロックを解除することと、
前記範囲サイズが前記第１のサイズと第２のサイズの和より大きくなったら、
前記ライトキャッシュ及び前記記憶装置から、前記範囲の補集合を含む第３のデータ、及び前記第１及び第２のデータを含む第４のデータを取り出し、
前記第３のデータを前記応答バッファにプリペンドする、ことと、を含む、請求項１３に記載の方法。
【請求項１９】
リアルタイムデータを記憶するための装置であって、
ファイルを記憶するよう、かつ前記ファイルに残存する前記リアルタイムデータの残存サイズを示すフィールドを記憶するよう構成された記憶装置と、
第１のバッファデータを記憶するよう構成された第１のバッファ及び第２のバッファデータを記憶するよう構成された第２のバッファを記憶するよう、かつ前記残存サイズを示す変数を記憶するよう構成されたメモリと、
プロセッサと、を含み、前記プロセッサが、
前記リアルタイムデータのストリームを受信し、
前記リアルタイムデータの前記ストリームを前記第１のバッファデータにアペンドし、
ライト基準が満たされたら、
前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップし、
前記第２のバッファ中の前記第２のバッファデータのバッファサイズを前記変数に加え、
前記第２のバッファから前記第２のバッファデータをライトキャッシュに送るように構成されたライト機能を呼び出し、かつ
コミット基準が満たされたら、
前記ライトキャッシュに記憶された前記リアルタイムデータの前記ストリームを前記ファイルにアペンドするよう構成されたコミット機能を呼び出し、
前記変数を前記フィールドに残存させるように構成された、装置。
【請求項２０】
前記リアルタイムデータが、医療処置を実施中に収集される電気生理学的（ＥＰ）データを含む、請求項１９に記載の装置。
【請求項２１】
前記ＥＰデータが、アナログデータ及びデジタルデータから選択される、請求項１９に記載の装置。
【請求項２２】
前記アナログデータが、電圧、電流及び温度を含むリストから選択される、請求項２１に記載の装置。
【請求項２３】
前記デジタルデータが、イメージデータ、位置測定値、力測定値、及び呼吸状態を含むリストから選択される、請求項２１に記載の装置。
【請求項２４】
前記プロセッサが、前記メモリの第１のアドレスに前記第１のバッファを記憶し、前記メモリの第２のアドレスに前記第２のバッファを記憶し、前記第１のアドレスと第２のアドレスとの間でバッファポインタに記憶されたバッファアドレスをトグルし、これによって前記第１のバッファと第２のバッファの役割を切り換えることによって前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップするよう構成されている、請求項１９に記載の装置。
【請求項２５】
前記プロセッサが、前記第１のバッファを保護する第１のリーダ−ライタ・ロックを構成し、かつ前記第２のバッファ及び変数を保護する第２のリーダ−ライタ・ロックを構成するよう構成されている、請求項１９に記載の装置。
【請求項２６】
前記プロセッサが、
前記リアルタイムデータの前記ストリームをアペンドする前に前記第１のリーダ−ライタ・ロック用のライタロックを取得し、かつ
前記リアルタイムデータの前記ストリームのアペンド後に前記第１のリーダ−ライタ・ロックから前記ライタロックを解除するよう構成されている、請求項２５に記載の装置。
【請求項２７】
前記プロセッサが、
前記ライト基準が満たされたら、前記第１のバッファと第２のバッファをスワップする前に、前記第１のリーダ−ライタ・ロック用の第１のライタロック、及び前記第２のリーダ−ライタ・ロック用の第２のライタロックを取得し、かつ
前記第１のバッファ中の前記第１のバッファデータと前記第２のバッファ中の前記第２のバッファデータとがスワップされたら、前記第１及び第２のライタロックを解除するよう構成されている、請求項２５に記載の装置。
【請求項２８】
前記プロセッサが、
前記ライト機能を呼び出した後、前記バッファサイズを前記変数に加える前に前記第２のリーダ−ライタ・ロック用のライタロックを取得し、
前記第２のバッファをクリアし、かつ
前記第２のバッファがクリアされたら、前記ライタロックを解除するよう構成されている、請求項２５に記載の装置。
【請求項２９】
前記プロセッサが、
前記第２のリーダ−ライタ・ロック用のリーダロックを取得し、
前記変数を更なる変数にコピーし、
前記リーダロックを解除し、かつ
前記更なる変数を前記フィールドに記憶させること、
によって、前記変数を前記フィールドに残存させるよう構成されている、請求項２５に記載の装置。
【請求項３０】
前記プロセッサが、ある範囲の前記リアルタイムデータを取り出す要求を受信したら、
前記範囲について範囲サイズを計算し、
前記メモリ中に応答バッファを構成し、
前記第１のリーダ−ライタ・ロック用の第１のリーダロック及び前記第２のリーダ−ライタ・ロック用の第２のリーダロックを取得し、
前記範囲と前記第１のバッファとの交わりを含み、第１のサイズを持つ第１のデータを前記応答バッファにコピーし、
前記範囲と前記第２のバッファとの交わりを含み、第２のサイズを持つ第２のデータを前記応答バッファにプリペンドし、
前記第１及び第２のリーダロックを解除し、かつ
前記範囲サイズが前記第１のサイズと第２のサイズの和より大きくなったら、
前記ライトキャッシュ及び前記記憶装置から、前記範囲の補集合を含む第３のデータ、及び前記第１及び第２のデータを含む第４のデータを取り出し、
前記第３のデータを前記応答バッファにプリペンドするよう構成されている、請求項２５に記載の装置。
【請求項３１】
前記プロセッサが、前記第１のバッファを保護する第１のリーダ−ライタ・ロックを構成し、前記第２のバッファを保護する第２のリーダ−ライタ・ロックを構成し、かつ前記変数を保護する第３のリーダ−ライタ・ロックを構成するよう構成されている、請求項１９に記載の装置。
【請求項３２】
前記プロセッサが、
前記リアルタイムデータの前記ストリームをアペンドする前に前記第１のリーダ−ライタ・ロック用のライタロックを取得し、かつ
前記リアルタイムデータの前記ストリームのアペンド後に前記第１のリーダ−ライタ・ロックから前記ライタロックを解除するよう構成されている、請求項３１に記載の装置。
【請求項３３】
前記プロセッサが、
前記ライト基準が満たされたら、前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップする前に、前記第１のリーダ−ライタ・ロック用の第１のライタロック、及び前記第２のリーダ−ライタ・ロック用の第２のライタロックを取得し、かつ
前記第１のバッファ中の前記第１のバッファデータが前記第２のバッファ中の前記第２のバッファデータとスワップされたら、前記第１及び第２のライタロックを解除するよう構成されている、請求項３１に記載の装置。
【請求項３４】
前記プロセッサが、
前記ライト機能を呼び出した後、前記バッファサイズを前記変数に加える前に、前記第２のリーダ−ライタ・ロック用の第１のライタロック、及び前記第３のリーダ−ライタ・ロック用の第２のライタロックを取得し、
前記第２のバッファをクリアし、かつ
前記第２のバッファがクリアされたら、前記第１及び第２のライタロックを解除するよう構成されている、請求項３１に記載の装置。
【請求項３５】
前記プロセッサが、
前記第３のリーダ−ライタ・ロック用のリーダロックを取得し、
前記変数を更なる変数にコピーし、
前記リーダロックを解除し、
前記更なる変数を前記フィールドに記憶させること、
によって、前記変数を前記フィールドに残存させるよう構成されている、請求項３１に記載の装置。
【請求項３６】
前記プロセッサが、ある範囲の前記リアルタイムデータを取り出す要求を受信したら、
前記範囲について範囲サイズを計算し、
前記メモリ中に応答バッファを構成し、
前記第１のリーダ−ライタ・ロック用の第１のリーダロック及び前記第２のリーダ−ライタ・ロック用の第２のリーダロックを取得し、
前記範囲と前記第１のバッファとの交わりを含み、第１のサイズを持つ第１のデータを前記応答バッファにコピーし、
前記範囲と前記第２のバッファとの交わりを含み、第２のサイズを持つ第２のデータを前記応答バッファにプリペンドし、
前記第１及び第２のリーダロックを解除し、かつ
前記範囲サイズが前記第１のサイズと第２のサイズの和より大きくなったら、
前記ライトキャッシュ及び前記記憶装置から、前記範囲の補集合を含む第３のデータ、及び前記第１及び第２のデータを含む第４のデータを取り出し、
前記第３のデータを前記応答バッファにプリペンドするよう構成されている、請求項３１に記載の装置。
【請求項３７】
プログラム命令を記憶した非一時的なコンピュータ可読媒体を含むコンピュータソフトウェア製品であって、前記命令は、コンピュータによって読み込まれると、前記コンピュータに、
第１のバッファデータを記憶する第１のバッファ、第２のバッファデータを記憶する第２のバッファ、及び、記憶装置に残存するリアルタイムデータの残存サイズを示す変数をメモリ中に構成させ、
前記リアルタイムデータを記憶するファイル及び前記変数を記憶するフィールドを前記記憶装置上に構成させ、
前記リアルタイムデータのストリームを受信させ、
前記リアルタイムデータの前記ストリームを前記第１のバッファデータにアペンドさせ、
ライト基準が満たされたら、
前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップさせ、
前記第２のバッファ中の前記第２のバッファデータのバッファサイズを前記変数に加えさせ、
ライト機能を呼び出させて前記第２のバッファから前記第２のバッファデータをライトキャッシュに送らせ、かつ
コミット基準が満たされたら、
コミット機能を呼び出させて前記ライトキャッシュに記憶された前記リアルタイムデータの前記ストリームを前記ファイルにアペンドさせ、
前記変数を前記フィールドに残存させる、コンピュータソフトウェア製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、広義には、リアルタイムデータ処理に関し、詳しくは、アトミックトランザクションによるダブルバッファリングを用いてリアルタイムの電気生理学的データを処理する技術に関する。
【背景技術】
【０００２】
広範にわたる医療処置において、患者の体内にセンサ、チューブ、カテーテル、分注用器具、及びインプラントなどの物体が配置される。これらの医療処置において、医師が物体及びその周囲を可視化することを支援するためにリアルタイムイメージがしばしば用いられる。しかしながら、多くの場合、リアルタイム三次元イメージングは可能でなく、望ましくもない。代わりに、体内の物体のリアルタイム空間座標を取得するよう構成された医療システムがしばしば利用されている。
【０００３】
医療処置の間に、このような医療システムは、アナログの電気生理学的（ＥＰ）データ及び／又はデジタルＥＰデータからなるリアルタイムの電気生理学的ＥＰデータを収集することが可能である。アナログＥＰデータの例としては、電極の電圧及び電流、患者の体温、及び他のセンサから収集されるデータが含まれるが、これらに限定されない。デジタルＥＰデータの例としては、カテーテルの空間位置及び患者の呼吸状態のような他のシステムによって提供されるデジタルデータ、及び信号処理演算の結果が含まれるが、これらに限定されない。
【０００４】
上記説明は、当該分野における関連技術の一般的概論として記載したものであって、この説明に含まれる何らの情報が本特許出願に対する先行技術を構成することを容認するものと解釈するべきではない。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の一実施形態によれば、リアルタイムデータを記憶するための方法であって、メモリ中に、第１のバッファデータを記憶するための第１のバッファ、及び第２のバッファデータ及び記憶装置に残存するリアルタイムデータの残存サイズを示す変数を記憶するための第２のバッファを構成することと、その記憶装置上に、リアルタイムデータを記憶するファイル及び変数を記憶するフィールドを構成することと、プロセッサによってリアルタイムデータのストリームを受信することと、リアルタイムデータのストリームを第１のバッファデータにアペンドすることと、を含む方法が提供される。この方法は、更に、ライト基準が満たされたら、第１のバッファ中の第１のバッファデータを第２のバッファ中の第２のバッファデータとスワップすることと、第２のバッファ中の第２のバッファデータのバッファサイズを上記変数に加えることと、ライト機能を呼び出して第２のバッファからライトキャッシュへ第２のバッファデータを送ることと、を含む。更に、この方法は、コミット基準が満たされたら、コミット機能を呼び出して、ライトキャッシュに記憶されたリアルタイムデータのストリームを上記ファイルにアペンドすることと、上記変数を上記フィールドに残存させることとを含む。
【０００６】
いくつかの実施形態においては、リアルタイムデータとしては、医療処置を実施中に収集された電気生理学的（ＥＰ）データが含まれ得る。別の実施形態においては、ＥＰデータは、アナログデータ及びデジタルデータから選択することができる。更なる実施形態においては、アナログデータは、電圧、電流及び温度を含むリストから選択することが可能である。補足の実施形態においては、デジタルデータは、イメージデータ、位置測定データ、力測定データ、及び呼吸状態データを含むリストから選択することが可能である。
【０００７】
別の実施形態においては、第１のバッファデータはメモリの第１のアドレスに記憶することができ、第２のバッファデータはメモリの第２のアドレスに記憶することができ、かつ、第１のバッファ中の第１のバッファデータと第２のバッファ中の第２のバッファデータとのスワップは、バッファポインタに記憶されたバッファアドレスの第１のアドレスと第２のアドレスとの間でのトグリングによって、第１と第２のバッファの役割を切り換えることを含む。
【０００８】
更なる実施形態において、本発明の方法は、第１のバッファを保護するための第１のリーダ−ライタ・ロック、及び第２のバッファ及び変数を保護するための第２のリーダ−ライタ・ロックを構成することを含むことが可能である。第１及び第２のリーダ−ライタ・ロックを含むいくつかの実施形態において、本発明の方法は、リアルタイムデータのストリームをアペンドする前に第１のリーダ−ライタ・ロック用のライタロックを取得することと、リアルタイムデータのストリームのアペンド後に第１のリーダ−ライタからライタロックを解除することと、を含むことが可能である。第１及び第２のリーダ−ライタ・ロックを含む別の実施形態において、本発明の方法は、ライト基準が満たされたら、第１のバッファと第２のバッファをスワップする前に、第１のリーダ−ライタ・ロック用の第１のライタロック、及び第２のリーダ−ライタ・ロック用の第２のライタロックを取得することと、第１のバッファ中の第１のバッファデータと第２のバッファ中の第２のバッファデータとがスワップされたら、第１及び第２のライタロックを解除することと、を含むことが可能である。
【０００９】
第１及び第２のリーダ−ライタ・ロックを含む更なる実施形態において、本発明の方法は、ライト機能を呼び出した後バッファサイズを変数に加える前に、第２のリーダ−ライタ用のライタロックを取得することと、第２のバッファをクリアすることと、第２のバッファがクリアされたら、ライタロックを解除することと、を含むことが可能である。第１及び第２のリーダ−ライタ・ロックを含む補足の実施形態において、変数を上記フィールドに残存させることは、第２のリーダ−ライタ・ロック用のリーダロックを取得することと、変数を別の変数にコピーすることと、リーダロックを解除することと、上記別の変数を上記フィールドに記憶することと、を含むことが可能である。
【００１０】
第１及び第２のリーダ−ライタ・ロックを含む別の実施形態において、本発明の方法は、ある範囲のリアルタイムデータを取り出すべき要求を受信して、その範囲について範囲サイズを計算することと、メモリ中に応答バッファを構成することと、第１のリーダ−ライタ・ロック用の第１のリーダロック及び第２のリーダ−ライタ・ロック用の第２のリーダロックを取得することと、上記範囲と第１のバッファとの交わりを含み、第１のサイズを持つ第１のデータを上記応答バッファにコピーすることと、上記範囲と第２のバッファとの交わりを含み、第２のサイズを持つ第２のデータを上記応答バッファにプリペンドすることと、第１及び第２のリーダロックを解除することと、上記範囲サイズが上記第１のサイズと第２のサイズとの和より大きくなったら、上記ライトキャッシュ及び記憶装置から、上記範囲の補集合を含む第３のデータ、及び第１のデータ及び第２のデータを含む第４のデータを取り出すことと、第３のデータを応答バッファにプリペンドすることと、を含むことが可能である。
【００１１】
更なる実施形態において、本発明の方法は、第１のバッファを保護するための第１のリーダ−ライタ・ロック、第２のバッファを保護するための第２のリーダ−ライタ・ロック、及び変数を保護するための第３のリーダ−ライタ・ロックを構成することを含むことが可能である。第１、第２及び第３のリーダ−ライタ・ロックを含むいくつかの実施形態において、本発明の方法は、リアルタイムデータのストリームをアペンドする前に、第１のリーダ−ライタ・ロック用のライタロックを取得することと、リアルタイムデータのストリームをアペンドした後、第１のリーダ−ライタ・ロックからライタロックを解除することと、を含むことが可能である。第１、第２、及び第３のリーダ−ライタ・ロックを含む別の実施形態において、本発明の方法は、ライト基準が満たされたら、第１のバッファ中の第１のバッファデータを第２のバッファ中の第２のバッファデータとスワップする前に、第１のリーダ−ライタ・ロック用の第１のライタロック及び第２のリーダ−ライタ・ロック用の第２のライタロックを取得することと、第１のバッファ中の第１のバッファデータが第２のバッファ中の第２のバッファデータとスワップされたら、第１及び第２のライタロックを解除することと、を含むことが可能である。
【００１２】
第１、第２、及び第３のリーダ−ライタ・ロックを含む更なる実施形態にあって、本発明の方法は、ライト機能を呼び出した後、バッファサイズを変数に加える前に、第２のリーダ−ライタ・ロック用の第１のライタロック及び第３のリーダ−ライタ・ロック用の第２のライタロックを取得することと、第２のバッファをクリアすることと、第２のバッファがクリアされたら、第１及び第２のライタロックを解除することと、を含むことが可能である。第１、第２、及び第３のリーダライタ・ロックを含む補足の実施形態において、変数を上記フィールドに残存させることは、第３のリーダ−ライタ・ロック用のリーダロックを取得することと、変数を別の変数にコピーすることと、リーダロックを解除することと、その別の変数を上記フィールドに記憶することと、を含むことが可能である。
【００１３】
第１、第２、及び第３のリーダ−ライタ・ロックを含む捕捉の実施形態において、本発明の方法は、ある範囲のリアルタイムデータを取り出すべき要求を受信して、その範囲について範囲サイズを計算することと、メモリ中に応答バッファを構成することと、第１のリーダ−ライタ・ロック用の第１のリーダロック及び第２のリーダ−ライタ・ロック用の第２のリーダロックを取得することと、上記範囲と第１のバッファとの交わりを含み、第１のサイズを持つ第１のデータを上記応答バッファにコピーすることと、上記範囲と第２のバッファとの交わりを含み、第２のサイズを持つ第２のデータを上記応答バッファにプリペンドすることと、第１及び第２のリーダロックを解除することと、上記範囲サイズが上記第１のサイズと第２のサイズとの和より大きくなったら、上記ライトキャッシュ及び記憶装置から、上記範囲の補集合を含む第３のデータ、及び第１のデータ及び第２のデータを含む第４のデータを取り出すことと、第３のデータを応答バッファにプリペンドすることと、を含むことが可能である。
【００１４】
又、本発明の一実施形態によれば、リアルタイムデータを記憶するための装置であって、ファイルを記憶するよう、かつファイルに残存するリアルタイムデータの残存サイズを示すフィールドを記憶するよう構成された記憶装置と、第１のバッファデータを記憶するよう構成された第１のバッファ及びバッファデータを記憶するよう構成された第２のバッファを記憶するよう、かつ上記残存サイズを示す変数を記憶するよう構成されたメモリと、リアルタイムデータのストリームを受信するよう、かつリアルタイムデータのストリームを第１のバッファデータにアペンドするよう構成されたプロセッサと、を含む装置が提供される。又、ライト基準が満たされると、プロセッサは、第１のバッファ中の第１のバッファデータを第２のバッファ中の第２のバッファデータとスワップし、第２のバッファ中の第２のバッファデータのバッファサイズを変数に加え、第２のバッファデータを第２のバッファからライトキャッシュに送るよう構成されたライト機能を呼び出すよう構成される。コミット基準が満たされると、プロセッサは、更に、ライトキャッシュに記憶されたリアルタイムデータのストリームを上記ファイルにアペンドし、上記変数を上記フィールドに残存させるよう構成されたコミット機能を呼び出すよう構成される。
【００１５】
更に、本発明の一実施形態によれば、コンピュータソフトウェア製品であって、コンピュータによって読み出されると、コンピュータをして、第１のバッファデータを記憶する第１のバッファ、第２のバッファデータ及び記憶装置に残存するリアルタイムデータの残存サイズを示す変数を記憶する第２のバッファをメモリ中に構成させ、リアルタイムデータを記憶するファイル及び変数を記憶するフィールドを記憶装置上に構成させ、リアルタイムデータのストリームを受信させ、ライト基準が満たされると、リアルタイムデータのストリームを第１のバッファデータにアペンドさせ、かつ、コンピュータをして、第１のバッファ中の第１のバッファデータを第２のバッファ中の第２のバッファデータとスワップさせ、第２のバッファ中の第２のバッファデータのバッファサイズを変数に加えさせ、ライト機能を呼び出させて第２のバッファからライトキャッシュに第２のバッファデータを送らせる、プログラム命令が記憶された非一時的コンピュータ可読媒体を含む、コンピュータプログラム製品が提供される。コミット基準が満たされたら、プログラム命令は、更に、コンピュータをして、コミット機能を呼び出させてライトキャッシュに記憶されたリアルタイムデータのストリームをファイルにアペンドさせ、かつ上記変数を上記フィールドに残存させる。
【図面の簡単な説明】
【００１６】
ここで、本願開示の発明をあくまで一例として添付図面を参照しつつ説明する。
【図１】本発明の一実施形態に基づくリアルタイムの電気生理学的（ＥＰ）データの永続記憶装置用のアトミックトランザクションによるダブルバッファリングを実行するコンソールを構成する医療システムの概要図である。
【図２】本発明の一実施形態によるコンソールのブロック図である。
【図３Ａ】まとめて図３とし、本発明の一実施形態によるリアルタイムＥＰデータを処理する方法を概略説明するフローチャートである。
【図３Ｂ】まとめて図３とし、本発明の一実施形態によるリアルタイムＥＰデータを処理する方法を概略説明するフローチャートである。
【図３Ｃ】まとめて図３とし、本発明の一実施形態によるリアルタイムＥＰデータを処理する方法を概略説明するフローチャートである。
【図３Ｄ】まとめて図３とし、本発明の一実施形態によるリアルタイムＥＰデータを処理する方法を概略説明するフローチャートである。
【発明を実施するための形態】
【００１７】
概論
心臓切除のような医療処置時には、ハードディスクのような永続記憶媒体（本願においては記憶装置とも称する）に残存させる必要があるリアルタイムの電気生理学的（ＥＰ）データの連続ストリームが存在し得る。リアルタイムＥＰデータは、処置の間に速度が変化することもあるが、一般に一定速度で流れる。医療データの性質上、リアルタイムＥＰデータは、システム障害又は停電が起こった場合に、システムが、残存するデータストリーム中の最後の信頼できるバイトを特定することができるようにするために、記憶媒体にトランザクション可能なやり方で残存される場合がある。
【００１８】
本発明のいくつかの実施形態は、リアルタイムＥＰデータを永続記憶媒体上のファイルに残存させるためにアトミックトランザクションによるダブルバッファリングを実行する方法及びシステムを提供する。いくつかの実施形態においては、ランダムアクセスメモリ（ＲＡＭ）が２つのデータバッファ及び変数を記憶するように構成され、永続記憶媒体がファイル及びフィールドを記憶するように構成される。以下に説明するように、フィールドは記憶媒体に残存するリアルタイムデータの第１のサイズを記憶することができ、変数は、記憶媒体に残存するリアルタイムデータの第１のサイズと記憶媒体にデステージされる予定のバッファのうちの１つに記憶されたリアルタイムデータの第２のサイズとを記憶することができる。更に、第１のリーダ−ライタ（ＲＷ）ロックを第１のバッファを保護するよう構成することができ、第２のＲＷロックを第２のバッファ及び変数を保護するよう構成することができる。
【００１９】
リアルタイムＥＰデータのストリームを受信すると、そのストリームは第１のバッファにアペンドすることができる。以下に説明するように、第１のバッファに蓄積されたリアルタイムＥＰデータのストリームは、まず第１のバッファと第２のバッファをスワップし、変数を更新し、ライト機能を呼び出して第２のバッファからライトキャッシュにデータを送ることにより、周期的にライトキャッシュに送ることができる。ライトキャッシュに記憶されたデータを永続記憶媒体に残存させるには、コミット機能を呼び出してキャッシュから永続記憶媒体にリアルタイムＥＰデータをデステージし、変数中の値をライトキャッシュに送り、コミット機能をもう１回呼び出して、その値をライトキャッシュから記憶装置上のフィールドにデステージすることができる。
【００２０】
本発明のいくつかの実施形態によれば、リアルタイムＥＰデータのストリームは、システムリソースを保護する何らかのロックに起因する遅延に全く遭遇することなく、連続的に処理することができる。更に、本発明のいくつかの実施形態によれば、リアルタイムＥＰデータがバッファのいずれかに依然記憶されている限り、何らかのロック待機に起因する遅延に全く遭遇することなく、リード要求を処理することが可能である。その上更に、本発明の実施形態を実施するシステムは、リアルタイムＥＰデータの「チャンク」を、データがライトキャッシュへ送られた順序と異なる順序でそれらのチャンクが記憶装置にデステージされても、確実にアトミックトランザクションでコミットすることができる。
【００２１】
システムの説明
図１は、リアルタイムの電気生理学的（ＥＰ）データ永続記憶装置用のアトミックトランザクションによるダブルバッファリングを実施する制御コンソール２２を含む医療システム２０の概要図であり、図２は本発明の一実施形態によるコンソールのブロック図である。システム２０は、制御コンソール２２、及び心臓カテーテルのようなプローブ２４を含む。以下に記載する実施形態において、プローブ２４は、患者２８の心臓２６における電位マッピングのような、診断又は治療処置に使用するものと仮定する。代替的に、プローブ２４は、必要な変更を加えて心臓又は他の体器官における他の治療及び／又は診断用に使用することもできる。
【００２２】
操作者３０は、プローブ２４の遠位端３２が心臓２６の心腔に進入するよう、患者２８の脈管系にプローブ２４を挿入する。図１及び２に示す例において、コンソール２２は、磁気位置検出法を用いて心臓２６内部の遠位端３２の位置座標を決定する。位置座標を決定するために、コンソール２２内のドライバ回路３４は、磁場発生器３６を駆動して患者２８の体内に磁場を発生させる。通常、磁場発生器３６はコイルを備え、コイルは患者胴体下方の、患者２８の体外の既知の位置に設置される。これらのコイルは、心臓２６を包含する既定の作業ボリューム内に磁場を生成する。プローブ２４の遠位端３２内部にある磁場センサ３８（本願においては位置センサ３８とも称する）は、これらの磁場に応動して電気信号を発生する。信号プロセッサ４０は、通常距離及び方位座標の両方を含む遠位端３２の位置座標を決定するために、これらの信号を処理する。上記の位置検出方法は、Ｂｉｏｓｅｎｓｅ  Ｗｅｂｓｔｅｒ  Ｉｎｃ．ｏｆ  Ｄｉａｍｏｎｄ  Ｂａｒ，ＣＡ．が製造するＣＡＲＴＯ（商標）マッピングシステムに実装されおり、以下に引用する特許及び特許出願に詳細に記載されている。
【００２３】
位置センサ３８は、遠位端３２の位置を示す信号をコンソール２２に送信する。位置センサ３８は、１つ以上の小型コイルを含んでもよく、通常は、異なる軸方向沿いに配置された複数のコイルからなる。あるいは、位置センサ３８は、別の種類の磁気センサか、若しくはインピーダンスベース位置センサ又は超音波位置センサのような他の種類の位置トランスデューサからなるものであってもよい。図１には、単一の位置センサしか持たないプローブが示してあるが、本発明の実施形態は、２つ以上の位置センサを持つプローブを用いることも可能である。
【００２４】
図示例のシステム２０は、磁気型センサを用いて遠位端３２の位置を測定するが、他の位置追跡技術を用ることも可能である（例えばインピーダンス型センサ）。磁気位置追跡技術は、例えば、米国特許第５，３９１，１９９号、同５，４４３，４８９号、第６，７８８，９６７号、同第６，６９０，９６３号、同第５，５５８，０９１号、同第６，１７２，４９９号、同第６，１７７，７９２号に、記載されており、それらの開示内容を参照により本願に援用する。インピーダンス型位置追跡技術は、例えば、米国特許第５，９８３，１２６号、同第６，４５６，８６４号、及び同第５，９４４，０２２号に記載されており、それらの開示内容を参照によって本願に援用する。
【００２５】
参照によって本願に援用する文書は、それらの援用した文書中に、本願明細書中に明示的又は非明示的に与えられた定義と相反する形で何らかの用語が定義されている場合に本願明細書の定義のみが考慮されるべきである点を除き、本願の一部をなすものとみなされるべきである。
【００２６】
また、プローブ２４は、遠位端３２に内蔵されたた力センサ４２、及び遠位端に結合された電極４４をも含む。力センサ４２は、プローブ２４の遠位先端部４６が心臓２６の心内膜組織に及ぼす力を示す信号を発生してコンソールへ送ることにより、プローブの遠位先端部によって心内膜組織に加えられる力を測定する。一実施形態においては、力センサは、遠位端３２にばねによって接続された磁場送受信器を備えて、ばねのたわみ測定に基づく力の指示を得ることが可能である。この種のプローブ及び力センサの更なる詳細は、米国特許出願公報第２００９／００９３８０６号及び同第２００９／０１３８００７号に記載されており、これらの開示内容を参照により本明細書に援用する。あるいは、遠位端３２は別の種類の力センサを含むこともできる。
【００２７】
いくつかの実施形態においては、電極４４はインピーダンス型位置トランスデューサとして機能するよう構成することもできる。これに加えるか又はこれに代えて、電極４４は、心内膜組織上の複数の位置におけるある生理学的特性（例えば、局所表面電位）を測定するよう、かつ／又は切除処置時に心内膜組織に高周波（ＲＦ）エネルギーを伝達するよう構成することができる。
【００２８】
本願に記載する実施形態においては、プロセッサ４０は、アナログ／デジタル（Ａ／Ｄ）変換器５４を介して受信されるデジタルＥＰデータ５０及びアナログＥＰデータ５２を含むリアルタイムの電気生理学的（ＥＰ）データ４８を収集するよう構成される。デジタルＥＰデータ５０の例としては、プローブ２４からの位置測定値及び力測定値、患者２８の呼吸状態データ、及び核磁気共鳴映像法（ＭＲＩ）システムのような画像診断システム（図示せず）、あるいはコンピュータ断層撮影（ＣＴ）システムからのイメージデータが含まれるが、これらに限定されない。アナログＥＰデータ５２の例としては、電圧、電流及び温度データが含まれるが、これらに限定されない。
【００２９】
プロセッサ４０は、ディスプレイ５６を駆動して、患者の身体の遠位端３２の位置、並びに進行中の処置に関する状態情報及びガイダンスを表示するイメージ５８を操作者３０に提供する。診断治療中においては、イメージ５８は、心臓２６のシミュレート表面を含むことが可能である。いくつかの実施形態においては、操作者３０は１つ以上の入力装置６０を用いてイメージ５８を操作することができる。
【００３０】
又、コンソール２２は、ランダムアクセスメモリ（ＲＡＭ）６２、及びハードディスクドライブ又は半導体ディスクドライブのような記憶装置６４を含む。記憶装置６４は、２つ以上の物理デバイスを含み得る。ダブルバッファリングを実行するため、メモリ６２はバッファ６６及びバッファポインタ６８を含む。本願の説明では、バッファは、バッファ６６Ａと６６Ｂとからなり、バッファポインタはバッファポインタ６８Ａと６８Ｂとからなるというように、バッファ６６及びバッファポインタ６８にはそれぞれの識別番号に文字記号を付けて区別することができる。以下に説明するように、リアルタイムＥＰデータ４８を受信すると、プロセッサ４０はバッファポインタ６８Ａによって指示された所与のバッファ６６に受信データを記憶する。
【００３１】
又、メモリ６２は、バッファ６６からライトキャッシュ７２へリアルタイムＥＰデータ４８を送るよう構成されたライト機能７０、及びリアルタイムＥＰデータをライトキャッシュから記憶装置６４上のファイル７６にデステージするよう構成されたコミット機能７４を含む。メモリ６２は、更に、記憶装置６４上に記憶されたリアルタイムＥＰデータの残存サイズを示すｕｎｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ変数７８、ｔｅｍｐ＿ｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ変数８０、応答バッファ８２を含み、これらの動作については以下に説明する。
【００３２】
メモリ６２、更に、リーダ−ライタ（ＲＷ）ロック８４を含む。本願の説明では、ＲＷロックがリーダ−ライタ・ロック８４Ａ、８４Ｂ及び８４Ｃからなるように、ＲＷロック８４は識別番号に文字記号を付けて区別することができる。本発明の実施形態においては、システム２０は、２つあるいは３つのＲＷロック８４を用いることによってアトミックトランザクションによるダブルバッファリングを行なうことができる。ＲＷロック８４は、バッファ６６及びｕｎｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ７８のようなメモリ６２内のリソースへのクライアント（例えばプロセッサ４０上で実行されるアプリケーション）のアクセスを制御して、リードについては複数スレッドへの同時アクセスを許容するが、リソースへのライト（あるいは他の変更）については単一のスレッドへのアクセスを規制するよう構成される。動作について説明すると、プロセッサ４０は、所与のＲＷロック８４用のリーダロック又はライトロックを取得することができる。
【００３３】
ライタロックは、それが保護するリソースに対して最初のクライアントが読み出し及び書き込みをすることを可能にする。プロセッサ４０が所与のリソースを保護するよう構成された所与のＲＷロック８４用のライタロックを取得すると、その所与のリソースについてはそれ以上のリーダロックあるいはライタロックを取得することはできず、最初のクライアントがライタロックを解除するまで、その後の他のクライアントのリード要求及びライト要求はすべて阻止される。
【００３４】
リーダロックは、それが保護するリソースへの読み出し専用アクセス権を最初のクライアントに付与する。プロセッサ４０が所与のリソースを保護するよう構成された所与のＲＷロック８４用のリーダロックを取得すると、その所与のリソースに対して追加のリーダロックを取得することができ、その所与のリソースに対してリーダロックを有する他のクライアントからのリード要求を処理することができる。所与のリソースについて２つ以上のリーダロックを取得することはできるが、すべてのクライアントがそれらのリーダロックを解除するまで、所与のリソースからはライタロック（したがって、すべてのライト要求）が阻止される。
【００３５】
ファイル７６は、残存するリアルタイムＥＰデータ８６及びｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅフィールド８８を含む。残存するリアルタイムＥＰデータ８６は、確認済みデータ９０及び未確認データ９２を含む。以下に説明する実施形態においては、矢印９４によって示すように、ｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８８は、永続記憶がアトミックトランザクションの完了によって確認される確認済みデータ９０の最終バイトを指示する。ｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８８の更新によって所与のアトミックトランザクションを完了する前、未確認データ９２は、ライトキャッシュ７２からファイル７６にデステージされたリアルタイムデータ４８を含む。したがって、システム障害又は停電が起きた場合には、ｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８８は、確実に読み出すことができる残存するリアルタイムデータＥＰ  ８６中の最終バイトを指示する。言い換えると、未確認データ９２に記憶されているすべての残存するリアルタイムＥＰデータ８６は、ライトキャッシュ７２から記憶装置６４上のファイル７６に完全に残存させられる（すなわち、デステージされる）か、あるいは残存させられないリアルタイムＥＰデータ４８を含む。
【００３６】
プロセッサ４０は、通常、プローブ２４から信号を受信し、かつコンソール２２の他の構成部分を制御するための適切なフロントエンド及びインターフェース回路を備えた汎用コンピュータよりなる。プロセッサ４０は、本願に記載する機能を実行するようソフトウェアでプログラムすることが可能である。このソフトウェアは、例えば、ネットワークを介してコンソール２２に電子的形態でダウンロードすることができ、あるいは、光学記憶媒体、磁気記憶媒体又は電子記憶媒体のような非一時的有形媒体上で提供することができる。あるいは、プロセッサ４０の機能のうちの一部又は全部を専用か又はプログラム可能なハードウェア構成要素によって実行することも可能である。
【００３７】
リアルタイムＥＰデータ処理
図３Ａは、本発明の一実施形態によるリアルタイムＥＰデータ４８を処理する方法を概略説明するフローチャートである。本願の実施形態では、医療処置を実施中に収集されたリアルタイムＥＰデータ４８をダブルバッファリング及びアトミックトランザクションを用いて処理する技術を記載するが、何らかの他の形のリアルタイムデータを処理するためにダブルバッファリング及びアトミックトランザクションを使用することも、本発明の精神及び範囲内に包括されると考えられる。
【００３８】
第１の構成ステップ１００で、プロセッサ４０は、ファイル７６及びｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８８を記憶するよう記憶装置６４を構成する。図２に示す例においては、残存するＥＰデータ８６及びｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８８はファイル７６に記憶されるが、これらのリアルタイムＥＰデータ及びｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅフィールドは記憶装置６４上の別個のファイルに記憶することもできる。
【００３９】
初期化ステップ１０２で、プロセッサ４０はｕｎｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ７８及びｔｅｍｐ＿ｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８０を初期化し、かつリアルタイムＥＰデータ４８を記憶するようバッファ６６を構成する。プロセッサ４０は、リアルタイムＥＰデータ４８を記憶するために、第１のバッファデータ記憶するよう第１のバッファを、又第２のバッファデータを記憶するよう第２のバッファをそれぞれ構成する。最初、ｕｎｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ７８及びｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８８は、データ４８を含むデータストリームの初期サイズを示す同じ値を記憶する。通常、データストリームの初期サイズは０であるが、データストリームにヘッダー情報がある場合、０を上回ることもある。
【００４０】
リアルタイムＥＰデータ４８を処理している間、バッファ６６は、空であるか、あるいはファイル７６中の特定の範囲と一致するかのどちらかである。本願記載の実施形態においては、期間バッファ６６又は所与のバッファ６６が使用される場合は常に、期間は、それらのバッファ及びファイル７６の対応する範囲に記憶されたリアルタイムＥＰデータの両方について言う。
【００４１】
以下に図３Ｂで説明するように、プロセッサ４０は、バッファポインタ６８Ａによって指示された所与のバッファ６６にリアルタイムＥＰデータ４８を記憶する。したがって、バッファポインタ６８Ａによって指示されている所与のバッファは、本願で第１のバッファと称する「アクティブ」バッファからなり、バッファポインタによって指示されていないバッファは、本願で第２のバッファと称する「イナクティブ」バッファからなる。
【００４２】
本願発明の実施形態において、バッファポインタ６８Ａは常に第１のバッファを指示し、ポインタ６８Ｂは常に第２のバッファを指示する。したがって、第１のバッファがバッファ６６Ａからなり、第２のバッファがバッファ６６Ｂからなるならば、バッファポインタ６６Ａはバッファ６６Ａを指示し、バッファポインタ６８Ｂはバッファ６６Ｂを指示する。同様に、第１のバッファがバッファ６６Ｂからなり、第２のバッファがバッファ６６Ａからなるならば、バッファポインタ６６Ａはバッファ６６Ｂを指示し、バッファポインタ６８Ｂバッファ６６Ａを指示する。以下に説明するように、プロセッサ４０は、バッファポインタ６８Ａに記憶された第１のアドレスをバッファポインタ６８Ｂに記憶された第２のアドレスとをスワップすることにより、第１のバッファと第２のバッファをスワップすることができる。
【００４３】
第２の構成ステップ１０４で、プロセッサ４０は、第１のバッファを保護するようロック８４Ａを構成し、第２のバッファ及びｕｎｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ７８を保護するようロック８４Ｂを構成する。本発明の一代替実施形態においては、プロセッサ４０は、第１のバッファを保護するようロック８４Ａを構成し、第２のバッファを保護するようロック８４Ｂを構成し、ｕｎｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ７８を保護するようロック８４Ｃを構成することができる。
【００４４】
第２の構成ステップ１０４が完了したら、プロセッサ４０は、第１の実行ステップ１０６の１つ以上のリアルタイムデータ受信スレッド（以下に図３Ｂで説明する）、第２の実行ステップ１０８の単一のリアルタイムデータライト及びコミット・スレッド（以下に図３Ｃで説明するような）、及び第３の実行ステップ１１０の１つ以上のリアルタイムデータリード・スレッド（以下に図３Ｄで説明するような）を同時に実行することができる。
【００４５】
図３Ｂは、本発明の一実施形態によるリアルタイムデータ受信スレッドで実行される処理ステップを概略説明するフローチャートである。第１の比較ステップ１２０で、プロセッサ４０は、リアルタイムＥＰデータ４８を受信するまで待機する。リアルタイムＥＰデータ４８のストリームを受信すると、プロセッサ４０は、取得ステップ１２２で、ＲＷロック８４Ａ用の（すなわち、第１のバッファを保護するための）ライタロックを取得する。プロセッサ４０は、アペンドステップ１２４で、リアルタイムＥＰデータ４８の受信ストリームを第１のバッファデータにアペンドする。最後に、プロセッサ４０は、解除ステップ１２６で、ＲＷロック８４Ａからライタロックを解除し、処理はステップ１２０へ続く。
【００４６】
図３Ｃは、本発明の一実施形態によるリアルタイムデータライト及びコミット・スレッドで実行される処理ステップを概略説明するフローチャートである。第１の比較ステップ１３０で、プロセッサ４０はライト基準が満たされるまで待機する。ライト基準は、例えば、第１のバッファが第１の特定のデータ量（例えば１メガバイト）を持つこと、あるいはプロセッサ４０が最後にライト機能７０を呼び出した以後の第１の特定の経過時間（例えば２０秒）とすることができる。
【００４７】
ライト基準が満たされたことを確認したら、プロセッサ４０は、第１の取得ステップ１３２で、ＲＷロック８４Ａ用の第１のライタロック及びＲＷロック８４Ｂ用の第２のライタロックを取得し、かつ、スワップステップ１３４で、プロセッサは、第１のバッファ中の第１のバッファデータと第２のバッファ中の第２のバッファデータとをスワップすることにより、第１のバッファと第２のバッファとをスワップする。いくつかの実施形態においては、第１のバッファは、バッファポインタ６８Ａによって参照されるメモリ６２の第１のアドレスに記憶され、第２のバッファは、バッファポインタ６８Ｂによって参照されるメモリの第２のアドレスに記憶され、かつ、プロセッサ４０は、第１のバッファ中の第１のバッファデータを第２のバッファ中の第２のバッファデータとスワップするために、バッファポインタ６８Ａに記憶されたアドレスを第１のアドレスと第２のアドレスとの間で「トグルする」（すなわち、バッファポインタ６８Ａと６８Ｂとに記憶されたアドレスをスワップする）ことによって、第１と第２のバッファの役割を切り換える。
【００４８】
例えば、バッファポインタ６８Ａが現在バッファ６６Ａを指示していると、プロセッサ４０は、第１のバッファ中の第１のバッファデータを第２のバッファ中の第２のバッファデータとスワップするために、バッファ６６Ｂのアドレスをバッファポインタ６８Ａに記憶させる。同様に、バッファポインタ６８Ａが現在バッファ６６Ｂを指示していると、プロセッサ４０は、第１のバッファ中の第１のバッファデータを第２のバッファ中の第２のバッファデータとスワップするために、バッファ６６Ａのアドレスをバッファポインタ６８Ａに記憶させる。
【００４９】
第１のバッファ中の第１のバッファデータを第２のバッファ中の第２のバッファデータとスワップしたら、上記の実施形態で受信されたリアルタイムＥＰデータのストリームは第２のバッファに記憶され、プロセッサ４０は、リアルタイムデータ受信スレッドを実行して、リアルタイムＥＰデータ４８のさらなるストリームを第１のバッファに記憶することができる。第１の解除ステップ１３６で、プロセッサ４０は、ＲＷロック８４Ａから第１のライタロックを解除し、ＲＷロック８４Ｂから第２のライタロックを解除し、かつ、書き込みステップ１３８で、プロセッサは、ライト機能７０を呼び出して、第２のバッファからライトキャッシュ７２へ第２のバッファデータを送る。
【００５０】
第２の取得ステップ１４０では、プロセッサ４０は、ＲＷロック８４Ｂ用の第３のライタロックを取得し、かつ、インクリメントステップ１４２で、プロセッサは、第２のバッファに記憶された第２のバッファデータのサイズでｕｎｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ７８をインクリメントする。プロセッサ４０は、クリアステップ１４４で、第２のバッファをクリアし、かつ、第２の解除ステップ１４６で、ＲＷロック８４Ｂから第３のライタロックを解除する。
【００５１】
上記の代替実施形態においては、ＲＷロック８４Ｃがｕｎｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ７８を保護する場合、プロセッサ４０は、ステップ１４０でＲＷロック用の第４のライタロックを８４Ｃ取得し、かつ、プロセッサはステップ１４６でＲＷロックから第４のライタロックを８４Ｃ解除する。この代替実施形態では、ステップ１４０でＲＷロック８４Ｂ用に取得した第３のライタロックが第２のバッファを保護する。
【００５２】
第２の比較ステップ１４８で、プロセッサ４０は、コミット基準が満たされているかどうかをチェックする。コミット基準は、例えば、第１のバッファが第２の特定のデータ量（例えば２メガバイト）を持つこと、あるいはプロセッサ４０が最後にコミット機能７０を呼び出した以後の第２の特定の経過時間（例えば４０秒）とすることができる。
【００５３】
コミット基準が満たされたら、プロセッサ４０は、第３の取得ステップ１５０でＲＷロック８４Ｂ用のリーダロックを取得し、コピーステップ１５２で、ｕｎｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ７８に記憶された値をｔｅｍｐ＿ｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８０にのコピーし、第３の解除ステップ１５４でリーダロックをＲＷロック８４Ｂから解除する。上記の代替実施形態では、ＲＷロック８４Ｃがｕｎｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ７８を保護する場合、プロセッサ４０は、ステップ１５０で、ＲＷロック用のリーダロック８４Ｃを取得し、ステップ１５４でリーダロックをＲＷロック８４Ｃから解除する。
【００５４】
ｃｏｍｍｉｔステップ１５６で、プロセッサ４０は、コミット機能７４を呼び出して、ライトキャッシュ７２に記憶されているリアルタイムＥＰデータのストリームを記憶装置６４上のファイル７６に残存させる（すなわち、デステージする）。プロセッサ４０で実行されるオペレーティングシステム（図示せず）が、既にリアルタイムＥＰデータをライトキャッシュ７２からファイル７６にデステージしている場合がありうる。そのような場合、プロセッサ４０は、ステップ１５６をスキップすることができる。
【００５５】
最後に、残存ステップ１５８では、プロセッサ４０は、ｔｅｍｐ＿ｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８０に記憶された値をｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８８に残存させ、処理はステップ１３０へ続く。ｔｅｍｐ＿ｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８０に記憶された値をｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８８に残存させるために、プロセッサ４０は、ライト機能７０を呼び出して値をライトキャッシュ７２に送ることができ、コミット機能７４を呼び出してその値をｃｏｍｍｉｔｔｅｄ＿ｓｉｚｅ  ８８にデステージすることができる。ステップ１４８に戻って、ｃｏｍｍｉｔ基準が満たされていなかった場合、処理はステップ１３０へ続く。
【００５６】
図３Ｄは、本発明の一実施形態によるリアルタイムデータリード・スレッドで実行される処理ステップを概略説明するフローチャートである。本願記載の実施形態においては、リアルタイムデータ・スレッドは、現在下記のいずれかに記憶されているある範囲のリアルタイムＥＰデータ４８に対するリード要求を処理するよう構成される：
・第１のバッファ。
・第１のバッファ及び第２のバッファ。
・第１のバッファ、第２のバッファ、及びライトキャッシュ７２、及び／又はファイル７６。
・第２のバッファ。
・第２のバッファ、及びライトキャッシュ７２、及び／又はファイル７６。
・ライトキャッシュ７２及び／又はファイル７６。
【００５７】
第１の比較ステップ１６０で、プロセッサ４０は、リード要求を受信するまで待機し、プロセッサ４０がある範囲のリアルタイムＥＰデータ４８を検索するリード要求を受信すると、プロセッサは、要求されたデータの範囲ついて範囲サイズを計算ステップ１６２で計算し、構成ステップ１６４でメモリ６２に応答バッファ８２を構成する。応答バッファ８２を構成するために、プロセッサ４０は、応答バッファに、計算した範囲サイズに合致するサイズを持つメモリーブロック６２を割り当てる。
【００５８】
取得ステップ１６６で、プロセッサ４０は、ＲＷロック８４Ａ用の第１のリーダロックを取得し、ＲＷロック８４Ｂ用に第２のリーダロックを取得する。コピーステップ１６８で、プロセッサ４０は、要求された範囲と第１のバッファとの第１の交わりからなりかつ第１のサイズを有する第１のデータを応答バッファ８２にコピーする。第１のバッファが要求された範囲のリアルタイムＥＰを全く記憶しない場合は、第１のデータは空部分集合からなり、第１のサイズは０である。
【００５９】
第１のプリペンドステップ１７０で、プロセッサ４０は、要求された範囲と第２のバッファとの第２の交わりからなりかつ第２のサイズを有する第２のデータを応答バッファ８２にプリペンドする。第２のバッファが要求された範囲のリアルタイムＥＰを全く記憶しない場合は、第２のデータは空部分集合からなり、第２のサイズは０である。
【００６０】
解除ステップ１７２で、プロセッサ４０は、ＲＷロック８４Ａから第１のリーダロックを解除し、ＲＷロック８４Ｂから第２のリーダロックを解除する。比較ステップ１７４で範囲サイズが第１のサイズと第２のサイズの和より大きい場合、プロセッサ４０は、検索ステップ１７６で、要求された範囲の補集合からなる第３のデータ、及び第１及び第２のデータからなる第４のデータを取り出す。
【００６１】
第２のプリペンドステップ１７８で、プロセッサ４０は、第３のデータを応答バッファ８２にプリペンドし、処理はステップ１６０へ続く。いくつかの実施形態では、応答バッファ８２へのデータ追加が完了すると（ステップ１７０又はステップ１７６のいずれかで）、プロセッサ４０は、応答バッファ８２のアドレスを指示しているリード要求に対して応答を送ることができる。一代替実施形態においては、応答は応答バッファ８２であってもよい。ステップ１７４に戻って、範囲サイズが第１と第２のサイズの和以下であると、処理はステップ１６０へ続く。
【００６２】
前述したように、本発明の実施形態は、アトミックトランザクションを用いてリアルタイムＥＰデータを受信し、記憶装置６４に残存させる。以上説明した実施形態においては、図３Ｂのステップ１２０で所与のアトミックトランザクションが開始され、図３Ｄのステップ１７８で終了する。
【００６３】
以上説明した実施形態は、例示のために記載したものであり、本発明が、上に具体的に示し、説明した内容に限定されるものではないということは正当に理解されよう。むしろ、本発明の範囲には、上で説明した様々な特徴の組合わせ及び部分的組合わせが併せて含まれるとともに、それらの変形形態及び修正形態が含まれ、これらは、上記説明を読むことにより当業者が想到するものであり、従来技術には開示されていないものである。
【００６４】
〔実施の態様〕
（１）  リアルタイムデータを記憶する方法であって、
メモリ中に、第１のバッファデータを記憶するための第１のバッファ、第２のバッファデータを記憶するための第２のバッファ、及び記憶装置に残存する前記リアルタイムデータの残存サイズ（persisted size）を示す変数を構成することと、
前記記憶装置上に、前記リアルタイムデータを記憶するファイル及び前記変数を記憶するフィールドを構成することと、
プロセッサによって前記リアルタイムデータのストリームを受信することと、
前記リアルタイムデータの前記ストリームを前記第１のバッファデータにアペンドすることと、
ライト基準（write criteria）が満たされたら、
前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップし、
前記第２のバッファ中の前記第２のバッファデータのバッファサイズを前記変数に加え、
ライト機能を呼び出して前記第２のバッファからライトキャッシュへ前記第２のバッファデータを送る、ことと、
コミット基準が満たされたら、
コミット機能を呼び出して、前記ライトキャッシュに記憶された前記リアルタイムデータの前記ストリームを前記ファイルにアペンドし、
前記変数を前記フィールドに残存させる、ことと、を含む方法。
（２）  前記リアルタイムデータが、医療処置を実施中に収集される電気生理学的（ＥＰ）データを含む、実施態様１に記載の方法。
（３）  前記ＥＰデータが、アナログデータ及びデジタルデータから選択される、実施態様２に記載の方法。
（４）  前記アナログデータが、電圧、電流及び温度を含むリストから選択される、実施態様３に記載の方法。
（５）  前記デジタルデータが、イメージデータ、位置測定値、力測定値、及び呼吸状態を含むリストから選択される、実施態様３に記載の方法。
【００６５】
（６）  前記第１のバッファが前記メモリの第１のアドレスに記憶され、前記第２のバッファが前記メモリの第２のアドレスに記憶され、かつ、前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップすることが、バッファポインタに記憶されたバッファアドレスを前記第１のアドレスと第２のアドレスとの間でトグルし、これによって前記第１のバッファと第２のバッファの役割を切り換えることを含む、実施態様１に記載の方法。
（７）  前記第１のバッファを保護するための第１のリーダ−ライタ・ロック、及び前記第２のバッファ及び前記変数を保護するための第２のリーダ−ライタ・ロックを構成することを含む、実施態様１に記載の方法。
（８）  前記リアルタイムデータの前記ストリームをアペンドする前に、前記第１のリーダ−ライタ・ロック用のライタロックを取得することと、
前記リアルタイムデータの前記ストリームのアペンド後に、前記第１のリーダ−ライタ・ロックから前記ライタロックを解除することと、を含む、実施態様７に記載の方法。
（９）  前記ライト基準が満たされたら、前記第１のバッファと第２のバッファをスワップする前に、前記第１のリーダ−ライタ・ロック用の第１のライタロック、及び前記第２のリーダ−ライタ・ロック用の第２のライタロックを取得することと、
前記第１のバッファ中の前記第１のバッファデータと前記第２のバッファ中の前記第２のバッファデータとがスワップされたら、前記第１及び第２のライタロックを解除することとを含む、実施態様７に記載の方法。
（１０）  前記ライト機能を呼び出した後、前記バッファサイズを前記変数に加える前に、前記第２のリーダ−ライタ・ロック用のライタロックを取得することと、
前記第２のバッファをクリアすることと、
前記第２のバッファがクリアされたら、前記ライタロックを解除することと、を含む、実施態様７に記載の方法。
【００６６】
（１１）  前記変数を前記フィールドに残存させることが、
前記第２のリーダ−ライタ・ロック用のリーダロックを取得することと、
前記変数を更なる変数にコピーすることと、
前記リーダロックを解除することと、
前記更なる変数を前記フィールドに記憶させることと、を含む、実施態様７に記載の方法。
（１２）  ある範囲の前記リアルタイムデータを取り出す要求を受信したら、
前記範囲について範囲サイズを計算することと、
前記メモリ中に応答バッファを構成することと、
前記第１のリーダ−ライタ・ロック用の第１のリーダロック及び前記第２のリーダ−ライタ・ロック用の第２のリーダロックを取得することと、
前記範囲と前記第１のバッファとの交わりを含み、第１のサイズを持つ第１のデータを前記応答バッファにコピーすることと、
前記範囲と前記第２のバッファとの交わりを含み、第２のサイズを持つ第２のデータを前記応答バッファにプリペンドすることと、
前記第１及び第２のリーダロックを解除することと、
前記範囲サイズが前記第１のサイズと第２のサイズの和より大きくなったら、
前記ライトキャッシュ及び前記記憶装置から、前記範囲の補集合を含む第３のデータ、及び前記第１及び第２のデータを含む第４のデータを取り出し、
前記第３のデータを前記応答バッファにプリペンドする、ことと、を含む、実施態様７に記載の方法。
（１３）  前記第１のバッファを保護する第１のリーダ−ライタ・ロック、前記第２のバッファを保護する第２のリーダ−ライタ・ロック、及び前記変数を保護する第３のリーダ−ライタ・ロックを構成することを含む、実施態様１に記載の方法。
（１４）  前記リアルタイムデータの前記ストリームをアペンドする前に前記第１のリーダ−ライタ・ロック用のライタロックを取得することと、
前記リアルタイムデータの前記ストリームのアペンド後に前記第１のリーダ−ライタ・ロックから前記ライタロックを解除することと、を含む、実施態様１３に記載の方法。
（１５）  前記ライト基準が満たされたら、前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップする前に、前記第１のリーダ−ライタ・ロック用の第１のライタロック、及び前記第２のリーダ−ライタ・ロック用の第２のライタロックを取得することと、
前記第１のバッファ中の前記第１のバッファデータが前記第２のバッファ中の前記第２のバッファデータとスワップされたら、前記第１及び第２のライタロックを解除することと、を含む、実施態様１３に記載の方法。
【００６７】
（１６）  前記ライト機能を呼び出した後、前記バッファサイズを前記変数に加える前に、前記第２のリーダ−ライタ・ロック用の第１のライタロック及び前記第３のリーダ−ライタ・ロック用の第２のライタロックを取得することと、
前記第２のバッファをクリアすることと、
前記第２のバッファがクリアされたら、前記第１及び第２のライタロックを解除することと、を含む、実施態様１３に記載の方法。
（１７）  前記変数を前記フィールドに残存させることが、
前記第３のリーダ−ライタ・ロック用のリーダロックを取得することと、
前記変数を更なる変数にコピーすることと、
前記リーダロックを解除することと、
前記更なる変数を前記フィールドに記憶させることと、を含む、実施態様１３に記載の方法。
（１８）  ある範囲の前記リアルタイムデータを取り出す要求を受信したら、
前記範囲について範囲サイズを計算することと、
前記メモリ中に応答バッファを構成することと、
前記第１のリーダ−ライタ・ロック用の第１のリーダロック及び前記第２のリーダ−ライタ・ロック用の第２のリーダロックを取得することと、
前記範囲と前記第１のバッファとの交わりを含み、第１のサイズを持つ第１のデータを前記応答バッファにコピーすることと、
前記範囲と前記第２のバッファとの交わりを含み、第２のサイズを持つ第２のデータを前記応答バッファにプリペンドすることと、
前記第１及び第２のリーダロックを解除することと、
前記範囲サイズが前記第１のサイズと第２のサイズの和より大きくなったら、
前記ライトキャッシュ及び前記記憶装置から、前記範囲の補集合を含む第３のデータ、及び前記第１及び第２のデータを含む第４のデータを取り出し、
前記第３のデータを前記応答バッファにプリペンドする、ことと、を含む、実施態様１３に記載の方法。
（１９）  リアルタイムデータを記憶するための装置であって、
ファイルを記憶するよう、かつ前記ファイルに残存する前記リアルタイムデータの残存サイズを示すフィールドを記憶するよう構成された記憶装置と、
第１のバッファデータを記憶するよう構成された第１のバッファ及び第２のバッファデータを記憶するよう構成された第２のバッファを記憶するよう、かつ前記残存サイズを示す変数を記憶するよう構成されたメモリと、
プロセッサと、を含み、前記プロセッサが、
前記リアルタイムデータのストリームを受信し、
前記リアルタイムデータの前記ストリームを前記第１のバッファデータにアペンドし、
ライト基準が満たされたら、
前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップし、
前記第２のバッファ中の前記第２のバッファデータのバッファサイズを前記変数に加え、
前記第２のバッファから前記第２のバッファデータをライトキャッシュに送るように構成されたライト機能を呼び出し、かつ
コミット基準が満たされたら、
前記ライトキャッシュに記憶された前記リアルタイムデータの前記ストリームを前記ファイルにアペンドするよう構成されたコミット機能を呼び出し、
前記変数を前記フィールドに残存させるように構成された、装置。
（２０）  前記リアルタイムデータが、医療処置を実施中に収集される電気生理学的（ＥＰ）データを含む、実施態様１９に記載の装置。
【００６８】
（２１）  前記ＥＰデータが、アナログデータ及びデジタルデータから選択される、実施態様１９に記載の装置。
（２２）  前記アナログデータが、電圧、電流及び温度を含むリストから選択される、実施態様２１に記載の装置。
（２３）  前記デジタルデータが、イメージデータ、位置測定値、力測定値、及び呼吸状態を含むリストから選択される、実施態様２１に記載の装置。
（２４）  前記プロセッサが、前記メモリの第１のアドレスに前記第１のバッファを記憶し、前記メモリの第２のアドレスに前記第２のバッファを記憶し、前記第１のアドレスと第２のアドレスとの間でバッファポインタに記憶されたバッファアドレスをトグルし、これによって前記第１のバッファと第２のバッファの役割を切り換えることによって前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップするよう構成されている、実施態様１９に記載の装置。
（２５）  前記プロセッサが、前記第１のバッファを保護する第１のリーダ−ライタ・ロックを構成し、かつ前記第２のバッファ及び変数を保護する第２のリーダ−ライタ・ロックを構成するよう構成されている、実施態様１９に記載の装置。
【００６９】
（２６）  前記プロセッサが、
前記リアルタイムデータの前記ストリームをアペンドする前に前記第１のリーダ−ライタ・ロック用のライタロックを取得し、かつ
前記リアルタイムデータの前記ストリームのアペンド後に前記第１のリーダ−ライタ・ロックから前記ライタロックを解除するよう構成されている、実施態様２５に記載の装置。
（２７）  前記プロセッサが、
前記ライト基準が満たされたら、前記第１のバッファと第２のバッファをスワップする前に、前記第１のリーダ−ライタ・ロック用の第１のライタロック、及び前記第２のリーダ−ライタ・ロック用の第２のライタロックを取得し、かつ
前記第１のバッファ中の前記第１のバッファデータと前記第２のバッファ中の前記第２のバッファデータとがスワップされたら、前記第１及び第２のライタロックを解除するよう構成されている、実施態様２５に記載の装置。
（２８）  前記プロセッサが、
前記ライト機能を呼び出した後、前記バッファサイズを前記変数に加える前に前記第２のリーダ−ライタ・ロック用のライタロックを取得し、
前記第２のバッファをクリアし、かつ
前記第２のバッファがクリアされたら、前記ライタロックを解除するよう構成されている、実施態様２５に記載の装置。
（２９）  前記プロセッサが、
前記第２のリーダ−ライタ・ロック用のリーダロックを取得し、
前記変数を更なる変数にコピーし、
前記リーダロックを解除し、かつ
前記更なる変数を前記フィールドに記憶させること、
によって、前記変数を前記フィールドに残存させるよう構成されている、実施態様２５に記載の装置。
（３０）  前記プロセッサが、ある範囲の前記リアルタイムデータを取り出す要求を受信したら、
前記範囲について範囲サイズを計算し、
前記メモリ中に応答バッファを構成し、
前記第１のリーダ−ライタ・ロック用の第１のリーダロック及び前記第２のリーダ−ライタ・ロック用の第２のリーダロックを取得し、
前記範囲と前記第１のバッファとの交わりを含み、第１のサイズを持つ第１のデータを前記応答バッファにコピーし、
前記範囲と前記第２のバッファとの交わりを含み、第２のサイズを持つ第２のデータを前記応答バッファにプリペンドし、
前記第１及び第２のリーダロックを解除し、かつ
前記範囲サイズが前記第１のサイズと第２のサイズの和より大きくなったら、
前記ライトキャッシュ及び前記記憶装置から、前記範囲の補集合を含む第３のデータ、及び前記第１及び第２のデータを含む第４のデータを取り出し、
前記第３のデータを前記応答バッファにプリペンドするよう構成されている、実施態様２５に記載の装置。
【００７０】
（３１）  前記プロセッサが、前記第１のバッファを保護する第１のリーダ−ライタ・ロックを構成し、前記第２のバッファを保護する第２のリーダ−ライタ・ロックを構成し、かつ前記変数を保護する第３のリーダ−ライタ・ロックを構成するよう構成されている、実施態様１９に記載の装置。
（３２）  前記プロセッサが、
前記リアルタイムデータの前記ストリームをアペンドする前に前記第１のリーダ−ライタ・ロック用のライタロックを取得し、かつ
前記リアルタイムデータの前記ストリームのアペンド後に前記第１のリーダ−ライタ・ロックから前記ライタロックを解除するよう構成されている、実施態様３１に記載の装置。
（３３）  前記プロセッサが、
前記ライト基準が満たされたら、前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップする前に、前記第１のリーダ−ライタ・ロック用の第１のライタロック、及び前記第２のリーダ−ライタ・ロック用の第２のライタロックを取得し、かつ
前記第１のバッファ中の前記第１のバッファデータが前記第２のバッファ中の前記第２のバッファデータとスワップされたら、前記第１及び第２のライタロックを解除するよう構成されている、実施態様３１に記載の装置。
（３４）  前記プロセッサが、
前記ライト機能を呼び出した後、前記バッファサイズを前記変数に加える前に、前記第２のリーダ−ライタ・ロック用の第１のライタロック、及び前記第３のリーダ−ライタ・ロック用の第２のライタロックを取得し、
前記第２のバッファをクリアし、かつ
前記第２のバッファがクリアされたら、前記第１及び第２のライタロックを解除するよう構成されている、実施態様３１に記載の装置。
（３５）  前記プロセッサが、
前記第３のリーダ−ライタ・ロック用のリーダロックを取得し、
前記変数を更なる変数にコピーし、
前記リーダロックを解除し、
前記更なる変数を前記フィールドに記憶させること、
によって、前記変数を前記フィールドに残存させるよう構成されている、実施態様３１に記載の装置。
【００７１】
（３６）  前記プロセッサが、ある範囲の前記リアルタイムデータを取り出す要求を受信したら、
前記範囲について範囲サイズを計算し、
前記メモリ中に応答バッファを構成し、
前記第１のリーダ−ライタ・ロック用の第１のリーダロック及び前記第２のリーダ−ライタ・ロック用の第２のリーダロックを取得し、
前記範囲と前記第１のバッファとの交わりを含み、第１のサイズを持つ第１のデータを前記応答バッファにコピーし、
前記範囲と前記第２のバッファとの交わりを含み、第２のサイズを持つ第２のデータを前記応答バッファにプリペンドし、
前記第１及び第２のリーダロックを解除し、かつ
前記範囲サイズが前記第１のサイズと第２のサイズの和より大きくなったら、
前記ライトキャッシュ及び前記記憶装置から、前記範囲の補集合を含む第３のデータ、及び前記第１及び第２のデータを含む第４のデータを取り出し、
前記第３のデータを前記応答バッファにプリペンドするよう構成されている、実施態様３１に記載の装置。
（３７）  プログラム命令を記憶した非一時的なコンピュータ可読媒体を含むコンピュータソフトウェア製品であって、前記命令は、コンピュータによって読み込まれると、前記コンピュータに、
第１のバッファデータを記憶する第１のバッファ、第２のバッファデータを記憶する第２のバッファ、及び、記憶装置に残存するリアルタイムデータの残存サイズを示す変数をメモリ中に構成させ、
前記リアルタイムデータを記憶するファイル及び前記変数を記憶するフィールドを前記記憶装置上に構成させ、
前記リアルタイムデータのストリームを受信させ、
前記リアルタイムデータの前記ストリームを前記第１のバッファデータにアペンドさせ、
ライト基準が満たされたら、
前記第１のバッファ中の前記第１のバッファデータを前記第２のバッファ中の前記第２のバッファデータとスワップさせ、
前記第２のバッファ中の前記第２のバッファデータのバッファサイズを前記変数に加えさせ、
ライト機能を呼び出させて前記第２のバッファから前記第２のバッファデータをライトキャッシュに送らせ、かつ
コミット基準が満たされたら、
コミット機能を呼び出させて前記ライトキャッシュに記憶された前記リアルタイムデータの前記ストリームを前記ファイルにアペンドさせ、
前記変数を前記フィールドに残存させる、コンピュータソフトウェア製品。
【図１】
2015046164.tif 000003
【図２】
2015046164.tif 000004
【図３Ａ】
2015046164.tif 000005
【図３Ｂ】
2015046164.tif 000006
【図３Ｃ】
2015046164.tif 000007
【図３Ｄ】
2015046164.tif 000008
【外国語明細書】
2015046164000001.pdf