(57)【要約】  【課題】あるデータによって用いられる複数のデータを近接した記憶位置に記憶することによってアクセス速度を改善するデータ配置装置の提供  【解決手段】ファイル再配置装置２１は、ファイルアクセス履歴情報ＤＢから時間的に前後して用いられるファイルの組を重複なく抽出することを目的とするファイル連結情報生成処理（Ｓ６０１）、時間的に前後して用いられるファイルの組を連続的につなぎ合わせて、一連のファイル相関関係を判断することを目的とするファイル順位情報生成処理（Ｓ６０３）、各ファイルを再配置する際の相対的なアドレスを決定することを目的とする配置アドレス情報生成処理（Ｓ６０５）、及び実際にファイルの再配置を行うことを目的とするデフラグ処理（Ｓ６０７）を実行する。これにより、ある第１のデータによって用いられる複数の第２のデータを記憶手段上の近接した配置位置に記憶することができる。  【選択図】    図６
2008165315.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータが第２のデータにアクセスした際の前記第１のデータと前記第２のデータとが関連付けられたアクセス履歴情報を取得するアクセス履歴情報取得手段、
前記アクセス履歴情報に基づいて前記第２のデータを記憶手段に配置する際の前記記憶手段における配置位置を決定するデータ配置位置決定手段であって、同一の前記第１のデータによってアクセスされた前記第２のデータを近接した配置位置に決定するもの、
を有するデータ配置装置。
【請求項２】
請求項１に係るデータ配置装置において、さらに、
前記配置位置に基づいて、前記第２のデータを前記記憶手段に配置し、記憶する記憶制御手段、
を有するデータ配置装置。
【請求項３】
請求項１又は請求項２に係るデータ配置装置のいずれかにおいて、さらに、
第１のデータが第２のデータにアクセスした際に、前記第１のデータと前記第２のデータとを関連付けたアクセス履歴情報を生成するアクセス履歴情報生成手段、
を有するデータ配置装置。
【請求項４】
請求項１〜請求項３に係るデータ配置装置のいずれかにおいて、
前記アクセス履歴情報は、他のアクセス履歴情報に対して、第１のデータが第２のデータにアクセスした際の時間的前後関係を維持しており、
前記データ配置位置決定手段は、さらに、
前記時間的前後関係に基づいて、前記第２のデータを前記記憶手段に記憶する際の前記配置位置を決定すること、
を特徴とするデータ配置装置。
【請求項５】
請求項４に係るデータ配置装置において、
前記データ配置位置決定手段は、さらに、
ある前記第１のデータによってアクセスされた前記第２のデータと他の前記第１のデータによってアクセスされた前記第２のデータとで重複が生じている場合には、それぞれの前記第１のデータによってアクセスされた前記第２のデータであって重複が生じている前記第２のデータよりも時間的に前にアクセスされた前記第２のデータを近接した配置位置に決定すること、
を特徴とするデータ配置装置。
【請求項６】
データを記憶手段に配置する際の配置位置を決定するデータ配置プログラムであって、
前記データ配置プログラムは、
コンピュータを、
第１のデータが第２のデータにアクセスした際の前記第１のデータと前記第２のデータとが関連付けられたアクセス履歴情報を取得するアクセス履歴情報取得手段、
前記アクセス履歴情報に基づいて前記第２のデータを記憶手段に配置する際の前記記憶手段における配置位置を決定するデータ配置位置決定手段であって、同一の前記第１のデータによってアクセスされた前記第２のデータを近接した配置位置に決定するもの、
として機能させること、
を特徴とするデータ配置プログラム。
【請求項７】
請求項６に係るデータ配置プログラムにおいて、
前記データ配置プログラムは、
コンピュータを、さらに、
前記配置位置に基づいて、前記第２のデータを前記記憶手段に配置し、記憶する記憶制御手段、
として機能させること、
を特徴とするデータ配置プログラム。
【請求項８】
請求項６又は請求項７に係るデータ配置プログラムのいずれかにおいて、
前記データ配置プログラムは、
コンピュータを、さらに、
第１のデータが第２のデータにアクセスした際に、前記第１のデータと前記第２のデータとを関連付けたアクセス履歴情報を生成するアクセス履歴情報生成手段、
として機能させること、
を特徴とするデータ配置プログラム。
【請求項９】
請求項６〜請求項８に係るデータ配置プログラムのいずれかにおいて、
前記データ配置プログラムは、
コンピュータを、
前記アクセス履歴情報は、他のアクセス履歴情報に対して、第１のデータが第２のデータにアクセスした際の時間的前後関係を維持しており、
前記データ配置位置決定手段は、さらに、
前記時間的前後関係に基づいて、前記第２のデータを前記記憶手段に記憶する際の前記配置位置を決定すること、
として機能させること、
を特徴とするデータ配置プログラム。
【請求項１０】
請求項９に係るデータ配置プログラムにおいて、
前記データ配置プログラムは、
コンピュータを、
前記データ配置位置決定手段は、さらに、
ある前記第１のデータによってアクセスされた前記第２のデータと他の前記第１のデータによってアクセスされた前記第２のデータとで重複が生じている場合には、それぞれの前記第１のデータによってアクセスされた前記第２のデータであって重複が生じている前記第２のデータよりも時間的に前にアクセスされた前記第２のデータを近接した配置位置に決定するもの、
として機能させること、
を特徴とするデータ配置プログラム。
【請求項１１】
コンピュータを用いて、データを記憶手段に配置する際の配置位置を決定するデータ配置方法において、
前記コンピュータが、第１のデータが第２のデータにアクセスした際の前記第１のデータと前記第２のデータとが関連付けられたアクセス履歴情報を取得し、
前記コンピュータが、前記アクセス履歴情報に基づいて前記第２のデータを記憶手段に配置する際の前記記憶手段における配置位置について、同一の前記第１のデータによってアクセスされた前記第２のデータを近接した配置位置に決定すること、
を特徴とするデータ配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶手段に対するデータの記憶位置を制御するデータ配置装置であって、特に、あるデータによって用いられる複数のデータを近接した記憶位置に記憶するものに関する。
【背景技術】
【０００２】
従来のデータ配置装置であるデフラグ装置について説明する。一般的に、あるデータを記録媒体、例えばハードディスクに記憶する際には、当該ハードディスク上の連続した領域に記録される。しかし、データの書き換え、削除、移動、コピー等の操作を繰り返し行うことによって、１つのデータがハードディスク上で離散した複数の領域に記憶される断片化という現象がハードディスクに生ずる。断片化が生じたハードディスクに対してデータの読み込みを行う場合、ハードディスク上の離散して位置する複数の領域に対してアクセスする必要が生ずる。このため、断片化が生じたハードディスクにおいてはデータへのアクセス速度が低下する。
【０００３】
このような断片化を防止する方法の一つとしてデフラグ（デフラグメンテーション）処理を行うデフラグ装置がある。デフラグとは、記憶媒体に記憶されているデータの再配置を行い、データの断片化を解消することをいう。具体的には、離散した複数の領域に記憶しているデータを、連続した領域に記憶し直す。デフラグ処理を実行するデフラグ装置については、従来より、多数の技術が開示されている。
【０００４】
【特許文献１】特開２００２−２６８９２４
【０００５】
【特許文献２】特開２００５−２０８６９７
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前述のデフラグ装置には、以下のような問題点がある。デフラグ装置で行うデフラグ処理は、データ単位で行われる。つまり、データ単位で断片化が生じていなければ、デフラグ処理を行う意味がない。
【０００７】
一方で、あるアプリケーションの実行ファイルを起動する場合や映像再生アプリケーションを用いてある映像データを再生する場合等、決まったデータへ決まった順番でアクセスする場合がある。実行ファイルの起動では、起動シーケンスにしたがって、デバイスドライバや所定のサービスの実行ファイルを、順次、読み込む処理を行う。また、映像データの再生では、チャプター毎の映像データを、順次、読み込む処理を行う。
【０００８】
このような決まったデータへ決まった順番でアクセスする場合に、各データがハードディスク上の連続した領域に記憶されていれば問題はないが、各データが離散した複数の領域に記憶されている場合には、例え個々のデータ単位では断片化が生じていなくとも、連続して用いられる複数のデータ全体を一つのデータと考えるならば、断片化が生じているのと同じこととなる。
【０００９】
しかし、前述のデフラグ処理では、個々のデータ単位では断片化が生じていなければ、データ全体として断片化を解消することはできない、という問題点がある。なぜなら、デフラグ処理は、個々のデータ単位での断片化の解消を目的としているからである。
【００１０】
そこで、本発明は、あるデータによって用いられる複数のデータを近接した記憶位置に記憶することによってアクセス速度を改善するデータ配置装置の提供を目的とする。
【課題を解決するための手段】
【００１１】
本発明に関する課題を解決するための手段および発明の効果を以下に示す。
【００１２】
本発明に係るデータ配置装置、データ配置プログラム、及びデータ配置方法では、第１のデータが第２のデータにアクセスした際の前記第１のデータと前記第２のデータとが関連付けられたアクセス履歴情報を取得し、前記アクセス履歴情報に基づいて前記第２のデータを記憶手段に配置する際の前記記憶手段における配置位置を決定し、同一の前記第１のデータによってアクセスされた前記第２のデータを近接した配置位置に決定する。
【００１３】
これにより、ある第１のデータによって用いられる複数の第２のデータを記憶手段上の近接した配置位置に記憶することができる。よって、第２のデータへのアクセス速度を早くすることができる。
【００１４】
本発明に係るデータ配置装置及びデータ配置プログラムでは、さらに、前記配置位置に基づいて、前記第２のデータを前記記憶手段に配置し、記憶する。
【００１５】
これにより、実際に、ある第１のデータによって用いられる複数の第２のデータを記憶手段上の近接した配置位置に記憶することができる。
【００１６】
本発明に係るデータ配置装置及びデータ配置プログラムでは、さらに、第１のデータが第２のデータにアクセスした際に、前記第１のデータと前記第２のデータを関連付けたアクセス履歴情報を生成する。
【００１７】
これにより、アクセス履歴情報を、容易に得ることができる。
【００１８】
本発明に係るデータ配置装置及びデータ配置プログラムでは、前記アクセス履歴情報は、他のアクセス履歴情報に対して、第１のデータが第２のデータにアクセスした際の時間的前後関係を維持しており、さらに、前記時間的前後関係に基づいて、前記第２のデータを前記記憶手段に記憶する際の前記配置位置を決定する。
【００１９】
これにより、第１のデータが第２のデータにアクセスした際の時間的前後関係を維持したまま、第２のデータを記憶手段上に配置し、記憶することができる。よって、第１のデータにおける第２のデータへのアクセス処理が定型化している場合には、当該アクセス処理におけるアクセス速度を早くすることができる。
【００２０】
本発明に係るデータ配置装置及びデータ配置プログラムでは、さらに、ある前記第１のデータによってアクセスされた前記第２のデータと他の前記第１のデータによってアクセスされた前記第２のデータとで重複が生じている場合には、それぞれの前記第１のデータによってアクセスされた前記第２のデータであって重複が生じている前記第２のデータよりも時間的に前にアクセスされた前記第２のデータを近接した配置位置に決定する。
【００２１】
これにより、各第１のデータがアクセスする第２のデータに重複が生じている場合であっても、各第１のデータにおけるアクセス速度を速くすることができる。
【００２２】
ここで、請求項に記載されている要素と実施例における要素との対応関係を示す。データ配置装置はファイル再配置装置２１に、データ配置プログラムはＣＤ−ＲＯＭ２１０に記録されているファイル再配置プログラムに、それぞれ対応する。
【００２３】
アクセス履歴情報取得手段はＣＰＵ２１１及びメモリ２１２、データ配置位置決定手段はＣＰＵ２１１及びメモリ２１２、記憶制御手段はＣＰＵ２１１及びメモリ２１２、アクセス履歴情報生成手段はＣＰＵ２１１及びメモリ２１２、及び記憶手段はハードディスク２１３に、それぞれ該当する。
【００２４】
第２のデータはアクセス履歴情報ＤＢの［対象ファイル名］列Ｃ３０３に記述される対象ファイル名を有するファイルに、第１のデータはアクセス履歴情報ＤＢの［プロセスファイル名］列Ｃ３０７に記述されるプロセスファイル名を有するファイルに、アクセス履歴情報はファイルアクセス履歴情報ＤＢに記述される各レコードに、それぞれ対応する。
【００２５】
「近接した位置」とは、再配置したデータに対してアクセスしようとする装置が、再配置したデータへのアクセスが効率的に行える位置を意味する。
【００２６】
「第１のデータが第２のデータにアクセスする」とは、第１のデータが第２のデータに直接的にアクセスする場合だけでなく、間接的にアクセスする場合も含む概念である。例えば、第１のデータが第３のデータにアクセスし、当該第３のデータが第２のデータにアクセスするような場合も含まれる。
【発明を実施するための最良の形態】
【００２７】
本発明におけるデータ配置装置の実施例を以下において説明する。
【実施例１】
【００２８】
1.  概要
本発明に係るデータ配置装置１に係る機能ブロック図を図１に示す。データ配置装置Ｍ１は、アクセス履歴情報取得手段Ｍ１１、データ配置位置決定手段Ｍ１３、記憶制御手段Ｍ１５、アクセス履歴情報生成手段Ｍ１７、及び記憶手段Ｍ１９を有している。
【００２９】
アクセス履歴情報取得手段Ｍ１１は、第１のデータが第２のデータにアクセスした際の前記第１のデータと前記第２のデータとが関連付けられたアクセス履歴情報を取得する。
【００３０】
データ配置位置決定手段Ｍ１３は、前記アクセス履歴情報に基づいて前記第２のデータを記憶手段に配置する際の前記記憶手段における配置位置を決定するデータ配置位置決定手段であって、同一の前記第１のデータによってアクセスされた前記第２のデータを近接した配置位置に決定する。また、データ配置位置決定手段Ｍ１３は、前記時間的前後関係に基づいて、前記第２のデータを前記記憶手段に記憶する際の前記配置位置を決定する。さらに、データ配置位置決定手段Ｍ１３は、ある前記第１のデータによってアクセスされた前記第２のデータと他の前記第１のデータによってアクセスされた前記第２のデータとで重複が生じている場合には、それぞれの前記第１のデータによってアクセスされた前記第２のデータであって重複が生じている前記第２のデータよりも時間的に前にアクセスされた前記第２のデータを近接した配置位置に決定する。
【００３１】
記憶制御手段Ｍ１５は、前記配置位置に基づいて、前記第２のデータを前記記憶手段に配置し、記憶する。
【００３２】
アクセス履歴情報生成手段Ｍ１７は、第１のデータが第２のデータにアクセスした際に、前記第１のデータと前記第２のデータを関連付けたアクセス履歴情報を生成する。
【００３３】
記憶手段Ｍ１９は、第２のデータを記憶保持する。
【００３４】
これにより、ある第１のデータによって用いられる複数の第２のデータを記憶手段上の近接した配置位置に記憶することができる。よって、第２のデータへのアクセス速度を早くすることができる。また、実際に、ある第１のデータによって用いられる複数の第２のデータを記憶手段上の近接した配置位置に記憶することができる。さらに、アクセス履歴情報を、容易に得ることができる。さらに、第１のデータが第２のデータにアクセスした際の時間的前後関係を維持したまま、第２のデータを記憶手段上に配置し、記憶することができる。よって、第１のデータにおける第２のデータへのアクセス処理が定型化している場合には、当該アクセス処理におけるアクセス速度を早くすることができる。さらに、各第１のデータがアクセスする第２のデータに重複が生じている場合であっても、各第１のデータにおけるアクセス速度を速くすることができる。
【００３５】
2.  ハードウェア構成
ファイル再配置装置２１のハードウェア構成を図２を用いて説明する。ファイル再配置装置２１は、ＣＰＵ２１１、メモリ２１２、及びハードディスク２１３を備えている。また、ファイル再配置装置２１には、キーボード２１４、マウス２１５、ディスプレイ２１６、およびＣＤ−ＲＯＭドライブ２１７が接続されている。
【００３６】
ＣＰＵ２１１は、ハードディスク２１３に記録されているオペレーティング・システム（ＯＳ）、ファイル再配置プログラム等その他のアプリケーションに基づいた処理を行う。メモリ２１２は、ＣＰＵ２１１に対して作業領域を提供する。ハードディスク２１３は、オペレーティング・システム（ＯＳ）、ファイル再配置プログラム等その他のアプリケーション、及びアクセス履歴情報データベース（以下、アクセス履歴情報ＤＢとする。）を含む各種データを記録保持する。アクセス履歴情報ＤＢについては後述する。
【００３７】
ＣＤ−ＲＯＭドライブ２１７は、ファイル再配置プログラムが記録されているＣＤ−ＲＯＭ２１０からファイル再配置プログラムを、また、他のＣＤ−ＲＯＭからその他のアプリケーションのプログラムを読み取る等、ＣＤ−ＲＯＭからのデータの読み取りを行う。
【００３８】
キーボード２１４、マウス２１５は、外部からの命令を受け付ける。ディスプレイ２１６は、ユーザインターフェイス等を表示する。
【００３９】
3.  データ
ファイル再配置装置２１がハードディスク２１３に記録するアクセス履歴情報ＤＢについて図３Ａを用いて説明する。アクセス履歴情報ＤＢは、あるファイルが他のファイルにアクセスした際における、両ファイルの関連付けを記述したデータベースである。
【００４０】
アクセス履歴情報ＤＢは、［レコード番号］列Ｃ３０１、［対象ファイル名］列Ｃ３０３、［アクセス種別］列Ｃ３０５、及び［プロセスファイル名］列Ｃ３０７を有している。［レコード番号］列Ｃ３０１には、各レコードを特定する番号が記述される。［対象ファイル名］列Ｃ３０３には、あるプロセスを実行しようとするファイル（以下、プロセスファイルとする。）が、当該プロセスにおいて用いるファイル（以下、対象ファイルとする。）のファイル名（以下、対象ファイル名とする。）が記述される。なお、対象ファイル名としては、対象ファイルのフルパス名を用いる。図３Ａにおいては、「Ｃ：￥ａｐｐ￥ａｐｐ．ｉｎｉ」、「Ｃ：￥ａｐｐ￥ａｐｐ．ｅｘｅ」、「Ｃ：￥ｍｏｖｉｅ￥ｃｈａｐｔｅｒ１．ａｖｉ」等が用いられている。［アクセス種別］列Ｃ３０５には、プロセスファイルがどのような処理の対象として対象ファイルにアクセスしたのかが記述される。本実施例においては、プロセスファイルが読み込み処理の対象として対象ファイルにアクセスした場合には「ReadFile」が、プロセスファイルが書き込み処理の対象として対象ファイルにアクセスした場合には「WriteFile」が、それぞれ記述される。［プロセスファイル名］列Ｃ３０７には、プロセスファイルのファイル名（以下、プロセスファイル名とする。）が記述される。なお、プロセスファイル名としては、プロセスファイルのフルパス名を用いる。
【００４１】
アクセス履歴情報ＤＢのレコードでは、あるプロセスが発生する毎に、これまでに生成されていたアクセス履歴情報ＤＢに新たなレコードを追加される。つまり、アクセス履歴情報ＤＢにおいては、各レコードに関するプロセスが発生した時間的な前後関係は、アクセス履歴情報ＤＢにおける各レコードの記述位置の位置関係によって維持されることになる。
【００４２】
4.  ファイル再配置装置２１の動作
ファイル再配置装置２１におけるファイル再配置プログラムに基づく動作の概略を図４に示す。ファイル最適配置装置２１のＣＰＵ２１１は、ファイル再配置プログラムに含まれるファイルアクセス履歴取得プログラムが起動されたと判断すると（Ｓ４０１）、ファイルアクセス履歴取得処理を開始する（Ｓ４０３）。ファイルアクセス履歴取得処理の詳細については後述する。ＣＰＵ２１１は、ファイルアクセス履歴取得処理の終了指示があるまで、ファイルアクセス履歴取得処理を実行する（Ｓ４０５）。
【００４３】
また、ＣＰＵ２１１は、ファイル再配置プログラムに含まれるファイル再配置実行プログラムが起動されたと判断すると（Ｓ４１１）、ファイル再配置実行処理を実行する（Ｓ４１３）。ファイル再配置実行処理の詳細については後述する。
【００４４】
以下において、ファイルアクセス履歴取得処理（Ｓ４０３）、及びファイル再配置実行処理（Ｓ４１３）を説明する。
【００４５】
4.1.  ファイルアクセス履歴取得処理
ＣＰＵ２１１が実行するファイルアクセス履歴取得処理を、図５に示すフローチャートを用いて説明する。ＣＰＵ２１１は、メモリ２１２若しくはハードディスク２１３に所定の領域を確保してファイルアクセス履歴情報ＤＢ（図３Ａ参照）を生成し、生成したファイルアクセス履歴情報ＤＢを初期化する（Ｓ５０１）。
【００４６】
ＣＰＵ２１１は、ＯＳで提供されているＡＰＩ(Application Program Interface)に含まれる命令や関数に対するアクセスがあるか否かを判断する（Ｓ５０３）。ＣＰＵ２１１は、ＡＰＩに含まれる命令や関数へのアクセスがあったと判断すると、アクセスされた命令や関数がファイルの読み込みを表すもの（ReadFile）若しくはファイルへの書き込みを表すもの（WriteFile）か否かを判断する（Ｓ５０５）。
【００４７】
ＣＰＵ２１１は、アクセスされた命令や関数がReadFile若しくはWriteFileであると判断すると、ReadFile若しくはWriteFileの対象となったファイルのファイル名（対象ファイル名）、及び、ReadFile若しくはWriteFileを実行するファイルのファイル名（プロセスファイル名）を取得する（Ｓ５０７）。なお、ReadFile若しくはWriteFileを判断する方法、対象ファイル名及びプロセスファイル名を取得する方法については、市販されているセキュリティソフトウェア等で一般的に用いられているプログラミング技法を用いればよい。
【００４８】
ＣＰＵ２１１は、ステップＳ５０３〜ステップＳ５０７で取得した、ReadFile若しくはWriteFileの種別、対象ファイル名、及びプロセスファイル名を関連付けて、ファイルアクセス履歴情報ＤＢの対応する領域へ記述する（Ｓ５０９）。具体的には、対象ファイル名をファイルアクセス履歴情報ＤＢの［対象ファイル名］列Ｃ３０３に、ReadFile若しくはWriteFileの種別をファイルアクセス履歴情報ＤＢの［アクセス種別］列Ｃ３０５に、対象ファイル名をファイルアクセス履歴情報ＤＢの［プロセスファイル名］列Ｃ３０７に、それぞれ記述する。
【００４９】
4.2.  ファイル再配置実行処理
ＣＰＵ２１１が実行するファイル再配置実行処理を図６に示すフローチャートを用いて説明する。ＣＰＵ２１１は、ファイル再配置プログラムの起動があったと判断すると、時間的に前後して用いられるファイルの組を重複なく抽出することを目的とするファイル連結情報生成処理（Ｓ６０１）、時間的に前後して用いられるファイルの組を連続的につなぎ合わせて、一連のファイル相関関係を判断することを目的とするファイル順位情報生成処理（Ｓ６０３）、各ファイルを再配置する際の相対的なアドレスを決定することを目的とする配置アドレス情報生成処理（Ｓ６０５）、及び実際にファイルの再配置を行うことを目的とするデフラグ処理（Ｓ６０７）を実行する。以下において、各処理について説明する。
【００５０】
4.2.1  ファイル連結情報生成処理
ＣＰＵ２１１が実行するファイル連結情報生成処理を図７に示すフローチャートを用いて説明する。ＣＰＵ２１１は、メモリ２１２若しくはハードディスク２１３に所定の領域を確保してファイル連結情報テーブルを生成し、生成したファイル連結テーブルを初期化する（Ｓ７０１）。
【００５１】
ここで、ファイル連結情報テーブルについて図８Ａを用いて説明する。ファイル連結情報テーブルは、時間的に前後して用いられるファイルの組を重複なく抽出するためにメモリ２１２に一時的に生成されるテーブルである。
【００５２】
ファイル連結情報テーブルは、［レコード番号］列Ｃ８０１、［起点ファイル名］列Ｃ８０３、及び［終点ファイル名］列Ｃ８０５を有している。［レコード番号］列Ｃ８０１には、各レコードを特定する番号が記述される。［起点ファイル名］列Ｃ８０３には、時間的に前後して用いられたファイルのうち、前に用いられたファイルのファイル名が記述される。［終点ファイル名］列Ｃ８０５には、［起点ファイル名］列Ｃ８０３列に記述されたファイルに対して、時間的に前後して用いられたファイルのうち、後に用いられたファイルのファイル名が記述される。
【００５３】
図７に戻って、ＣＰＵ２１１は、ファイルアクセス履歴ＤＢの［プロセスファイル名］列Ｃ３０７から、全ての種類のプロセスファイル名を抽出プロセスファイル名として取得する（Ｓ７０３）。具体的には、ＣＰＵ２１１は、ファイルアクセス履歴ＤＢの［プロセスファイル名］列Ｃ３０７からあるプロセスファイル名を取得すると、これまでに取得したプロセスファイル名と同一であるか否かを判断し、同一でなければ新たな抽出プロセスファイル名として取得し、同一であれば当該プロセスファイル名については抽出プロセスファイル名として取得せず、新たに［プロセスファイル名］列Ｃ３０７から次のプロセスファイル名を取得する。そして、ＣＰＵ２１１は、取得した抽出プロセスファイル名から、一の抽出プロセスファイル名を取得する（Ｓ７０４）。
【００５４】
ＣＰＵ２１１は、メモリ２１２に抽出ファイルアクセス履歴情報テーブルを生成し、初期化する（Ｓ７０５）。ここで、抽出ファイルアクセス履歴情報テーブルについて図９Ａを用いて説明する。抽出ファイルアクセス履歴情報テーブルは、ファイルアクセス履歴情報ＤＢから、［プロセスファイル名］列Ｃ３０７に記述されているプロセスファイル名が同じであるレコードを抽出し、記憶保持するためにメモリ２１２に一時的に生成されるテーブルである。
【００５５】
抽出ファイルアクセス履歴情報テーブルは、［レコード番号］列Ｃ９０１、［対象ファイル名］列Ｃ９０３、［アクセス種別］列Ｃ９０５、及び［プロセスファイル名］列Ｃ９０７を有している。［レコード番号］列Ｃ９０１には、各レコードを特定する番号が記述される。［対象ファイル名］列Ｃ９０３には、ファイルアクセス履歴情報ＤＢから抽出したレコードの［対象ファイル名］列Ｃ３０３に記述されている対象ファイル名が記述される。［アクセス種別］列Ｃ９０５には、ファイルアクセス履歴情報ＤＢから抽出したレコードの［アクセス種別］列Ｃ３０５に記述されているアクセス種別の値が記述される。［プロセスファイル名］列Ｃ９０７には、ファイルアクセス履歴情報ＤＢから抽出したレコードの［プロセスファイル名］列Ｃ３０７に記述されているプロセスファイル名が記述される。
【００５６】
図７に戻って、ＣＰＵ２１１は、ファイルアクセス履歴ＤＢから、ステップＳ７０５で取得した抽出プロセスファイル名を［プロセスファイル名］列Ｃ３０７に有するレコードを全て抽出し、抽出したレコードに基づいて抽出ファイルアクセス履歴情報テーブルに記述する（Ｓ７０６）。記述に際して、ＣＰＵ２１１は、抽出した各レコードについてのファイルアクセス履歴情報ＤＢにおける時間的な前後関係を維持するように、つまりファイルアクセス履歴情報ＤＢにおけるレコードの順番を維持するように、抽出したレコードを抽出ファイルアクセス履歴情報テーブルに記述する。
【００５７】
ＣＰＵ２１１は、抽出ファイルアクセス履歴情報テーブルにおいて［対象ファイル名］列Ｃ９０３に記述された対象ファイル名が重複する重複レコードについては、［レコード番号］列Ｃ９０１に記述されているレコード番号が最も小さいレコード以外のレコードを削除する（Ｓ７０９）。なお、レコードが削除された後の抽出ファイルアクセス履歴情報テーブルにおいては、削除されたレコードより大きなレコード番号を有するレコードのレコード番号は、削除されたレコードの分だけ小さなレコード番号とする。
【００５８】
ＣＰＵ２１１は、重複レコードを削除した後の抽出ファイルアクセス履歴情報テーブルのレコードの数を計数し、変数Ｎに設定する（Ｓ７１１）。また、ＣＰＵ２１１は、変数Ｘを初期化し、値「１」を設定する（Ｓ７１３）。ＣＰＵ２１１は、Ｘの値が「Ｎ」であるか否かを判断する（Ｓ７１５）。
【００５９】
ＣＰＵ２１１は、Ｘの値が「Ｎ」でないと判断すると、レコード番号「Ｘ」及びレコード番号「Ｘ＋１」に対応するレコードを抽出ファイルアクセス履歴情報テーブルから取得し（Ｓ７１７）、取得したレコードの［対象ファイル名］列Ｃ９０３に記述されている対象ファイル名をそれぞれ抽出し（Ｓ７１９）、ファイル連結情報テーブルに記述する（Ｓ７２１）。抽出した対象ファイル名をファイル連結情報テーブルに記述する際には、レコード番号「Ｘ」のレコードから抽出した対象ファイル名をファイル連結情報テーブルの［起点ファイル名］列Ｃ８０３に、レコード番号「Ｘ＋１」のレコードから抽出した対象ファイル名をファイル連結情報テーブルの［終点ファイル名］列Ｃ８０５に、それぞれ記述し、一のレコードとする。
【００６０】
ＣＰＵ２１１は、変数Ｘの値に「１」を加算し（Ｓ７２３）、ステップＳ７１５〜ステップＳ７２５の処理を繰り返す。
【００６１】
ＣＰＵ２１１は、ステップＳ７１５においてＸの値が「Ｎ」であると判断すると、全ての抽出プロセスファイル名についてステップＳ７０４、ステップＳ７２３の処理を行ったか否かを判断する（Ｓ７２５）。ＣＰＵ２１１は、全ての抽出プロセスファイル名についてステップＳ７０４〜テップＳ７２３の処理を行っていないと判断すると、他の一の抽出プロセスファイル名を取得し（Ｓ７０４）、ステップＳ７０５〜ステップＳ７２３の処理を繰り返す。
【００６２】
ＣＰＵ２１１は、ステップＳ７２５において全ての抽出プロセスファイル名についてステップＳ７０４〜テップＳ７２３の処理を行ったと判断すると、ファイル連結情報テーブルに重複レコードが存在するか否かを判断する（Ｓ７２７）。ＣＰＵ２１１は、ファイル連結情報テーブルに重複レコードが存在するか否かを判断すると、重複するレコードを削除する（Ｓ７２９）。なお、重複レコードの削除にあたっては、ファイル連結情報テーブル（図８Ａ参照）における［レコード番号］列Ｃ８０１に記述されているレコード番号が最も小さいレコード以外のレコードを削除する。
【００６３】
4.2.2  ファイル順位情報生成処理
ＣＰＵ２１１が実行するファイル順位情報生成処理を図１０に示すフローチャートを用いて説明する。ＣＰＵ２１１は、メモリ２１２にファイル順位情報テーブルを生成するための領域を確保し、ファイル順位情報テーブルを生成する（Ｓ１００１）。
【００６４】
ここで、ファイル順位情報テーブルについて図１１Ａを用いて説明する。ファイル順位情報テーブルは、時間的に前後して用いられるファイルの組を連続的につなぎ合わせて、一連のファイル相関関係を判断するために、メモリ２１２に一時的に生成されるテーブルである。ファイル順位情報テーブルは、［レコード番号］列Ｃ１１０１、［対象ファイル名］列Ｃ１１０３、及び［順位］列Ｃ１１０５を有している。
【００６５】
［レコード番号］列Ｃ１１０１には、各レコードを特定する番号が記述される。［対象ファイル名］列Ｃ１１０３には、ファイルアクセス履歴情報ＤＢの［対象ファイル名］列Ｃ３０３に記述されている対象ファイル名から、重複なく抽出した対象ファイル名を、つまりファイルアクセス履歴情報ＤＢにおける一通りの対象ファイル名が記述される。［順位］列Ｃ１１０５には、対象ファイル名に与える順位が記述される。
【００６６】
ＣＰＵ２１１は、ファイル順位情報テーブルの生成に際して、ファイルアクセス履歴ＤＢの［対象ファイル名］列Ｃ３０３に記述されている対象ファイル名を取得する。そして、重複している対象ファイル名については重複分を削除し、重複がない対象ファイル名をファイル順位情報テーブルの［対象ファイル名］列Ｃ１１０３に記述する。なお、ファイル順位情報テーブルの［対象ファイル名］列Ｃ１１０３以外の他の領域については、この段階では何も記述しない。
【００６７】
図１０に戻って、ＣＰＵ２１１は、ファイル順位情報テーブルの任意の一のレコードの［順位］列に値「０」を記述する（Ｓ１００３）。ＣＰＵ２１１は、［順位］列に「０」を記述したレコードの［対象ファイル名］列Ｃ１１０３に記述されている対象ファイル名を注目対象ファイル名として取得する（Ｓ１００５）。そして、ＣＰＵ２１１は、注目対象ファイル名に対する順位決定処理を実行する（Ｓ１００７）。
【００６８】
ＣＰＵ２１１が行う順位決定処理について図１２を用いて説明する。ＣＰＵ２１１は、ファイル連結情報テーブルの［起点ファイル名］列Ｃ８０３若しくは［終点ファイル名］列Ｃ８０５に、注目対象ファイル名が記述されているレコードを注目レコードとして取得する（Ｓ１２０１）。ＣＰＵ２１１は、注目レコードから一のレコードを抽出する（Ｓ１２０３）。ＣＰＵ２１１は、取得したレコードについて、注目対象ファイル名が［起点ファイル名］列Ｃ８０３に記述されているのか、［終点ファイル名］列Ｃ８０５に記述されているのかを判断する（Ｓ１２０５）。
【００６９】
ＣＰＵ２１１は、注目対象ファイル名が［起点ファイル名］列Ｃ８０３に記述されていると判断すると、抽出したレコードの［終点ファイル名］列Ｃ８０５に記述されているファイル名を取得する（Ｓ１２０７）。ＣＰＵ２１１は、ファイル順位情報テーブルの［対象ファイル名］列Ｃ１１０３に、取得した［終点ファイル名］列Ｃ８０５に記述されているファイル名が記述されているレコードを抽出し（Ｓ１２０９）、抽出したレコードの［順位］列Ｃ１１０５に有効な値が記述されているか否か、つまり［終点ファイル名］列Ｃ８０５に記述されているファイル名の順位が決定しているか否かを判断する（Ｓ１２１１）。ＣＰＵ２１１は、抽出したレコードの［順位］列Ｃ１１０５に有効な値が記述されていないと判断すると、当該［順位］列Ｃ１１０５に、注目対象ファイル名の［順位］列の値に値「１」を加算した値を記述する（Ｓ１２１３）。
【００７０】
ＣＰＵ２１１は、ステップＳ１２０７で取得した［終点ファイル名］列Ｃ８０５に記述されているファイル名を注目対象ファイル名に設定する（Ｓ１２１５）。そして、ＣＰＵ２１１は、設定した注目対象ファイル名について、順位決定処理（Ｓ１００７：図１０参照）を実行する。
【００７１】
ＣＰＵ２１１は、ステップＳ１２１１において抽出したレコードの［順位］列Ｃ１１０５に有効な値が記述されている、つまり［終点ファイル名］列Ｃ８０５に記述されているファイル名の順位が決定していると判断すると、ステップＳ１２２７の処理を実行する。
【００７２】
一方、ＣＰＵ２１１は、ステップＳ１２０５において注目対象ファイル名が［終点ファイル名］列Ｃ８０５に記述されていると判断すると、抽出したレコードの［起点ファイル名］列Ｃ８０３に記述されているファイル名を取得する（Ｓ１２１７）。ＣＰＵ２１１は、ファイル順位情報テーブルの［対象ファイル名］列Ｃ１１０３に取得した［起点ファイル名］列Ｃ８０３に記述されているファイル名が記述されているレコードを抽出し（Ｓ１２１９）、抽出したレコードの［順位］列Ｃ１１０５に有効な値が記述されているか否か、つまり［起点ファイル名］列Ｃ８０３に記述されているファイル名の順位が決定しているか否かを判断する（Ｓ１２２１）。ＣＰＵ２１１は、抽出したレコードの［順位］列Ｃ１１０５に有効な値が記述されていないと判断すると、当該［順位］列Ｃ１１０５に注目対象ファイル名の順位から値「１」を減算した値を記述する（Ｓ１２２３）。
【００７３】
ＣＰＵ２１１は、ステップＳ１２１７で取得した［起点ファイル名］列Ｃ８０３に記述されているファイル名を注目対象ファイル名に設定する（Ｓ１２２５）。そして、ＣＰＵ２１１は、設定した注目対象ファイル名について、順位決定処理（Ｓ１００７：図１０参照）を実行する。
【００７４】
ＣＰＵ２１１は、ステップＳ１２２１において抽出したレコードの［順位］列Ｃ１１０５に有効な値が記述されている、つまり［終点ファイル名］列Ｃ８０５に記述されているファイル名の順位が決定していると判断すると、ステップＳ１２２７の処理を実行する。
【００７５】
ＣＰＵ２１１は、全ての注目レコードについて、ステップＳ１２０１〜ステップＳ１２２５の処理を実行する（Ｓ１２２７）。
【００７６】
4.2.3  配置アドレス情報生成処理
ＣＰＵ２１１が行う配置アドレス情報生成処理について図１３を用いて説明する。ＣＰＵ２１１は、メモリ２１２に配置アドレス情報テーブルを生成するための領域を確保し、配置アドレス情報テーブルを生成する（Ｓ１３０１）。また、ＣＰＵ２１１は、アドレス変数Ａに値「０」を設定する（Ｓ１３０３）。
【００７７】
ここで、配置アドレス情報テーブルについて図１４を用いて説明する。配置アドレス情報テーブルは、各ファイルを再配置する際の相対的なアドレスを決定するために、メモリ２１２に一時的に生成されるテーブルである。配置アドレス情報テーブルは、［アドレス］列Ｃ１４０１、及び［ファイル名］列Ｃ１４０３を有している。［アドレス］列Ｃ１４０１には、再配置するファイルの相対的なアドレスが記述される。［ファイル名］列Ｃ１４０３には、再配置するファイルのファイル名が記述される。
【００７８】
図１３に戻って、ＣＰＵ２１１は、ファイル順位情報テーブルのレコードを、「順位」列Ｃ１１０５の値を対象として、昇べきの順にソートする（Ｓ１３０５）。ＣＰＵ２１１は、順位変数Ｒをファイル順位情報テーブルの［順位］列Ｃ１１０５に記述されている最小の順位の値にセットする（Ｓ１３０７）。
【００７９】
ＣＰＵ２１１は、昇べきの順にソートしたファイル順位情報テーブルから、［順位］列Ｃ１１０５の値が順位変数Ｒの値と等しいレコードの一つを取得する（Ｓ１３０９）。ＣＰＵ２１１は、取得したレコードの［対象ファイル名］列Ｃ１１０３に記述された対象ファイル名を取得する（Ｓ１３１１）。ＣＰＵ２１１は、取得した対象ファイル名とアドレス変数Ａとの値を関連付けて、配置アドレス情報テーブルに記述する（Ｓ１３１３）。
【００８０】
ＣＰＵ２１１は、取得した対象ファイル名のファイルサイズを取得する（Ｓ１３１５）。ファイルサイズの取得に際しては、ＯＳが有している各ファイルのファイルサイズ情報等を用いればよい。ＣＰＵ２１１は、アドレス変数Ａに取得したファイルサイズを加算した値を、アドレス変数Ａの新たな値とする（Ｓ１３１７）。
【００８１】
ＣＰＵ２１１は、［順位］列Ｃ１１０５の値が順位変数Ｒの値と等しいレコードが他に存在するか否かを判断する（Ｓ１３１９）。ＣＰＵ２１１は、［順位］列Ｃ１１０５の値が順位変数Ｒの値と等しいレコードが他に存在すると判断すると、ステップＳ１３０９以下の処理を実行する。ＣＰＵ２１１は、［順位］列Ｃ１１０５の値が順位変数Ｒの値と等しいレコードが他に存在しないと判断すると、順位変数Ｒの値に「１」を加算する（Ｓ１３２１）。
【００８２】
ＣＰＵ２１１は、［順位］列Ｃ１１０５の値がステップＳ１０１９で設定した順位変数Ｒの値と等しいレコードが存在するか否かを判断する（Ｓ１３２３）。ＣＰＵ２１１は、［順位］列Ｃ１１０５の値がステップＳ１３１９で設定した順位変数Ｒの値と等しいレコードが存在すると判断すると、ステップＳ１３０９以下の処理を実行する。
【００８３】
4.2.4  デフラグ処理
ＣＰＵ２１１が行うデフラグ処理について説明する。ＣＰＵ２１１は、生成した配置アドレス情報テーブルに基づいて、各ファイルをハードディスク２１３の所定の領域に配置し、記憶する。なお、デフラグ処理については、従来から用いられているファイル・ディスク処理技術を用いることができるため、ここでは詳細な記載は省略する。
【００８４】
4.3.  具体例
ＣＰＵ２１１が実行するファイル再配置実行処理を具体的な例を用いて説明する。再配置実行処理を実行する前には、図３Ｂに示すファイルアクセス履歴情報ＤＢが得られているものとする。なお、以下においては、参照する図面も含めて、フルパスを用いた対象ファイル名等の記載を、簡単のために、「Ａ」、「Ｂ」・・・のように記載する。
【００８５】
ＣＰＵ２１１は、ファイル再配置プログラムの起動があったと判断すると、ファイル連結情報生成処理（図６：Ｓ６０１）、ファイル順位情報生成処理（図６：Ｓ６０３）、配置アドレス情報生成処理（図６：Ｓ６０５）、及びデフラグ処理（図６：Ｓ６０７）を実行する。
【００８６】
4.3.1  ファイル連結情報生成処理
ＣＰＵ２１１は、メモリ２１２若しくはハードディスク２１３に所定の領域を確保してファイル連結情報テーブルを生成し、生成したファイル連結テーブルを初期化する（図７：Ｓ７０１）。ＣＰＵ２１１は、ファイルアクセス履歴ＤＢの［プロセスファイル名］列Ｃ３０７から、プロセスファイル名「Ｐ１」、「Ｐ２」を抽出プロセスファイル名として取得する（図７：Ｓ７０３）。
【００８７】
ＣＰＵ２１１は、ステップＳ７０３において取得した抽出プロセスファイル名「Ｐ１」、「Ｐ２」から、一の抽出プロセスファイル名「Ｐ１」を取得する（図７：Ｓ７０４）。ＣＰＵ２１１は、メモリ２１２に抽出ファイルアクセス履歴情報テーブルを生成し、初期化する（図７：Ｓ７０５）。ＣＰＵ２１１は、ファイルアクセス履歴ＤＢから、ステップＳ７０４で取得した抽出プロセスファイル名「Ｐ１」を［プロセスファイル名］列Ｃ３０７に有するレコードを全て抽出し、抽出したレコードに基づいて抽出ファイルアクセス履歴情報テーブルに記述する（図７：Ｓ７０６）。このとき記述された抽出ファイルアクセス履歴情報テーブルを図９Ｂに示す。図３Ｂ及び図９Ｂから明らかなように、抽出ファイルアクセス履歴情報テーブルの［プロセスファイル名］列Ｃ９０７にプロセスファイル名「Ｐ１」を有するレコードでは、ファイルアクセス履歴情報ＤＢにおける時間的な前後関係、つまりファイルアクセス履歴情報ＤＢにおけるレコードの順番を維持している。
【００８８】
ＣＰＵ２１１は、図９Ｂに示す抽出ファイルアクセス履歴情報テーブルにおいて［対象ファイル名］列Ｃ９０３に記述された対象ファイル名が重複する重複レコード、つまりレコード番号「２」、「５」のレコード、及びレコード番号「３」、「６」のレコードについては、［レコード番号］列Ｃ９０１に記述されているレコード番号が最も小さいレコード以外のレコード、つまりレコード番号「２」のレコードに対してはレコード番号「５」のレコード、レコード番号「３」のレコードに対してはレコード番号「６」のレコードを削除する（図７：Ｓ７０９）。なお、レコードが削除された後の抽出ファイルアクセス履歴情報テーブルにおいては、削除されたレコードより大きなレコード番号を有するレコードのレコード番号は、削除されたレコードの分だけ小さなレコード番号とする。このようにして生成された抽出ファイルアクセス履歴情報テーブルは図９Ａとなる。
【００８９】
ＣＰＵ２１１は、重複レコードを削除した後の抽出ファイルアクセス履歴情報テーブルのレコードの数を計数し、変数Ｎに「４」を設定する（図７：Ｓ７１１）。また、ＣＰＵ２１１は、変数Ｘを初期化し、値「１」を設定する（図７：Ｓ７１３）。ＣＰＵ２１１は、Ｘの値が「Ｎ（＝４）」であるか否かを判断する（図７：Ｓ７１５）。
【００９０】
ＣＰＵ２１１は、Ｘの値が「Ｎ（＝４）」でないと判断すると、レコード番号「Ｘ（＝１）」及びレコード番号「Ｘ＋１（＝２）」に対応するレコードを抽出ファイルアクセス履歴情報テーブルから取得し（図７：Ｓ７１７）、取得したレコードの［対象ファイル名］列Ｃ９０３に記述されている対象ファイル名「Ａ」、「Ｃ」をそれぞれ抽出し（図９：Ｓ７１９）、ファイル連結情報テーブルに記述する（Ｓ７２１）。抽出した対象ファイル名をファイル連結情報テーブルに記述する際には、レコード番号「Ｘ（＝１）」のレコードから抽出した対象ファイル名「Ａ」をファイル連結情報テーブルの［起点ファイル名］列Ｃ８０３に、レコード番号「Ｘ＋１（＝２）」のレコードから抽出した対象ファイル名「Ｃ」をファイル連結情報テーブルの［終点ファイル名］列Ｃ８０５に、それぞれ記述し、一のレコードとする。
【００９１】
ＣＰＵ２１１は、変数Ｘの値に「１」を加算して「Ｘ（＝２）」とし（Ｓ７２３）、ステップＳ７１５〜ステップＳ７２５の処理を繰り返す。
【００９２】
ＣＰＵ２１１は、ステップＳ７１５においてＸの値が「Ｎ（＝４）」であると判断すると、全ての抽出プロセスファイル名について図７におけるステップＳ７０４、ステップＳ７２３の処理を行ったか否かを判断する（図７：Ｓ７２５）。ＣＰＵ２１１は、他の抽出プロファイル名「Ｐ２」を取得しているので、全ての抽出プロセスファイル名についてステップＳ７０４〜テップＳ７２３の処理を行っていないと判断し、他の一の抽出プロセスファイル名「Ｐ２」を取得する（Ｓ７０４）。そして、ＣＰＵ２１１は、抽出プロセスファイル名「Ｐ２」について、抽出プロセスファイル名「Ｐ１」と同様に、図７におけるステップＳ７０４〜テップＳ７２３の処理を行う。抽出プロセスファイル名「Ｐ２」について図７のステップＳ７０６において生成される抽出ファイルアクセス履歴情報テーブルを図９Ｃに示す。なお、抽出プロセスファイル名「Ｐ２」における抽出ファイルアクセス履歴情報テーブルでは、重複レコードは存在しないので、図７におけるステップＳ７０９の処理は行わない。
【００９３】
ＣＰＵ２１１は、全ての抽出プロセスファイル名についてステップＳ７０４〜テップＳ７２３の処理を行ったと判断すると、ファイル連結情報テーブルに重複レコードが存在するか否かを判断する（Ｓ７２７）。抽出プロセスファイル名「Ｐ１」及び「Ｐ２」に対するステップＳ７０４〜テップＳ７２３の処理が終了した段階での、ファイル連結情報テーブルを図８Ｂに示す。図８Ｂに示すファイル連結情報テーブルにおいて重複する重複レコード、つまりレコード番号「３」、「５」のレコードについては、［レコード番号］列Ｃ８０１に記述されているレコード番号が最も小さいレコード以外のレコード、つまりレコード番号「５」のレコードを削除する（図７：Ｓ７２９）。
【００９４】
図８Ａに示すファイル連結情報テーブルが、最終的に生成されたファイル連結情報テーブルである。図８Ａに示すファイル連結情報テーブルに基づいて、ファイル間の相関関係を示したファイル相関図を図１５に示す。
【００９５】
4.3.2  ファイル順位情報生成処理
ＣＰＵ２１１は、メモリ２１２にファイル順位情報テーブルを生成するための領域を確保し、ファイル順位情報テーブルを生成する（図１０：Ｓ１００１）。ＣＰＵ２１１は、ファイル順位情報テーブルの生成に際して、ファイルアクセス履歴ＤＢの［対象ファイル名］列Ｃ３０３に記述されている対象ファイル名について、重複している対象ファイル名については重複分を削除し、重複がない対象ファイル名「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」、「Ｇ」を取得し、ファイル順位情報テーブルの［対象ファイル名］列Ｃ１１０３に記述する。なお、ファイル順位情報テーブルの［対象ファイル名］列Ｃ１１０３以外の他の領域については、この段階では何も記述しない。このときのファイル順位情報テーブルを、図１１Ｂに示す。
【００９６】
ＣＰＵ２１１は、ファイル順位情報テーブルの任意の一のレコード、ここではレコード番号「１」のレコードの［順位］列に値「０」を記述する（図１０：Ｓ１００３）。このときのファイル相関図を図１６Ａに示す。ＣＰＵ２１１は、ファイル順位情報テーブルにおいて、［順位］列に「０」を記述したレコード番号「１」のレコードの［対象ファイル名］列Ｃ１１０３に記述されている対象ファイル名「Ａ」を注目対象ファイル名として取得する（図１０：Ｓ１００５）。そして、ＣＰＵ２１１は、注目対象ファイル名に対する順位決定処理を実行する（図１０：Ｓ１００７）。
【００９７】
ＣＰＵ２１１は、ファイル連結情報テーブルの［起点ファイル名］列Ｃ８０３若しくは［終点ファイル名］列Ｃ８０５に、注目対象ファイル名「Ａ」が記述されているレコード番号「１」のレコードを注目レコードとして取得する（図１２：Ｓ１２０１）。ＣＰＵ２１１は、注目レコードから一のレコードを抽出する（図１２：Ｓ１２０３）。ここでは、注目レコードの取得に際して一つのレコードしが取得してないので、レコード番号「１」のレコードがそのまま抽出される。ＣＰＵ２１１は、取得したレコード番号「１」のレコードについて、注目対象ファイル名が［起点ファイル名］列Ｃ８０３に記述されているのか、［終点ファイル名］列Ｃ８０５に記述されているのかを判断する（図１２：Ｓ１２０５）。
【００９８】
ＣＰＵ２１１は、注目対象ファイル名「Ａ」が［起点ファイル名］列Ｃ８０３に記述されていると判断し、抽出したレコード番号「１」のレコードの［終点ファイル名］列Ｃ８０５に記述されているファイル名「Ｃ」を取得する（図１２：Ｓ１２０７）。ＣＰＵ２１１は、図８Ａのファイル順位情報テーブルの［対象ファイル名］列Ｃ１１０３に、取得した［終点ファイル名］列Ｃ８０５に記述されているファイル名「Ｃ」が記述されているレコード番号「２」のレコードを抽出し（図１２：Ｓ１２０９）、抽出したレコードの［順位］列Ｃ１１０５に有効な値が記述されているか否か、つまり［終点ファイル名］列Ｃ８０５に記述されているファイル名の順位が決定しているか否かを判断する（図１２：Ｓ１２１１）。ここでは、ＣＰＵ２１１は、抽出したレコード番号「２」のレコードの［順位］列Ｃ１１０５に有効な値が記述されていないので、当該［順位］列Ｃ１１０５に、注目対象ファイル名の［順位］列の値「０」に値「１」を加算した値「１」を記述する（図１２：Ｓ１２１３）。このときのファイル順位情報テーブルを図１１Ｃに、また、ファイル相関図を図１６Ｂに示す。
【００９９】
ＣＰＵ２１１は、ステップＳ１２０７で取得した［終点ファイル名］列Ｃ８０５に記述されているファイル名「Ｃ」を注目対象ファイル名に設定する（図１２：Ｓ１２１５）。そして、ＣＰＵ２１１は、設定した注目対象ファイル名について、順位決定処理（図１０：Ｓ１００７）を実行する。注目対象ファイル名を「Ｃ」として、順位決定処理が終了した段階でのファイル相関図を図１６Ｃに示す。
【０１００】
次に、注目対象ファイル名を「Ｅ」に設定した場合について説明する。この段階では、ファイル名「Ｅ」に関する［順位］列Ｃ１１０５には、値「２」が記述されている。つまり、ファイル名「Ｅ」の順位は「２」と決定している。
【０１０１】
ＣＰＵ２１１は、ファイル連結情報テーブルの［起点ファイル名］列Ｃ８０３若しくは［終点ファイル名］列Ｃ８０５に、注目対象ファイル名「Ｅ」が記述されているレコード番号「２」、「３」、「４」のレコードを注目レコードとして取得する（図１２：Ｓ１２０１）。ＣＰＵ２１１は、注目レコードから一のレコード番号「２」のレコードを抽出する（図１２：Ｓ１２０３）。ＣＰＵ２１１は、取得したレコード番号「２」のレコードについて、注目対象ファイル名「Ｅ」が［終点ファイル名］列Ｃ８０５に記述されていると判断し（図１２：Ｓ１２０５）、抽出したレコードの［起点ファイル名］列Ｃ８０３に記述されているファイル名「Ｃ」を取得する（図１２：Ｓ１２１７）。ＣＰＵ２１１は、ファイル順位情報テーブルの［対象ファイル名］列Ｃ１１０３に取得した［起点ファイル名］列Ｃ８０３に記述されているファイル名「Ｃ」が記述されているレコード番号「３」のレコードを抽出し（図１２：Ｓ１２１９）、抽出したレコードの［順位］列Ｃ１１０５に有効な値が記述されているか否か、つまり［起点ファイル名］列Ｃ８０３に記述されているファイル名の順位が決定しているか否かを判断する（図１２：Ｓ１２２１）。
【０１０２】
ＣＰＵ２１１は、ステップＳ１２２１において抽出したレコードの［順位］列Ｃ１１０５に有効な値「１」が記述されているので、他の注目レコード（レコード番号「３」、「４」のレコード）について、上記処理を繰り返す。
【０１０３】
ＣＰＵ２１１は、注目レコードから一のレコード番号「３」のレコードを抽出する（図１２：Ｓ１２０３）。ＣＰＵ２１１は、取得したレコード番号「３」のレコードについて、注目対象ファイル名「Ｅ」が［終点ファイル名］列Ｃ８０５に記述されていると判断し（図１２：Ｓ１２０５）、抽出したレコードの［起点ファイル名］列Ｃ８０３に記述されているファイル名「Ｄ」を取得する（図１２：Ｓ１２１７）。ＣＰＵ２１１は、ファイル順位情報テーブルの［対象ファイル名］列Ｃ１１０３に取得した［起点ファイル名］列Ｃ８０３に記述されているファイル名「Ｄ」が記述されているレコード番号「４」のレコードを抽出し（図１２：Ｓ１２１９）、抽出したレコードの［順位］列Ｃ１１０５に有効な値が記述されているか否か、つまり［起点ファイル名］列Ｃ８０３に記述されているファイル名の順位が決定しているか否かを判断する（図１２：Ｓ１２２１）。ここでは、ＣＰＵ２１１は、抽出したレコード番号「４」のレコードの［順位］列Ｃ１１０５に有効な値が記述されていないので、当該［順位］列Ｃ１１０５に、注目対象ファイル名「Ｅ」の［順位］列の値「２」から値「１」を減算した値「１」を記述する（図１２：Ｓ１２１３）。このときのファイル相関図を図１６Ｂに示す。
【０１０４】
ＣＰＵ２１１は、他の注目レコード（レコード番号のレコード）について、上記処理を繰り返す。ＣＰＵ２１１は、注目レコードから一のレコード番号「４」のレコードを抽出する（図１２：Ｓ１２０３）。ＣＰＵ２１１は、取得したレコード番号「４」のレコードについて、注目対象ファイル名「Ｅ」が［起点ファイル名］列Ｃ８０３に記述されていると判断し、抽出したレコード番号「４」のレコードの［終点ファイル名］列Ｃ８０５に記述されているファイル名「Ｂ」を取得する（図１２：Ｓ１２０７）。ＣＰＵ２１１は、図８Ａのファイル順位情報テーブルの［対象ファイル名］列Ｃ１１０３に、取得した［終点ファイル名］列Ｃ８０５に記述されているファイル名「Ｂ」が記述されているレコード番号「２」のレコードを抽出し（図１２：Ｓ１２０９）、抽出したレコードの［順位］列Ｃ１１０５に有効な値が記述されているか否か、つまり［終点ファイル名］列Ｃ８０５に記述されているファイル名の順位が決定しているか否かを判断する（図１２：Ｓ１２１１）。ここでは、ＣＰＵ２１１は、抽出したレコード番号「２」のレコードの［順位］列Ｃ１１０５に有効な値が記述されていないと判断し、当該［順位］列Ｃ１１０５に、注目対象ファイル名「Ｅ」の［順位］列の値「２」に値「１」を加算した値「３」を記述する（図１２：Ｓ１２１３）。このときのファイル相関図を図１６Ｄに示す。
【０１０５】
ＣＰＵ２１１は、ステップＳ１２０７で取得した［終点ファイル名］列Ｃ８０３に記述されているファイル名「Ｂ」を注目対象ファイル名に設定する（Ｓ１２２５）。そして、ＣＰＵ２１１は、注目対象ファイル名「Ｂ」について、順位決定処理（Ｓ１００７：図１０参照）を実行する。順位決定処理によって、ＣＰＵ２１１、対象ファイル名「Ｂ」との順位を「３」と決定する。なお、処理の詳細についてはこれまでの順位決定処理と同様ゆえ、記載を省略する。このときのファイル相関図を図１７Ａに示す。
【０１０６】
以降、ＣＰＵ２１１は、注目対象ファイル名「Ｆ」、「Ｇ」について、順位決定処理（Ｓ１００７：図１０参照）を実行する。順位決定処理によって、ＣＰＵ２１１、対象ファイル名「Ｆ」との順位を「４」と、対象ファイル名「Ｇ」との順位を「５」と、それぞれ決定する。なお、処理の詳細についてはこれまでの順位決定処理と同様ゆえ、記載を省略する。対象ファイル名「Ｆ」との順位を「４」と決定したときのファイル相関図を図１７Ｂに、対象ファイル名「Ｇ」との順位を「５」と決定したときのファイル相関図を図１７Ｃに、それぞれ示す。
【０１０７】
4.3.3  配置アドレス情報生成処理
ファイル順位情報テーブルの生成が終了すると、ＣＰＵ２１１は、生成したファイル順位情報テーブルに基づいて、配置アドレス情報生成処理（図１３）を実行する。配置アドレス生成処理の詳細についての記述は省略する。ＣＰＵ２１１は、配置アドレス生成処理の結果、図１４に示す配置アドレス情報テーブルを生成する。なお、ここでは、ファイル名「Ａ」、のファイルサイズは、［アドレス］列の値「００１０」から値「００００」を減算した値に対応するファイルサイズである。他のファイル名についても同様である。
【０１０８】
図１４に基づき各ファイルを配置すると、最終的に、各ファイルは図１８Ａに示すファイル配置図のように配置される。なお、図１８Ａにおいて、ファイル名に続く括弧書きは、対応するプロセス名を表している。
【０１０９】
［その他の実施形態］
（１）記憶手段
前述の実施例１においては、記憶手段として、ハードディスク２１３を例示したが、データを記憶するものであれば例示のものに限定されない。例えば、光ディスク、半導体メモリ等でもよい。
【０１１０】
（２）ReadFile・WriteFile
前述の実施例１においては、ＣＰＵ２１１は、ＡＰＩに含まれる命令や関数へのアクセスがあったと判断する際に、マイクロソフト社のＯＳであるｗｉｎｄｏｗｓ（商標）におけるＡＰＩのファイルの読み込みを表すReadFile若しくはファイルへの書き込みを表すWriteFileを判断の対象とした（図５：Ｓ５０５参照）。しかし、ＣＰＵ２１１が判断の対象とするのは、マイクロソフト社のＯＳであるｗｉｎｄｏｗｓ（商標）に関するものに限定されるものではない。例えば、サンマイクロシステムズ社のＯＳであるｓｏｌａｒｉｓ（商標）やＴｈｅ  Ｏｐｅｎ  ＧｒｏｕｐのＯＳであるＵＮＩＸ（商標）に関するものであってもよい。
【０１１１】
また、第１のデータと前記第２のデータが関連付けるにあたって、ＡＰＩにおける関数「ReadFile」及び「WriteFile」を示したが、両データを関連付けることができるものであれば、例示のものに限定されない。例えば、Ｗｉｎｄｏｗｓ  ＸＰ（商標）、Ｗｉｎｄｏｗｓ  Ｓｅｒｖｅｒ  ２００３（商標）における「openfiles.exe」、Ｗｉｎｄｏｗｓ  ＸＰ以前のＷｉｎｄｏｗｓにおける「FileMon」、またＬｉｎｕｘ（商標）、ＵＮＩＸ（商標）における「ls」であってもよい。
【０１１２】
（３）時間的前後関係
前述の実施例１においては、アクセス履歴情報を各プロセスが発生した順に、既に存在するファイルアクセス履歴情報ＤＢにレコードを追加する形で登録することによって、ファイルアクセス履歴情報ＤＢにおけるレコードの時間的前後関係を維持するものとした。しかし、ファイルアクセス履歴情報をファイルアクセス履歴情報ＤＢに登録する際に、当該ファイルアクセス履歴情報に係るプロセスが発生した時間と、対象ファイル名、プロセスファイル名とを関連付けて登録するようにしてもよい。これにより、アクセス履歴情報を各プロセスが発生した順に、ファイルアクセス履歴情報ＤＢに登録する必要はなくなる。
【０１１３】
（４）ファイルアクセス履歴情報ＤＢ
前述の実施例１においては、ファイル再配置装置２１において生じた各プロセスについて、当該ファイル再配置装置２１がファイルアクセス履歴情報ＤＢを生成していた。しかし、アクセス履歴情報を取得できるものであれば、例示のものに限定されない。例えば、サーバーと端末とがネットワークを構成しているシステムにおいて、サーバが、各端末におけるプロセスを監視して、各端末毎のファイルアクセス履歴情報ＤＢを生成するようにしてもよい。
【０１１４】
（５）配置アドレス情報
前述の実施例１では、ファイル再配置装置２１が、当該ファイル再配置装置２１のハードディスク２１３に存在する各ファイルを再配置するために配置アドレス情報を生成することとした。しかし、ファイル再配置装置２１は、他のコンピュータ等について配置アドレス情報を生成するようにしてもよい。この場合、配置アドレス情報をファイル再配置装置２１が生成し、実際に行うファイルの再配置は、他のコンピュータ等で行うようにすればよい。
【０１１５】
（６）順位に基づく配置アドレス情報の生成
前述の実施例１においては、ファイル順位情報における同一順位を有するファイルについては、連続した配置位置としたが、各ファイルを近接した位置に配置できるものであれば例示のものに限定されない。例えば、同一プロセスに関するファイルを連続的に配置するようにしてもよい。
【０１１６】
また、同一順位を有するファイルについては、各ファイル毎にアクセス頻度を算出し、アクセス頻度が高いファイルをより重複ファイルに近い位置に配置するようにしてもよい。例えば、図１５におけるファイル相関関係において、同一順位であるファイルＣ及びファイルＤのアクセス頻度を算出すると、ファイルＣび方がファイルＤよりもアクセス頻度が高い場合、ファイルＣをファイルＥに近い位置に配置する。この場合、図１８Ｂに示すように配置される。これにより、全体的なファイルアクセスの速度が速くなる。
【０１１７】
（７）ファイル再配置装置２１における機能の選択
前述の実施例１においては、ファイル再配置装置２１は、ファイルアクセス履歴取得処理、ファイル連結情報生成処理、ファイル順位情報生成処理、配置アドレス情報生成処理、及びデフラグ処理を行うこととした。しかし、ファイル連結情報生成処理、ファイル順位情報生成処理、及び配置アドレス情報生成処理をベースとして、他の処理を選択的に組み合わせるようにしてもよい。
【０１１８】
（８）フローチャートにおける処理の順番
前述の実施例１においては、図に示した各フローチャートに基づいて、各処理を実現するようにした。しかし、各処理を実現できるものであれば、各フローチャート内における処理の順番は例示のものに限定されない。
【０１１９】
（９）重複レコードの削除
前述の実施例１においては、ファイル連結情報生成処理で重複レコードを削除する際に（Ｓ７０９、Ｓ７２７）、重複レコードのレコード番号が最も小さいレコード以外のレコードを削除することとした。しかし、重複レコードを削除できるものであれば例示のものに限定されない。例えば、重複レコード毎のアクセス頻度を算出し、アクセス頻度が最も高いもの以外のレコードを削除するようにしてもよい。
【図面の簡単な説明】
【０１２０】
【図１】本発明におけるデータ配置装置の実施例１における機能ブロック図を示した図である。
【図２】ファイル再配置装置２１のハードウェア構成を示した図である。
【図３】ファイルアクセス履歴情報ＤＢのデータ構造を示した図であり、Ａは詳細なファイルアクセス履歴情報ＤＢを、Ｂは具体例を示すために簡略化したファイルアクセス履歴情報ＤＢを、それぞれ示した図である。
【図４】ファイル再配置装置２１の動作を示したフローチャートである。
【図５】ファイルアクセス履歴取得処理を示したフローチャートである。
【図６】ファイル配置実行処理を示したフローチャートである。
【図７】ファイル連結情報生成処理を示したフローチャートである。
【図８】ファイル連結情報テーブルのデータ構造を示した図である。
【図９】抽出ファイルアクセス履歴情報テーブルのデータ構造を示した図であり、Ａ、Ｂ、Ｃはその生成過程の変化を示したものである。
【図１０】ファイル順位情報生成処理を示したフローチャートである。
【図１１】ファイル順位情報テーブルのデータ構造を示した図であり、Ａは最終的に生成されるファイル順位情報テーブルを、Ｂ、Ｃはその生成過程の変化を示したものである。
【図１２】順位決定処理を示したフローチャートである。
【図１３】配置アドレス情報生成処理を示したフローチャートである。
【図１４】配置アドレス情報テーブルのデータ構造を示した図である。
【図１５】ファイル相関図の一例を示したものである。
【図１６】図１５に示すファイル相関図の生成過程を示したものである。
【図１７】図１５に示すファイル相関図の生成過程を示したものである。
【図１８】ファイル配置図を示した図である。
【符号の説明】
【０１２１】
Ｍ１・・・・・データ配置装置
Ｍ１１・・・・・アクセス履歴情報取得手段
Ｍ１３・・・・・データ配置位置決定手段
Ｍ１５・・・・・記憶制御手段
M１７・・・・・アクセス利例情報生成手段
Ｍ１９・・・・・記憶手段
２１・・・・・ファイル再配置装置
【図１】
2008165315.tif 000003
【図２】
2008165315.tif 000004
【図３】
2008165315.tif 000005
【図４】
2008165315.tif 000006
【図５】
2008165315.tif 000007
【図６】
2008165315.tif 000008
【図７】
2008165315.tif 000009
【図８】
2008165315.tif 000010
【図９】
2008165315.tif 000011
【図１０】
2008165315.tif 000012
【図１１】
2008165315.tif 000013
【図１２】
2008165315.tif 000014
【図１３】
2008165315.tif 000015
【図１４】
2008165315.tif 000016
【図１５】
2008165315.tif 000017
【図１６】
2008165315.tif 000018
【図１７】
2008165315.tif 000019
【図１８】
2008165315.tif 000020