(57)【要約】【課題】本発明の一実施形態は、ユーザ空間とカーネル空間との間の処理の回数を減らすことで、処理にかかる負荷または遅延を削減する。【解決手段】本発明の一実施形態としてのデータ処理装置は、ファイルを記憶する記憶部と、カーネル空間で動作するＯＳとを備え、ＯＳは、ユーザ空間で動作するアプリケーションによる、記憶部内のファイルへのファイルアクセスを検知するファイルアクセス管理部と、ファイルアクセス管理部により検知されたファイルアクセスに係るファイルが、記憶部に記憶されているか否かを判定する存在判定部と、存在判定部により、ファイルアクセスに係るファイルが記憶部に記憶されていないと判定された場合に、ファイルアクセス管理部により検知されたファイルアクセスに係るファイルを記憶部に書き込む書き込み部と、を備える。【選択図】図１
2017215745.tif 000002
【特許請求の範囲】
【請求項１】
ファイルを記憶する記憶部と、カーネル空間で動作するオペレーティングシステムと、を備えるデータ処理装置において、
前記オペレーティングシステムは、
ユーザ空間で動作するアプリケーションによる、前記記憶部内のファイルへのファイルアクセスを検知するファイルアクセス管理部と、
前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルが、前記記憶部に記憶されているか否かを判定する存在判定部と、
前記存在判定部により、前記ファイルアクセスに係るファイルが前記記憶部に記憶されていないと判定された場合に、前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルを前記記憶部に書き込む書き込み部と、
を備えるデータ処理装置。
【請求項２】
前記書き込み部は、
前記存在判定部により、前記ファイルアクセスに係るファイルが前記記憶部に記憶されていないと判定された場合に、前記ファイルアクセス管理部により検知された前記ファイルアクセスを行ったアプリケーションによる書き込み指示がなくとも、前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルを前記記憶部に書き込む
請求項１に記載のデータ処理装置。
【請求項３】
前記データ処理装置は、
外部装置と通信を行う通信部をさらに備え、
前記オペレーティングシステムは、
前記通信部を制御することにより、前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルを前記外部装置から受信する通信処理部
をさらに備え、
前記書き込み部は、前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルを前記通信処理部から取得する
請求項１または２に記載のデータ処理装置。
【請求項４】
前記オペレーティングシステムは、
前記存在判定部の判定結果に基づき、前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルの取得指示を、前記ファイルアクセス管理部により検知された前記ファイルアクセスを行ったアプリケーションと同一または異なるアプリケーションに行う実行指示部
をさらに備え、
前記通信処理部は、前記実行指示部から前記取得指示を受けたアプリケーションによる指示により、前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルを前記外部装置から受信し、
前記書き込み部は、前記実行指示部から前記取得指示を受けたアプリケーションによる書き込み指示を前記ファイルアクセス管理部が検知した場合は、前記実行指示部から前記取得指示を受けたアプリケーションからのファイルを前記記憶部に書き込む
請求項３に記載のデータ処理装置。
【請求項５】
前記データ処理装置は、
仮想化技術により生成された仮想インスタンスの仮想カーネル空間で動作するゲストオペレーティングシステム
をさらに備え、
前記ゲストオペレーティングシステムは、
前記仮想インスタンスの仮想ユーザ空間で動作するアプリケーションによる、前記記憶部内のファイルへのファイルアクセスを検知して、前記ファイルアクセス管理部に中継するファイルアクセス中継部
を備え、
前記ファイルアクセス管理部は、前記ファイルアクセス中継部により中継されたファイルアクセスを検知する
請求項１ないし３のいずれか一項に記載のデータ処理装置。
【請求項６】
前記データ処理装置は、
仮想化技術により生成された仮想インスタンスの仮想カーネル空間で動作するゲストオペレーティングシステム
をさらに備え、
前記ゲストオペレーティングシステムは、
前記仮想インスタンスの仮想ユーザ空間で動作するアプリケーションによる、前記記憶部内のファイルへのファイルアクセスを検知して、前記ファイルアクセス管理部に中継するファイルアクセス中継部と、
前記通信部を制御することにより、前記仮想ユーザ空間にて動作するアプリケーションにより取得指示されたファイルを前記外部装置から受信する仮想通信処理部と、
をさらに備え、
前記ファイルアクセス管理部は、前記ファイルアクセス中継部により中継されたファイルアクセスを検知し、
前記実行指示部から前記取得指示を受けたアプリケーションがユーザ空間で動作する場合は、前記通信処理部が前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルを受信し、
前記実行指示部から前記取得指示を受けたアプリケーションが仮想ユーザ空間で動作する場合は、前記仮想通信処理部が前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルを受信する
請求項４に記載のデータ処理装置。
【請求項７】
前記実行指示部は、前記記憶部内のファイルまたはディレクトリに対応付けられたアプリケーションが示された指示情報に基づき、前記取得指示を与えるアプリケーションを決定する
請求項４または６に記載のデータ処理装置。
【請求項８】
前記通信部は複数存在し、
前記実行指示部は、所望の通信部が予め対応づけられたアプリケーションに対し、前記取得指示を与える
請求項４、６または７に記載のデータ処理装置。
【請求項９】
前記通信部は複数存在し、
前記実行指示部は、前記取得指示を与えるアプリケーションに対し、前記通信部の識別子を送り、
前記識別子に対応する通信部を介して、前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルが前記外部装置から受信される
請求項４、６または７に記載のデータ処理装置。
【請求項１０】
前記書き込み部と、前記通信部と、前記通信処理部とが、ＴＣＰ／ＩＰオフロードエンジンで実現され、
前記記憶部は、前記ＴＣＰ／ＩＰオフロードエンジンと接続されたストレージで実現される
請求項３、請求項４、請求項３に従属する請求項５、および請求項６ないし９のいずれか一項に記載のデータ処理装置。
【請求項１１】
前記存在判定部は、前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルが、前記記憶部に記憶され、かつ有効期限内であるかを判定する
請求項１ないし１０のいずれか一項に記載のデータ処理装置。
【請求項１２】
前記オペレーティングシステムは、
前記記憶部内のファイルまたはディレクトリに設定されたアクセス権に基づき、前記ファイルアクセス管理部により検知された前記ファイルアクセスの可否を判定するアクセス権判定部
をさらに備え、
前記書き込み部は、前記ファイルアクセスに係るファイルが前記記憶部に記憶されていないと判定された場合は、前記ファイルアクセス管理部により検知された前記ファイルアクセスに係るファイルを前記記憶部に書き込まない
請求項１ないし１１のいずれか一項に記載のデータ処理装置。
【請求項１３】
ファイルを記憶する記憶部と、カーネル空間で動作するオペレーティングシステムと、を備えるデータ処理装置の前記オペレーティングシステムが、
ユーザ空間で動作するアプリケーションによる、前記記憶部内のファイルへのファイルアクセスを検知するファイルアクセス管理ステップと、
前記ファイルアクセス管理ステップにより検知された前記ファイルアクセスに係るファイルが、前記記憶部に記憶されているか否かを判定する存在判定ステップと、
前記存在判定ステップにより、前記ファイルアクセスに係るファイルが前記記憶部に記憶されていないと判定された場合に、前記ファイルアクセス管理ステップにより検知された前記ファイルアクセスに係るファイルを前記記憶部に書き込む書き込みステップと、
を実行するデータ処理方法。
【請求項１４】
ファイルを記憶する記憶部と、カーネル空間で動作するオペレーティングシステムと、を備えるデータ処理装置の前記オペレーティングシステムに、
ユーザ空間で動作するアプリケーションによる、前記記憶部内のファイルへのファイルアクセスを検知するファイルアクセス管理ステップと、
前記ファイルアクセス管理ステップにより検知された前記ファイルアクセスに係るファイルが、前記記憶部に記憶されているか否かを判定する存在判定ステップと、
前記存在判定ステップにより、前記ファイルアクセスに係るファイルが前記記憶部に記憶されていないと判定された場合に、前記ファイルアクセス管理ステップにより検知された前記ファイルアクセスを行ったアプリケーションによる書き込み指示がなくとも、前記ファイルアクセス管理ステップにより検知された前記ファイルアクセスに係るファイルを前記記憶部に書き込む書き込みステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ処理装置、データ処理方法およびプログラムに関する。
【背景技術】
【０００２】
オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）が搭載されたデータ処理装置では、ユーザが実行するアプリケーションなどはユーザ空間にて実行され、ハードウェアを操作するＯＳなどはカーネル空間にて実行される。ゆえに、ユーザ空間にて実行されるプログラムは、直接ハードウェアに対してアクセスすることができない。ストレージなどに保存されたファイルなどを操作するときは、カーネル空間にて実行されるＯＳの機能を呼び出す処理（システムコール）が必要である。そのため、複数のアプリケーションが共用可能なストレージなどを用意しても、システムコールによる負荷または遅延が生じるという問題がある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｏｌｅｇ  Ｋｉｓｅｌｙｏｖ、  “Ａ  ｎｅｔｗｏｒｋ  ｆｉｌｅｓ  ｓｙｓｔｅｍ  ｏｖｅｒ  ＨＴＴＰ：  ｒｅｍｏｖｅ  ａｃｃｅｓｓ  ａｎｄ  ｍｏｄｉｆｉｃａｔｉｏｎ  ｏｆ  ｆｉｌｅｓ  ａｎｄ  ｆｉｌｅｓ、”  ＵＳＥＮＩＸ  ａｎｎｕａｌ  ｔｅ．ｃｈｎｉｃａｌ  ｃｏｎｆｅｒｅｎｃｅ、  ＦＲＥＥＮＩＸ  ｔｒａｃｋ、  １９９９．
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一実施形態は、ユーザ空間とカーネル空間との間の処理の回数を減らすことで、処理にかかる負荷または遅延を削減する。
【課題を解決するための手段】
【０００５】
本発明の一実施形態としてのデータ処理装置は、ファイルを記憶する記憶部と、カーネル空間で動作するＯＳとを備え、ＯＳは、ユーザ空間で動作するアプリケーションによる、記憶部内のファイルへのファイルアクセスを検知するファイルアクセス管理部と、ファイルアクセス管理部により検知されたファイルアクセスに係るファイルが、記憶部に記憶されているか否かを判定する存在判定部と、存在判定部により、ファイルアクセスに係るファイルが記憶部に記憶されていないと判定された場合に、ファイルアクセス管理部により検知されたファイルアクセスに係るファイルを記憶部に書き込む書き込み部と、を備える。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係るデータ処理装置の概略構成の一例を示すブロック図。
【図２】第１の実施形態に係るハードウェア構成の一例を示すブロック図。
【図３】第１の実施形態に係るデータ処理装置のファイルシステムの構成を説明する図。
【図４】第１の実施形態に係るアクセス権情報の一例を示す図。
【図５】第１の実施形態に係るデータ処理装置の概略処理のフローチャートの一例を示す図。
【図６】第１の実施形態に係るデータ処理装置の読み出し処理のフローチャートの一例を示す図。
【図７】第１の実施形態に係るデータ処理装置の書き込み処理のフローチャートの一例を示す図。
【図８】第２の実施形態に係るデータ処理装置の概略構成の一例を示すブロック図。
【図９】指示情報の一例を示す図。
【図１０】第２の実施形態に係るデータ処理装置の読み出し処理のフローチャートの一例を示す図。
【図１１】第３の実施形態に係るデータ処理装置の概略構成の一例を示すブロック図。
【図１２】第３の実施形態に係るハードウェア構成の一例を示すブロック図。
【図１３】第３の実施形態に係るデータ処理装置の読み出し処理のフローチャートの一例を示す図。
【図１４】仮想化技術の例を示す図。
【図１５】第４の実施形態に係るデータ処理装置の概略構成の一例を示すブロック図。
【図１６】第４の実施形態に係るアクセス権情報の一例を示す図。
【図１７】第４の実施形態に係る指示情報の一例を示す図。
【図１８】第４の実施形態に係るデータ処理装置の概略処理のフローチャートの一例を示す図。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら、本発明の実施形態について説明する。
【０００８】
（第１の実施形態）
図１は、第１の実施形態に係るデータ処理装置１の概略構成の一例を示すブロック図である。第１の実施形態に係るデータ処理装置１は、通信部１０１と、記憶部１０２と、少なくとも１つのアプリケーション１０３と、ファイルアクセス管理部（検知部）１０４と、アクセス権判定部１０５と、存在判定部１０６と、読み出し部１０７と、書き込み部１０８と、通信処理部１０９と、を備える。複数のアプリケーション１０３を区別するときは、図１に示されたアプリケーション１０３Ａから１０３Ｃのように、添え字のアルファベットにて区別する。
【０００９】
本実施形態のデータ処理装置１は、何らかのＯＳが搭載され、ソフトウェア（プログラム）を動作させる汎用のコンピュータ装置として実現される。データ処理装置１の構成要素のうち、ソフトウェアの処理により実現されるものはソフトウェア領域に、ハードウェアの処理により実現されるものはハードウェア領域に示されている。データ処理装置１の種類は特に限られるものではなく、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、サーバ、タブレットなどでもよい。
【００１０】
また、ソフトウェアが動作するアドレス空間において、ＯＳが動作する空間（カーネル空間）と、ユーザが使用するプログラムが動作する空間（ユーザ空間）とは、分けられているとする。ここでは、ユーザ空間で動作するプログラムを「アプリケーション」と称することとする。
【００１１】
図１に示すように、アプリケーション１０３はユーザ空間で動作し、ファイルアクセス管理部１０４と、アクセス権判定部１０５と、存在判定部１０６と、読み出し部１０７と、書き込み部１０８と、通信処理部１０９とは、ＯＳの一部として、カーネル空間で動作する。記憶部１０２と通信部１０１はハードウェア領域で動作する。なお、ファイルアクセス管理部１０４と、アクセス権判定部１０５と、存在判定部１０６と、読み出し部１０７と、書き込み部１０８とは、１つのファイルシステムとして、データ処理装置１のＯＳに実装されていてもよい。
【００１２】
図２は、第１の実施形態に係るデータ処理装置１のハードウェア構成の一例を示すブロック図である。図２の例では、データ処理装置１は、プロセッサ２０１と、メモリ２０２と、ストレージ２０３と、ネットワークアダプタ２０４と、ホストバスアダプタ２０５とを備えるコンピュータ装置２として示されている。プロセッサ２０１と、メモリ２０２と、ネットワークアダプタ２０４と、ホストバスアダプタ２０５とは、バスを介して接続される。また、ホストバスアダプタ２０５は、ストレージ２０３と接続される。ネットワークアダプタ２０４は、外部のネットワークと接続される。なお、これらの他に、入力装置、出力装置などをさらに備えていてもよい。また、ハードウェアの各構成要素は、図２のように１つでもよいし、複数でもよい。
【００１３】
プロセッサ２０１は、コンピュータの制御装置及び演算装置を含む電子回路である。この「プロセッサ」という用語は広く解釈されるべきであり、中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロプロセッサなどを包含するものとする。また、デジタル信号プロセッサ、グラフィックスプロセッサ、周辺装置用プロセッサなど、プロセッサを補助するためのプロセッサが含まれていてもよい。
【００１４】
メモリ２０２は、プロセッサ２０１が実行する命令、および各種データ等を一時的に記憶するメモリ装置であり、ＤＲＡＭ等の揮発性メモリでも、ＭＲＡＭ等の不揮発性メモリでもよい。
【００１５】
ストレージ２０３は、プログラムやデータ等を永続的に記憶する記憶装置であり、例えば、ハードディスク、ＳＡＮ（Ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、光ディスク、フラッシュメモリ、及び磁気テープなどがある。
【００１６】
ネットワークアダプタ２０４は、無線または有線により、通信ネットワークに接続するためのインタフェースである。ネットワークアダプタ２０４は、既存の通信規格に適合したものを用いればよい。
【００１７】
ホストバスアダプタ２０５は、ストレージと接続するインタフェースである。接続する規格は特に限られるものではない。
【００１８】
プロセッサ２０１がメモリ２０２またはストレージ２０３に記憶されたプログラムを実行することにより、アプリケーション１０３と、ファイルアクセス管理部１０４と、アクセス権判定部１０５と、存在判定部１０６と、読み出し部１０７と、書き込み部１０８と、通信処理部１０９とを実現する。
【００１９】
記憶部１０２は、メモリ２０２、ストレージ２０３または両方により実現される。通信部１０１は、ネットワークアダプタにより実現される。
【００２０】
なお、本実施形態におけるデータ処理装置１は、実行されるプログラムを予めインストールすることで実現してもよいし、プログラムをＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して配布して、適宜インストールされることにより実現してもよい。
【００２１】
データ処理装置１を構成する各部の詳細について説明する。
【００２２】
通信部１０１は、外部装置と通信ネットワークを介し、ＩＥＥＥ８０２．３規格等で規定される通信方式で通信を行うネットワークインターフェースである。本実施形態では、例えば、データ処理装置１が保持していないファイルなどを外部装置（オリジンサーバ）から受信する場合、データ処理装置１が保持しているファイルを外部装置（クライアント）に送信する場合などで通信が行われる。なお、通信部１０１は、ＶＬＡＮ（Ｖｉｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＶＸＬＡＮ（Ｖｉｒｔｕａｌ  ｅＸｔｅｎｓｉｂｌｅ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）や、ＶＰＮ（Ｖｉｒｔｕｌａ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）によって作成される仮想的なインタフェースでもよい。
【００２３】
記憶部１０２は、ファイルなどのデータを記憶する。例えば、記憶されるデータは、通信部１０１によりダウンロードされたファイルなどのキャッシュ（一時利用データ）でもよい。また、記憶部１０２は、アクセス権判定部１０５が用いるアクセス権情報を記憶してもよい。なお、ファイルを記憶する記憶部１０２とアクセス権情報を記憶する記憶部１０２とが、異なるメモリまたはストレージにて実現されていてもよい。アクセス権情報の詳細は後述する。
【００２４】
アプリケーション１０３は、記憶部１０２内のファイルへファイルアクセスを行う。ファイルアクセスとは、作成、読み出し、書き込み、削除、送信などといった、ファイルに関する処理の指示を意味し、具体的には、データ処理装置１のＯＳに対するシステムコールを意味する。
【００２５】
ユーザ空間で動作するプログラムが、カーネル空間で動作するＯＳの機能またはハードウェア内のリソースを利用する場合には、システムコールが用いられる。システムコールにより、ファイルシステムなどのカーネル空間で動作するＯＳの機能が呼び出され、ハードウェアに保存されたファイルなどを利用することができる。ＯＳの種類により、システムコールという名称ではなく、サービスコール、スーパーバイザーコール、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）などの別の名称で呼ばれる場合もあるが、ここでは、アプリケーションがカーネル空間で動作するプログラムを呼び出す処理をシステムコールと統一して称することとする。
【００２６】
アプリケーション１０３は、ファイルのパスを指定してｏｐｅｎシステムコールを呼び出すことにより、所望のファイルに対応するファイルディスクリプタを取得する。アプリケーション１０３は、このファイルディスクリプタを用いて、様々な処理を行うことができる。
【００２７】
例えば、読み出し先のメモリと読み出す長さとを指定してｒｅａｄシステムコールを呼び出すことにより、記憶部１０２内のファイルのデータを読み出すことができる。また、ファイルディスクリプタと、ファイル内のデータのオフセットと、データの長さと、通信を行うためのソケットとを指定してｓｅｎｄｆｉｌｅシステムコールを呼び出すことにより、記憶部１０２内のファイルのデータをソケット経由で通信処理部１０９に送信させることができる。また、書き込むファイルのデータが格納されているメモリのアドレスと当該データの長さとを指定してｗｒｉｔｅシステムコールを呼び出すことにより、指定されたファイルを記憶部１０２に書きこむことができる。また、同一の処理を行う場合でも、状況などに応じて、使用されるシステムコールが使い分けられてもよい。例えば、ファイルのデータを読み出す場合に、ｒｅａｄシステムコールを用いるときと、ｍｍａｐシステムコールを用いるときがあってもよい。
【００２８】
ファイルアクセス管理部（検知部）１０４は、ファイルシステムのインタフェースである。アプリケーション１０３が記憶部１０２のファイルに係るシステムコールを呼び出すと、ファイルアクセス管理部１０４が当該システムコールを検知する。
【００２９】
図３は、第１の実施形態に係るデータ処理装置１のファイルシステムの構成を説明する図である。図３の右上の“／”は、ルートディレクトリを示している。ルートディレクトリの直下の“／ｂｉｎ”、“／ｂｏｏｔ”、“／ｃａｃｈｅ”、“／ｕｓｒ”、“／ｖａｒ”などのそれぞれのディレクトリツリーは、ＯＳが提供する各ファイルシステムによりそれぞれ実現される。
【００３０】
例えば、アプリケーション１０３はＷｅｂサービスを提供するようなＷｅｂサーバであり、記憶部１０２内にキャッシュされたＷｅｂページなどのファイルを送信するものとする。そして、ルートディレクトリの直下の“／ｃａｃｈｅ”ディレクトリの配下に、送信すべきファイルがあるとする。このような例においては、“／ｃａｃｈｅ”のディレクトリにマウントされているファイルシステムにおけるファイルアクセス管理部１０４が、当該アプリケーション１０３からのシステムコールを受け取る。
【００３１】
なお、上記例において、アプリケーション１０３は、図３に示すように、“／ｃａｃｈｅ／スキーマ名／ホスト名／ポート番号／ディレクトリ名／ファイル名／領域名”といったパスを指定したｏｐｅｎシステムコールにより、ファイルアクセスを試みるとする。例えば、“ｈｔｔｐ：／／ｅｘａｍｐｌｅ．ｃｏｍ／ｄｉｒ１／ｆｉｌｅ１”というＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）のボディ（ｂｏｄｙ）部分が必要であれば”アプリケーション１０３は上記ＵＲＩを、“／ｃａｃｈｅ／ｈｔｔｐ／ｅｘａｍｐｌｅ．ｃｏｍ／８０／ｄｉｒ１／ｆｉｌｅ１／ｂｏｄｙ”というパスに変換してファイルアクセスを行う。ヘッダ（ｈｅａｄｅｒ）部分が必要であれば、“／ｃａｃｈｅ／ｈｔｔｐ／ｅｘａｍｐｌｅ．ｃｏｍ／８０／ｄｉｒ１／ｆｉｌｅ１／ｈｅａｄｅｒ”に変換する。全体（ａｌｌ）が必要であれば、“／ｃａｃｈｅ／ｈｔｔｐ／ｅｘａｍｐｌｅ．ｃｏｍ／８０／ｄｉｒ１／ｆｉｌｅ１／ａｌｌ”に変換する。なお、領域名はスキーマごとに異なる。
【００３２】
ファイルアクセス管理部１０４は、ｏｐｅｎシステムコールから、パス情報と、アクセス種別情報と、アプリケーション実行情報とを取得する。それらの情報はアクセス権判定部１０５、存在判定部１０６などに伝えられる。パス情報は、ファイルアクセスに係るファイルのパスに関する情報である。アクセス種別情報は、読み出し、書き込み、実行など、ファイルアクセスの種別に関する情報である。アプリケーション実行情報は、ファイルアクセスを行うアプリケーション１０３に関する情報である。例えば、アプリケーション実行情報には、アプリケーション１０３を識別するためのアプリケーション識別子、アプリケーション１０３を実行しているユーザを識別するためのユーザ識別子、ユーザが所属するグループを識別するためのグループ識別子などが含まれている。アプリケーション識別子は、例えばＯＳから付与されるプロセスＩＤでもよい。
【００３３】
また、ファイルアクセス管理部１０４は、システムコールによる処理結果を、システムコールを呼び出したアプリケーション１０３に返す。システムコールによる処理結果は、例えば、要求されたファイルディスクリプタ、処理したバイト数、要求を処理できなかった場合でのエラーなどがある。
【００３４】
なお、処理が完了すると、アプリケーション１０３はｃｌｏｓｅシステムコールを呼び出し、ファイルディスクリプタを閉じる。このとき、ファイルアクセス管理部１０４は、書き込み処理におけるｃｌｏｓｅシステムコールを検知し、書き込みの完了待ちをしている読み出し部１０７、書き込み部１０８、他のアプリケーション１０３などに書き込み処理が完了したことを通知してもよい。通知は、書き込みの完了待ちをしている全てに通知してもよいし、一部に優先して通知するようにしてもよい。なお、ファイルアクセス管理部１０４ではなく、アプリケーション１０３が通知するとしてもよい。また、ファイルアクセス管理部１０４は、アクセス権判定部１０５、存在判定部１０６、読み出し部１０７、書き込み部１０８などから処理の完了報告を受けて、次の処理の開始をこれらに通知してもよい。
【００３５】
アクセス権判定部１０５は、アクセス権情報に基づき、ファイルアクセス管理部により検知されたファイルアクセスの可否を判定する。アクセス権情報は、ファイルまたはディレクトリごとに、ファイルアクセスの可否が設定されたアクセス権を示すものである。
【００３６】
図４は、第１の実施形態に係るアクセス権情報の一例を示す図である。図４Ａは、パスごとのアクセス権情報の一例を示す。図４Ｂは、アプリケーション１０３と当該アプリケーション１０３の実行ユーザとの対応を示す。図４Ｃは、ユーザと当該ユーザの所属グループとの対応を示す。なお、各ユーザと各グループの識別子はそれぞれ、ＯＳから一意に付与されるものとする。
【００３７】
図４Ａには、ファイルのパスと、当該ファイルの所有者情報と、許可情報が示されている。所有者情報は、所有ユーザの識別子と所有グループの識別子から構成されている。許可情報は、この図の例では、所有ユーザと、所有グループと、その他のユーザとの区分に分けられており、各区分における実行、読み出し、書き込みのそれぞれのアクセス権（図４では許可または禁止）が示されている。なお、図示されていないその他の区分があってもよい。
【００３８】
アクセス権判定部１０５は、図４のようなアクセス権情報を参照し、ファイルアクセス管理部１０４から取得したパス情報とアクセス種別情報とアプリケーション実行情報とを用いて、ファイルアクセスの可否を判定する。例えば、各アプリケーション１０３が図４Ｂに示すユーザにより実行されているとすると、“／ｃａｃｈｅ”ディレクトリ配下のファイルへのアプリケーション１０３Ｃによるファイルアクセスは、不可（否）と判定される。アプリケーション１０３Ｃを実行する、ユーザＩＤが８２のユーザは、所有ユーザでもなく所有グループに所属もしていないため、その他のユーザに分類されるが、その他のユーザは、読み出し、書き込み、実行が禁止されているからである。一方、アプリケーション１０３ＡおよびＢは、実行ユーザが所有ユーザまたは所有グループに属している。そのため、“／ｃａｃｈｅ”に対するアプリケーション１０３ＡおよびＢによるファイルアクセスは、読み出しと実行の場合は可と判定され、書き込みの場合は不可（否）と判定される。
【００３９】
なお、まだ作成されていないファイルについては、パスの上位のディレクトリのアクセス権情報を引き継ぐものとして、ファイルアクセスの可否を判定してもよい。
【００４０】
アクセス権判定部１０５は、判定結果をファイルアクセス管理部１０４に通知する。ファイルアクセス管理部１０４は、判定結果が否であった場合、つまりファイルアクセスができなかった場合は、システムコールの戻り値にエラーを設定し、アプリケーション１０３に通知する。例えば、アプリケーション１０３ＡおよびＢが“／ｃａｃｈｅ”ディレクトリ内のファイルに書き込みを行おうとする場合は、書き込みが禁止されているので、アプリケーション１０３にエラーが通知される。
【００４１】
このように、アクセス権判定部１０５がアプリケーション１０３からのファイルアクセスの可否を判定することにより、セキュリティリスクの高いアプリケーション１０３からのファイルアクセスを防ぐことができる。一方、読み出しが許可されているアプリケーション１０３は、記憶部のファイルを利用することができるため、不要な通信を避けることができる。
【００４２】
存在判定部１０６は、パス情報に基づき、ファイルアクセス管理部１０４により検知されたファイルアクセスに係るファイルが記憶部１０２に記憶されているか否かを判定する。なお、ファイルが記憶部１０２に記憶されている場合は、ファイルが有効であるか否かも確認してもよい。例えば、ファイルがキャッシュされてから所定の期限を経過していたときは、有効なファイルは存在しないとして、判定結果を否としてもよい。
【００４３】
ファイルが有効か無効かの判定方法は、スキーマごとに異なる。例えば、ＨＴＴＰの場合、ヘッダに含まれる“Ｅｘｐｉｒｅｓ”、“ｍａｘ−ａｇｅ”、“Ｌａｓｔ−Ｍｏｄｉｆｉｅｄ”、“Ｄａｔｅ”フィールドなどを用いて判定を行ってもよい。“Ｅｘｐｉｒｅｓ”または“ｍａｘ−ａｇｅ”などにより、現時点でまだ有効期限が切れていないかを判定することができる。また、“Ｄａｔｅ”、“Ｌａｓｔ−Ｍｏｄｉｆｉｅｄ”を用いて、ファイルが有効であるかを推定して、判定を行ってもよい。存在判定部１０６は、記憶部１０２に記憶されているＨＴＴＰのヘッダから、これらのフィールドを取得すればよい。これにより、ファイルが有効であることを保証することができる。
【００４４】
通信処理部１０９は、例えば、ＴＣＰ／ＩＰのプロトコルスタック、ネットワークデバイスドライバ等により実現され、通信部１０１を制御して通信を行う。
【００４５】
通信処理部１０９は、通信部１０１を制御することにより、ファイルアクセス管理部１０４により検知されたファイルアクセスに係るファイルなどを外部装置、例えばネットワーク上のサーバなどから受信する。例えば、アプリケーション１０３が“／ｃａｃｈｅ／ｈｔｔｐ／ｅｘａｍｐｌｅ．ｃｏｍ／８０／ｄｉｒ１／ｆｉｌｅ１／ｂｏｄｙ”へファイルアクセスした場合には、通信処理部１０９は、“／ｃａｃｈｅ／”より後の文字列“ｈｔｔｐ：／／ｅｘａｍｐｌｅ．ｃｏｍ：８０／ｄｉｒ１／ｆｉｌｅ１”を用いて、ファイルを受信する。ファイルの受信の方法はスキーマによって異なる。例えば、ＨＴＴＰである場合は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）にてｅｘａｍｐｌｅ．ｃｏｍのポート８０番に接続した後、ＨＴＴＰのＨＥＡＤメソッド、ＧＥＴメソッドなどを用いてファイルを受信する。例えば、まずＨＥＡＤメソッドを用いてヘッダの情報を受信し、記憶部１０２に記憶されているファイルが更新されているかを判断して、必要な場合にＧＥＴメソッドによりボディの情報を受信するようにしてもよい。
【００４６】
読み出し部１０７は、システムコールの種別に応じて、記憶部１０２からファイルを読み出し、読み出したファイルを要求する各部に提供する。
【００４７】
例えば、ｒｅａｄ等のシステムコールによるファイルの読み出しをファイルアクセス管理部１０４が検知した場合は、読み出し部１０７は当該ファイルを記憶部１０２から読み出して、ファイルアクセス管理部１０４を介して、システムコールを呼び出したアプリケーション１０３へ送る。具体的には、読み出し部１０７は、アプリケーション１０３がシステムコールの呼び出し時に設定したメモリ領域に対して、記憶部１０２から読み出したデータを書き込み、処理結果として書き込んだバイト数を当該アプリケーション１０３に通知する。また、ｓｅｎｄｆｉｌｅ等のシステムコールによるファイルの送信をファイルアクセス管理部１０４が検知した場合は、読み出し部１０７はファイルを記憶部１０２から読み出した上で、通信処理部１０９に送る。
【００４８】
書き込み部１０８は、受け取ったファイルを記憶部１０２に書き込む。書き込み部１０８は、ファイルアクセス管理部１０４を介して、アプリケーション１０３からファイルのデータを取得してもよい。例えば、ｗｒｉｔｅ等のシステムコールによるファイルの書き込みをファイルアクセス管理部１０４が検知した場合は、アプリケーション１０３がシステムコールの呼び出し時に設定したメモリ領域からデータが読み出され、書き込み部１０８は、そのデータを記憶部１０２にファイルとして書き込む。書き込んだバイト数が、ファイルアクセス管理部１０４を経由して、当該アプリケーション１０３に通知される。また、アプリケーション１０３を介さずに、通信処理部１０９からファイルのデータを取得してもよい。本実施形態では、アプリケーション１０３が呼び出したファイルが記憶部１０２に存在しない場合、書き込み部１０８はファイルアクセスを行ったアプリケーション１０３からの書き込み指示がなくとも、通信処理部１０９からファイルを取得して、当該ファイルを記憶部１０２に書き込むとする。すなわち、アプリケーション１０３が呼び出したファイルが記憶部１０２に存在しない場合は、アプリケーション１０３による書き込みに係るファイルアクセスは行われない。
【００４９】
一般的なＷｅｂサーバなどは、Ｗｅｂサーバが要求したファイルが存在しない場合、当該Ｗｅｂサーバが当該ファイルを外部装置などから取得する。そのため、ユーザ空間とカーネル空間との間でのデータの受け渡しが多数発生する。しかし、本実施形態のように、アプリケーション１０３による書き込み指示がなくとも、ＯＳ内部で書き込み処理が行われることにより、ユーザ空間とカーネル空間との間でのデータの受け渡しを減らし、処理の遅延および負荷を減らすことができる。
【００５０】
書き込み先は、パス情報に基づき決定される。パス情報は、ファイルアクセス管理部１０４、読み出し部１０７などから取得すればよい。なお、取得した各ファイルの更新時刻などに基づき、書き込みの要否を判定し、書き込み不要と判定されたファイルは書き込まないとしてもよい。
【００５１】
次に本実施形態の処理の流れについて説明する。図５は、第１の実施形態に係るデータ処理装置１の概略処理のフローチャートの一例を示す図である。なお、本実施形態のアプリケーション１０３は、ネットワーク上の図示しない外部装置が要求したファイルを送信するＷｅｂサーバを想定して説明する。本フローは、アプリケーション１０３がシステムコールを呼び出した時に開始される。
【００５２】
アプリケーション１０３がシステムコールを呼び出すことにより、ファイルアクセス管理部１０４は、ファイルアクセスを検知する（Ｓ１０１）。ファイルアクセス管理部１０４は、システムコールに含まれるパス情報とアクセス種別情報とアプリケーション実行情報とをアクセス権判定部１０５に送り、アクセス権判定部１０５がこれらの情報とアクセス権情報に基づき、ファイルアクセスの可否を判定する（Ｓ１０２）。
【００５３】
アクセス権判定部１０５による判定結果が否、つまりファイルアクセスができない場合（Ｓ１０３のＮＯ）は、読み出し処理、書き込み処理などは行われずに、判定結果がファイルアクセス管理部１０４に返され、ファイルアクセス管理部１０４がシステムコールを呼び出したアプリケーション１０３にエラーを通知し（Ｓ１０４）、本フローは終了する。アクセス権判定部１０５による判定結果が可、つまりファイルアクセスができる場合（Ｓ１０３のＹＥＳ）は、アクセス種別ごとに対応が異なる。
【００５４】
システムコールがｒｅａｄ、ｓｅｎｄｆｉｌｅ等の場合、つまりファイルの読み出しが必要なアクセス種別の場合（Ｓ１０５の読み出し）は、読み出し処理が行われる（Ｓ１０６）。システムコールがｗｒｉｔｅ等の場合、つまりファイルへの書き込みが必要なアクセス種別である場合（Ｓ１０５の書き込み）は、書き込み処理が行われる（Ｓ１０７）。読み出し処理と書き込み処理が終了すると本フローは終了する。読み出し処理と書き込み処理のフローは後述する。
【００５５】
図６は、第１の実施形態に係るデータ処理装置１の読み出し処理のフローチャートの一例を示す図である。存在判定部１０６は、ファイルアクセスに係る有効なファイルが記憶部１０２に存在するか否かの判定を行う（Ｓ２０１）。存在判定部１０６は、パス情報とアクセス種別情報とアプリケーション実行情報とを、アクセス権判定部１０５から取得してもよいし、ファイルアクセス管理部１０４から取得してもよい。
【００５６】
判定結果が偽、つまりファイルアクセスに係るファイルが記憶部１０２に存在しないと判定された場合（Ｓ２０２のＮＯ）は、パス情報に基づき通信処理部１０９がファイルを取得する（Ｓ２０３）。そして、書き込み部１０８が通信処理部１０９から当該ファイルを取得し（Ｓ２０４）、記憶部１０２に書き込む（Ｓ２０５）。
【００５７】
判定結果が真、つまりファイルアクセスに係るファイルが記憶部１０２に存在すると判定された場合（Ｓ２０２のＹＥＳ）と、書き込み部１０８が記憶部１０２にファイルを書き込んだ後（Ｓ２０５の処理後）は、読み出し部１０７がファイルアクセスに係るファイルを読み出す（Ｓ２０６）。読み出し部１０７がファイルを読み出した後（Ｓ２０６の処理後）は、システムコール種別ごとに対応が異なる。
【００５８】
アクセス種別がｒｅａｄ等のファイル読み出し処理の場合（Ｓ２０７のファイル読み込み）は、読み出し部１０７は、ファイルアクセス管理部１０４を介して、システムコールを呼び出したアプリケーション１０３に読み出したファイルのデータを渡して（Ｓ２０８）、本フローは終了する。アクセス種別がｓｅｎｄｆｉｌｅ等のファイル送信処理の場合（Ｓ２０６のファイル送信）は、読み出したファイルは通信処理部１０９に送られ、通信処理部１０９がファイルを送信して（Ｓ２０９）、本フローは終了する。なお、ファイルの送信先は、ファイルアクセス管理部１０４がシステムコールからファイルの送信先を読み出して、通信処理部１０９に送ればよい。
【００５９】
図７は、第１の実施形態に係るデータ処理装置１の書き込み処理のフローチャートの一例を示す図である。書き込み部１０８は、ファイルアクセス管理部１０４を介してアプリケーション１０３から送られたファイルのデータを、記憶部１０２の指定のパスに対応する領域に書き込む（Ｓ３０２）。そして、ファイルアクセス管理部１０４は、書き込みが完了したことを当該アプリケーション１０３に通知し（Ｓ３０３）、本フローは終了する。
【００６０】
なお、一度に全てのファイルを書き込めない場合もあり得る。その場合は、アプリケーション１０３がｗｒｉｔｅシステムコールを繰り返し呼び出せばよい。
【００６１】
以上のように、本実施形態は、ユーザ空間とカーネル空間との間でのデータの受け渡しを減らし、処理の遅延および負荷を減らすことができる。また、複数のアプリケーション１０３にファイルを共用させることができ、通信部１０１を介してファイルを取得する回数を減らすことができる。また、ファイルの有効期限を判断することができ、ファイルが有効であることを保証することができる。また、アクセスが許可されていないアプリケーション１０３によるファイルの書き込みを制限し、ファイルの信頼性を向上することができる。
【００６２】
（第２の実施形態）
第１の実施形態では、ファイルアクセスに係るファイルがない場合は、ファイルアクセスを行ったアプリケーション１０３を介さずに、記憶部１０２に当該ファイルが書き込まれる。しかし、書き込みを行うアプリケーション１０３を指定したい場合もあり得る。第２の実施形態では、ファイルの取得などの処理を、所望のアプリケーション１０３に実行させることを想定する。
【００６３】
図８は、第２の実施形態に係るデータ処理装置１の概略構成の一例を示すブロック図である。本実施形態は、実行指示部１１０と、処理の実行を指示されるアプリケーション１０３をさらに備える。図８では、処理の実行を指示されるアプリケーション１０３の候補として、アプリケーション１０３ＤおよびＥが示されている。なお、第１の実施形態と同様な点は、説明を省略する。また、第２の実施形態に係るデータ処理装置１のハードウェア構成は、第１の実施形態と同様とする。
【００６４】
実行指示部１１０は、ファイルアクセス管理部１０４などと同様、ＯＳの一部として、カーネル空間で動作する。実行指示部１１０は、存在判定部１０６にて有効なファイルが存在しないと判定された場合に、アプリケーション１０３または通信処理部１０９にファイルの取得指示を行う。ファイルの取得指示が与えられるアプリケーション１０３は、取得するファイルに係るパス情報と予め定められた指示情報とに基づき決定される。パス情報は、存在判定部１０６から取得してもよいし、ファイルアクセス管理部１０４から取得してもよい。指示情報は、記憶部１０２に保存されていてもよいし、図示しない他の記憶部１０２に保存されていてもよい。
【００６５】
図９は、指示情報の一例を示す図である。指示情報は、例えば図９のように、パスとアプリケーション１０３の対応表にて表される。実行指示部１１０は、取得したパス情報のパスと一致する文字列が最も長い対象パスを選択し、選択した対象パスに対応づけられたアプリケーション１０３に対し指示を行う。図９の例では、“／ｃａｃｈｅ／ｈｔｔｐ／ｅｘａｍｐｌｅ．ｃｏｍ／８０／”と“／ｃａｃｈｅ／ｈｔｔｐ／ｅｘａｍｐｌｅ．ｏｒｇ／８０／”のディレクトリの配下に属するファイルへファイルアクセスする場合は、アプリケーション１０３Ｄに対し指示がなされる。上記２つのディレクトリの配下でなく、かつ“／ｃａｃｈｅ／”ディレクトリの配下に属するファイルへファイルアクセスする場合には、アプリケーション１０３Ｅに対し指示がなされる。
【００６６】
なお、ファイルアクセスを行ったアプリケーション１０３と、ファイルの取得指示が与えられるアプリケーション１０３とは異なることを想定するが、同じであってもよい。また、ファイルの取得をアプリケーション１０３に指示しない場合があってもよい。第１の実施形態のように、通信処理部１０９にファイルを取得するよう指示してもよいし、所得指示を行わずにエラーを通知してもよい。
【００６７】
なお、ファイルの取得指示が与えられるアプリケーション１０３は、実行指示部からの指示を受けるため、デバイスファイルシステムなどの予め決められたファイルをｏｐｅｎシステムコールで開き、ｓｅｌｅｃｔシステムコールやｐｏｌｌシステムコールを呼び出し、実行指示を待ち受ける。実行指示部１１０は、デバイスファイルシステムを介して、アプリケーション１０３に対し指示を行う。ゆえに、前述の指示情報には、デバイスファイルシステムなどのファイル名がパスと対応づけられていてもよく、当該ファイル名を用いて、ファイルの取得指示が行われてもよい。
【００６８】
実行指示部１１０は、アプリケーション１０３に対し指示を行う際、パス情報をアプリケーション１０３に送る。この際、アプリケーション１０３に対して、ファイルのヘッダ情報を渡してもよい。アプリケーション１０３は、例えば、ヘッダ情報の“Ｅｘｐｉｒｅｓ”、“ｍａｘ−ａｇｅ”、“Ｌａｓｔ−Ｍｏｄｉｆｉｅｄ”、“Ｄａｔｅ”といったフィールドに基づき、ヘッダとボディの更新が必要か否かを判定することができる。これにより、更新が不要にも関わらず、無駄な書き込みが発生することを防ぐことができる。なお、書き込みが不要であった場合、アプリケーション１０３は、デバイスファイルシステムなどを経由して、その旨を書き込みの完了待ちをしている他のアプリケーション１０３、読み出し部１０７、書き込み部１０８などに伝えてもよい。
【００６９】
また、データ処理装置１が複数の通信部１０１によりネットワークに接続されている場合、実行指示部１１０は、当該アプリケーション１０３が用いる通信部１０１を指定してもよい。例えば、実行指示部１１０が取得指示を与えるアプリケーション１０３に対し、通信部１０１の識別子を送ることにより、通信部１０１が指定されてもよい。
【００７０】
例えば、第１の通信部１０１は第１の通信回線に接続されており、第２の通信部１０１は第２の通信回線に接続されており、第１の通信回線は、第２の通信回線に比べて、使用料金は高いが高帯域である場合を想定する。このような場合、通常は第２の通信回線を用いるが、特定のファイルまたは特定の取得先に対しては、第１の通信回線を用いたいときもあり得る。実行指示部１１０は、通信回線の状況、取得するファイルなどに基づき、使用する通信回線を選択し、使用する通信回線に接続している通信部１０１の識別子をアプリケーション１０３に送る。アプリケーション１０３は、前記識別子に対応する通信部１０１を介して、ファイルを取得する。これにより、所望の通信回線を使用することができる。
【００７１】
また、アプリケーション１０３は予め対応付けられた通信部１０１を用いるとしてもよい。例えば、アプリケーション１０３Ｄは第１の通信回線に接続された第１の通信部１０１を用い、アプリケーション１０３Ｅは第２の通信回線に接続された第２の通信部１０１を用いると予め定めておく。そして、第１の通信回線にて送りたいファイルまたは第１の通信回線にて通信したい通信先に関する対象パスを、アプリケーション１０３Ｄに対応付けて、予め指示情報に登録しておく。これにより、実行指示部１１０は、第１の通信回線にて送りたいファイルの取得指示を、第１の通信部１０１が予め対応付けられたアプリケーション１０３Ｄに与える。ゆえに、所望の通信回線を使用することができる。
【００７２】
アプリケーション１０３ＤおよびＥは、実行指示部１１０からの指示を受けた場合、通信処理部１０９に対してファイルの受信指示を行うことにより、通信処理部１０９を介してファイルを取得する。アプリケーション１０３ＤおよびＥは、例えば、取得したｗｅｂページなどをキャッシュとして書き込むプロキシサーバ（キャッシュサーバ）などが想定される。
【００７３】
アプリケーション１０３ＤおよびＥは、パス情報に基づき、通信処理部１０９に対しデータの取得を指示する。例えば、パス情報が“／ｃａｃｈｅ／ｈｔｔｐ／ｅｘａｍｐｌｅ．ｃｏｍ／８０／ｄｉｒ１／ｆｉｌｅ１／ｂｏｄｙ”であれば、“ｈｔｔｐ：／／ｅｘａｍｐｌｅ．ｃｏｍ：８０／ｄｉｒ１／ｆｉｌｅ１”のファイルの取得を試みる。
【００７４】
ファイルの取得方法はスキーマによって異なるが、ＨＴＴＰの場合、アプリケーション１０３は“ｅｘａｍｐｌｅ．ｃｏｍ”のポート８０番とＴＣＰで通信するためのソケットの作成をＯＳに依頼し、コネクション確立後、ＧＥＴメソッドなどを用いてファイルの取得を試みる。通信処理部１０９が取得したファイルは、第１の実施形態と異なり、書き込み部１０８に渡されずにアプリケーション１０３ＤまたはＥに渡される。このように、アプリケーション１０３ＤまたはＥと、通信処理部１０９との間のファイルの受け渡しは、ソケットを介して行われる。
【００７５】
また、アプリケーション１０３ＤおよびＥは、記憶部１０２に通信処理部１０９から取得したファイルの書き込みを行うため、書き込みのシステムコールを呼び出す。ファイルの書き込みに関する処理は第１の実施形態と同様である。
【００７６】
次に本実施形態の処理の流れについて説明する。本実施形態に係るデータ処理装置１の概略処理は第１の実施形態と同様であるが、読み出し処理は第１の実施形態と異なる。図１０は、第２の実施形態に係るデータ処理装置１の読み出し処理のフローチャートの一例を示す図である。本フローは、アプリケーション１０３がファイルの取得を行うフローである。
【００７７】
存在判定部１０６の判定結果が真の場合の処理（Ｓ２０２のＹＥＳ以降の処理）は、第１の実施形態と同じである。存在判定部１０６の判定結果が偽の場合（Ｓ２０２のＮＯ）は、第１の実施形態と異なり、実行指示部１１０がパス情報と指示情報とに基づき指示対象のアプリケーション１０３へファイルの取得指示を与える（Ｓ４０１）。なお、取得指示を与える際には、ファイルの取得のためにパス情報が送られる。
【００７８】
取得指示を受けたアプリケーション１０３は、パス情報に基づき、通信処理部１０９を介して、指定ファイルの取得を行う（Ｓ４０２）。そして、指定ファイルを取得したアプリケーション１０３は、ファイルの書き込みのシステムコールを呼び出し、書き込みが完了するまで待機する（Ｓ４０３）。当該ファイルの書き込みのシステムコールに対する処理のフローは、第１の実施形態の概略処理のフローと書き込み処理のフローの通りに行われ、最終的にファイルアクセス管理部１０４が書き込みの完了を読み出し部１０７に通知する。書き込みの完了を通知された読み出し部１０７は、第１の実施形態同様に、読み出し部１０７がファイルを読み出し（Ｓ２０６）、システムコール種別に応じて処理を行い（Ｓ２０８とＳ２０９）、本フローは終了する。
【００７９】
以上のように、本実施形態によれば、ファイルを要求したアプリケーション１０３とは異なるアプリケーション１０３に対して、ファイルの取得などの処理を実行させることができる。これにより、信頼できるアプリケーション１０３だけに書き込み処理を行わせることができ、信頼性を高めることができる。また、特定のファイルまたは特定の取得先などに応じて、使用する通信回線を選択することができる。これにより、通信回線の使用料金、帯域、負荷、遅延などを考慮して、通信回線を使い分けることができる。
【００８０】
（第３の実施形態）
第３の実施形態では、ＴＣＰ／ＩＰオフロードエンジン（ＴＯＥ）を用いることにより、読み出し部１０７と、書き込み部１０８と、通信処理部１０９に係る処理をハードウェアにて実施する。これにより、これまでの実施形態よりも、プロセッサの処理負荷を軽減し、処理を高速化する。
【００８１】
図１１は、第３の実施形態に係るデータ処理装置１の概略構成の一例を示すブロック図である。読み出し部１０７と、書き込み部１０８と、通信処理部１０９とがハードウェア領域に示されている。なお、図１１は、第２の実施形態をＴＯＥにて実現する例であるが、第１の実施形態をＴＯＥにて実現してもよい。
【００８２】
図１２は、第３の実施形態に係るハードウェア構成の一例を示すブロック図である。第３の実施形態に係るハードウェア構成では、ネットワークアダプタ２０４の代わりに、ＴＯＥ２０７がバス２０６に接続されている。また、ホストバスアダプタ２０５がなく、ストレージ２０３はＴＯＥ２０７と接続され、ＴＯＥ２０７を介してバス２０６に接続されている。
【００８３】
ＴＯＥ２０７が、読み出し部１０７と、書き込み部１０８と、通信処理部１０９と、通信部１０１とを実現し、ストレージ２０３が記憶部１０２を実現する。これにより、ストレージ２０３とＴＯＥ２０７との間のデータの受け渡しが、ハードウェアにて高速に行われる。例えば、通信処理部１０９が記憶部１０２からのファイルを読み出して当該ファイルを送信する場合、通信処理部１０９が取得したファイルを直接記憶部１０２に書き込みする場合などで効果がある。
【００８４】
なお、カーネル空間で動作するＴＯＥ２０７デバイスドライバにより、メモリ２０２とＴＯＥ２０７との間のデータの受け渡し、カーネル空間で動作するプログラムによるストレージ２０３へのアクセスなどが可能になる。これにより、アクセス権判定部１０５による記憶部１０２のアクセス権情報を読み出し、存在判定部１０６による有効なキャッシュの存在の判定、実行指示部１１０による指示情報の読み出しなどの処理は、これまでの実施形態同様に行うことができる。
【００８５】
第３の実施形態では、読み出し処理にｓｅｎｄｆｉｌｅシステムコールが呼ばれた場合で、記憶部１０２に有効なファイルがある場合には、ＴＯＥ２０７の機能により、プロセッサ２０１を介さず、読み出し部１０７が記憶部１０２からデータを読み出し、通信処理部１０９を経由してデータが送信される。
【００８６】
第３の実施形態では、読み出し処理において記憶部１０２に有効なファイルがない場合の処理が第２の実施形態と異なる。第２の実施形態では、上記の場合、実行指示部１１０により取得指示が与えられたアプリケーション１０３が通信処理部１０９を介して当該ファイルを取得した上で、書き込みのシステムコールを呼び出し、書き込み処理が行われる。当該書き込み処理では、書き込み部１０８は、ファイルアクセス管理部１０４を介して、アプリケーション１０３から当該ファイルを取得する。一方、第３の実施形態では、上記の場合において、書き込み部１０８は、通信処理部１０９から直接ファイルを取得する。これにより、ソフトウェアの処理を減らし、処理を高速化する。
【００８７】
第３の実施形態では、実行指示部１１０により取得指示が与えられたアプリケーション１０３は、通信処理部１０９を介してファイルを取得するときに、ＴＯＥ２０７の独自のシステムコールであるｒｅｃｖｆｉｌｅシステムコールを用いる。
【００８８】
ｒｅｃｖｆｉｌｅシステムコールは、ｓｅｎｄｆｉｌｅの逆の動きを行うものである。ｒｅｃｖｆｉｌｅシステムコールは、ソケットと、ファイルディスクリプタと、ファイルのオフセットと、データの長さとが指定されると、ソケットで受信されたデータが、ファイルのオフセット位置から指定された長さ分だけファイルに書き込まれるというものである。すなわち、ファイルの受信および書き込みがまとめて行われる。
【００８９】
ファイルの取得指示が与えられたアプリケーション１０３は、パス情報に基づき、スキーマとホスト名とポート番号とを特定してソケットを作成する。次に、データを保存するファイルをｏｐｅｎシステムコールにより開き、ｒｅｃｖｆｉｌｅシステムコールにより、受信したファイルの書き込みを指示する。例えば、ＨＴＴＰの場合では、特定したホスト名とポート番号を用いてＴＣＰのソケットが作成される。次に、ヘッダとボディについて、それぞれｏｐｅｎシステムコールでファイルが作成される。そして、ソケットに対するｓｅｎｄシステムコールなどにより、ＨＴＴＰのＧＥＴメソッドやＨＥＡＤメソッドが発行された上で、ｒｅｃｖｆｉｌｅシステムコールが呼び出される。
【００９０】
図１３は、第３の実施形態に係るデータ処理装置の読み出し処理のフローチャートの一例を示す図である。実行指示部１１０がファイルの取得指示を行う処理（Ｓ４０１）までは、第２の実施形態と同様である。
【００９１】
取得指示されたアプリケーションは、ソケット作成などの必要な処理を行った上で、ｒｅｃｖｆｉｌｅシステムコールを呼び出す（Ｓ５０１）。呼び出されたｒｅｃｖｆｉｌｅシステムコールは、ｒｅａｄ，ｗｒｉｔｅ等の他のシステムコールと同様に処理される。つまり、図５の概略処理のフローに示す通り、ｒｅｃｖｆｉｌｅシステムコールは、ファイルアクセス管理部１０４に検知され、アクセス権判定部１０５の判定処理が行われ、判定結果が可、つまりファイルアクセスができる場合に、図５に示されていないｒｅｃｖｆｉｌｅシステムコールの処理（図１３のＳ５０２から５０４）が開始される。通信処理部１０９は、取得指示に係るファイルの取得を行い（Ｓ５０２）、取得されたファイルを書き込み部１０８に渡す（Ｓ５０３）。書き込み部は、通信処理部１０９からのファイルを記憶部に書き込む（Ｓ５０４）。以降の処理は、第１および２の実施形態と同様である。
【００９２】
なお、ファイルの書き込みの一部が、アプリケーション１０３を介して行われてもよい。例えば、書き込み部は、アプリケーション１０３からヘッダを取得し、通信処理部１０９からボディを取得してもよい。
【００９３】
以上のように、本実施形態によれば、ＴＯＥ２０７デバイスドライバにより、ＴＯＥ２０７の通信処理部１０９から、アプリケーション１０３を介さずに、直接ストレージ２０３の記憶部１０２に受信したデータが書き込まれる。これにより、ファイルを取得するアプリケーション１０３を指定した場合でも、プロセッサ２０１、メモリ２０２、バス２０６を介することなく、受信したファイルを記憶部１０２に書き込むことができ、処理を高速に行うことができる。また、プロセッサ２０１、メモリ２０２などの負荷またはバス２０６の帯域を軽減することができる。
【００９４】
（第４の実施形態）
第４の実施形態では、データ処理装置１が、仮想化技術による仮想インスタンス（仮想マシンまたはコンテナ）を有し、マルチテナント型のサービスを提供することを想定する。
【００９５】
仮想化技術とは、１台のデータ処理装置上に、１つ以上の仮想のデータ処理装置を作り出す技術である。ここでは、仮想化技術を実行する実際のデータ処理装置１を物理インスタンスと称し、仮想のデータ処理装置を仮想インスタンスと称する。また、仮想のデータ処理装置のカーネル空間を仮想カーネル空間と、仮想のデータ処理装置のユーザ空間を仮想ユーザ空間と称することとする。また、仮想ユーザ空間で動作するプログラムも「アプリケーション」に含まれることとする。
【００９６】
図１４は、仮想化技術の例を示す図である。ホストＯＳ型の仮想化技術が図１４Ａに、ハイパーバイザー型の仮想化技術が図１４Ｂに、コンテナ型の仮想化技術が図１４Ｃに示されている。本実施形態では、これらのいずれの仮想化技術を用いてもよい。ドットが付された領域が仮想インスタンスを表す。いずれの仮想化技術においても、物理インスタンス上に、１つ以上の仮想インスタンスを生成することができる。
【００９７】
なお、ホストＯＳ型の仮想化技術では、物理インスタンスのＯＳの一部として動作する仮想化ソフトウェアにより、１つ以上の仮想マシンが実現される。ホストＯＳ型の仮想化技術では、各仮想マシンに仮想のＯＳ（ゲストＯＳ）がインストールされ、ゲストＯＳの上でアプリケーション１０３が動作する。ゲストＯＳとホストＯＳは同じでも異なっていてもよい。また、複数の仮想マシンにおけるゲストＯＳ同士も同じでも異なっていてもよい。ホストＯＳ型の仮想化技術では、物理インスタンスのユーザ空間において、仮想化ソフトウェア以外のアプリケーション１０３を実行させることもできる。
【００９８】
ハイパーバイザー型の仮想化技術では、物理インスタンスのＯＳに相当するハイパーバイザーにより複数の仮想マシンが実現される。生成された複数の仮想マシンは、ホストＯＳ型の仮想化技術と同様に、ゲストＯＳがインストールされ、ゲストＯＳの上でアプリケーションが動作する。ゲストＯＳとホストＯＳは同じでも異なっていてもよい。また、複数の仮想マシンにおけるゲストＯＳ同士も同じでも異なっていてもよい。ハイパーバイザー型の仮想化技術は、仮想マシン以外の領域でアプリケーションを実行することはできない。
【００９９】
コンテナ型の仮想化技術では、物理インスタンスのＯＳの一部として動作する仮想化ソフトウェアにより、複数のコンテナが生成される。コンテナは、名前空間、リソース制限などにより、他のコンテナと隔離された空間である。コンテナ内にてアプリケーションを動作させることができる。各コンテナのゲストＯＳは、物理インスタンスのＯＳを共用するため、物理インスタンスのＯＳと同一となる。
【０１００】
なお、一般的に、異なるインスタンス同士のデータの受け渡しは、物理インスタンスのＯＳが作成した仮想ＬＡＮ（仮想スイッチ）を介して、仮想通信が行われる。そのため、インスタンス間において、データの受け渡しを行うときは、ネットワークアクセスによるメモリコピーが発生する。例えば、各インスタンスにおけるＷｅｂアプリケーションがファイルを外部ネットワークから取得する場合に、あるインスタンスに構築された共用のプロキシサーバを用いるとしても、共用のプロキシサーバからデータを仮想通信にて取得するため、処理負荷が上がったり、時間がかかるといった問題がある。
【０１０１】
図１５は、第４の実施形態に係るデータ処理装置１の概略構成の一例を示すブロック図である。第４の実施形態に係るデータ処理装置１は、少なくとも１つの仮想インスタンスが生成されており、当該仮想インスタンスの仮想カーネル空間で動作するゲストＯＳを備える。
【０１０２】
アプリケーション１０３Ａ、Ｂ、Ｃは、各仮想インスタンスのユーザ空間において実行されるものとする。アプリケーション１０３Ｄは、物理インスタンスのユーザ空間において実行されるものとする。アプリケーション１０３の種類は、特に限られるものではない。例えば、カーネル、他のアプリケーション１０３などを管理するためのアプリケーションでもよい。ここでは、アプリケーション１０３ＡとＢは、ファイルを送信するＷｅｂサーバとして、アプリケーション１０３ＣとＤは、ファイルを取得するプロキシサーバとして説明する。
【０１０３】
なお、図１５ではアプリケーション１０３Ｄが存在する物理インスタンスのユーザ空間が示されているが、ハイパーバイザー型の仮想化技術を用いる場合には、物理インスタンスのユーザ空間はないものとする。
【０１０４】
ファイルアクセス管理部１０４と、アクセス権判定部１０５と、存在判定部１０６と、読み出し部１０７と、書き込み部１０８と、通信処理部１０９と、実行指示部１１０とは、第２の実施形態同様、物理インスタンスのカーネル空間にて実行される。なお、第１の実施形態のように、ファイルの取得を通信処理部１０９が直接行う場合は、実行指示部１１０はなくともよい。
【０１０５】
また、本実施形態では、各仮想インスタンスのカーネル空間において動作するファイルアクセス中継部１１２および仮想通信処理部１１３と、物理インスタンスのカーネル空間において動作する通信中継部１１１と、をさらに備える。
【０１０６】
ファイルアクセス中継部１１２は、仮想インスタンスにおけるファイルシステムのインタフェースである。仮想ユーザ空間で動作するアプリケーション１０３が、記憶部１０２のファイルに係るシステムコールを呼び出すと、同じ仮想インスタンスのファイルアクセス中継部１１２が当該システムコールを検知する。
【０１０７】
ファイルアクセス中継部１１２は、物理インスタンスのファイルアクセス管理部１０４が属するファイルシステムにアクセスすることができ、取得したシステムコールをファイルアクセス管理部１０４に中継する。これにより、ファイルアクセス管理部１０４が仮想ユーザ空間で動作するアプリケーション１０３のシステムコールを検知することができる。したがって、仮想インスタンスにおいて動作するアプリケーション１０３が、ファイルアクセス中継部１１２とファイルアクセス管理部１０４を介して、ハードウェアの記憶部１０２内のファイルにファイルアクセスすることができる。
【０１０８】
仮想通信処理部１１３は、仮想インスタンスのカーネル空間における通信処理部１０９である。仮想インスタンスのアプリケーション１０３は、仮想通信処理部１１３を介して、ファイルを外部装置に送受信する。仮想通信処理部１１３は、物理インスタンスのカーネル空間で動作する通信中継部１１１とデータの受け渡しを行う。
【０１０９】
通信中継部１１１は、各仮想インスタンスの各仮想通信処理部１１３と、ハードウェア領域の通信部１０１とを通信接続するものである。また、物理インスタンスの通信処理部１０９も、通信中継部１１１を介して通信部１０１と接続されてもよい。
【０１１０】
本実施形態では、システムコールに含まれるアプリケーション実行情報に、アプリケーション１０３が動作するインスタンスの情報が含まれていてもよい。そして、アクセス権判定部１０５は、アプリケーション１０３が動作するインスタンスの情報に基づき、ファイルアクセスの可否を判定してもよい。
【０１１１】
図１６は、第４の実施形態に係るアクセス権情報の一例を示す図である。図１６に示すアクセス権情報は、インスタンスごとに許可情報が定められている。このように、本実施形態のアクセス権情報は、インスタンスに係る許可情報を有していてもよい。これにより、アクセス権判定部１０５は、インスタンスごとに、ファイルアクセスの可否を判定することができる。なお、これまでの実施形態のように、アプリケーション１０３単位でアクセス権の判定が行われてもよいし、インスタンスとアプリケーション１０３の両方に基づいて、ファイルアクセスの可否を判定してもよい。
【０１１２】
第２の実施形態と同様に、実行指示部１１０が、指示情報に基づき、ファイルの取得の指示を行う場合は、実行指示部１１０が用いる指示情報には、アプリケーション１０３が動作するインスタンスも含まれているとする。図１７は、第４の実施形態に係る指示情報の一例を示す図である。アプリケーション１０３だけでなく、アプリケーション１０３が動作するインスタンスが示されている。これにより、実行指示部１１０はいずれのインスタンスにて、アプリケーション１０３が動作しているかを認識することができる。なお、実行指示部１１０は、アプリケーション１０３ではなく、通信処理部１０９またはアプリケーション１０３が動作する仮想インスタンスの仮想通信処理部１１３に対し、ファイルの取得の指示を行ってもよい。
【０１１３】
また、実行指示部１１０が仮想インスタンスのアプリケーション１０３に取得指示を行う場合は、物理インスタンスおよび仮想インスタンスのデバイスファイルシステムなど、ファイルアクセス管理部１０４およびファイルアクセス中継部１１２が属さない他のファイルシステムを経由する。
【０１１４】
図１８は、第４の実施形態に係るデータ処理装置１の概略処理のフローチャートの一例を示す図である。本フローは、アプリケーション１０３ＡまたはＢがシステムコールを呼び出した時に開始される。
【０１１５】
アプリケーション１０３ＡまたはＢがシステムコールを呼び出すと、アプリケーション１０３ＡまたはＢは仮想インスタンスのユーザ空間で動作するため、仮想インスタンスのカーネル空間で動作するファイルアクセス中継部１１２が当該システムコールを検知する（Ｓ６０１）。ファイルアクセス中継部１１２は、当該システムコールをファイルアクセス管理部１０４に中継する（Ｓ６０２）。ファイルアクセス中継部１１２が、ファイルアクセス管理部１０４へシステムコールを中継した後の処理は、第１の実施形態と同様である。但し、ファイルアクセス管理部１０４と、仮想インスタンスのアプリケーション１０３とのデータの受け渡しは、例えば、エラーを通知する処理（Ｓ１０４）、読み出したファイルをアプリケーション１０３に送る処理（Ｓ２０８）などでは、ファイルアクセス中継部１１２を介して行われる。また、仮想インスタンスのアプリケーション１０３と、通信処理部１０９のデータの受け渡しは、例えば、アプリケーション１０３がファイルを送信する場合などは、仮想通信処理部１１３を介して行われる。
【０１１６】
なお、データ処理装置１は、複数の通信部１０１と複数の通信中継部１１１を備えていてもよい。その場合、実行指示部１１０は、通信中継部１１１の識別子を送ることにより、仮想ユーザ空間で動作するアプリケーション１０３が用いる通信部中継部１１１を指定してもよい。
【０１１７】
また、各インスタンスは予め対応付けられた通信部１０１を用いるとしてもよい。例えば、仮想インスタンスＤは第１の通信回線に接続された第１の通信部１０１を用い、物理インスタンスは第２の通信回線に接続された第２の通信部１０１を用いると予め定めておく。そして、第１の通信回線にて送りたいファイルまたは第１の通信回線にて通信したい通信先に関する対象パスを、アプリケーション１０３Ｄに対応付けて、予め指示情報に登録しておく。これにより、実行指示部１１０は、第１の通信回線にて送りたいファイルの取得指示を、第１の通信部１０１が予め対応付けられた仮想インスタンスＤのアプリケーションのいずれかに与える。これにより、所望の通信回線を使用することができる。
【０１１８】
なお、第４の実施形態においても、第３の実施形態のように、ＴＯＥ２０７を用いてもよい。これにより、プロセッサ２０１、メモリ２０２などの負荷またはバス２０６の帯域を軽減することができる。
【０１１９】
また、上記の実施形態においては、ＨＴＴＰでの取得の例を示したが、本発明はＩＣＮ（Ｉｎｆｏｒｍａｔｉｏｎ  Ｃｅｎｔｒｉｃ  Ｎｅｔｗｏｒｋｉｎｇ）やＣＣＮ（Ｃｏｎｔｅｎｔ  Ｃｅｎｔｒｉｃ  Ｎｅｔｗｏｒｋｉｎｇ）と呼ばれるコンテンツ指向型ネットワークにも適用してもよい。
【０１２０】
以上のように、本実施形態によれば、仮想化技術によるマルチテナントを提供する環境においても、これまでの実施形態と同様の効果を得ることができる。ゆえに、本実施形態では、仮想通信が行われないため、処理負荷の増加や、処理時間を抑えることができる。また、共用のキャッシュに対し、インスタンスごとに書き込みを制限することができる。
【０１２１】
上記に、本発明の一実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１２２】
１  データ処理装置
１０１  通信部
１０２  記憶部
１０３、１０３Ａ、１０３Ｂ、１０３Ｃ、１０３Ｄ、１０３Ｅ  アプリケーション
１０４  ファイルアクセス管理部（検知部）
１０５  アクセス権判定部
１０６  存在判定部
１０７  読み出し部
１０８  書き込み部
１０９  通信処理部
１１０  実行指示部
１１１  通信中継部
１１２Ａ、１１２Ｂ、１１２Ｃ  ファイルアクセス中継部
１１３Ａ、１１３Ｂ、１１３Ｃ  仮想通信処理部
２  コンピュータ装置
２０１  プロセッサ
２０２  メモリ
２０３  ストレージ
２０４  ネットワークアダプタ
２０５  デバイスアダプタ
２０６  バス
２０７  ＴＣＰ／ＩＰオフロードエンジン（ＴＯＥ）
【図１】
2017215745.tif 000003
【図２】
2017215745.tif 000004
【図３】
2017215745.tif 000005
【図４】
2017215745.tif 000006
【図５】
2017215745.tif 000007
【図６】
2017215745.tif 000008
【図７】
2017215745.tif 000009
【図８】
2017215745.tif 000010
【図９】
2017215745.tif 000011
【図１０】
2017215745.tif 000012
【図１１】
2017215745.tif 000013
【図１２】
2017215745.tif 000014
【図１３】
2017215745.tif 000015
【図１４】
2017215745.tif 000016
【図１５】
2017215745.tif 000017
【図１６】
2017215745.tif 000018
【図１７】
2017215745.tif 000019
【図１８】
2017215745.tif 000020