(57)【要約】  通信部と外部記憶部とを具備して外部ネットワークに接続されたデバイス間データ転送装置であって、ＯＳによってあらかじめ指定されたセッションに関するパケットデータを外部ネットワークを介して通信部で受信した場合に、パケットデータを分割したり統合したり領域の削除をすることなく、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、外部記憶部の空き領域に直接データ転送して外部記憶部にファイルを書き込むプログラム実行部を備えたことを特徴とする。
2012011253.tif 000002
【特許請求の範囲】
【請求項１】
通信部と外部記憶部とを具備して外部ネットワークに接続されたデバイス間データ転送装置であって、
ＯＳによってあらかじめ指定されたセッションに関するパケットデータを前記外部ネットワークを介して前記通信部で受信した場合に、前記パケットデータを分割したり統合したり領域の削除をすることなく、前記通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、前記外部記憶部の空き領域に直接データ転送して前記外部記憶部にファイルを書き込むプログラム実行部を備えた
ことを特徴とするデバイス間データ転送装置。
【請求項２】
プログラム実行部は、ＯＳによってあらかじめ指定されたセッションに関するファイルのブロックを外部記憶部から読み込んだ際に、データを分割したり複数を統合したり領域の追加をすることなく、前記通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、前記通信部に直接データ転送して外部のネットワークに送信する
請求項１記載のデバイス間データ転送装置。
【請求項３】
プログラム実行部は、デバイス間でデータを直接転送する際には、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとし、前記データ転送サイズからは前記個々のデバイスで必要となる情報領域を差し引いたサイズでファイルを分割して外部記憶部で読み書きを行なう
請求項１または請求項２記載のデバイス間データ転送装置。
【請求項４】
プログラム実行部は、通信部と外部記憶部とのＩ／Ｏサイズに基づいて、データにパディング領域を付加することによって、前記通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとしてデータ転送を行う
請求項１から請求項３のうちのいずれか１項に記載のデバイス間データ転送装置。
【請求項５】
通信部と外部記憶部とを具備して外部ネットワークに接続されたデバイス間データ転送装置であって、
ＯＳによってあらかじめ指定されたセッションに関するファイルのブロックを前記外部記憶部から読み込んだ際に、データを分割したり複数を統合したり領域の追加をすることなく、前記通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、前記通信部に直接データ転送して外部のネットワークに送信するプログラム実行部を備えた
ことを特徴とするデバイス間データ転送装置。
【請求項６】
通信部と外部記憶部とを具備して外部ネットワークに接続された計算機システムであって、
ＯＳによってあらかじめ指定されたセッションに関するパケットデータを前記外部ネットワークを介して前記通信部で受信した場合に、前記パケットデータを分割したり統合したり領域の削除をすることなく、前記通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、前記外部記憶部の空き領域に直接データ転送して前記外部記憶部にファイルを書き込むプログラム実行部を備えた
ことを特徴とする計算機システム。
【請求項７】
ＯＳによってあらかじめ指定されたセッションに関するパケットデータを外部ネットワークを介して通信部で受信した場合に、前記パケットデータを分割したり統合したり領域の削除をすることなく、前記通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、外部記憶部の空き領域に直接データ転送して前記外部記憶部にファイルを書き込む
ことを特徴とするデバイス間データ転送方法。
【請求項８】
通信部と外部記憶部とを具備して外部ネットワークに接続されたコンピュータに、
ＯＳによってあらかじめ指定されたセッションに関するパケットデータを前記外部ネットワークを介して前記通信部で受信した場合に、前記パケットデータを分割したり統合したり領域の削除をすることなく、前記通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、前記外部記憶部の空き領域に直接データ転送して前記外部記憶部にファイルを書き込む処理を
実行させるためのデバイス間データ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス間でデータ転送を行うデバイス間データ転送装置、計算機システム、デバイス間データ転送方法およびデバイス間データ転送プログラムに関する。
【背景技術】
【０００２】
コンピュータシステムにおいては、接続されている各種デバイスと主記憶装置（メインメモリ）との間で、オペレーティングシステム（ＯＳ）がソフトウェア制御によって必要なデータのやり取りを行なう。このとき、デバイスからデータを読み込み転送する処理やデバイスへデータを書き込み転送する処理では、主記憶装置にデータを一時的に記憶させるため、デバイス間でデータを直接転送していない。【０００３】
主記憶装置とデバイスとの間のデータ転送の際には、データ転送の固定サイズやサイズの上限がデバイス毎に定められている。以下では、このサイズのことを、デバイスのＩ／Ｏサイズと呼ぶことにする。【０００４】
例えば、ネットワークデバイスとして広く用いられているイーサネット（登録商標）の場合、ＭＴＵ（ｍａｘｉｍｕｍ  ｔｒａｎｓｆｅｒ  ｕｎｉｔ）と呼ばれる１５００バイトが上限として用いられている。このため、これよりも大きいサイズのデータをやり取りする場合には、データをこの１５００バイトごとの大きさに分割する必要がある。なお、インターネットなどのネットワークを介するデータ転送の場合には、外部の機器とのデータの通信になるため、転送されるデータの先頭にはヘッダと呼ばれる領域がある。そして、この領域に通信相手のアドレスやデータのチェックサムなどが書き込まれている。【０００５】
ハードディスクドライブなどの外部記憶装置の場合、セクタと呼ばれる５１２バイトがＩ／Ｏサイズとして用いられている。さらに、外部記憶装置のＩ／Ｏサイズには、ＯＳによる制約が架せられることがある。例えば、ＯＳは、主記憶装置の記憶領域を所定の大きさに分けて管理しており、この大きさで外部記憶装置とのデータ転送を行うように制御するためである。この大きさは、例えば４０９６バイトと定められている。ネットワークデバイスの場合と同様に、これよりも大きいサイズのデータをやり取りする場合には、データをこの４０９６バイトごとの大きさに分割する必要がある。【０００６】
近年、インターネットの普及により、ネットワーク経由のデータのやり取りが頻繁に行なわれるようになっている。例えば、電子メールサーバでは電子メールの送受信が行なわれる。また、ウェブサーバでは、クライアントからのリクエストに応じて、サーバ上のコンテンツ（画像や文書／ＨＴＭＬのファイルなど）を外部記憶装置などから取得し、クライアントに送信する。【０００７】
特にウェブサーバでは、ハードディスクドライブから読み込んだデータをネットワークデバイスに転送する処理を行うことが多い。このように、データを加工せずにデバイスから別のデバイスにデータを送信する最適化手法が特許文献１に記載されている。【０００８】
特許文献１に記載されている手法では、外部記憶装置から読み込んだデータに対してＯＳ内でヘッダ情報の付加やデータ分割などの処理を行なったのちに、ネットワークデバイスにデータ転送している。【０００９】
また、特許文献２には、ＣＰＵが主記憶装置上のデータに頻繁にアクセスする必要があるような処理を実行している最中にも通信手段とストレージデバイスとの間で円滑なデータ転送を行うことができる情報処理装置が記載されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平９−１７１４６８号公報
【特許文献２】特開２００４−３６２０９５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
一般的な手法や特許文献１に記載された方法では、デバイス間のデータ転送であっても２回以上のデータ転送処理を実行しているため、データバス帯域の圧迫や遅延の増加が発生する原因となる。これは、デバイスとのデータ転送には必ず主記憶装置を利用するためである。【００１２】
また、一般的な手法や特許文献１に記載された方法では、データの先頭へのヘッダ領域追加やデータ分割、データ統合を行う処理に伴って、メモリコピーする処理が発生する。これは、デバイスによってはヘッダを用いる場合があることで必要な情報が異なることと、データ転送の際のデータサイズがデバイス毎に異なるためである。【００１３】
特許文献２に記載された方法によれば、通信手段とストレージ手段との間で直接データ転送を行うことができるが、上記のようなデバイス毎に定められたデータサイズの違いについては考慮されていない。【００１４】
そこで、本発明は、デバイス間で直接データを転送する際に、デバイス上でのデータ処理を少なくすることができる計算機システム、デバイス間データ転送装置、計算機システム、デバイス間データ転送方法およびデバイス間データ転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明によるデバイス間データ転送装置は、通信部と外部記憶部とを具備して外部ネットワークに接続されたデバイス間データ転送装置であって、ＯＳによってあらかじめ指定されたセッションに関するパケットデータを外部ネットワークを介して通信部で受信した場合に、パケットデータを分割したり統合したり領域の削除をすることなく、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、外部記憶部の空き領域に直接データ転送して外部記憶部にファイルを書き込むプログラム実行部を備えたことを特徴とする。【００１６】
本発明によるデバイス間データ転送装置は、通信部と外部記憶部とを具備して外部ネットワークに接続されたデバイス間データ転送装置であって、ＯＳによってあらかじめ指定されたセッションに関するファイルのブロックを外部記憶部から読み込んだ際に、データを分割したり複数を統合したり領域の追加をすることなく、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、通信部に直接データ転送して外部のネットワークに送信するプログラム実行部を備えたことを特徴とする。【００１７】
本発明による計算機システムは、通信部と外部記憶部とを具備して外部ネットワークに接続された計算機システムであって、ＯＳによってあらかじめ指定されたセッションに関するパケットデータを外部ネットワークを介して通信部で受信した場合に、パケットデータを分割したり統合したり領域の削除をすることなく、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、外部記憶部の空き領域に直接データ転送して外部記憶部にファイルを書き込むプログラム実行部を備えたことを特徴とする。【００１８】
本発明によるデバイス間データ転送方法は、ＯＳによってあらかじめ指定されたセッションに関するパケットデータを外部ネットワークを介して通信部で受信した場合に、パケットデータを分割したり統合したり領域の削除をすることなく、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、外部記憶部の空き領域に直接データ転送して外部記憶部にファイルを書き込むことを特徴とする。【００１９】
本発明によるデバイス間データ転送プログラムは、通信部と外部記憶部とを具備して外部ネットワークに接続されたコンピュータに、ＯＳによってあらかじめ指定されたセッションに関するパケットデータを外部ネットワークを介して通信部で受信した場合に、パケットデータを分割したり統合したり領域の削除をすることなく、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、外部記憶部の空き領域に直接データ転送して外部記憶部にファイルを書き込む処理を実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、デバイス間で直接データを転送する際に、デバイス上でのデータ処理を少なくすることができる。
【図面の簡単な説明】
【００２１】
【図１】本発明によるデバイス間データ転送装置の構成の一例を示すブロック図である。
【図２】データ管理部４０３の構造の一例を示す説明図である。
【図３】パディング領域の一例を示す説明図である。
【図４】パディング領域の一例を示す説明図である。
【図５】ネットワーク５００を介してクライアントからファイルを受信し、外部記憶部３００に書き込む際の処理例を示すフローチャートである。
【図６】サーバプログラム１１０が外部記憶部３００からファイルを読み込んで通信部４００とネットワーク５００とを介してクライアントに送信する際の処理例を示すフローチャートである。
【図７】デバイス間データ転送装置の最小の構成例を示すブロック図である。
【発明を実施するための形態】
【００２２】
実施形態１．
次に、本発明の実施形態について図面を参照して説明する。図１は、本発明によるデバイス間データ転送装置の構成の一例を示すブロック図である。図１を参照すると、本実施形態のデバイス間データ転送装置は、少なくともプログラム実行部１００とデータ転送部２００と外部記憶部３００と通信部４００とを含む。デバイス間データ転送装置は、具体的には、プログラム制御により動作するパーソナルコンピュータなどの情報処理装置によって実現される。なお、本発明は計算機システムに適用される。なお、この場合、計算機システムは、１台または複数台の情報処理装置によって実現される。
【００２３】
プログラム実行部１００は、オペレーティングシステム（ＯＳ）１２０やサーバプログラム１１０を実行する主体である。プログラム実行部１００は、具体的には、プログラムに従って動作するＣＰＵとメモリなどの主記憶装置とによって実現される。本実施形態においては、プログラム実行部１００は、サーバプログラム１１０に従って処理を実行するが、プログラムはこれに限られる訳ではない。例えば、本実施形態で示すデバイス間データ転送装置をクライアント装置に適用してもよい。以下、サーバプログラム１１０やＯＳ１２０が処理を実行するとの表現を用いるが、具体的には、プログラム実行部１００がプログラムに従って処理を実行することによって実現される。
【００２４】
サーバプログラム１１０は、ネットワーク５００を介してクライアント（図示せず）と通信し、クライアントからのリクエストに応じてファイルの送受信をするためのプログラムである。なお、本実施形態では、クライアントは、具体的には、パーソナルコンピュータなどの情報処理装置によって実現される。
【００２５】
ＯＳ１２０は、少なくともデバイスドライバ１２１とファイル管理手段１２２とを含む。ＯＳ１２０は、複数のプログラムのスケジューリングや、デバイスを制御する特権プログラムである。
【００２６】
例えば、サーバプログラム１１０は、ファイルの読み書きや、ネットワーク５００を介してデータを送受信する際には、それらの要求をＯＳ１２０に対して出力する。そして、ＯＳ１２０は、その要求を適切に処理するために、デバイスドライバ１２１を用いてデバイスを制御する。以下、外部記憶部３００や通信部４００が処理を実行するとの表現を用いるが、具体的には、デバイスドライバ１２１に従ってＣＰＵが動作し、そのＣＰＵの指示に従って、外部記憶部３００や通信部４００が動作する。なお、外部記憶部３００や通信部４００は、データ転送用のプロセッサを搭載し、それらのプロセッサが処理を実行してもよい。
【００２７】
ファイル管理手段１２２は、少なくとも外部記憶部３００（後述）が保存しているファイル名やファイルを格納しているストレージ部３０１（後述）上の位置、外部記憶部３００の空き領域などの情報を管理する機能を備えている。また、ファイル管理手段１２２は、新規のファイルを外部記憶部３００に書き込む際に空き領域を探したり、既存のファイルを読み出す際にそのファイルを格納している位置を探したりするために用いられるが、ファイル管理手段１２２の用途はこれらに限られる訳ではない。
【００２８】
データ転送部２００は、各種デバイスと接続されており、デバイス間のデータ転送や、デバイスと主記憶装置（図示せず）との間のデータ転送を行なう機能を備えている。データ転送部２００は、具体的には、ＰＣＩやＰＣＩ  Ｅｘｐｒｅｓｓなどを用いたバスによって実現される。
【００２９】
外部記憶部３００は、少なくともストレージ部３０１とデータ送受信部３０２とデータ書き換え部３０３とを含む。外部記憶部３００は、ファイルを読み書きする機能を備えている。
【００３０】
また、外部記憶部３００は、プログラム実行部１００で実行される実行プログラムや、クライアントからのリクエストに応じて送信するファイルを保存している。更に、外部記憶部３００は、クライアントから受信したファイルを保存することもできる。外部記憶部３００は、具体的には、ＨＤＤ（ハードディスクドライブ）などによって実現される。
【００３１】
ストレージ部３０１は、実際にファイルを格納する媒体である。外部記憶部３００において、ストレージ部３０１は、セクタと呼ばれる所定のサイズで分割されて管理されている。ストレージ部３０１は、読み書きする全てのファイルをこのセクタを１つ以上使って格納している。１セクタの大きさとしては、５１２バイトが広く使われている。
【００３２】
データ送受信部３０２は、データ転送部２００と接続されており、主記憶装置や他のデバイスとのデータ転送を行う機能を備えている。また、データ送受信部３０２は、ＯＳ１２０から要求を受信したり、ＯＳ１２０に割り込み要求を送信する機能を備えている。
【００３３】
データ書き換え部３０３は、他のデバイスが送信したデータのヘッダ情報の書き換えや、後述するパディング領域の追加／削除を行なう機能を備えている。
【００３４】
なお、本実施形態では、ファイルを読み書きする用途で外部記憶部３００を使用しているが、外部記憶部３００の使用方法はそれに限られるわけではない。例えば、外部記憶部３００は、プログラム実行部１００が実行する各種プログラムを記憶していてもよい。
【００３５】
通信部４００は、少なくともデータ送受信部４０１とデータ書き換え部４０２とデータ管理部４０３とを含む。通信部４００は、ネットワーク５００を介して外部の機器やクライアントプログラムとの通信を行なう機能を備えている。なお、クライアントプログラムとの通信を行うとの表現を用いるが、具体的には、クライアントのＣＰＵがプログラムに従って処理を実行することによって実現される。
【００３６】
データ管理部４０３は、具体的には、通信部４００が備える記憶媒体によって実現される。データ管理部４０３は、例えば、ＯＳ１２０が送信する要求に含まれる情報などを管理する。データ書き換え部４０２は、データ管理部４０３が管理する情報を参照して、データの書き換えを行う機能を備えている。
【００３７】
図２は、データ管理部４０３の構造の一例を示す説明図である。データ管理部４０３は、図２に示す構造で複数エントリを保持することも可能である。図２によると、データ管理部４０３は、管理するデータとして、送信元アドレスと、空き領域位置と、パケットデータまたはパケットデータを保持している領域へのポインタと、終了フラグとを含む。なお、データ管理部４０３は、図２に示す例に限らず、これ以外の構造であってもよい。
【００３８】
送信元アドレスには、サーバプログラム１１０が外部のクライアントと通信していて、そのクライアントが送信したファイルを受信する際にクライアントのアドレス（ＩＰアドレスなどのセッションを識別するためのＩＤ）が書き込まれる。この情報は、ＯＳ１２０から出力され、通信部４００から外部記憶部３００にファイルのデータを直接転送するために用いられる。
【００３９】
空き領域位置は、クライアントが送信したファイルを書き込むための外部記憶部３００上の空き領域の場所を記したものである。この情報は、ＯＳ１２０から出力される。
【００４０】
パケットデータは、クライアントが送信したファイルを、ネットワーク５００上での通信フォーマットであるパケット形式で受信したときのそのデータそのものである。外部記憶部３００にこのデータを転送して書き込みが完了するまでは、通信部４００上でパケットを保持する。外部記憶部３００で書き込みが完了すると、外部記憶部３００が完了の通知を送信するので、通信部４００は、通知の受信によって、データ管理部４０３の終了フラグを立てるように更新する。また、ＯＳ１２０は、終了フラグが立っているか否かを判断し、終了フラグが立っていれば、パケットデータを解放し、当該エントリを削除する。
【００４１】
通信部４００における通信では、パケットと呼ばれるデータ長に分割してデータを送受信する。このとき、パケットの最大長はＭＴＵと呼ばれる。また、パケットには送受信のアドレス（ＩＰアドレスなど）がパケットの先頭に書き込まれている。この領域のことをパケットヘッダという。
【００４２】
データを２つのデバイス間で直接転送するために、本実施形態では、データ転送時の１ブロックの大きさを、通信部４００のＩ／Ｏサイズ（つまり、ＭＴＵ）の整数倍とする。また、通信部４００のＩ／Ｏサイズの整数倍の値から、外部記憶部３００のＩ／Ｏサイズの整数倍の値までには、パディング領域を設ける。なお、パディング領域とは、データ量の不足を補うためのデータ領域である。
【００４３】
図３および図４は、パディング領域の一例を示す説明図である。図３の例では、外部記憶部３００のＩ／Ｏサイズが５１２バイトであり、通信部４００のＩ／Ｏサイズ（ＭＴＵ）が１,５００バイトである。そのため、ブロックサイズが１,５００バイトであり、１,５００バイトから１５３６バイト（＝５１２×３）まではパディング領域である。
【００４４】
また、図４の例では、外部記憶部３００のＩ／Ｏサイズが４,０９６バイトであり、通信部４００のＩ／Ｏサイズ（ＭＴＵ）が１,５００バイトである。そのため、ブロックサイズが３,０００バイトであり、３,０００バイト（＝１５００×２）から４,０９６バイトまではパディング領域である。
【００４５】
しかしながら、実際にデータを含む領域は、通信部４００のＩ／Ｏサイズからヘッダなどの管理情報領域を差し引いた領域である。以下、この大きさをデータサイズとする。図３の例では、ヘッダサイズが４０バイトなので、１４６０バイトがデータサイズとなる。また、前述の通り、最後の３６バイトはパディング領域であり、有用な情報を含まないダミーの領域となる。本実施形態では、前述したストレージ部３０１にファイルを格納する際には、ファイルをこのデータサイズに分割して管理し、読み書きする。
【００４６】
次に、このようにして予めブロックサイズ（以下、データ転送サイズとも呼ぶ）とデータサイズとを決定している場合の、通信部４００から外部記憶部３００へのファイル書き込みの流れを説明する。
【００４７】
図５は、ネットワーク５００を介してクライアントからファイルを受信し、外部記憶部３００に書き込む際の処理例を示すフローチャートである。
【００４８】
サーバとクライアントとが通信を始める際には、まず通信セッションを確立する場合がある。この通信プロトコルとしては、ＴＣＰ／ＩＰと呼ばれるプロトコルが広く用いられており、本実施形態でもＴＣＰ／ＩＰを用いてセッションを確立する場合を説明するが、これ以外のプロトコルを用いてもよい。
【００４９】
まず、クライアントがデバイス間データ転送装置（以下、単にサーバとも呼ぶ）に通信セッションを確立するリクエストを送信すると、サーバは、受信したリクエストに応じて、クライアントとの通信セッションを確立する（ステップＳ１０１）。
【００５０】
本実施形態では、クライアントが送信するリクエストの内容は、ファイルのアップロードであるものとする。そのため、クライアントは、アップロードのリクエストとともに、対象のファイルをサーバに送信する。すると、サーバがリクエストを受信し、サーバプログラム１１０は、受信したリクエストを解析する（ステップＳ１０２）。
【００５１】
次いで、サーバプログラム１１０は、ファイル名とクライアントのセッション情報（送信元アドレス）とともに、ファイル転送処理の要求をＯＳ１２０に出力する（ステップＳ１０３）。
【００５２】
次いで、ＯＳ１２０は、ファイル管理手段１２２が管理する情報を検索して、ブロックサイズ分の外部記憶部３００上の空き領域の位置情報を取得する。そして、ＯＳ１２０は、取得した空き領域の位置情報とクライアントのセッション情報とを（以下、転送情報とも呼ぶ）、通信部４００のデータ管理部４０３に登録する（ステップＳ１０４）。
【００５３】
次いで、通信部４００は、ネットワーク５００を介して、このセッションに関するパケットを受信する（ステップＳ１０５）。
【００５４】
次いで、通信部４００は、受信したパケットから送信元アドレスを特定し、特定した送信元アドレスに基づいてデータ管理部４０３を検索して、外部記憶部３００上の空き領域の位置情報を取得する（ステップＳ１０６）。
【００５５】
次いで、通信部４００は、取得した外部記憶部３００上の空き領域の位置へのデータの書き込み要求を、データ転送部２００を介して外部記憶部３００に送信する（ステップＳ１０７）。
【００５６】
このとき、パケットからパケットヘッダ領域を削除せずに残すようにする。このようにすることで、格納する際や格納したパケットを取得する際に、メモリコピーやデータの分割／統合をする必要がなくなり、デバイス上の処理負荷を減らすことができる。また、主記憶装置を経由させないデータ転送となるので、データ転送部２００の利用効率を上げることができる。
【００５７】
通信部４００から要求とともにデータ（パケット）を受信した外部記憶部３００は、指定された空き領域にデータを書き込む。例えば、ブロックサイズが１５３６バイトの場合には、外部記憶部３００は、３セクタ分だけストレージ部３０１に書き込む。このとき、データ転送サイズ以降については、外部記憶部３００は、パディング領域としてダミーのデータをストレージ部３０１に書き込む。そして、データの書き込みが完了すると、外部記憶部３００は、データ転送部２００を介して、通信部４００に書き込み終了のメッセージを送信する。
【００５８】
次いで、書き込み終了のメッセージを受信した通信部４００は、データ管理部４０３が管理するエントリの終了フラグを立てるようにデータ管理部４０３の記憶内容を更新する。その後、通信部４００は、ＯＳ１２０に割り込み要求を送信する（ステップＳ１０８）。
【００５９】
次いで、割り込み要求を受信したＯＳ１２０は、データ管理部４０３に登録した転送情報を削除する（ステップＳ１０９）。具体的には、ＯＳ１２０は、通信部４００のデータ管理部４０３を参照し、該当するエントリの終了フラグが立っているか否かを判断する。そして、終了フラグが立っている場合には、ＯＳ１２０は、当該セッションのファイルオフセットの位置を示す情報を更新する。
【００６０】
次いで、ＯＳ１２０は、外部記憶部３００内の新たな空き領域を検索する。そして、ＯＳ１２０は、検索した空き領域の位置情報をデータ管理部４０３に書き込み、終了フラグを削除してからパケットデータを解放する。
【００６１】
その後、サーバプログラム１１０は、セッションが終了したか否かを判断し（ステップＳ１１０）、終了していると判断した場合には、クライアントから受信したリクエストに基づく処理を終了する。また、終了していないと判断した場合には、サーバプログラム１１０は、処理をステップＳ１０４に移行し、引き続き受信するパケットに対して、ステップＳ１０４以降の処理を実行する。
【００６２】
なお、上記のようにパケットのデータ書き込み完了毎にＯＳ１２０に割り込み要求を送信する代わりに、所定時間間隔で割り込み要求を送信するようにすることも可能である。この場合、所定時間の間に外部記憶部３００に書き込んだネットワークデータ（パケットデータ）の全てが解放の対象となる。
【００６３】
このように、本実施形態では、通信部４００からデータ転送バス２００を介して外部記憶部３００に直接データを転送するため、主記憶装置への転送処理がなくなり、バスの利用効率を向上させ、転送遅延時間を短縮することができる。
【００６４】
なお、外部記憶部３００内に一定の空き領域を常に確保しておき、ＯＳ１２０が、通信部４００に対してこの空き領域を割り当てるようにしてもよい。領域の大きさは任意であるが、例えば、通信負荷が高い（スループットが大きい）ときでも領域が枯渇しないくらいの充分な大きさを割り当てる。また、この領域は必要に応じて追加できるものとする。この例において、サーバは、ネットワーク５００を介して受信したパケットを順次、この空き領域に対してデータ転送して書き込む。そして、データ管理部４０３には、送信元アドレスと、ファイルのオフセット値と、書き込んだ空き領域の位置の情報とを記録する。
【００６５】
次いで、ＯＳ１２０は、空き領域が少なくなった際に通信部４００が送信する割り込み要求に応じて、または所定時間間隔でポーリングして、このデータ管理部４０３の情報を参照してファイルの管理情報をＯＳ１２０内のファイル管理手段１２２に反映する。その後、ＯＳ１２０は、新たな空き領域を通信部４００に対して割り当てる。このようにすることで、上記の例と同様にバスの利用効率を向上させ、転送遅延時間を短縮することができるとともに、プログラム実行部１１０の負荷を軽減することができる。
【００６６】
以上のことから、本実施形態では、デバイス間で直接データ転送することができる。これは、デバイス上のデータを一時的にでも主記憶装置に書き込むことなくデータ転送しているからである。また、デバイス間で直接データ転送する際に、デバイス上でのメモリコピーなどのデータ処理負荷を軽減することができる。これは、データの先頭領域への情報追加や、デバイス毎のＩ／Ｏサイズの差を考慮したデータサイズを採用しているからである。具体的には、デバイス間データ転送装置は、データ転送時の１ブロックの大きさを、通信部４００のＩ／Ｏサイズの整数倍として、データ転送を行っている。また、必要に応じて通信部４００のＩ／Ｏサイズの整数倍の値から、外部記憶部３００のＩ／Ｏサイズの整数倍の値までには、パディング領域を設ける。
【００６７】
実施形態２．
第１の実施形態では、通信部４００から外部記憶部３００へのデータ転送処理について説明した。本実施形態では、外部記憶部３００から通信部４００へのデータ転送処理の流れを説明する。なお、第２の実施形態の構成は、第１の実施形態の構成と同じである。
【００６８】
図６は、サーバプログラム１１０が外部記憶部３００からファイルを読み込んで通信部４００とネットワーク５００とを介してクライアントに送信する際の処理例を示すフローチャートである。
【００６９】
まず、クライアントがサーバに通信セッションを確立するリクエストを送信すると、サーバは、受信したリクエストに応じて、クライアントとの通信セッションを確立する（ステップＳ２０１）。
【００７０】
本実施形態では、クライアントが送信するリクエストの内容は、ファイルのダウンロードであるものとする。そのため、クライアントは、ファイルをダウンロードするリクエストとともに、対象のファイルを特定する情報をサーバに送信する。すると、サーバプログラム１１０は、受信したリクエストを解析する（ステップＳ２０２）。
【００７１】
次いで、サーバプログラム１１０は、ファイル名とクライアントのセッションの情報とともに、ファイル送信処理の要求をＯＳ１２０に出力する（ステップＳ２０３）。
【００７２】
次いで、ＯＳ１２０は、ファイル管理手段１２２が管理する情報を検索して、外部記憶部３００上にある対象ファイルの先頭のセクタ番号を特定する。そして、ＯＳ１２０は、特定した位置情報（先頭のセクタ番号）とクライアントの情報とを対応付けて（以下、転送情報とも呼ぶ）通信部４００に登録する（ステップＳ２０４）。更に、ＯＳ１２０は、外部記憶部３００に対して、特定した位置のファイルデータブロックを読み込み、通信部４００に転送する指示を送信する。
【００７３】
ＯＳ１２０から指示を受信すると、外部記憶部３００は、指示に基づく位置からファイルデータブロックを読み込み、データ転送バス２００を介して通信部４００にデータ転送する（ステップＳ２０６）。このとき、読み込んだファイルデータブロックには、過去のヘッダ情報とパディング領域とが残っており、外部記憶部３００は、パディング領域を削除するがヘッダ領域を削除することなく、そのままデータ転送する。ただし、外部記憶部３００は、ファイルデータブロックが格納されている位置情報（ストレージ上のセクタ番号など）をヘッダ領域に書き込んでデータ転送する。
【００７４】
次いで、データを受信した通信部４００は、ステップＳ２０４においてＯＳ１２０が登録した位置情報と対応づけられたクライアント情報に基づいて、ヘッダ領域を書き換える。なお、ステップＳ２０６でなく、この際に通信部４００がパディング領域を削除するようにしてもよい。その後、通信部４００は、ネットワーク５００を介して、データをクライアントに送信する（ステップＳ２０７）。なお、この際に通信部４００は、使用するネットワークプロトコルに応じて、チェックサムなどのヘッダ情報を計算して書き込むこともある。
【００７５】
また、ヘッダ領域の書き込み処理については、外部記憶部３００が実行するようにしてもよい。この場合には、例えば、ＯＳ１２０が外部記憶部３００にもセッション情報（クライアントの情報）を送信し、外部記憶部３００は、受信したセッション情報に基づいてヘッダ領域を書き換え、データ転送バス２００を介して通信部４００に送信する。そして、外部記憶部３００からファイルブロックデータを受信した通信部４００は、前述の書き込み処理を行なわずに、ネットワーク５００を介してそのままクライアントに送信する。
【００７６】
次いで、パケットの送信が完了すると、通信部４００は、ＯＳ１２０に割り込み要求を送信する（ステップＳ２０８）。
【００７７】
次いで、割り込み要求を受信したＯＳ１２０は、通信部４００のデータ管理部４０３上に書き込んだ当該セッションの転送情報を削除する（ステップＳ２０９）。
【００７８】
次いで、ＯＳ１２０は、ステップＳ２０７で扱ったファイルデータブロックがファイルの最後であるか否か、すなわち、対象ファイルを構成する残りのファイルデータブロックがあるか否かを判断する（ステップＳ２１０）。
【００７９】
ステップＳ２１０において、残りのファイルデータブロックがあると判断した場合、ＯＳ１２０は、ファイルの次のブロックの外部記憶部３００上でのセクタ番号を検索し、その位置の情報とクライアントの情報とを通信部４００に登録する。その後、ＯＳ１２０は、ステップＳ２０４に処理を移行し、ステップＳ２０４以降の処理を実行する。
【００８０】
一方、ステップＳ２１０において、残りのファイルデータブロックがないと判断した場合、ＯＳ１２０は、サーバプログラム１１０に制御を戻すかシグナルを上げ、ファイルの転送が完了したことを通知する。その後、サーバプログラム１１０は、クライアントとのセッションを終了する（ステップＳ２１１）。
【００８１】
このようにして、本実施形態では、通信部４００からデータ転送バス２００を介して外部記憶部３００に直接データを転送するため、主記憶装置へのデータ転送がなくなり、バスの利用効率を向上させ、転送遅延時間を短縮することができる。
【００８２】
ここで、例えば、ファイルを構成するファイルデータブロックがストレージ部３０１上で連続して格納されている場合を想定する。この場合、上記のようにパケットのデータ送信完了毎にＯＳ１２０に割り込み要求を送信する代わりに、通信部４００で自動的にセクタ番号を増加させて次のファイルデータブロックを読み込むようにすることも可能である。すなわち、通信部４００が、連続するセクタ番号を特定し、次のファイルデータブロックを読み込む指示を外部記憶部３００に送信することで、ステップＳ２０６以降の処理を実行することができる。したがって、通信部４００は、ファイルの送信が終了したときのみＯＳ１２０に割り込み要求を送信することになる。
【００８３】
また、ファイルを構成するファイルデータブロックがストレージ部３０１上で連続して格納されている場合、上記のようにパケットのデータ送信完了毎にＯＳ１２０に割り込み要求を送信する代わりに、外部記憶部３００が自動的にセクタ番号を増加させて次のブロックを読みこむようにすることも可能である。この場合も、通信部４００は、ファイルの送信が終了したときのみＯＳ１２０に割り込み要求を送信することになる。
【００８４】
以上のことから、本実施形態では、デバイス間で直接データ転送する際に、デバイス上でのメモリコピーなどのデータ処理負荷を軽減することができる。これは、データの先頭領域への情報追加や、デバイス毎のＩ／Ｏサイズの差を考慮したデータサイズを採用しているからである。具体的には、デバイス間データ転送装置は、データ転送時の１ブロックの大きさを、通信部４００のＩ／Ｏサイズの整数倍として、データ転送を行っている。また、必要に応じて通信部４００のＩ／Ｏサイズの整数倍の値から、外部記憶部３００のＩ／Ｏサイズの整数倍の値までには、パディング領域を設ける。また、デバイス間データ転送装置は、受信したデータのヘッダ領域を削除することなく格納し、格納したデータを外部に送信する場合には、送信先を示す情報に基づいてデータのヘッダ領域を書き換えている。
【００８５】
以上のように、本発明は、デバイス間データ転送装置、デバイス間データ転送方法およびデバイス間データ転送プログラムに関し、特にデバイスの処理能力が低くても効率よくデータ転送が可能なデバイス間データ転送装置、デバイス間データ転送方法およびデバイス間データ転送プログラムに関する。
【００８６】
次に、本発明によるデバイス間データ転送装置の最小構成について説明する。図７は、デバイス間データ転送装置の最小の構成例を示すブロック図である。図７に示すように、デバイス間データ転送装置は、最小の構成要素として、プログラム実行部１００と、外部記憶部３００と、通信部４００とを含む。
【００８７】
図７に示す最小構成のデバイス間データ転送装置において、ＯＳによってあらかじめ指定されたセッションに関するパケットデータを外部ネットワークを介して通信部４００で受信した場合を想定する。この場合、プログラム実行部１００は、パケットデータを分割したり統合したり領域の削除をすることなく、通信部４００のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、外部記憶部３００の空き領域に直接データ転送して外部記憶部３００にファイルを書き込む。
【００８８】
従って、最小構成のデバイス間データ転送装置によれば、デバイス毎のＩ／Ｏサイズの差を考慮したデータサイズを採用しているため、データの先頭へのヘッダ領域追加やデータ分割、データ統合を行う処理に伴うメモリコピーする処理を行う必要がなくなる。そのため、デバイス間で直接データを転送する際に、デバイス上でのデータ処理を少なくすることができる。
【００８９】
なお、本実施形態では、以下の（１）〜（５）に示すようなデバイス間データ転送装置の特徴的構成が示されている。
【００９０】
（１）デバイス間データ転送装置は、通信部（例えば、通信部４００）と外部記憶部（例えば、外部記憶部３００）とを具備して外部ネットワーク（例えば、ネットワーク５００）に接続されたデバイス間データ転送装置であって、ＯＳ（例えば、ＯＳ１２０）によってあらかじめ指定されたセッションに関するパケットデータを外部ネットワークを介して通信部で受信した場合に、パケットデータを分割したり統合したり領域の削除をすることなく、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、外部記憶部の空き領域に直接データ転送して外部記憶部にファイルを書き込むプログラム実行部（例えば、プログラム実行部１００）を備えるように構成されていてもよい。
【００９１】
（２）デバイス間データ転送装置において、プログラム実行部は、ＯＳによってあらかじめ指定されたセッションに関するファイルのブロックを外部記憶部から読み込んだ際に、データを分割したり複数を統合したり領域の追加をすることなく、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、通信部に直接データ転送して外部のネットワークに送信するように構成されていてもよい。
【００９２】
（３）デバイス間データ転送装置において、プログラム実行部は、デバイス間でデータを直接転送する際には、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとし、データ転送サイズからは個々のデバイスで必要となる情報領域（例えば、ヘッダ領域）を差し引いたサイズでファイルを分割して外部記憶部で読み書きを行なうように構成されていてもよい。
【００９３】
（４）デバイス間データ転送装置において、プログラム実行部は、通信部と外部記憶部とのＩ／Ｏサイズに基づいて、データにパディング領域を付加することによって、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとしてデータ転送を行うように構成されていてもよい。
【００９４】
（５）デバイス間データ転送装置は、通信部（例えば、通信部４００）と外部記憶部（例えば、外部記憶部３００）とを具備して外部ネットワーク（例えば、ネットワーク５００）に接続されたデバイス間データ転送装置であって、ＯＳによってあらかじめ指定されたセッションに関するファイルのブロックを外部記憶部から読み込んだ際に、データを分割したり複数を統合したり領域の追加をすることなく、通信部のＩ／Ｏサイズの整数倍をデータ転送サイズとして、主記憶装置を介することなく、通信部に直接データ転送して外部のネットワークに送信するプログラム実行部（例えば、プログラム実行部１００）を備えたことを特徴とするデバイス間データ転送装置。
【００９５】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００９６】
この出願は、２０１０年７月２３日に出願された日本特許出願２０１０−１６５６９３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００９７】
本発明は、情報処理装置などにおいて、デバイス間のデータ転送による負荷を軽減する用途に適用可能である。
【符号の説明】
【００９８】
１００  プログラム実行部
１１０  サーバプログラム
１２０  オペレーティングシステム（ＯＳ）
１２１  デバイスドライバ
１２２  ファイル管理手段
２００  データ転送部
３００  外部記憶装置
３０１  ストレージ部
３０２  データ送受信部
３０３  データ書き換え部
４００  通信部
４０１  データ送受信部
４０２  データ書き換え部
４０３  データ管理部
５００  ネットワーク
【図１】
2012011253.tif 000003
【図２】
2012011253.tif 000004
【図３】
2012011253.tif 000005
【図４】
2012011253.tif 000006
【図５】
2012011253.tif 000007
【図６】
2012011253.tif 000008
【図７】
2012011253.tif 000009
【国際調査報告】
2012011253.tif 000010
2012011253.tif 000011
2012011253.tif 000012
2012011253.tif 000013