以下、本発明を実施するための形態について図面を参照しながら説明する。図1は、情報処理装置の第1の実施形態のブロック図である。
第1の実施形態は、Cメモリにユーザデータとともに格納されるメタデータを管理し、処理部17が、OSが有するメモリダンプ機能の起動(演算処理装置2によるメモリダンプの実行)時にメタデータのみを選択し、出力部12が選択されたメタデータを出力する情報処理装置1である。情報処理装置1は、メモリダンプを実行する演算処理装置2と、演算処理装置2に接続され、メモリダンプの対象のデータであるメタデータを格納する主記憶装置13をさらに有する。Cメモリとは、ユーザデータを含むとともに、ファイルシステムのデータ管理に必要なメタデータやネットワークのプロトコルデータなど障害調査の際に利用される調査対象のデータを含む可能性のあるメモリである。Cメモリは主記憶装置13(メインメモリ)の領域の一部を使用している。
メモリダンプにより出力される情報は、メタデータのみでなく、ネットワークのプロトコルデータなども含み、これらのデータをメモリダンプ格納対象データ又は対象データとも言う。上記構成により、メモリダンプ起動時にユーザデータが出力されることはない。
第1の実施形態の情報処理装置1は他の構成要素を更に含み、その構成を図1Aに示す。
第1の実施形態の情報処理装置1は、上述した演算処理装置2、主記憶装置13、処理部17、出力部(以下、ダンプ出力処理部とも言う)12以外に、ファイルシステム管理部10、メモリ管理部11を有する。
ファイルシステム管理部10は、獲得要求部(要求部とも言う)14、登録依頼部(依頼部とも言う)15を有する。ファイルシステム管理部10におけるこれらの処理ブロックによる処理は、例えばCentral Processor Unit(CPU、中央演算処理装置)141がHard Disk Drive(HDD)142などに記憶されたOSに含まれる処理プログラムを実行する処理である。
獲得要求部14は、Cメモリの獲得(取得)要求(c_alloc)をメモリ管理部11に対して行う。具体的には、ユーザプロセスからデータを受け取り、又は外部記憶媒体のディスクからデータを読み込み、又はネットワーク経由でデータを受け取るなど、不図示のカーネルが外部からデータを受け取る場合、獲得要求部14はCメモリの獲得要求をメモリ管理部11に発行する。
獲得要求部14は、Cメモリの獲得要求を発行する際、後述するように、ユーザプロセスから受信した読み込み要求に含まれるsizeの情報をCメモリの獲得要求に含めるようにする。sizeは獲得すべきメモリの大きさを示す情報である。これにより、メモリ管理部11の取得部16は、Cメモリを獲得する際、無駄にメモリを獲得しなくて済み、メモリ資源を効率よく利用することが可能となる。なお、獲得要求部14は、上記読み込み要求にsizeの情報が含まれていない場合、外部から受け取るデータのサイズを自ら判断し、発行する獲得要求にsizeの情報を含めるようにしてもよい。
例えば、障害調査の際に利用される調査対象のデータは、上記メモリダンプ格納対象データとも言う。Cメモリを新たに獲得し、ユーザデータをCメモリに格納することにより、従来のようにカーネルメモリに格納されたユーザデータがメモリダンプにより出力されることを防ぐことが可能となる。ユーザデータが格納されたCメモリにメモリダンプ格納対象データが格納された場合、メモリダンプ格納対象データのみがメモリダンプ出力の対象となるように処理が施されるためである。詳細については後述する。
対象データが出力されることによって、情報処理装置1のベンダや保守サービス会社は、障害調査を行うことができる。以下では、メモリダンプ格納対象データとしてメタデータのみを例にとって主に説明するが、プロトコルデータなどを含むものであってもよい。なお、Cメモリ以外の本明細書において示されるカーネルメモリはメタデータなどのメモリダンプ格納対象データのみを含む。また、ユーザメモリはユーザデータを含む。ユーザデータとはユーザに関するデータであって、例えば各ユーザに割り振られた管理番号(例えば、マイナンバー)などである。Cメモリ、カーネルメモリ、ユーザメモリは、それぞれページ単位で管理され、1つのメモリ空間(主記憶装置13)に存在し、メモリ空間におけるアドレスによって特定される。
登録依頼部15は、獲得されたCメモリへのメタデータの登録依頼(c_except_reg)をメモリ管理部11に対して行う。具体的には、まず登録依頼部15は、情報処理装置1の外部から受け取ったデータを、取得部16によって獲得されたCメモリに取り込んだ後、受け取ったデータにメタデータが含まれている(付加されている)か判断する。含まれている場合、登録依頼部15は、Mフラグ(対象データ格納情報)の設定の依頼、含まれたメタデータのアドレスとメタデータのサイズの情報を含む上記登録依頼をメモリ管理部11に発行し、メタデータのアドレスとサイズをメモリダンプ格納対象データリストへ登録するよう依頼を行う。メモリダンプ格納対象データリストの詳細については後述する。
受け取ったデータにメタデータが含まれているかの判断は、例えば障害調査に利用されるデータを認識できるレイヤのカーネル内のモジュールによってデータ構造などに基づいて行われる。ここでのモジュールは、例えばメタデータであれば上述したファイルシステム管理部10の登録依頼部15であり、プロトコルデータであればネットワークの各プロトコルの処理部である。
また、メモリダンプ格納対象データリストに登録されたエントリの情報を外す(削除する)場合には、登録依頼部15は、該当データの削除依頼(c_except_unreg)をメモリ管理部11に対して発行する。このとき、登録依頼部15は、上記登録依頼と同様、削除依頼に該当エントリのデータのアドレスとデータサイズの情報を含めて発行する。これにより、処理部17は、該当エントリのデータをメモリダンプ格納対象データリストから削除する。
メモリ管理部11は、取得部16、処理部17を有する。メモリ管理部11におけるこれらの処理ブロックによる処理は、例えばCPU141がHDD142などに記憶されたOSに含まれる処理プログラムを実行する処理である。
取得部16は、獲得要求部14によるCメモリの獲得要求(取得要求)に基づいて、メモリ空間上においてCメモリを獲得(取得)する。具体的には、取得部16は、Cメモリの獲得要求に獲得すべきメモリサイズの情報が含まれている場合、含まれているメモリサイズに基づいて、メモリ空間上にCメモリを獲得する。Cメモリの獲得要求に獲得すべきメモリサイズの情報が含まれていない場合には、取得部16は、例えば所定のサイズのCメモリを獲得するようにしてもよい。
処理部17は、取得部16によってCメモリが獲得された後、ページテーブルにおいて、獲得されたCメモリに対応するページテーブルエントリにCメモリフラグ(ユーザデータ格納情報)の設定を行う。例えば、CメモリフラグのCをONと設定する。ページテーブルエントリは、メモリを管理するページテーブルを構成するものである。ページテーブルエントリの詳細については後述する。
CメモリフラグのCがONに設定されることにより、当該メモリはCメモリであり、メモリダンプ格納対象データ以外のデータ(例えば、ユーザデータなど)が含まれていることがわかる。なお、カーネルメモリフラグのKがONに設定される場合には、カーネルモードでのみアクセス可能であり、カーネルメモリフラグが設定されたメモリには、メモリダンプ格納対象データが含まれている。ユーザデータはメモリダンプの対象ではないため、ダンプ出力処理部12によって出力されることはない。なお、登録依頼部15によるCメモリへの受け取りデータの読み込みは、処理部17によるCメモリフラグの設定の前に行っても後に行ってもよい。
また、処理部17は、登録依頼部15によるCメモリへのメタデータの登録依頼に基づいて、対応するページテーブルエントリにMフラグ(対象データ格納情報)の設定を行う。Mフラグとは、該当するCメモリページ内にメモリダンプ格納対象データが存在することを示すフラグである。Mフラグの設定により、Mフラグが設定されたメモリには、メモリダンプ格納対象データではないユーザデータ以外にメタデータが含まれていることがわかる。メタデータはメモリダンプの対象であるため、ダンプ出力処理部12によって出力される。出力方法については後述する。
また、処理部17は、登録依頼部15によるCメモリへのメタデータの登録依頼に基づいて、データのアドレスとサイズを後述のメモリダンプ格納対象データリストへ登録する。なお、登録依頼に基づいてデータのエントリをメモリダンプ格納対象データリストへ登録する処理については後述する。メモリダンプ格納対象データリストは、例えば主記憶装置13に格納されている。
また、処理部17は、登録依頼部15による該当エントリのデータの削除依頼に基づいて、該当エントリのデータをメモリダンプ格納対象データリストから削除する。その際、処理部17は、該当のCメモリにメモリダンプ格納対象データが1つも存在しなくなった場合、ページテーブルエントリのMフラグの設定を解除する。例えば、MフラグをOFFと設定する。
ここで、ページテーブルエントリの一例について図2Aを用いて説明する。ページテーブルエントリ20は、ページテーブル21を構成するものであって、ページごとに管理されるメモリ(カーネルメモリ、Cメモリ、ユーザメモリ)に格納されるデータに関する情報を示す。図2Aに示す例では、ページテーブル21は13個のページテーブルエントリを有している。
ページテーブルエントリ20のデータ構造は、フラグの領域(フラグ域)20a、仮想メモリアドレスの領域20b、物理メモリアドレスの領域20cを有する。フラグの領域20aは、ページテーブルエントリ20に対応するページがメタデータのみを有するカーネルメモリであるか、ユーザデータのみを有するCメモリであるか、メタデータを有するCメモリであるかを示すために用いられる領域である。
例えば、フラグの領域20aのKはカーネルメモリフラグを示し、カーネルメモリフラグが設定されている(ONに設定されている)場合には、対応するページはカーネルメモリのページであり、メモリダンプの対象である。また、フラグの領域20aのCはCメモリフラグを示し、Cメモリフラグが設定されている場合には、対応するページはCメモリのページであり、メモリダンプの対象ではない。また、フラグの領域20aのMはMフラグを示し、Mフラグが設定されている場合には、対応するページはメタデータを含むCメモリのページであり、一部のデータ(メタデータ)がメモリダンプの対象である。ここでは3つのフラグについて説明したが、フラグの領域20aには上記3つのフラグ以外に他のフラグが設けられるようにすることも可能である。
仮想メモリアドレスの領域20bには、ページテーブルエントリ20に対応するデータの仮想メモリ上のアドレス情報が含まれている。仮想メモリアドレスの領域20bが空白の場合には仮想メモリアドレスの割り当てがないことを示す。
物理メモリの領域20cには、ページテーブルエントリ20に対応するデータの物理メモリ上のアドレス情報が含まれている。
ページテーブルエントリ20によって構成されたものがページテーブル21であり、ページテーブル21は、例えば主記憶装置13に格納されてもよく、また不図示の格納部に格納されてもよい。
ページテーブルエントリの具体的な一例が図2Bに示されている。図2Bには、メモリ上のページテーブルエントリ23と、メモリダンプファイルにコピーし、仮想アドレスが書き換えられたページテーブルエントリ24が示されている。メモリ上のページテーブルエントリ23の場合、フラグ域には先頭の3ビット(カーネルメモリフラグ、Cフラグ、Mフラグ)がONであることが示されている。フラグ域の後続の仮想メモリアドレスの領域には仮想アドレス0x30014d16000、物理メモリの領域には物理アドレス0x284000が設定(登録)されている。また、メモリダンプファイルにはページテーブルをコピーした管理用のページテーブルが存在する。ページテーブルエントリ24の仮想メモリアドレスの領域には、メモリダンプファイル内のオフセットが設定される。
ダンプ出力処理部12は、カーネルメモリに格納されたメタデータと、Cメモリに格納されたメタデータを主記憶装置13の格納領域(メモリダンプファイル)に出力する。個人情報などを含む可能性のあるユーザデータが出力されないため、障害調査などにおける個人情報の漏えいを防止することが可能となる。具体的には、ダンプ出力処理部12は、メモリダンプ格納対象データリストに登録されたデータのアドレスに基づいて、メタデータを主記憶装置13の格納領域に出力する。さらに、ダンプ出力処理部12は、他のメタデータを格納する格納領域(カーネルメモリ)から他のメタデータを主記憶装置13の格納領域に出力する。
ここで、上記登録依頼に基づくメモリダンプ格納対象データリストへの登録処理の一例について図3Aから図3Cを用いて説明する。図3Aはメモリダンプ格納対象データリストの登録前と登録後の状態の一例を示す図である。図3B及び図3Cはメモリダンプ格納対象データリストへの登録処理のフローの一例を示すフローチャートである。この処理は、例えばCPU141がHDD142などに記憶されたOSに含まれる登録処理プログラムを実行する処理である。当該処理について以下で説明するが、より詳しい説明は省略する。
図3Aに示すように、新規登録する前(登録前)のメモリダンプ格納対象データリスト(データリスト)30aには複数のエントリが登録されている。このときの登録前の空きエントリリスト31aも複数の空きエントリが登録されている。登録前の空きエントリリスト31aには新規に登録可能な空きエントリが示されている。各エントリの次エントリポインタには当該エントリに続く次のエントリのアドレスを示す値が設定され、前エントリポインタには当該エントリの前のエントリのアドレスを示す値が設定される。なお、登録前の空きエントリリスト31aに空きエントリが登録されていない場合には、処理部17などが新規にカーネルメモリを獲得して空きエントリを作成する。
まず、処理部17は、登録前の空きエントリリスト31aに空きエントリが登録されているか確認する。登録されている場合は、処理部17は、登録前の空きエントリリスト31aの先頭に登録されている空きエントリ32を登録前の空きエントリリスト31aから外し、登録前のメモリダンプ格納対象データリスト30aへ挿入する。登録前の空きエントリリスト31aに空きエントリが登録されていない場合は、処理部17は新規にカーネルメモリを獲得して空きエントリを作成する。
このときの登録前のメモリダンプ格納対象データリスト30a及び登録後のメモリダンプ格納対象データリスト30bは、例えば、対象データのアドレスの小さいものから順番に登録するものとする。このことから、処理部17は、登録前のメモリダンプ格納対象データリスト30aのポインタを張り替えて、新規登録するデータのアドレスより小さいエントリと大きいエントリの間に新規登録する空きエントリ32を挿入する。挿入された空きエントリ32は、登録後のメモリダンプ格納対象データリスト30bに示すように新たなエントリ33となる。登録前の空きエントリリスト31aから空きエントリ32が外されたため、登録後の空きエントリリスト31bは、登録前の空きエントリリスト31aよりも空きエントリが少なくなっている。
以下では、メモリダンプ格納対象データリストへの登録処理について図3B及び図3Cを用いて説明する。まず、処理部17は、登録前の空きエントリリスト31aに空きエントリが登録されているか否かを判断する(ステップS301)。空きエントリが登録されていない場合(ステップS301でNo)、処理部17は、カーネルメモリを新規に獲得して空きエントリを作成する(ステップS302)。一方、空きエントリが登録されている場合(ステップS301でYes)、ステップS303へ進む。
処理部17は、空きエントリリスト31aの先頭の空きエントリの次エントリポインタの値を空きエントリリストのポインタとして設定する(ステップS303)。処理部17は、新しく空きエントリリストの先頭になった空きエントリの前エントリポインタに、空きエントリリストから外した空きエントリの前エントリポインタの値を設定する(ステップS304)。処理部17は、空きエントリリストから外した空きエントリに、新規登録するデータアドレス及びデータサイズを設定する(ステップS305)。
処理部17は、メモリダンプ格納対象データリスト30aを読み込み(ステップS306)、該当のエントリが最初のエントリで、かつ、新規登録データの仮想アドレスが該当エントリの仮想アドレスより小さいか否かを判断する(ステップS307)。小さくない場合(ステップS307でNo)、処理部17は、新規登録データの仮想アドレスが該当エントリの仮想アドレスより大きいか否かを判断する(ステップS308)。大きくない場合(ステップS308でNo)、処理部17は、カレントポインタに次エントリへのポインタをセットする(ステップS309)。
一方、新規登録データの仮想アドレスが該当エントリの仮想アドレスより大きい場合(ステップS308でYes)、すなわち新規登録データのエントリが該当エントリの下位に登録される場合、処理部17は以下の処理を行う。
具体的には、処理部17は、空きエントリリスト31aから外した空きエントリの次エントリポインタに、該当エントリの次エントリポイントに設定されている値をコピーする(ステップS310)。
さらに、処理部17は、空きエントリリスト31aから外した空きエントリの前エントリポインタに、該当エントリの次エントリの前エントリポインタの値を設定する(ステップS311)。
さらに、処理部17は、該当エントリの次エントリの前エントリポインタに、空きエントリリスト31aから外した空きエントリへのポインタを設定する(ステップS312)。
さらに、処理部17は、該当エントリの次エントリポインタに、空きエントリリスト31aから外した空きエントリへのポインタを設定する(ステップS313)。
一方、該当エントリが最初のエントリで、かつ、新規登録データの仮想アドレスが該当エントリの仮想アドレスより小さい場合(ステップS307でYes)、すなわち新規登録データのエントリが該当エントリの上位に登録される場合、処理部17は以下の処理を行う。
具体的には、処理部17は、空きエントリリスト31aから外した空きエントリの次エントリポインタに、メモリダンプ格納対象データリストへのポインタの値を設定する(ステップS314)。
さらに、処理部17は、空きエントリリスト31aから外した空きエントリの前エントリポインタに、該当エントリの前エントリポインタの値を設定する(ステップS315)。
さらに、処理部17は、該当エントリの前エントリの次エントリポインタに、空きエントリリスト31aから外した空きエントリへのポインタを設定する(ステップS316)。
さらに、処理部17は、該当エントリの前エントリポインタに、空きエントリリスト31aから外した空きエントリへのポインタを設定する(ステップS317)。
また、上記削除依頼に基づくメモリダンプ格納対象データリストからの削除処理の一例について図3D及び図3Eを用いて説明する。図3Dはメモリダンプ格納対象データリストの削除前と削除後の状態の一例を示す図である。図3Eはメモリダンプ格納対象データリストからの削除処理のフローの一例を示すフローチャートである。この処理は、例えばCPU141がHDD142などに記憶されたOSに含まれる削除処理プログラムを実行する処理である。当該処理について以下で説明するが、より詳しい説明は省略する。
図3Dに示すように、削除前のメモリダンプ格納対象データリスト(データリスト)30cには複数のエントリが登録されている。削除前の空きエントリリスト31cには複数の空きエントリが登録されている。
処理部17は、メモリダンプ格納対象データリスト30cのポインタを張り替えて、登録を削除するエントリ34をデータリスト30cから外す。外されたエントリ34は、空きエントリリスト31dの先頭に空きエントリ35として登録される。削除後の空きエントリリスト31dは、削除前の空きエントリリスト31cよりも空きエントリが多くなり、空きエントリ35は新規登録時に再利用される。
なお、Cメモリを解放する際には、獲得要求部14がCメモリの解放要求(c_free)をメモリ管理部11に対して行う。処理部17は、解放要求に基づいて、ページテーブルエントリのCメモリフラグの設定を解除する。例えば、Cメモリフラグの設定をOFFにする。なお、Mフラグが設定されている場合、処理部17は、Cメモリの解放処理は行わず、エラーメッセージを獲得要求部14へ返す。
以下では、メモリダンプ格納対象データリストからの削除処理について図3Eを用いて説明する。まず、処理部17は、メモリダンプ格納対象データリスト30cを読み込み(ステップS321)、該当のエントリが最終のエントリであるか否かを判断する(ステップS322)。最終エントリの場合(ステップS322でYes)、削除対象がないため、エラーとなり(ステップS323)、削除処理は終了する。
一方、最終エントリではない場合(ステップS322でNo)、処理部17は、該当エントリのデータアドレスが、削除依頼されたアドレスと同じか否かを判断する(ステップS324)。同じでない場合(ステップS324でNo)、処理部17は、カレントポインタを次エントリへセットする(ステップS325)。
アドレスが同じである場合(ステップS324でYes)、処理部17は、該当エントリの前のエントリの次エントリポインタに、該当エントリの次エントリポインタの値を設定する(ステップS326)。
さらに、処理部17は、該当エントリの次のエントリの前エントリポインタに、該当エントリの前エントリポインタの値を設定する(ステップS327)。
さらに、処理部17は、該当エントリのデータアドレス及びデータサイズをクリアする(ステップS328)。
さらに、処理部17は、該当エントリの次エントリポインタに、空きエントリリスト31cへのポインタの値を設定する(ステップS329)。
さらに、処理部17は、該当エントリの前エントリポインタに、空きエントリリスト31cの先頭エントリの前エントリポインタの値を設定する(ステップS330)。
さらに、処理部17は、空きエントリリスト31cの先頭エントリの前エントリポインタに、該当エントリへのポインタを設定する(ステップS331)。
さらに、処理部17は、空きエントリリスト31dへのポインタに、該当エントリへのポインタを設定する(ステップS332)。
情報処理装置1の構成の説明に戻り、主記憶装置13は、カーネルメモリ、Cメモリ、ユーザメモリの各データをページごとに格納する。また、主記憶装置13は、上記ページテーブルやメモリダンプ格納対象データリストなどを格納してもよい。
次に、ファイルデータを外部から読み込む際における情報処理装置1のページテーブルエントリへのフラグ設定及びメモリダンプ格納対象データリストへの登録の処理について図4及び図5を用いて具体的に説明する。ここでは、外部記憶媒体40からファイルデータ42を読み込む際の情報処理装置1のページテーブルエントリへのフラグ設定及びメモリダンプ格納対象データリストへの登録の処理について説明する。
図4は、第1の実施形態の情報処理装置1がファイルデータ42を読み込む際の構成要素間における指示やデータの流れの一例を示す図である。図5は、第1の実施形態の情報処理装置1におけるデータ読み込みの際のページテーブルエントリへのフラグ設定及びメモリダンプ格納対象データリストへの登録の処理の一例を示すシーケンス図である。この処理は、例えばCPU141がHDD142などに記憶されたOSに含まれる登録処理プログラムを実行する処理である。
まず、ユーザプロセス41は、外部記憶媒体40からファイルデータ42を読み込む場合、ファイルデータ42のファイルデータ読み込みバッファを準備する(ステップS501)。ユーザプロセス41は、ファイルデータ42を読み込むためのファイルデータ読み込み要求read(fd、buf、size)をファイルシステム管理部10の獲得要求部14へ送信する(ステップS502)。
ファイルデータ読み込み要求に含まれるパラメータのfile data(fd)は読み込み対象のファイルデータ42を識別する情報を示し、buffer(buf)は読み込みに必要なバッファ量を示し、sizeはファイルデータ42のデータサイズを示す。なお、ファイルデータ読み込み要求のパラメータは上記に限定されるものではなく、例えば読み込み先の外部記憶媒体40に関する情報を示すパラメータなどを含むものであってもよい。
獲得要求部14は、ユーザプロセス41から送信されたファイルデータ読み込み要求に基づいて、Cメモリの獲得要求をメモリ管理部11に対して送信する(ステップS503)。獲得要求部14は、獲得要求を送信する際、ユーザプロセス41から受信したファイルデータ読み込み要求に含まれるsizeの情報をCメモリの獲得要求に含める。
メモリ管理部11の取得部16は、獲得要求部14から送信されたCメモリの獲得要求に含まれるメモリサイズに基づいて、メモリ空間上においてCメモリを獲得する(ステップS504)。
メモリ管理部11の処理部17は、取得部16によってCメモリが獲得された後、獲得されたCメモリに対応するページテーブルエントリにCメモリフラグの設定を行う(ステップS505)。具体的には、例えばCメモリフラグをONと設定する。
Cメモリフラグが設定されると、ファイルシステム管理部10の登録依頼部15は、獲得されたCメモリへファイルデータ42を外部記憶媒体40から読み込む(ステップS506)。なお、ファイルデータ42の読み込みは、Cメモリの獲得後であれば、Cメモリフラグの設定の前であっても後であってもよい。
登録依頼部15は、獲得されたCメモリにファイルデータ42を読み込んだ後、読み込んだファイルデータ42にメタデータが含まれているか判断する(ステップS507)。含まれていると判断された場合(ステップS507でYes)には、登録依頼部15は、含まれているメタデータのアドレスとサイズの情報を含む登録依頼c_except_reg(addr、size)を処理部17へ送信する(ステップS508)。すなわち、登録依頼部15は、メモリダンプ格納対象データリストへの登録依頼を処理部17へ送信(発行)する。一方、登録依頼部15は、読み込んだファイルデータ42にメタデータが含まれていない場合(ステップS507でNo)には、ページテーブルエントリへのフラグ設定及びメモリダンプ格納対象データリストへの登録の処理フローは終了する。
処理部17は、上記登録依頼に基づいて、メタデータのアドレスとサイズをメモリダンプ格納対象データリストへ登録する(ステップS509)。さらに、処理部17は、メタデータが含まれるページ(Cメモリ)に対応するページテーブルエントリにMフラグの設定を行う(ステップS510)。具体的には、例えばMフラグをONと設定する。Mフラグ設定の際、処理部17は、対応するページテーブルエントリのページ(Cメモリ)のアドレスをページテーブルの仮想メモリアドレスに格納する。
なお、ユーザデータを使用するプログラムは、メタデータを除いたユーザデータの格納領域にアクセスする。すなわち、Mフラグが設定されたページテーブルエントリに対応するCメモリのユーザデータが書き込まれた領域のみにアクセスする。ユーザからは仮想メモリ上のデータしか見えないため、ユーザデータは仮想メモリへマッピングし、メタデータなどのデータはユーザには見えない物理メモリにマッピングすることも可能である。
次に、ユーザデータを外部から書き込む際における情報処理装置1のページテーブルエントリへのフラグ設定及びデータ書き込みの処理について図6及び図7を用いて具体的に説明する。ここでは、外部記憶媒体60へユーザデータ62を書き込む際の情報処理装置1のページテーブルエントリへのフラグ設定及びデータ書き込みの処理について説明する。
図6は、第1の実施形態の情報処理装置1が外部記憶媒体60へユーザデータ62を書き込む際の構成要素間における指示やデータの流れの一例を示す図である。図7は、第1の実施形態の情報処理装置1におけるデータ書き込みの際のページテーブルエントリへのフラグ設定及びデータ書き込みの処理の一例を示すシーケンス図である。この処理は、例えばCPU141がHDD142などに記憶されたOSに含まれる設定プログラムを実行する処理である。
ユーザプロセス61から書き込み要求のあったユーザデータ62は、Cメモリ64に格納される。この際、メタデータ65とユーザデータ62のディスクI/Oをまとめて行うため、ユーザデータ62を管理するメタデータ65(カーネルメモリ63上に存在)の内容を、ユーザデータ62と同じブロック(Cメモリ64上)にコピー(複写)してからI/O要求を行う。これにより、I/O回数増加によるオーバーヘッドが発生しない。なお、書き込み要求のためにCメモリ64上にコピーしたメタデータ65は、カーネルメモリ63上に存在しているため、メモリダンプ出力の対象となる。
一方、ディスクなどの外部記憶媒体60に内容が書き込まれた後、Cメモリ64上のメタデータ65はユーザデータ62と併せて破棄されるため、それぞれのデータはメモリダンプの対象とはならない。よって、メモリダンプ格納対象データリストへの登録依頼は行われず、さらにMフラグの設定も行われない。すなわち、ユーザプロセス61などの情報処理装置1の外部からユーザデータ62の書き込み依頼があった場合で、且つCメモリ64に格納されるメタデータ65が、メタデータ65のみを格納するカーネルメモリ63から複写されたメタデータである場合には、処理部17は、データテーブルのデータテーブルエントリへのメタデータ65の格納を示すフラグ(Mフラグ)の設定及びメモリダンプ格納対象データリストへの登録を中止する。
以下では、情報処理装置1におけるデータ書き込みの際のページテーブルエントリへのフラグ設定及びデータ書き込みの流れについてより詳細に説明する。
まず、ユーザプロセス61は、外部記憶媒体60にユーザデータ62を書き込む場合、ユーザデータ62の書き込みバッファを準備する(ステップS701)。ユーザプロセス61は、ユーザデータ62を書き込むための書き込み要求write(fd、buf、size)をファイルシステム管理部10の獲得要求部14へ送信する(ステップS702)。書き込み要求に含まれるパラメータfdは書き込み対象のユーザデータ62を識別する情報を示し、bufは必要なバッファ量を示し、sizeはユーザデータ62のデータサイズを示す。なお、書き込み要求のパラメータは上記に限定されるものではなく、例えば書き込み先の外部記憶媒体60に関する情報を示すパラメータなどを含むものであってもよい。
獲得要求部14は、ユーザプロセス61から送信された書き込み要求に基づいて、Cメモリの獲得要求をメモリ管理部11に対して送信する(ステップS703)。このとき、獲得要求部14は、カーネルメモリ63に格納されたメタデータ65のコピーを、獲得するCメモリ64に格納するため、メタデータ65の分を加算したデータサイズをCメモリ64の獲得要求に含める。
メモリ管理部11の取得部16は、獲得要求部14から送信されたCメモリ64の獲得要求に含まれるデータサイズに基づいて、メモリ空間上においてCメモリ64を獲得する(ステップS704)。
メモリ管理部11の処理部17は、取得部16によってCメモリ64が獲得された後、獲得されたCメモリ64に対応するページテーブルエントリにCメモリフラグの設定を行う(ステップS705)。具体的には、例えばCメモリフラグをONと設定する。
Cメモリフラグが設定されると、ファイルシステム管理部10の登録依頼部15は、ユーザデータ62を管理するメタデータ65を獲得されたCメモリ64にコピーする(ステップS706)。さらに、登録依頼部15は、書き込み要求のあったユーザデータ62をCメモリ64に格納する(ステップS707)。なお、ステップS706の処理とステップS707の処理は、順番を入れ替えて行うことも可能である。
登録依頼部15は、書き込み要求を行ったユーザプロセス61に対して書き込み処理が正常に終了した旨を通知する(ステップS708)とともに、Cメモリ64に格納されたデータの書き込み依頼を外部記憶媒体60へ通知する(ステップS709)。登録依頼部15は、外部記憶媒体60にデータが書き込まれた後、Cメモリ64のデータ65及びユーザデータ62を破棄する。これにより、ユーザデータ62はメモリダンプの対象とならないが、メタデータ65はカーネルメモリ63上に存在しているため、メモリダンプ出力の対象となる。
次に、第1の実施形態の情報処理装置1におけるメモリダンプ出力処理について図8、図9A、図9Bを用いて具体的に説明する。図8は、第1の実施形態の情報処理装置1のダンプ出力処理部12によるメモリダンプ機能の起動時の処理(メモリダンプ出力処理)を具体的に説明するための図である。図9A及び図9Bは、第1の実施形態の情報処理装置1におけるメモリダンプ出力処理のフローの一例を示すフローチャートである。この処理は、例えばCPU141がHDD142などに記憶されたOSに含まれるメモリダンプ出力プログラムを実行する処理である。
メモリダンプ出力処理では、情報処理装置1は、まずページテーブル80の各ページテーブルエントリを参照する。参照の結果、カーネルメモリフラグがONに設定されているページテーブルエントリに対応するカーネルメモリ84については、ページの内容がそのままメモリダンプファイル83に出力される。このとき、情報処理装置1は、メモリダンプファイル83内での管理用にページテーブル80をコピーして、メモリダンプファイル83内のデータを追えるようにポインタを貼り直す。
その後、情報処理装置1は、メモリダンプ格納対象データリスト82を参照し、登録されているデータの内容(Cメモリ81のページ内に含まれるデータの内容)をメモリダンプファイル83へ出力する。このとき、情報処理装置1は、メモリダンプ格納対象データリスト82もコピーしてメモリダンプファイル83内のデータを追えるようにポインタを貼り直す。これにより、メモリダンプファイル83にはユーザデータは含まれず、かつ障害調査に有益なデータは洩らさず含めることができる。
図8に示すメモリダンプ格納対象データリスト82の最上段のエントリは、ページテーブル80においてMフラグが設定されているページテーブルエントリ以外の不図示のMフラグが設定されているページテーブルエントリに対応する情報である。最上段のエントリに該当する不図示のCメモリのデータ内容もメモリダンプファイル83へ出力される。
また、図8に示すページテーブル80の最下段のページテーブルエントリに対応するCメモリ85にはユーザデータのみが格納されている。そのため、これらのユーザデータはメモリダンプ出力の対象ではなく、メモリダンプファイル83へ出力されない。
以下では、情報処理装置1におけるメモリダンプ出力処理のフローについて図9A及び図9Bを用いて詳細に説明する。
ある重大な障害が発生するとメモリダンプ機能が起動され、ダンプ出力処理部12は、まずページテーブル80をメモリにコピーする(ステップS901)。その際、ダンプ出力処理部12は、カレントポインタをメモリにコピーしたページテーブル80の先頭のページテーブルエントリにセットする(ステップS902)。
ダンプ出力処理部12は、カレントポインタがセットされたページテーブルエントリが最終のページテーブルエントリであるか否か判断する(ステップS903)。最終でない場合(ステップS903でNo)、ダンプ出力処理部12は、カーネルメモリフラグがONに設定されているか否かを判断する(ステップS904)。ONに設定されていない場合(ステップS904でNo)、ステップ907へ進む。
一方、ONに設定されている場合(ステップS904でYes)、ダンプ出力処理部12は、該当のページテーブルエントリの仮想メモリアドレスが示すカーネルメモリ(メモリページ)84の内容をメモリダンプファイル83へ出力する(ステップS905)。さらに、ダンプ出力処理部12は、メモリにコピーしたページテーブル80の仮想メモリアドレスを、メモリページの内容を出力したメモリダンプファイル83のオフセットに書き換える(ステップS906)。ダンプ出力処理部12は、カレントポインタを次のページテーブルエントリにセットし(ステップS907)、ステップS903に戻る。
一方、ステップ903において、ページテーブルエントリが最終のページテーブルエントリである場合(ステップS903でYes)、ダンプ出力処理部12は、メモリダンプ格納対象データリスト82をメモリにコピーする(ステップS908)。ダンプ出力処理部12は、カレントポインタをメモリにコピーしたメモリダンプ格納対象データリスト82の先頭のエントリにセットする(ステップS909)。
ダンプ出力処理部12は、カレントポインタが指しているエントリが最終エントリであるか否かを判断する(ステップS910)。最終エントリでない場合(ステップS910でNo)、ダンプ出力処理部12は、該当のエントリが示すデータアドレスにより特定されるデータの内容をメモリダンプファイル83へ出力する(ステップS911)。すなわち、ダンプ出力処理部12は、Mフラグが設定されたページテーブルエントリに対応するCメモリに格納されたメモリダンプ格納対象データをメモリダンプファイル83へ出力する。
ダンプ出力処理部12は、該当のエントリが示すデータを含むCメモリの仮想メモリアドレス(メモリにコピーしたページテーブル80のページテーブルエントリの仮想メモリアドレス)に、既に他のエントリへのポインタが設定されているか判断する(ステップS912)。設定されている場合(ステップS912でYes)、ダンプ出力処理部12は、メモリにコピーしたページテーブル80のページテーブルエントリの仮想メモリアドレスからポイントされているエントリのデータリストを辿る。そして、末尾に該当エントリを挿入し、次のエントリにNULL設定をする(ステップS913)。設定後、ダンプ出力処理部12は、カレントポインタを次のエントリにセットする(ステップ915)。
一方、ステップS912において、設定されていない場合(ステップS912でNo)、ダンプ出力処理部12は、メモリにコピーしたページテーブル80のページテーブルエントリの仮想メモリアドレスに該当エントリへのポインタを設定し、次のエントリにNULL設定をする(ステップS914)。設定後、ダンプ出力処理部12は、カレントポインタを次のエントリにセットする(ステップ915)。
一方、ステップS910において、最終エントリである場合(ステップS910でYes)、ダンプ出力処理部12は、メモリにコピーしたページテーブル80、メモリダンプ格納対象データリスト82をメモリダンプファイル83へ出力する(ステップS916)。これにより、メモリダンプファイル83内のデータを追うことが可能となる。
以下では、具体的なケースを例にとってメモリダンプ出力処理について図10を用いて説明する。ページテーブル100には7つのページテーブルエントリが存在する。上から数えて1、2、4段目のページテーブルエントリにはKフラグが設定されている。3段目のページテーブルエントリにはCメモリフラグが設定されている。5段目及び7段目のページテーブルエントリにはCメモリフラグ及びMフラグが設定されている。6段目のページテーブルエントリにはフラグが設定されていない。
各ページテーブルエントリの仮想メモリアドレスの欄に示されるアルファベットは、仮想メモリアドレスを示すものとし、メモリ空間上に配列されるメモリページの仮想メモリイメージ102に示されるアルファベットに対応している。このことから、仮想メモリイメージ102に示されるアルファベットは、ページテーブルエントリに対応するメモリページのアドレスを示している。
Mフラグが設定されているページテーブルエントリに対応するメモリダンプ格納対象データリスト101には、4つのエントリが示されている。例えば、1段目から3段目のエントリはページテーブル100の5段目のページテーブルエントリに対応するエントリであり、4段目のエントリはページテーブル100の7段目のページテーブルエントリに対応するエントリである。
メモリダンプ格納対象データリスト101のデータアドレスに示されるアルファベットは、データのアドレスを示し、仮想メモリイメージ102に示されるアルファベットに対応している。
上記ページテーブルエントリに対応するメモリページは、仮想メモリイメージ102に示されるように、ページテーブル100のページテーブルエントリ順にメモリ空間上において格納されている。仮想メモリイメージ102には、ページテーブル100の1段目、2段目、4段目のページテーブルエントリそれぞれに対応するカーネルメモリのページ102a、102b、102dが示されている。
また、仮想メモリイメージ102には、ページテーブル100の3段目のページテーブルエントリに対応するCメモリのページ102cがカーネルメモリのページ102bとページ102dの間に示されている。また、仮想メモリイメージ102には、ページテーブル100の5段目及び7段目のページテーブルエントリそれぞれに対応するMフラグが設定されているCメモリのページ102e、102gが示されている。また、仮想メモリイメージ102には、ページテーブル100の6段目のページテーブルエントリに対応するユーザメモリのページ102fがCメモリのページ102eとページ102gの間に示されている。
ページ102c、ページ102eから102gには、個人情報が含まれている。ここでの個人情報とはユーザに関する情報であって、例えばマイナンバーなどの情報であり、メモリダンプの対象データではない。また、個人情報が含まれるページ102e及びページ102gには、メモリダンプ格納対象データも含まれており、それぞれのデータにはデータのアドレス(アルファベットH、I、J、L)が付されている。
上記状況において重大な障害が発生すると、ダンプ出力処理部12は、ページテーブル100を参照し、カーネルメモリであることを示すカーネルメモリフラグがONに設定されているページテーブルエントリに該当するページの内容をメモリダンプファイル103へ出力する。さらに、ダンプ出力処理部12は、メモリダンプ格納対象データリスト101を参照し、登録されているデータの内容をメモリダンプファイル103へ出力する。
上記の場合、カーネルメモリのページ102a、102b、102dの内容がメモリダンプファイル103へ出力される。また、Cメモリのページ102eのメモリダンプ格納対象データ(データのアドレスがそれぞれH、I、J)と、Cメモリのページ102gのメモリダンプ格納対象データ(データのアドレスがL)がメモリダンプファイル103へ出力される。しかし、Mフラグが設定されたCメモリページ102e、102gの個人情報はメモリダンプファイル103へ出力されない。また、Cメモリページ102cの個人情報及びユーザメモリページ102fの個人情報もメモリダンプの対象データではないため、メモリダンプファイル103へ出力されない。
次に、第2の実施形態における情報処理装置110について説明する。第2の実施形態における情報処理装置110は、上述した第1の実施形態の情報処理装置1と同様の構成を有するとともに、以下で説明する構成、すなわち制御部111を更に有する。
第2の実施形態の情報処理装置110は、図11に示すように、第1の実施形態の情報処理装置1が有する構成以外に、仮想メモリイメージを視覚可能にした調査ツール画像の表示を行う制御部111を更に有する。制御部111は、ユーザによるメモリダンプ調査ツールの利用指示に基づいて、ユーザデータとメモリダンプ格納対象データのメモリ空間における格納状況(仮想メモリイメージ)を視覚可能にした調査ツール画像を表示させる。メモリダンプ調査ツールとは、例えば、情報処理装置110のベンダや保守サービス会社の担当者による障害調査の際に利用されるものである。メモリダンプ調査ツールの利用によってメモリダンプ機能の起動時に採取されたメモリダンプ格納対象データの内容が表示されるため、障害調査を行う担当者は障害の原因などを特定することが可能となる。
具体的には、制御部111は、メモリ空間におけるユーザデータとメモリダンプ格納対象データの格納位置に対応付け、出力されたメモリダンプ格納対象データと、ユーザデータに代わる代替情報とを不図示のディスプレイなどに表示させる。すなわち、制御部111は、ユーザデータの格納位置に対応付け、出力されたメモリダンプ格納対象データを対応付けられたメモリダンプ格納対象データの格納位置に表示し、ユーザデータに代わる代替情報を対応付けられたユーザデータの格納位置に表示する。
ユーザデータに代わる代替情報とは、ユーザデータの代わりに表示される情報であって、表示されても個人情報の漏えいとならない情報(例えば図12に示す“deadface”という文字情報)である。ユーザデータに代わる情報は、文字情報に限られるものではなく、画像情報などであってもよい。図11に示す制御部111以外の構成については第1の実施形態と同様であるため、ここでの説明は省略する。
以下では、第2の実施形態における情報処理装置110におけるメモリダンプ調査ツールを用いた調査ツール画像の表示処理の一例について図12及び図13を用いて説明する。図12は仮想メモリイメージ及び表示される調査ツール画像を示す図である。図13は、調査ツール画像の表示処理のフローの一例を示すフローチャートである。この処理は、例えばCPU141がHDD142などに記憶されたOSに含まれる表示処理プログラムを実行する処理である。
制御部111は、不図示の受付部によるメモリダンプ調査ツールの利用指示の受付に基づいて、メモリダンプファイル123に格納されているカーネルメモリのページ内容及びCメモリのページ上のメモリダンプ格納対象データをアドレス情報とともに取得する(ステップS1301)。制御部111は、取得したアドレス情報に対応付けて、取得したカーネルメモリのページ内容と、Cメモリのページ上のメモリダンプ格納対象データとを含む調査ツール画像121を不図示の表示部(ディスプレイ)に表示する(ステップS1302)。ここでの表示部は、情報処理装置110に搭載されたものであっても、情報処理装置110に接続可能なものであってもよい。
さらに、制御部111は、メモリダンプ格納対象データではないデータ(ユーザデータなど)のアドレス情報をページテーブルに基づいて取得する(ステップS1303)。制御部111は、取得したアドレス情報に対応付けてメモリダンプ格納対象データではないデータに代わる代替情報(この例ではdeadface)を調査ツール画像121に表示する(ステップS1304)。これにより、ユーザデータの漏えいを防止できるとともに、障害調査を行うことが可能となる。
また、制御部111は、調査ツール画像121の各ページの脇の先頭部分にメモリ空間におけるアドレスを表示させるようにしてもよい。図12に示す例では、アドレスはアルファベットになっている。
次に、各実施形態における情報処理装置を実現するためのハードウェア構成の一例について図14を用いて説明する。ハードウェア構成は、例えば、CPU141、HDD142、Random Access Memory(RAM)143、Read Only Memory(ROM)144、グラフィック処理装置145、入力インタフェース(入力Interface(I/F))146、通信インタフェース(通信Interface(I/F))147、バス148を備えている。
CPU141は、バス148を介して、HDD142などに格納される情報処理装置の各種処理を行うためのプログラム(例えば、情報処理プログラムなど)を読み込む。CPU141は、読み込んだプログラムをRAM143に一時的に格納し、そのプログラムにしたがって上述した各種処理を行う。
HDD142には、情報処理装置の各種処理を行うためのアプリケーションプログラムや、情報処理装置の処理に必要なデータなどが格納される。
RAM143は、揮発性メモリであって、CPU141に実行させるためのOSプログラムやアプリケーションプログラムの一部が一時的に格納される。また、RAM143には、CPU141による処理に必要な各種データが格納される。
ROM144は、不揮発性メモリであって、ブートプログラムやBasic Input/Output System(BIOS)などのプログラムを記憶する。
グラフィック処理装置145は、不図示のディスプレイに表示させる情報(例えば、上記調査ツール画像)を生成するものである。
入力インタフェース146は、不図示のキーボードやマウスなどを介して入力される情報(例えば、上記メモリダンプ調査ツールの利用指示)を受け付けるものである。
通信インタフェース147は、外部(ディスプレイなど)とネットワークを介してデータの送受信を行うものである。
バス148は、各装置間の制御信号、データ信号などの授受を媒介する経路である。
上述した実施形態では、情報処理装置の主な処理をCPUによるソフトウェア処理によって実行するものとして説明したが、この処理の全部又は一部をハードウェアによって実現するようにしてもよい。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)メモリダンプを実行する演算処理装置と、前記演算処理装置に接続される主記憶装置を有する情報処理装置の制御方法において、
前記情報処理装置が有する処理部が、前記演算処理装置が前記メモリダンプを実行後にメモリダンプ対象となる対象データを前記主記憶装置の格納領域に格納する場合、前記対象データのみを選択し、
前記情報処理装置が有する出力部が、選択された前記対象データを出力する、
情報処理装置の制御方法。
(付記2)前記処理部が、前記対象データの格納を示す対象データ格納情報を、前記格納領域に設定するとともに、格納される前記対象データのアドレスとサイズを前記主記憶装置に格納された対象データリストに登録する付記1に記載の情報処理装置の制御方法。
(付記3)前記出力部が、前記対象データリストに登録されたアドレスに基づいて、前記対象データを記主記憶装置の格納領域に出力するとともに、他の対象データを格納する他の格納領域から前記他の対象データを前記主記憶装置の格納領域に出力する付記2に記載の情報処理装置の制御方法。
(付記4)前記処理部が、前記対象データを前記主記憶装置に格納する場合、入出力の対象であるユーザデータの格納を示すユーザデータ格納情報を前記格納領域に設定する付記2又は3に記載の情報処理装置の制御方法。
(付記5)前記情報処理装置が有する依頼部が、
前記ユーザデータが前記情報処理装置の外部からの読み込みデータである場合、前記ユーザデータに前記対象データが付加されているかを判断し、付加されている場合、前記処理部に対して、前記対象データの格納を示す対象データ格納情報の設定及び前記対象データリストへの登録の依頼を発行し、
前記処理部が、発行された前記依頼に基づいて、前記対象データ格納情報の設定及び前記対象データリストへの登録を行う付記4に記載の情報処理装置の制御方法。
(付記6)発行される前記依頼が、前記対象データのアドレスとサイズの情報を含む付記5に記載の情報処理装置の制御方法。
(付記7)前記ユーザデータが前記情報処理装置の外部からの書き込みデータであり、且つ、前記格納領域に格納される前記対象データが、他の対象データのみを格納する他の格納領域から前記他の対象データが複写された対象データである場合、前記処理部が、前記対象データの格納を示す対象データ格納情報の設定及び前記対象データリストへの登録を中止する付記4に記載の情報処理装置の制御方法。
(付記8)前記情報処理装置が有する取得部が、前記格納領域を取得要求に基づいて取得し、
前記情報処理装置が有する要求部が、前記格納領域を取得する際、前記取得部に対して前記取得要求を発行する付記1乃至7のいずれか一項に記載の情報処理装置の制御方法。
(付記9)前記ユーザデータと前記対象データの前記格納領域における格納状況を表示させる場合、前記ユーザデータの格納位置に対応付け、出力された前記対象データを対応付けられた前記対象データの格納位置に表示させるとともに、前記ユーザデータに代わる代替情報を対応付けられた前記ユーザデータの格納位置に表示させる付記4乃至8のいずれか一項に記載の情報処理装置の制御方法。
(付記10)前記ユーザデータを使用するプログラムが、前記対象データを除いた前記ユーザデータの格納領域にアクセスする付記4乃至9のいずれか一項に記載の情報処理装置の制御方法。
(付記11)メモリダンプを実行する演算処理装置と、前記演算処理装置に接続される主記憶装置を有する情報処理装置の制御プログラムにおいて、
前記演算処理装置が、
前記メモリダンプを実行後にメモリダンプ対象となる対象データを前記主記憶装置の格納領域に格納する場合、前記対象データのみを選択し、
選択された前記対象データを出力する情報処理装置の制御プログラム。
(付記12)前記演算処理装置が、前記対象データの格納を示す対象データ格納情報を、前記格納領域に設定するとともに、格納される前記対象データのアドレスとサイズを前記主記憶装置に格納された対象データリストに登録する付記11に記載の情報処理装置の制御プログラム。
(付記13)前記演算処理装置が、前記対象データリストに登録されたアドレスに基づいて、前記対象データを記主記憶装置の格納領域に出力するとともに、他の対象データを格納する他の格納領域から前記他の対象データを前記主記憶装置の格納領域に出力する付記12に記載の情報処理装置の制御プログラム。
(付記14)前記演算処理装置が、前記対象データを前記主記憶装置に格納する場合、入出力の対象であるユーザデータの格納を示すユーザデータ格納情報を前記格納領域に設定する付記12又は13に記載の情報処理装置の制御プログラム。
(付記15)前記演算処理装置が、
前記ユーザデータが前記情報処理装置の外部からの読み込みデータである場合、前記ユーザデータに前記対象データが付加されているかを判断し、付加されている場合、前記処理部に対して、前記対象データの格納を示す対象データ格納情報の設定及び前記対象データリストへの登録の依頼を発行し、
前記演算処理装置が、発行された前記依頼に基づいて、前記対象データ格納情報の設定及び前記対象データリストへの登録を行う付記14に記載の情報処理装置の制御プログラム。
(付記16)発行される前記依頼が、前記対象データのアドレスとサイズの情報を含む付記15に記載の情報処理装置の制御プログラム。
(付記17)前記ユーザデータが前記情報処理装置の外部からの書き込みデータであり、且つ、前記格納領域に格納される前記対象データが、他の対象データのみを格納する他の格納領域から前記他の対象データが複写された対象データである場合、前記処理部が、前記対象データの格納を示す対象データ格納情報の設定及び前記対象データリストへの登録を中止する付記14に記載の情報処理装置の制御プログラム。
(付記18)前記演算処理装置が、前記格納領域を取得要求に基づいて取得し、
前記演算処理装置が、前記格納領域を取得する際、前記取得部に対して前記取得要求を発行する付記11乃至17のいずれか一項に記載の情報処理装置の制御プログラム。
(付記19)前記ユーザデータと前記対象データの前記格納領域における格納状況を表示させる場合、前記ユーザデータの格納位置に対応付け、出力された前記対象データを対応付けられた前記対象データの格納位置に表示させるとともに、前記ユーザデータに代わる代替情報を対応付けられた前記ユーザデータの格納位置に表示させる付記14乃至18のいずれか一項に記載の情報処理装置の制御プログラム。
(付記20)前記ユーザデータを使用するプログラムが、前記対象データを除いた前記ユーザデータの格納領域にアクセスする付記14乃至19のいずれか一項に記載の情報処理装置の制御プログラム。