(57)【要約】      （修正有）【課題】フラグメンテーションにより主メモリ上で散在する複数の空き領域断片に分割して格納された単一データを仮想アドレス空間上にて連続したデータとして扱う際に、効率的なメモリの使用と、効率的なデータの処理を両立させる。【解決手段】アプリケーションに従ってデータ処理を行うＣＰＵと、データを格納する主メモリとを備える。ＣＰＵは、データ処理を制御すると共に外部ストレージ用のファイルシステムを有し、ストレージ上のファイルをＣＰＵの連続した仮想アドレス空間にマッピングする機能を有するオペレーティングシステム、およびデータ処理において単一のまとまったデータを主メモリ上で散在する複数の空き領域断片に分割して格納する場合に、外部ストレージの代わりに仮想的なストレージをファイルシステムに設定し、ファイルシステムが断片化されたデータを仮想的なストレージ上のファイルとしてアクセスできるようにするドライバを含む。【選択図】図２
2010009549.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションに従ってデータ処理を行うプロセッサと、前記データ処理においてデータを格納するメモリとを備え、前記プロセッサは、前記データ処理を制御すると共に外部ストレージ用のファイルシステムを有するオペレーティングシステム、および前記データ処理において前記外部ストレージの代わりに、管理領域のみの実体をもちデータ領域の実体を持たない仮想的なストレージを前記ファイルシステムに設定し、単一のまとまったデータを前記メモリ上で散在する複数の空き領域断片に分割して格納し、これを連続したデータとして読み書きできるようにするために、前記複数の空き領域断片を、前記ファイルシステムにより管理される前記仮想ストレージのデータ領域のクラスタにマッピングするドライバを含むことを特徴とするデータ処理装置。
【請求項２】
前記ファイルシステムは前記仮想ストレージのデータ用クラスタを管理する管理領域を仮想ストレージのクラスタ空間の先頭に設定し、仮想ストレージのドライバは、ファイルシステムが管理領域として設定した先頭の領域のクラスタを前記メモリ上に確保することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記管理領域は、ＭＢＲ(Master Boot Record)、ブートセクタ、ＦＡＴ(File Allocation Table)、ディレクトリの４項目からなり、仮想ストレージのドライバによってメモリ上に確保されることを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記オペレーティングシステムは、前記ファイルシステムと、自身の内部に持つページングの機構を用いて、ストレージ上のファイルを連続した仮想メモリ空間にマッピングすることで、アプリケーションがストレージ上のファイルをメモリとして読み書きできるようにする機能を有することを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記仮想ストレージのドライバは前記仮想ストレージのクラスタと前記複数の空き領域断片のアドレスの変換表を有し、この変換表を参照して前記複数の空き領域断片に対するデータの読み出しおよび書き込みを行うことを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
アプリケーションに従ってデータ処理を行うプロセッサと、前記データ処理においてデータを格納するメモリとを備え、前記プロセッサが、前記データ処理を制御すると共に外部ストレージ用のファイルシステムを有するオペレーティングシステムを含むデータ処理装置のデータ処理方法であって、前記データ処理において前記外部ストレージの代わりに、管理領域のみの実体をもちデータ領域の実体を持たない仮想的なストレージを前記ファイルシステムに設定し、単一のまとまったデータを前記メモリ上で散在する複数の空き領域断片に分割して格納し、これを連続したデータとして読み書きするために、前記複数の空き領域断片を、前記ファイルシステムにより管理される前記仮想ストレージのデータ領域のクラスタにマッピングすることを特徴とするデータ処理方法。
【請求項７】
前記仮想ストレージのデータ用クラスタは前記ファイルシステムによって前記メモリに設定される管理領域において管理されることを特徴とする請求項６に記載のデータ処理方法。
【請求項８】
前記管理領域は、ＭＢＲ(Master Boot Record)、ブートセクタ、ＦＡＴ(File Allocation Table)、ディレクトリの４項目からなることを特徴とする請求項７に記載のデータ処理方法。
【請求項９】
前記オペレーティングシステムは、前記ファイルシステムと、自身の内部に持つページングの機構を用いて、ストレージ上のファイルを連続した仮想メモリ空間にマッピングすることで、アプリケーションがストレージ上のファイルをメモリとして読み書きできるようにする機能を有することを特徴とする請求項６に記載のデータ処理方法。
【請求項１０】
前記仮想ストレージドライバは前記仮想ストレージのクラスタと前記複数の空き領域断片のアドレスの変換表を有し、この変換表を参照して前記複数の空き領域断片に対するデータの読み出しおよび書き込みを行うことを特徴とする請求項９に記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は主メモリ内の不連続な領域に分割して書き込まれたデータを処理するデータ処理装置およびデータ処理方法に関する。
【背景技術】
【０００２】
様々なデータ処理を行う場合、ある限られたサイズの主メモリのメモリ領域が必要なだけ部分的にこれらデータ処理に割り当てられ、データを格納するために使用される。使用中領域は対応データ処理の終了に伴って解放される。このようなメモリ領域の部分的な割り当てや解放が繰り返されると、図１１の左側に示すように使用中の領域が一般的に主メモリ上で散在して未使用の連続的な空き領域を断片化した状態にする。この状態は、フラグメンテーションと呼ばれている。
【０００３】
フラグメンテーション状態では、連続的な空き領域のサイズが単一ファイルのデータサイズに対して不足し易い。単一のまとまったデータのサイズが連続的な空き領域の最大サイズを越えている場合には、このデータを分割して図１１の右側に示すように複数の空き領域断片に格納するか、あるいはデータを格納する前に使用中領域をデータの移動により解放して全データを分割せずに格納できる連続的な空き領域を確保する必要がある。しかし、データの移動は、使用中領域が他のデータ処理のために読み書きされる期間において実施できないので、他のデータ処理のための読み出しおよび書き込みタイミングと領域移動のタイミングとの重複を回避する排他制御が必要となる。また、データの移動による使用中領域の変更動作はこれをアプリケーションプログラム（以下、アプリケーションと称す）のソフトウェアに従ってデータ処理の一部として実施するようにオペレーティングシステムプログラム（以下、オペレーティングシステムと称す）のソフトウェアにより制御されるハードウェアであるプロセッサに対して負荷が大きい。
【０００４】
一方で、単一のデータが分割して複数の空き領域断片に格納され、この結果として主メモリ上で不連続に分散されると、このファイルを扱う全てのアプリケーションについてこの分散配置に対処する修正を行う必要がある。例えばＪＰＥＧ画像のデコードのようなデータ処理では、かなり膨大な変更となり、複雑で保守しずらいコードになってしまう。
【０００５】
通常、オペレーションシステムは、任意の物理アドレス空間を仮想アドレス空間にマッピングする機能を有する。この機能は、例えばLinux（登録商標）のmmap()に相当し、プロセッサが複数の空き領域断片に分散配置されたデータを、連続したデータとして扱えるようにする（例えば特許文献１を参照）。
【特許文献１】特開２００４−３６２４６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の仮想アドレス空間へのマッピングは、ページングのページサイズ単位でしかできない。ページサイズは、通常４Ｋバイトに固定されている。ページングはオペレーティングシステムの標準の機能で、ページサイズ以下の単位でこのマッピング機能を実現することは難しい。また、各空き領域断片に格納されたデータがページサイズを越えているかどうかを確認しながらページサイズ単位にマッピングを行う必要がある。従って、高いマッピング効率を確保することが困難である。
【０００７】
本発明は、フラグメンテーションにより主メモリ上で散在する複数の空き領域断片に格納されたデータを単一ファイルとして扱う際に効率的なメモリの使用と効率的なデータ処理とを両立させることができるデータ処理装置およびデータ処理方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の一観点によれば、アプリケーションに従ってデータ処理を行うプロセッサと、データ処理においてデータを格納する主メモリとを備え、データ処理を制御すると共に外部ストレージ用のファイルシステムを有し、ページングとファイルシステムによりストレージ上のファイルをプロセッサの仮想アドレス空間にマッピングしてメモリのような読み書きを可能にする機能を持ったオペレーティングシステム、およびデータ処理において外部ストレージの代わりに仮想ストレージに対する読み書き等の制御手段をファイルシステムに提供し、単一のまとまったデータを主メモリ上で散在する複数の空き領域断片に分割して格納して、これを連続したデータとして参照する場合に、ファイルシステムが複数の断片に分割されたデータを仮想的なストレージ上に格納された1個のファイルとして読み書きできるように、データ用クラスタ領域にマッピングするドライバを含むデータ処理装置が提供される。
【０００９】
本発明の他の観点によれば、アプリケーションに従ってデータ処理を行うプロセッサと、データ処理においてデータを格納する主メモリとを備え、プロセッサが、データ処理を制御すると共に外部ストレージ用のファイルシステムを有するオペレーティングシステムを含むデータ処理装置のデータ処理方法であって、データ処理において外部ストレージの代わりに仮想ストレージをファイルシステムに設定し、単一のまとまったデータを主メモリ上で散在する複数の空き領域断片に分割して格納し、これを連続したデータとして参照する場合に、複数の空き領域断片をファイルシステムにより管理される仮想ストレージのデータ用クラスタにマッピングしてファイルとして読み書きできるようにするとともに、このファイルをオペレーティングシステムのファイルシステムとページングによって連続した仮想アドレス空間にマッピングしてメモリとして読み書きできるようにするデータ処理方法が提供される。
【発明の効果】
【００１０】
これらデータ処理装置およびデータ処理方法では、データ処理において単一のまとまったデータを主メモリ上で散在する複数の空き領域断片に分割して格納し、これを連続したデータとして読み書きできるようにする場合に、仮想ストレージが外部ストレージの代わりにファイルシステムに設定され、仮想ストレージのドライバによって、複数の空き領域断片がこのファイルシステムにより管理される仮想ストレージのデータ用クラスタにマッピングされ、ファイルシステムによってこのデータが仮想ストレージ上のファイルとして読み書きできるようにするとともに、ファイルシステムとページングにより、このファイルをプロセッサの連続した仮想アドレス空間にマッピングする。これにより、フラグメンテーションにより主メモリ上で散在する複数の空き領域断片に分割して格納されたデータを、プロセッサから連続した仮想アドレス空間上のデータとして扱う際に、ページングのページサイズとは異なるデータサイズを単位として仮想アドレス空間にマッピングすることを可能とし、効率的なメモリの使用と複数の断片に分割して格納されたデータの効率的な処理を実現できる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の一実施形態に係る映像録画再生装置について添付図面を参照して説明する。
【００１２】
この映像録画再生装置はＷｉｎｄｏｗｓ（登録商標）やＬｉｎｕｘのようなオペレーティングシステムを利用して動作するものである。このオペレーティングシステムには、主メモリだけでなく、ファイルシステムで管理された外部ストレージ上に置かれたファイルを仮想アドレス空間にマッピングし、このファイルのデータを主メモリのように読み書きするという機能が用意されている。このため、複数の空き領域断片に分散配置されたデータであっても、オペレーティングシステムに対してストレージ上のファイルとして扱えるようにすることで、ファイルとして仮想アドレス空間にマッピングし、アプリケーションから連続データとして読み書きすることは可能である。そこで、ファイルシステムの管理領域のみ実体を持たせ、データ領域については、クラスタの番号とそのクラスタの実データの断片が置かれたメモリ上のアドレスが対応付けられるような対応表を持つことで、オペレーティングシステムに対して、あたかもストレージ上に置かれたファイルとして読み書きできるようにすることで、この断片化されたデータをファイルとして、連続した仮想アドレス空間にマッピングし、連続データとして読み書きすることが可能となる。
【００１３】
図１はこの映像録画再生装置の回路構成の一例を示す。この映像録画再生装置は、図１に示すように、アプリケーションに従ってデータ処理を行うプロセッサを構成するＣＰＵ１１、データ処理においてデータを格納する主メモリ１２、およびこの主メモリ１２のメモリ領域をデータの読み出しおよび書き込みにおいてアクセスするメモリコントローラ１３を主要なデータ処理装置として備える。映像録画再生装置はさらにＳＤカード１４、ＳＤカードコントローラ１５、ＬＡＮコントローラ１６、グラフィックコントローラ１７、ＩＣカードコントローラ１８、Ｉ２Ｃコントローラ１９、ＴＶチューナ２０、ＨＤＤコントローラ２１、ハードディスク２２、ＭＵＬＴＩ２デコーダ２３、ビデオデコーダ２４、オーディオデコーダ２５、コンポジター２６、Ｄ／Ａコンバータ２７、Ｄ／Ａコンバータ２８、操作パネル２９、表示用サブマイコン３０、およびＶＦＤ表示パネル３１を備える。ＣＰＵ１１は内部バスＢＳによりメモリコントローラ１３、ＳＤカードコントローラ１５、ＬＡＮコントローラ１６、グラフィックコントローラ１７、コンポジター２６、ＩＣカードコントローラ１８、Ｉ２Ｃコントローラ１９、ＨＤＤコントローラ２１、ＭＵＬＴＩ２デコーダ２３、ビデオデコーダ２４、オーディオデコーダ２５、および表示用サブマイコン３０に接続される。
【００１４】
メモリコントローラ１３は主メモリ１２に接続される。ＳＤカードコントローラ１５はＳＤカード１４に接続される。グラフィックコントローラ１７およびビデオデコーダ２４はコンポジター２６に接続される。コンポジター２６はＤ／Ａコンバータ２７に接続される、このＤ／Ａコンバータ２７から映像出力が行われる。オーディオデコーダ２５はＤ／Ａコンバータ２８に接続され、このＤ／Ａコンバータ２８から音声出力が行われる。ＬＡＮコントローラ１６はＬＡＮ接続端に接続される。ＩＣカードコントローラ１８はＢ−ＣＡＳカードスロットに接続される。Ｉ２Ｃコントローラ１９はＴＶチューナ２０に接続され、ＴＶチューナ２０はアンテナに接続される。ＨＤＤコントローラ２１はハードディスク２２に接続される。操作パネル２９は表示用サブマイコン３０に接続され、表示用サブマイコン３０はＶＦＤ表示パネル３１に接続される。
【００１５】
ＣＰＵ１１は、アンテナで受信されＴＶチューナ２０で選局されたデジタル放送信号をＨＤＤハードディスク２２へ記録したりＨＤＤハードディスク２２に記録されたデジタル放送信号を再生したりするために必要なデータ処理を行うものである。このデータ処理では、例えばＭＵＬＴＩ２デコーダ２３等も利用される。ビデオデコーダ２４はＭＰＥＧ−２（Moving Picture Experts Group phase 2）方式やＨ．２６４方式等で符号化されたビデオデータをＣＰＵ１１から取得して復号するモジュールである。コンポジター２１は、ビデオデコーダ２４から得られる各ビデオプレーンやグラフィックコントローラ１７から得られるグラフィックプレーン等を合成し、この結果の映像データを出力する。Ｄ／Ａコンバータ２７はコンポジター２１から得られる映像データをアナログ形式の映像信号に変換して出力する。オーディオデコーダ２５は音声データをＣＰＵ１１から取得して復号するモジュールである。Ｄ／Ａコンバータ２８から得られる音声データをアナログ形式の音声信号に変換して出力する。表示用サブマイコン３０は操作パネル２９からの操作コマンド情報をＣＰＵ１１に入力する。ＶＦＤ(Vacuum Fluorescent Display)表示パネル３１は操作コマンド情報を確認するための表示を行う。
【００１６】
図２は図１に示す主要なデータ処理装置の構造を概略的に示す。制御プログラムはＣＰＵ１１にデータ処理を行わせるアプリケーションＡＰおよびこのデータ処理を制御するオペーレーティングシステムＯＳであるソフトウェアを含み、さらに少なくとも仮想ストレージドライバＤＲであるソフトウェアを含む。ＣＰＵ１１はこれらオペーレーティングシステムＯＳおよび仮想ストレージドライバＤＲのようなソフトウェアと協力して上述のデータ処理を行うプロセッサを構成する。ここでは、オペーレーティングシステムＯＳとして、ＷｉｎｄｏｗｓＣＥ６．０が使用される。また、このオペーレーティングシステムＯＳは外部ストレージ用に「ＦＡＴ３２」のファイルシステムＦＳを有する。仮想ストレージドライバＤＲはデータ処理において外部ストレージの代わりに仮想ストレージをファイルシステムＦＳに設定し、単一のまとまったデータを主メモリ１２上で散在する複数の空き領域断片に分割して格納する場合にこれを連続したデータとして読み書きできるようにするために、複数の空き領域断片を、ファイルシステムＦＳにより管理される仮想ストレージのデータ領域のクラスタにマッピングするために用いられる。
【００１７】
最初に、ＦＡＴ３２のファイルシステムＦＳについて説明する。ＦＡＴでは、ＭＢＲ(Master Boot Record)、ブートセクタ、ＦＡＴ(File Allocation Table)、ディレクトリという４項目の管理領域が必要となる。このうち、ＦＡＴ３２では、ディレクトリは専用の領域ではなく、データ領域を使用し、データの一部として書き込まれるが、データとは異なり、ファイルシステムＦＳそのものの動作に必要な役割を担っているので、仮想ストレージでは、管理領域として特別に扱う必要がある。
【００１８】
まず、外部ストレージの先頭には、ＭＢＲというセクタがあり、ここに、４個までのパーティションと呼ばれる領域が登録できるようになっている。このため、ファイルシステムで使用する領域はパーティションとして確保され、このＭＢＲに登録される。ＭＢＲは、図３に示すように構成されている。このＭＢＲには、４個のパーティションの情報が格納できるパーティションテーブルと呼ばれる表が書き込まれている。実際には、４個以上のパーティションを作成できるように、拡張パーティションと呼ばれる仕様も存在するが、本実施形態では、プライマリパーティションのみで、拡張パーティションは使用しない為、この説明は省略する。このパーティションテーブルには、各パーティションの開始場所と終了場所、サイズ、などの情報が格納されている。ＭＢＲの最後の２バイトは、ブートセクタを示す0x55、0xAA、という識別コードが書き込まれている。
【００１９】
パーティションをＦＡＴ３２で初期化すると、ブートセクタ、ＦＡＴ、ディレクトリが生成される。ブートセクタには、オペレーションシステムＯＳを起動するためのブートプログラムと、図４に示すようなＢＰＢ(BIOS Parameter Block)と呼ばれるファイルシステムＦＳの各種管理情報が書き込まれている。オペレーションシステムＯＳのファイルシステムＦＳは、データをクラスタという単位で管理するようになっている。ストレージのセクタのサイズが５１２バイトで、クラスタのサイズが４０９６バイトの場合、１クラスタは、８セクタで構成されていることになり、ファイルシステムＦＳは、８セクタ単位でデータを扱うことになる。
【００２０】
本実施形態の仮想ストレージでは、ページサイズの４Ｋバイトより小さな単位で、データを扱うために１クラスタを１セクタとしている。ブートセクタの次にあるＦＡＴは、データ領域の各クラスタが、次にどのクラスタに続くか等が記録されている。ＦＡＴは、図５に示すように、各クラスタごとに４バイトの領域があるテーブルである。使用中のクラスタの場合、次に続くクラスタの番号かデータの最後を示すＥＯＦと呼ばれるコード(0x0FFFFFFF)が書き込まれている。また、未使用となっている空クラスタの領域には、0が書き込まれている。このＦＡＴをたどることで、クラスタ単位で分割されていても順次データをたどれるようになっている。また、このテーブルは、新たにデータを記録する際に、空いているクラスタを探す場合にも参照される。
【００２１】
ディレクトリは、各ファイルの情報を記録するための領域で、図６に示すように３２バイトで構成されるファイルの情報がテーブルになっている。階層的にディレクトリの中にディレクトリを作成することもできるようになっている。フォーマットした直後には、一番大元のルートディレクトリと呼ばれるディレクトリが生成されている。ファイルを読む場合は、まず、ディレクトリから対象とするファイルの情報を探しだす。すると、先頭のクラスタの番号とファイル全体のサイズがわかるので、以降は、サイズ分になるまで、ＦＡＴの中にある先頭クラスタの情報から順次、次のクラスタをたどっていけばよい。
【００２２】
尚、図６に記載されている３２バイトのファイル情報は、ファイル名の全てが半角英数字で、ファイル名が８文字以下、拡張子が文字以下の場合で、この条件を満たさないロングファイル名の場合は、変わってくるが、ここでの仮想ストレージの機構にロングファイル名の対応は必須ではない。よって、ロングファイルについては省略する。
【００２３】
以上のように、オペレーティングシステムＯＳにおいて、ＦＡＴ３２でフォーマットされたストレージとして扱えるようにするには、データ領域とは別に、ＭＢＲ、ブートセクタ、ＦＡＴ、ルートディレクトリ、が必要となることがわかる。そこで、本発明における仮想ストレージでは、この４項目の管理領域は、ＲＡＭ＿ＤＩＳＫのように主メモリ１２上に用意する。
【００２４】
一方、データ領域については、図７に示すように、仮想ストレージ内にはデータの実体を記憶するメモリ領域は存在しない。この代わりに、各クラスタのデータがメモリ上のどこの空き領域断片（フラグメント）に置かれているかを示す変換表を持っている。そして、オペレーティングシステムＯＳから特定のクラスタの読み出し要求があると、この変換表を参照し、この変換表で指定されたアドレスからデータをコピーして上位に返す。これにより、オペレーティングシステムＯＳ側から見ると、完全にストレージ上のファイルを読んでいる形式になる。
【００２５】
一方、ＬｉｎｕｘやＷｉｎｄｏｗｓ ＣＥなどのオペレーティングシステムには、ファイルを仮想アドレス空間上にマッピングし、ＣＰＵ１１がファイルの内容を主メモリ１２上のデータとして直接参照できるようにするという機能がある。図８は、ＷｉｎｄｏｗｓＣＥ６．０でファイルを仮想アドレス空間にマッピングする際の実装例を示す。この機能と先に述べた仮想ストレージの仕組みを組み合わせることで、主メモリ１２上に散在する複数の空き領域断片に分割して配置されたデータを、アプリケーションＡＰが連続したメモリ上のデータとしてアクセスできるようにする。
【００２６】
尚、上記の仕組みを複数のデータで実行するにあたっては、データごとに、別々のファイルとして見せられる必要がある。このため、上記の一連の仕組みでは、ファイルの追加や削除をおこない、仮想ストレージで見せられるファイルやファイルとして上位に見せるデータを動的に変更できる必要がある。
【００２７】
新しいデータにアクセスできるようにするためのファイルの追加では、主に通常のストレージにファイルを格納する際におこなわれるＦＡＴやディレクトリの更新と、今回の仮想ストレージ方式固有のデータクラスタの番号と各データの断片が置かれたメモリアドレスとを対応させる変換表の更新をおこなう必要がある。
【００２８】
また、実際には、オペレーションシステムＯＳのファイルシステムＦＳ内にキャッシュがあり、一部のデータはファイルシステムＦＳ内にキャッシュされてしまう。このため、上記のＦＡＴやディレクトリの処理と変換表の更新のみだと、キャッシュされているデータについては、更新前の古いデータが読めてしまうという問題がある。そこで、オペレーティングシステムＯＳに標準的に設けられるファイル操作ＡＰＩを用いて、一旦全てのデータを仮想ストレージに対してファイルとして書き込み、これによりＦＡＴ、ディレクトリ、およびファイルシステム内のキャッシュという３箇所を更新する。仮想ストレージのドライバ側では、データ領域の実体を持たないので、書き込み指示は無視するが、これで、ＦＡＴ、ディレクトリ、およびファイルシステム内のキャッシュの３箇所の更新は可能である。
【００２９】
この後で、残った、クラスタ番号とアドレスとの変換表を更新する。クラスタ番号とアドレスの変換表の更新指示は、図８に示すようになっており、DeviceIoControl()によるドライバの直接制御にて実行する。
【００３０】
仮想ストレージの仮想アドレス空間に対するマッピングは、図９に示すような一連のシーケンスで行われる。すなわち、アプリケーションＡＰからのCreateFile()要求がオペレーションシステムＯＳへ出力され、これに伴って、オペレーションシステムＯＳからのDeviceIoControl(IOCTL_DISK_READ)およびDeviceIoControl(IOCTL_DISK_Write)要求が仮想ストレージドライバＤＲへ出力される。このとき、仮想ストレージドライバＤＲがＦＡＴの読み込みとディレクトリの更新を行わせる。この後、アプリケーションＡＰからのWriteFile()要求がオペレーションシステムＯＳへ出力され、ファイルシステム内のキャッシュが正しいデータで満たされる。この後、オペレーションシステムＯＳからのDeviceIoControl(IOCTL_DISK_Write)要求が仮想ストレージドライバＤＲへ出力される。このとき、仮想ストレージドライバＤＲはこの要求のデータ領域の書き込みを無視する。この後、アプリケーションＡＰからのCloseHandle()要求がオペレーションシステムＯＳへ出力され、この要求に伴ってオペレーションシステムＯＳからのDeviceIoControl(IOCTL_DISK_Write)要求が仮想ストレージドライバＤＲへ出力され、これにより仮想ストレージドライバＤＲがＦＡＴを更新し、新たに書き込んだデータ文のＦＡＴチェーンを追加させる。
【００３１】
上述のようにして仮想ストレージファイルとしての書き込みが行われると、アプリケーションＡＰからのDeviceIoControl(TMC_IOCTL_SETUP_CL"ADDER_TABLE)要求が仮想デバイスドライバＤＲへ出力され、これにより新たに書き込んだデータの各断片のクラスタ番号とアドレスの変換表を登録する。
【００３２】
この変換表の登録後、アプリケーションＡＰからのCreateFile()およびCreateFileMapping()要求がオペレーティングシステムＯＳへ出力され、オペレーションシステムＯＳがファイルを仮想ストレージのアドレス空間にマッピングさせる。
【００３３】
仮想ストレージは上述のようになシーケンスで確立する。この後、アプリケーションＡＰがマッピングされたデータの参照をおこなうと、ＣＰＵ１１がページフォルトの割り込みを発生し、オペレーティングシステムOS内にあるページングのモジュールがページ読み出しの処理を実行し、この中で該当するファイルのクラスタを読み出すためにDeviceIoControl(IOCTL_DISK_READ)要求が仮想ストレージドライバＤＲへ出力される。これにより、仮想ストレージドライバＤＲはクラスタ番号とアドレスの変換表を参照して、要求されたクラスタ番号に対応するアドレスを取得し、対応するデータのコピーを行う。アプリケーションＡＰは上述のようにして読み出されたデータを使用することになる。この使用後、アプリケーションＡＰからのCloseHandle()要求が、オペレーションシステムＯＳへ出力される。
【００３４】
上述のシーケンスにおいてオペレーションシステムＯＳから仮想ストレージドライバＤＲに対して発行されるセクタからの読み込みやセクタへの書き込み要求は、図１０に示すように対象となるセクタが、ＭＢＲ、ブートセクタ、ＦＡＴやディレクトリなどの管理領域か、それともデータ領域かで異なる。
【００３５】
セクタの読み出しでは、対象がデータセクタであるかチェックされ。データセクタであれば、クラスタ番号（セクタ番号）とアドレスの対応表から対象となるデータのアドレスを取得し、上位から渡されたバッファにデータをコピーする。他方、データセクタでなければ、ＭＢＲ、ブートセクタ、ＦＡＴ、ディレクトリはそのままＲＡＭ＿ＤＩＳＫとしてメモリ上に実体が存在するので、上位のバッファにコピーする。
【００３６】
また、セクタの書き込みでは、対象はデータセクタであるかチェックされ。データセクタであれば、これを無視する。他方、データセクタでなければ、ＭＢＲ、ブートセクタ、ＦＡＴ、ディレクトリはそのままＲＡＭ＿ＤＩＳＫとして実体が存在するので、上位のバッファにコピーする。
【００３７】
上述の実施形態では、仮想ストレージドライバＤＲがデータ処理において外部ストレージの代わりにファイルシステムＦＳに仮想ストレージを設定し、
単一のまとまったデータが主メモリ１２上で複数の散在する空き領域に格納された場合に、ファイルシステムＦＳがこれをストレージ上のファイルとしてアクセスできるように各領域断片をデータ用クラスタにマッピングする。また、オペレーティングシステムＯＳがファイルシステムＦＳとページングによって、仮想的なストレージ上のファイルを、ＣＰＵ１１の連続した仮想アドレス空間にマッピングする。これにより、フラグメンテーションにより主メモリ１２上で散在する複数の空き領域断片に分割して格納されたデータを仮想アドレス空間上で連続したデータとして扱う際に、ページサイズより小さいサイズを単位とした効率的なメモリ使用を可能にする。
【００３８】
また、本実施形態により、主メモリ１２上の複数の空き領域断片に分割して格納されたデータであっても、ＣＰＵ１１Aは、連続したデータとして参照できることから、分割したデータの処理でのみ必要となってくる付加的な処理を省くことができ、
、ＣＰＵ１１の負荷が著しく増大することが避けられる。
【００３９】
尚、本発明は上述の実施形態に限定されず、その要旨を逸脱しない範囲で様々に変形可能である。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施形態に係る映像録画再生装置の回路構成の一例を示す図である。
【図２】図１に示すデータ処理装置の構造を概略的に示す図である。
【図３】図２に示す主メモリに配置される管理領域のＭＢＲにあるパーティションテーブルの内容を示す図である。
【図４】図２に示す主メモリに配置される管理領域のＭＢＲにあるブートセクタの内容を示す図である。
【図５】図２に示す主メモリに配置される管理領域のＭＢＲにあるＦＡＴの内容を示す図である。
【図６】図２に示す主メモリに配置される管理領域のＭＢＲにあるディレクトリの内容を示す図である。
【図７】図２に示すファイルシステムで管理される仮想ストレージを説明するための図である。
【図８】図２に示す仮想ストレージドライバに対するクラスタとアドレスの変換表の更新指示フォーマットを示す図である。
【図９】図２に示すファイルシステムで管理される仮想ストレージのアドレス空間へのマッピングシーケンスを示す図である。
【図１０】図２に示すファイルシステムで管理される仮想ストレージのセクタ読み出しおよびセクタ書き込みのフローを説明するための図である。
【図１１】従来から知られるメモリのフラグメンテーションを説明するための図である。
【符号の説明】
【００４１】
１１…ＣＰＵ、１１Ｂ…制御メモリ、１２…主メモリ、１３…メモリコントローラ、ＡＰ…アプリケーション、ＯＳ…オペーレーティングシステム、ＦＳ…ファイルシステム、ＤＲ…仮想ストレージドライバ。
【図１】
2010009549.tif 000003
【図２】
2010009549.tif 000004
【図３】
2010009549.tif 000005
【図４】
2010009549.tif 000006
【図５】
2010009549.tif 000007
【図６】
2010009549.tif 000008
【図７】
2010009549.tif 000009
【図８】
2010009549.tif 000010
【図９】
2010009549.tif 000011
【図１０】
2010009549.tif 000012
【図１１】
2010009549.tif 000013