(57)【特許請求の範囲】
【請求項１】
ファイル・アクセス方法であって、
プロセスからファイル・アクセス要求を受信するステップであって、前記ファイル・アクセス要求は、ファイル識別子を含み、前記ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される、ステップと、
第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された前記第1の仮想アドレス空間にしたがって、前記第1の物理アドレス空間にアクセスするステップであって、前記第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、前記第1の物理アドレス空間は、ファイル・システムを格納するとともに、メモリ空間の一部になっている、ステップと、
前記目標ファイルの前記ファイル識別子にしたがって前記第1の物理アドレス空間から前記目標ファイルのインデックス・ノードを取得するステップであって、前記インデックス・ノードは、前記目標ファイルのファイル・ページ・テーブル情報を含む、ステップと、
前記インデックス・ノードに含まれる前記目標ファイルの前記ファイル・ページ・テーブル情報にしたがって前記目標ファイルのファイル・ページ・テーブルを取得するステップであって、前記ファイル・ページ・テーブルは、前記第1の物理アドレス空間の中の第2の物理アドレス空間を記録し、前記目標ファイルのデータ・ページは、前記第2の物理アドレス空間の中に格納され、前記目標ファイルの前記データ・ページは、ファイル・データを格納するのに使用される、ステップと、
前記第2の物理アドレス空間にしたがって前記目標ファイルにアクセスするステップとを含む、
方法。
【請求項２】
前記第2の物理アドレス空間にしたがって前記目標ファイルにアクセスするステップは、
前記目標ファイルに第2の仮想アドレス空間を割り当てるステップであって、前記第2の仮想アドレス空間は、プライベート空間の一部になっており、前記プライベート空間は、前記プロセスに割り当てられるとともに前記オペレーティング・システムの前記ユーザ空間の中に存在し、前記第2の仮想アドレス空間は、隣接アドレス空間である、ステップと、
前記第2の物理アドレス空間と前記第2の仮想アドレス空間との間に第2のマッピング関係を確立するステップと、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルにアクセスするステップとを含む、請求項１に記載の方法。
【請求項３】
前記第2の物理アドレス空間と前記第2の仮想アドレス空間との間に第2のマッピング関係を確立するステップは、
前記第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに、前記目標ファイルの前記ファイル・ページ・テーブルをリンクさせることによって前記第2のマッピング関係を確立するステップを含む、請求項２に記載の方法。
【請求項４】
前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルにアクセスするステップは、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに読み出し動作を実行するステップと、
前記読み出し動作によって読み出されるべきデータに対応する仮想アドレスが、前記目標ファイルに対応する仮想アドレス空間の中に含まれていない場合には、前記読み出し動作を終了するステップとを含む、請求項２又は３に記載の方法。
【請求項５】
前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルにアクセスするステップは、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに書き込み動作を実行するステップと、
前記書き込み動作によって書き込まれるべきデータに対応する仮想アドレスが、前記第2の仮想アドレス空間に含まれていない場合には、前記書き込み動作を終了するステップとを含む、請求項２又は３に記載の方法。
【請求項６】
当該方法は、さらに、
前記第1の仮想アドレス空間と前記第1の物理アドレス空間との間の前記第1のマッピング関係をカーネル空間において確立するステップと、前記第1のマッピング関係に対応するマッピング・ページ・テーブルを、前記カーネル空間に対応するプロセス・ページ・テーブルに格納するステップとを含み、
前記プロセスから前記ファイル・アクセス要求を受信するステップの後に、当該方法は、さらに、
前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルが、前記第1のマッピング関係を記録していない場合に、前記第1のマッピング関係に対応しているとともに前記カーネル空間の中に格納されている前記マッピング・ページ・テーブルを、前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルにリンクさせるステップを含む、請求項１乃至５のいずれか１項に記載の方法。
【請求項７】
ファイル・アクセス装置であって、
プロセスからファイル・アクセス要求を受信するように構成される受信モジュールであって、前記ファイル・アクセス要求は、ファイル識別子を含み、前記ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される、受信モジュールと、
第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された第1の仮想アドレス空間にしたがって、前記第1の物理アドレス空間にアクセスするように構成される第1のアクセス・モジュールであって、前記第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、前記第1の物理アドレス空間は、ファイル・システムを格納するとともに、メモリ空間の一部になっている、第1のアクセス・モジュールと、
前記目標ファイルのファイル識別子であって前記受信モジュールで受信される前記ファイル識別子にしたがって前記第1の物理アドレス空間から前記目標ファイルのインデックス・ノードを取得するように構成される取得モジュールであって、前記インデックス・ノードは、前記目標ファイルのファイル・ページ・テーブル情報を含み、
前記取得モジュールは、さらに、前記インデックス・ノードに含まれる前記目標ファイルの前記ファイル・ページ・テーブル情報にしたがって前記目標ファイルのファイル・ページ・テーブルを取得するように構成され、前記ファイル・ページ・テーブルは、前記第1の物理アドレス空間の中の第2の物理アドレス空間を記録し、前記目標ファイルのデータ・ページは、前記第2の物理アドレス空間に格納され、前記目標ファイルの前記データ・ページは、ファイル・データを格納するのに使用される、取得モジュールと、
前記取得モジュールで取得された前記ファイル・ページ・テーブルにより示される前記第2の物理アドレス空間にしたがって前記目標ファイルにアクセスするように構成される第2のアクセス・モジュールとを含む、
装置。
【請求項８】
前記第2のアクセス・モジュールは、
前記目標ファイルに第2の仮想アドレス空間を割り当てるように構成される割当ユニットであって、前記第2の仮想アドレス空間は、プライベート空間の一部になっており、前記プライベート空間は、前記プロセスに割り当てられるとともに前記オペレーティング・システムの前記ユーザ空間の中に存在し、前記第2の仮想アドレス空間は、隣接アドレス空間である、割当ユニットと、
前記割当ユニットによって割り当てられる前記第2の仮想アドレス空間と前記第2の物理アドレス空間との間に第2のマッピング関係を確立するように構成される確立ユニットと、
前記割当ユニットによって割り当てられる前記第2の仮想アドレス空間及び前記確立ユニットによって確立される前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルにアクセスするように構成されるアクセス・ユニットとを含む、請求項７に記載の装置。
【請求項９】
前記確立ユニットは、前記第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに、前記目標ファイルの前記ファイル・ページ・テーブルをリンクさせることによって前記第2のマッピング関係を確立するように構成される、請求項８に記載の装置。
【請求項１０】
前記割当ユニットによって割り当てられる前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記アクセス・ユニットは、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに読み出し動作を実行し、
前記読み出し動作によって読み出されるべきデータに対応する仮想アドレスが、前記目標ファイルに対応する仮想アドレス空間に含まれていない場合には、前記読み出し動作を終了するように構成される、請求項８又は９に記載の装置。
【請求項１１】
前記割当ユニットによって割り当てられる前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記アクセス・ユニットは、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに書き込み動作を実行し、
前記書き込み動作によって書き込まれるべきデータに対応する仮想アドレスが、前記第2の仮想アドレス空間に含まれていない場合には、前記書き込み動作を終了するように構成される、請求項８又は９に記載の装置。
【請求項１２】
当該装置は、さらに、
前記第1の仮想アドレス空間と前記第1の物理アドレス空間との間の前記第1のマッピング関係をカーネル空間において確立し、前記第1のマッピング関係に対応するマッピング・ページ・テーブルを、前記カーネル空間に対応するプロセス・ページ・テーブルの中に格納するように構成される確立モジュールと、
前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルが、前記第1のマッピング関係を記録していない場合に、前記確立モジュールによって確立される前記第1のマッピング関係に対応しているとともに前記カーネル空間に格納されている前記マッピング・ページ・テーブルを、前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルにリンクさせるように構成されるリンク・モジュールを含む、請求項７乃至１１のいずれか１項に記載の装置。
【請求項１３】
ストレージ・システムであって、
ファイル及びプログラムを格納するように構成されるメモリと、
前記プログラムを実行して、
プロセスからファイル・アクセス要求を受信するステップであって、前記ファイル・アクセス要求は、ファイル識別子を含み、前記ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される、ステップと、
第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された前記第1の仮想アドレス空間にしたがって、前記第1の物理アドレス空間にアクセスするステップであって、前記第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、前記第1の物理アドレス空間は、ファイル・システムを格納するとともに、メモリ空間の一部になっている、ステップと、
前記目標ファイルの前記ファイル識別子にしたがって前記第1の物理アドレス空間から前記目標ファイルのインデックス・ノードを取得するステップであって、前記インデックス・ノードは、前記目標ファイルのファイル・ページ・テーブル情報を含む、ステップと、
前記インデックス・ノードに含まれる前記目標ファイルの前記ファイル・ページ・テーブル情報にしたがって前記目標ファイルのファイル・ページ・テーブルを取得するステップであって、前記ファイル・ページ・テーブルは、前記第1の物理アドレス空間の中の第2の物理アドレス空間を記録し、前記目標ファイルのデータ・ページは、前記第2の物理アドレス空間の中に格納され、前記目標ファイルの前記データ・ページは、ファイル・データを格納するのに使用される、ステップと、
前記第2の物理アドレス空間にしたがって前記目標ファイルにアクセスするステップとを含むファイル・アクセス方法を実行する、
ように構成されるプロセッサとを含む、
ストレージ・システム。
【請求項１４】
前記プロセッサは、
前記目標ファイルに第2の仮想アドレス空間を割り当てるように構成され、前記第2の仮想アドレス空間は、プライベート空間の一部になっており、前記プライベート空間は、前記プロセスに割り当てられるとともに前記オペレーティング・システムの前記ユーザ空間の中に存在し、前記第2の仮想アドレス空間は、隣接アドレス空間であり、
前記第2の物理アドレス空間と前記第2の仮想アドレス空間との間の第2のマッピング関係を確立するように構成され、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルにアクセスするように構成される、請求項１３に記載のストレージ・システム。
【請求項１５】
前記プロセッサは、前記第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに、前記目標ファイルの前記ファイル・ページ・テーブルをリンクさせることによって前記第2のマッピング関係を確立するように構成される、請求項14に記載のストレージ・システム。
【請求項１６】
前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記プロセッサは、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに読み出し動作を実行し、
前記読み出し動作によって読み出されるべきデータに対応する仮想アドレスが、前記目標ファイルに対応する仮想アドレス空間に含まれていない場合には、前記読み出し動作を終了するように構成される、請求項１４又は１５に記載のストレージ・システム。
【請求項１７】
前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記プロセッサは、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに書き込み動作を実行し、
前記書き込み動作によって書き込まれるべきデータに対応する仮想アドレスが、前記第2の仮想アドレス空間に含まれていない場合には、前記書き込み動作を終了するように構成される、請求項１４又は１５に記載のストレージ・システム。
【請求項１８】
前記プロセッサは、さらに、
前記第1の仮想アドレス空間と前記第1の物理アドレス空間との間の前記第1のマッピング関係をカーネル空間において確立し、前記第1のマッピング関係に対応するマッピング・ページ・テーブルを、前記カーネル空間に対応するプロセス・ページ・テーブルの中に格納し、
前記プロセスから前記ファイル・アクセス要求を受信した後に、前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルが、前記第1のマッピング関係を記録していない場合に、前記第1のマッピング関係に対応しているとともに前記カーネル空間の中に格納されている前記マッピング・ページ・テーブルを、前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルにリンクさせるように構成される、請求項１３乃至１７のいずれか１項に記載のストレージ・システム。
【請求項１９】
1つ又は複数のコンピュータ実行可能な命令を含むコンピュータ・プログラムであって、前記1つ又は複数のコンピュータ実行可能な命令は、ストレージ・システムのプロセッサで実行されると、前記ストレージ・システムに、
プロセスからファイル・アクセス要求を受信するステップであって、前記ファイル・アクセス要求は、ファイル識別子を含み、前記ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される、ステップと、
第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された前記第1の仮想アドレス空間にしたがって、前記第1の物理アドレス空間にアクセスするステップであって、前記第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、前記第1の物理アドレス空間は、ファイル・システムを格納するとともに、メモリ空間の一部になっている、ステップと、
前記目標ファイルの前記ファイル識別子にしたがって前記第1の物理アドレス空間から前記目標ファイルのインデックス・ノードを取得するステップであって、前記インデックス・ノードは、前記目標ファイルのファイル・ページ・テーブル情報を含む、ステップと、
前記インデックス・ノードに含まれる前記目標ファイルの前記ファイル・ページ・テーブル情報にしたがって前記目標ファイルのファイル・ページ・テーブルを取得するステップであって、前記ファイル・ページ・テーブルは、前記第1の物理アドレス空間の中の第2の物理アドレス空間を記録し、前記目標ファイルのデータ・ページは、前記第2の物理アドレス空間の中に格納され、前記目標ファイルの前記データ・ページは、ファイル・データを格納するのに使用される、ステップと、
前記第2の物理アドレス空間にしたがって前記目標ファイルにアクセスするステップとを含むファイル・アクセス方法を実行させる、
コンピュータ・プログラム。
【請求項２０】
プログラムが記録されているコンピュータ読み取り可能な記憶媒体であって、前記プログラムは、コンピュータに、請求項１乃至６のいずれか１項に記載の方法を実行させる、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の複数の実施形態は、コンピュータ分野に関し、より詳細には、ファイル・アクセス方法及び装置、並びにストレージ・システムに関する。
【背景技術】
【０００２】
従来の技術では、カーネル空間においてのみファイル・システムにアクセスすることが可能である。あるプロセスでファイル・システム内の目標ファイルにアクセスする必要があるとき、システム・コールが行われる必要がある。ユーザ空間からカーネル空間へ切り換えることによって目標ファイルにアクセスすると、ファイル・アクセス速度に影響を与え、また、ソフトウェアの実行オーバーヘッドが比較的大きくなる。
【発明の概要】
【０００３】
したがって、ファイル・アクセスをユーザ空間で直接実行できる方法を提案する必要がある。
【０００４】
本発明の複数の実施形態は、ソフトウェアの実行オーバーヘッドを比較的小さくするとともにファイル・アクセスをユーザ空間で実行できるファイル・アクセス方法及び装置、並びにストレージ・システムを提供する。
【０００５】
第1の態様によれば、ファイル・アクセス方法が提供され、当該方法は、
プロセスからファイル・アクセス要求を受信するステップであって、前記ファイル・アクセス要求は、ファイル識別子を含み、前記ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される、ステップと、
第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された前記第1の仮想アドレス空間にしたがって、前記第1の物理アドレス空間にアクセスするステップであって、前記第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、前記第1の物理アドレス空間は、ファイル・システムを格納するとともに、メモリ空間の一部になっている、ステップと、
前記目標ファイルの前記ファイル識別子にしたがって前記第1の物理アドレス空間から前記目標ファイルのインデックス・ノードを取得するステップであって、前記インデックス・ノードは、前記目標ファイルのファイル・ページ・テーブル情報を含む、ステップと、
前記インデックス・ノードに含まれる前記目標ファイルの前記ファイル・ページ・テーブル情報にしたがって前記目標ファイルのファイル・ページ・テーブルを取得するステップであって、前記ファイル・ページ・テーブルは、前記第1の物理アドレス空間の中の第2の物理アドレス空間を記録し、前記目標ファイルのデータ・ページは、前記第2の物理アドレス空間の中に格納され、前記目標ファイルの前記データ・ページは、ファイル・データを格納するのに使用される、ステップと、
前記第2の物理アドレス空間にしたがって前記目標ファイルにアクセスするステップとを含む。
【０００６】
第1の態様に関連して、第1の態様の第1の可能な実装方法では、前記第2の物理アドレス空間にしたがって前記目標ファイルにアクセスするステップは、
前記目標ファイルに第2の仮想アドレス空間を割り当てるステップであって、前記第2の仮想アドレス空間は、プライベート空間の一部になっており、前記プライベート空間は、前記プロセスに割り当てられるとともに前記オペレーティング・システムの前記ユーザ空間の中に存在し、前記第2の仮想アドレス空間は、1つの隣接アドレス空間である、ステップと、
前記第2の物理アドレス空間と前記第2の仮想アドレス空間との間に第2のマッピング関係を確立するステップと、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルにアクセスするステップとを含む。
【０００７】
第1の態様の第1の可能な実装方法に関連して、第1の態様の第2の可能な実装方法では、前記第2の物理アドレス空間と前記第2の仮想アドレス空間との間に第2のマッピング関係を確立するステップは、
前記第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに、前記目標ファイルの前記ファイル・ページ・テーブルをリンクさせることによって前記第2のマッピング関係を確立するステップを含む。
【０００８】
第1の態様の第1の又は第2の可能な実装方法に関連して、第1の態様の第3の可能な実装方法では、前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルにアクセスするステップは、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに読み出し動作を実行するステップと、
前記読み出し動作によって読み出されるべきデータに対応する仮想アドレスが、前記目標ファイルに対応する仮想アドレス空間の中に含まれていない場合には、前記読み出し動作を終了するステップとを含む。
【０００９】
第1の態様の第1の又は第2の可能な実装方法に関連して、第1の態様の第4の可能な実装方法では、前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルにアクセスするステップは、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに書き込み動作を実行するステップと、
前記書き込み動作によって書き込まれるべきデータに対応する仮想アドレスが、前記第2の仮想アドレス空間に含まれていない場合には、前記書き込み動作を終了するステップとを含む。
【００１０】
第1の態様、又は第1の態様の第1乃至第4の可能な実装方法のうちのいずれか1つに関連して、第1の態様の第5の可能な実装方法では、当該方法は、さらに、
前記第1の仮想アドレス空間と前記第1の物理アドレス空間との間の前記第1のマッピング関係をカーネル空間において確立するステップと、前記第1のマッピング関係に対応するマッピング・ページ・テーブルを、前記カーネル空間に対応するプロセス・ページ・テーブルに格納するステップとを含み、
前記プロセスから前記ファイル・アクセス要求を受信するステップの後に、当該方法は、さらに、
前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルが前記第1のマッピング関係を記録していない場合に、前記第1のマッピング関係に対応しているとともに前記カーネル空間の中に格納されている前記マッピング・ページ・テーブルを、前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルにリンクさせるステップを含む。
【００１１】
第2の態様によれば、ファイル・アクセス装置が提供され、当該装置は、
プロセスからファイル・アクセス要求を受信するように構成される受信モジュールであって、前記ファイル・アクセス要求は、ファイル識別子を含み、前記ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される、受信モジュールと、
第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された第1の仮想アドレス空間にしたがって、前記第1の物理アドレス空間にアクセスするように構成される第1のアクセス・モジュールであって、前記第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、前記第1の物理アドレス空間は、ファイル・システムを格納するとともに、メモリ空間の一部になっている、第1のアクセス・モジュールと、
前記目標ファイルのファイル識別子であって前記受信モジュールで受信される前記ファイル識別子にしたがって前記第1の物理アドレス空間から前記目標ファイルのインデックス・ノードを取得するように構成される取得モジュールであって、前記インデックス・ノードは、前記目標ファイルのファイル・ページ・テーブル情報を含み、
前記取得モジュールは、さらに、前記インデックス・ノードに含まれる前記目標ファイルの前記ファイル・ページ・テーブル情報にしたがって前記目標ファイルのファイル・ページ・テーブルを取得するように構成され、前記ファイル・ページ・テーブルは、前記第1の物理アドレス空間の中の第2の物理アドレス空間を記録し、前記目標ファイルのデータ・ページは、前記第2の物理アドレス空間に格納され、前記目標ファイルの前記データ・ページは、ファイル・データを格納するのに使用される、取得モジュールと、
前記取得モジュールで取得された前記ファイル・ページ・テーブルにより示される前記第2の物理アドレス空間にしたがって前記目標ファイルにアクセスするように構成される第2のアクセス・モジュールとを含む。
【００１２】
第2の態様に関連して、第2の態様の第1の可能な実装方法では、前記第2のアクセス・モジュールは、
前記目標ファイルに第2の仮想アドレス空間を割り当てるように構成される割当ユニットであって、前記第2の仮想アドレス空間は、プライベート空間の一部になっており、前記プライベート空間は、前記プロセスに割り当てられるとともに前記オペレーティング・システムの前記ユーザ空間の中に存在し、前記第2の仮想アドレス空間は、1つの隣接アドレス空間である、割当ユニットと、
前記割当ユニットによって割り当てられる前記第2の仮想アドレス空間と前記第2の物理アドレス空間との間に第2のマッピング関係を確立するように構成される確立ユニットと、
前記割当ユニットによって割り当てられる前記第2の仮想アドレス空間及び前記確立ユニットによって確立される前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルにアクセスするように構成されるアクセス・ユニットとを含む。
【００１３】
第2の態様の第1の可能な実装方法に関連して、第2の態様の第2の可能な実装方法では、前記確立ユニットは、特に、前記第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに、前記目標ファイルの前記ファイル・ページ・テーブルをリンクさせることによって前記第2のマッピング関係を確立するように構成される。
【００１４】
第2の態様の第1の又は第2の可能な実装方法に関連して、第2の態様の第3の可能な実装方法では、前記割当ユニットによって割り当てられる前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記アクセス・ユニットは、特に、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに読み出し動作を実行し、
前記読み出し動作によって読み出されるべきデータに対応する仮想アドレスが、前記目標ファイルに対応する仮想アドレス空間に含まれていない場合には、前記読み出し動作を終了するように構成される。
【００１５】
第2の態様の第1の又は第2の可能な実装方法に関連して、第2の態様の第4の可能な実装方法では、前記割当ユニットによって割り当てられる前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記アクセス・ユニットは、特に、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに書き込み動作を実行し、
前記書き込み動作によって書き込まれるべきデータに対応する仮想アドレスが、前記第2の仮想アドレス空間に含まれていない場合には、前記書き込み動作を終了するように構成される。
【００１６】
第2の態様、又は第2の態様の第1乃至第4の可能な実装方法のいずれか1つに関連して、第2の態様の第5の可能な実装方法では、当該装置は、さらに、
前記第1の仮想アドレス空間と前記第1の物理アドレス空間との間の前記第1のマッピング関係をカーネル空間において確立し、前記第1のマッピング関係に対応するマッピング・ページ・テーブルを、前記カーネル空間に対応するプロセス・ページ・テーブルの中に格納するように構成される確立モジュールと、
前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルが前記第1のマッピング関係を記録していない場合に、前記確立モジュールによって確立される前記第1のマッピング関係に対応しているとともに前記カーネル空間に格納されている前記マッピング・ページ・テーブルを、前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルにリンクさせるように構成されるリンク・モジュールとを含む。
【００１７】
第3の態様によれば、ストレージ・システムが提供され、当該ストレージ・システムは、
ファイル及びプログラムを格納するように構成されるメモリと、
前記プログラムを実行して、
プロセスからファイル・アクセス要求を受信するステップであって、前記ファイル・アクセス要求は、ファイル識別子を含み、前記ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される、ステップと、
第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された前記第1の仮想アドレス空間にしたがって、前記第1の物理アドレス空間にアクセスするステップであって、前記第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、前記第1の物理アドレス空間は、ファイル・システムを格納するとともに、メモリ空間の一部になっている、ステップと、
前記目標ファイルの前記ファイル識別子にしたがって前記第1の物理アドレス空間から前記目標ファイルのインデックス・ノードを取得するステップであって、前記インデックス・ノードは、前記目標ファイルのファイル・ページ・テーブル情報を含む、ステップと、
前記インデックス・ノードに含まれる前記目標ファイルの前記ファイル・ページ・テーブル情報にしたがって前記目標ファイルのファイル・ページ・テーブルを取得するステップであって、前記ファイル・ページ・テーブルは、前記第1の物理アドレス空間の中の第2の物理アドレス空間を記録し、前記目標ファイルのデータ・ページは、前記第2の物理アドレス空間の中に格納され、前記目標ファイルの前記データ・ページは、ファイル・データを格納するのに使用される、ステップと、
前記第2の物理アドレス空間にしたがって前記目標ファイルにアクセスするステップとを含むファイル・アクセス方法を実行する、
ように構成されるプロセッサとを含む。
【００１８】
第3の態様に関連して、第3の態様の第1の可能な実装方法では、前記プロセッサは、特に、
前記目標ファイルに第2の仮想アドレス空間を割り当てるように構成され、前記第2の仮想アドレス空間は、プライベート空間の一部になっており、前記プライベート空間は、前記プロセスに割り当てられるとともに前記オペレーティング・システムの前記ユーザ空間の中に存在し、前記第2の仮想アドレス空間は、1つの隣接アドレス空間であり、
前記第2の物理アドレス空間と前記第2の仮想アドレス空間との間の第2のマッピング関係を確立するように構成され、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルにアクセスするように構成される。
【００１９】
第3の態様の第1の可能な実装方法に関連して、第3の態様の第2の可能な実装方法では、前記プロセッサは、特に、前記第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに、前記目標ファイルの前記ファイル・ページ・テーブルをリンクさせることによって前記第2のマッピング関係を確立するように構成される。
【００２０】
第3の態様の第1の又は第2の可能な実装方法に関連して、第3の態様の第3の可能な実装方法では、前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記プロセッサは、特に、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに読み出し動作を実行し、
前記読み出し動作によって読み出されるべきデータに対応する仮想アドレスが、前記目標ファイルに対応する仮想アドレス空間に含まれていない場合には、前記読み出し動作を終了するように構成される。
【００２１】
第3の態様の第1の又は第2の可能な実装方法に関連して、第3の態様の第4の可能な実装方法では、前記第2の仮想アドレス空間は、前記第2の物理アドレス空間よりも大きく、
前記プロセッサは、特に、
前記第2の仮想アドレス空間及び前記第2のマッピング関係にしたがって前記第2の物理アドレス空間の中の前記目標ファイルに書き込み動作を実行し、
前記書き込み動作によって書き込まれるべきデータに対応する仮想アドレスが、前記第2の仮想アドレス空間に含まれていない場合には、前記書き込み動作を終了するように構成される。
【００２２】
第3の態様、又は第3の態様の第1乃至第4の可能な実装方法のうちのいずれか1つに関連して、第3の態様の第5の可能な実装方法では、前記プロセッサは、さらに、
前記第1の仮想アドレス空間と前記第1の物理アドレス空間との間の前記第1のマッピング関係をカーネル空間において確立し、前記第1のマッピング関係に対応するマッピング・ページ・テーブルを、前記カーネル空間に対応するプロセス・ページ・テーブルの中に格納し、
前記プロセスから前記ファイル・アクセス要求を受信した後に、前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルが前記第1のマッピング関係を記録していない場合に、前記第1のマッピング関係に対応しているとともに前記カーネル空間の中に格納されている前記マッピング・ページ・テーブルを、前記第1の仮想アドレス空間に対応する前記プロセス・ページ・テーブルにリンクさせるように構成される。
【００２３】
本発明の複数の実施形態において提供されるファイル・アクセス方法及び装置、並びにストレージ・システムでは、ユーザ空間における第1の仮想アドレス空間と、ファイル・システムを格納する第1の物理アドレス空間との間のマッピング関係にしたがって、第1の仮想アドレス空間を使用して第1の物理アドレス空間にアクセスすることができ、それにより、ファイル・システムの中の目標ファイルにアクセスすることができる。本発明の複数の実施形態において提供されるファイル・アクセス方法では、ユーザ空間の中でファイル・アクセスを直接実施し、従来技術におけるファイル・アクセスの間の頻繁なシステム・コールが回避され、これにより、ファイル・アクセスの間のソフトウェアの実行オーバーヘッドを効果的に低減することができ、ファイル・アクセス速度を高めることができる。
【図面の簡単な説明】
【００２４】
本発明の複数の実施形態における技術的解決方法をより明確に説明するために、以下の記載は、複数の実施形態を説明するために必要とされる複数の添付図面を簡潔に紹介する。
【００２５】
【図１−ａ】本発明の1つの実施形態にしたがったオペレーティング・システム内の仮想アドレス空間の概略図である。
【図１−ｂ】本発明の1つの実施形態にしたがったオペレーティング・システム内の仮想アドレス空間の他の概略図である。
【図２】本発明の1つの実施形態にしたがったファイル・アクセス方法の概略的なフローチャートである。
【図３】本発明の1つの実施形態にしたがったファイル・ページ・テーブルの概略図である。
【図４】本発明の1つの実施形態にしたがった他のファイル・アクセス方法の概略的なフローチャートである。
【図５】本発明の1つの実施形態にしたがったさらに他のファイル・アクセス方法の概略的なフローチャートである。
【図６】本発明の1つの実施形態にしたがったファイル・アクセス装置の概略的な構造ブロック図である。
【図７】本発明の1つの実施形態にしたがった他のファイル・アクセス装置の概略的な構造ブロック図である。
【図８】本発明の1つの実施形態にしたがったさらに他のファイル・アクセス装置の概略的な構造ブロック図である。
【図９】本発明の1つの実施形態にしたがったストレージ・システムの概略的な構造ブロック図である。
【発明を実施するための形態】
【００２６】
以下の記載は、本発明の複数の実施形態の添付図面を参照して、本発明の複数の実施形態における技術的解決方法を明確に説明する。明らかなことではあるが、説明される複数の実施形態は、本発明の実施形態の全部ではなく一部である。
【００２７】
本発明の上記の複数の実施形態を容易に理解するために、本明細書においては、いくつかの関連する概念について最初に説明する。
【００２８】
1.  ファイル・システム
【００２９】
オペレーティング・システムにおいて、ファイル・データを格納して管理するのに使用されるソフトウェアは、ファイル・システムと呼ばれる。ファイル・システムは、データを格納して編成し、そして、ファイル・アクセス・ポリシーを定義するのに使用される。ファイル・システムの中のデータは、メタデータとデータに分類され、データは、共用ファイルの中の実際のデータを指し、メタデータは、ファイルの特性を記述するのに使用されるシステム・データを指す。メタデータは、たとえば、アクセス許可、ファイル所有者、及びファイル・データ・ブロックの分布情報"inode"を含んでもよい。ユーザがファイルを操作する必要がある場合に、そのユーザは、最初に、ファイルのメタデータを取得する必要があり、その次に、そのファイルを方向付けることができ、ファイル・コンテンツ又は関連するファイル属性を取得することができる。メタデータとは、データに関するデータであり、ファイル・システム・フィールドにおいては、各々のファイルは、1つのメタデータ構造に対応している。この構造は、ファイル生成、ファイル修正及びファイル・アクセスの時間、ファイル所有者、許可、並びにマッピング情報等のファイル属性を含む。
【００３０】
ファイル・システムには、file、inode、及びdentryの3つの重要なデータ構造がある。以下の記載は、これら3つの重要なデータ構造を簡単に説明する。
【００３１】
(1)    オープン・ファイル・オブジェクト"file"
【００３２】
1つのfile構造は、1つのオープン・ファイル・オブジェクトを表し(システムにおいて、各々のオープン・ファイルは、カーネル空間の中の1つのfile構造に対応している)、ファイルをopenするときにカーネルによって生成され、ファイルをcloseするときに解放される。
【００３３】
(2)  ファイル・インデックス・ノード・オブジェクト"inode"
【００３４】
カーネルにおいては、1つのファイルは、1つのinode構造を使用することにより表され、そのinode構造は、file構造とは異なる。file構造は、オープン・ファイルのファイル記述子を表す。1つのファイルについて、ファイルが開かれるたびに、1つのファイル記述子を表す1つの異なるfile構造が存在してもよいが、すべてのfile構造は、一意のinodeを指す。
【００３５】
(3)  ファイル・ディレクトリ・オブジェクト"dentry"
【００３６】
プロセスによって検索される各々のパス名の構成要素について、カーネルは、1つのdentry構造を生成する。たとえば、パス名/dev/testが検索される場合に、カーネルは、ルート・ディレクトリ"/"についてレベル-1dentry構造を生成し、"dev"について、レベル-2dentry構造を生成し、testについて、レベル-3dentry構造を生成する。
【００３７】
従来のファイル・システムはカーネル・モードで実行され、ユーザ・モード・プロセスがファイル・システムの中のファイルにアクセスする必要がある場合には、システム・コールが実行されて、ファイル・アクセスを実行する必要がある。
【００３８】
2.  システム・コール
【００３９】
システム・コールは、カーネル空間とユーザ空間との間で広く使用される通信手段である。システム・コールは、ユーザ・プログラムを呼び出すためにオペレーティング・システムによって提供される"特殊インターフェース"のグループと考えることができる。ユーザ・プログラムは、"特殊インターフェース"の上記のグループを使用して、オペレーティング・システムのカーネルによって提供されるシステム・サービスを取得してもよい。たとえば、ユーザは、ファイル・システムに関連するシステム・コールによって、ファイルを開くこと、ファイルを閉じること、又はファイルを読み出す/書き込むことをシステムに要求してもよい。システム・コールによってユーザ空間にシステム・サービスを提供する根本的な原因は、システム"保護"を行うためである。Linux動作空間は、カーネル空間及びユーザ空間に分割され、これらカーネル空間及びユーザ空間は、複数の異なる優先順位を使用して実行され、論理が別々である。一般に、(ユーザ空間において実行されている)プロセスは、カーネル・データにアクセスすること又はカーネル機能を使用することを許可されておらず、ユーザ・データを操作すること又はユーザ機能を呼び出すことができるのみである。あるプロセスが(たとえば、ファイルにアクセスする等)カーネル・データにアクセスする必要がある場合には、プロセスは、システムによってユーザに提供される"特殊インターフェース"を使用することにより、すなわち、システム・コールによって、カーネル・データにアクセスする。特に、プロセスの要求は、カーネルに転送され、要求の処理がカーネル空間で完了した後に、処理結果は、ユーザ空間に返される(プロセスに戻ることと同等である)。
【００４０】
3.  ユーザ空間及びカーネル空間
【００４１】
Linux実行空間は、(カーネル・モードと称されてもよい)カーネル空間及び(ユーザ・モードと称されてもよい)ユーザ空間に分割され、これらのカーネル空間及びユーザ空間は、複数の異なる優先順位を使用して実行され、論理が別々である。
【００４２】
従来技術では、オペレーティング・システムにおける1つの仮想アドレス空間は、2つの部分、すなわち、(その実行環境がユーザ・モードと称されてもよい)ユーザ空間及び(その実行環境がカーネル・モードと称されてもよい)カーネル空間に分割される。ユーザ空間は、あるプロセスに専用の仮想アドレス空間であり、そのプロセスは、そのユーザ空間で実行される。カーネル空間は、特に、システム・リソースを管理するのに使用される。あるプロセスが、(たとえば、ファイルにアクセスする等)リソースにアクセスする必要がある場合に、そのプロセスは、システム・コールによってカーネルにそのリソースを申し込む必要がある。プロセスがファイルにアクセスすることを要求する場合の頻繁なシステム・コールを回避するために、本発明は、ファイル・アクセスの間のソフトウェアの実行オーバーヘッドを効果的に低減できるファイル・アクセス方法及び装置を提供する。
【００４３】
本発明の実施形態で提供される技法的解決方法を容易に理解することができるように、以下の記載は、図1-a及び図1-bを参照して本発明の実施形態の適用シナリオを説明する。
【００４４】
図1-aに示されるように、オペレーティング・システムにおける仮想アドレス空間110は、カーネル空間120及びユーザ空間130を含み、ユーザ空間130は、特に、共用プロセス空間及びプライベート・プロセス空間を含む。図1-aに示される第1の仮想アドレス空間140は、ユーザ空間130の中の空間であり、すべてのプロセスによって共用される。すなわち、ユーザ空間130において、すべてのプロセスは、第1の仮想アドレス空間140にアクセスする許可を有する。図1-aに示されるプライベート・プロセス空間150は、ユーザ空間130の中の空間であり、各プロセスに専用の空間である。図1-aに示されるように、第1のマッピング関係が、(図1-aに破線で示されるように)第1の仮想アドレス空間140と第1の物理アドレス空間160との間に存在する。第1の物理アドレス空間160は、ファイル・システムを格納する記憶領域に対応しているとともに物理メモリ空間の中に存在する1つの物理アドレス空間である。たとえば、ファイル・システムが目標ファイルを含む場合には、第1の物理アドレス空間160は、目標ファイルを格納するために使用される(図1-aに示される)第2の物理アドレス空間170を含む。
【００４５】
特に、第1の仮想アドレス空間140に対応するプロセス・ページ・テーブルは、第1のマッピング関係を記録する。第1のマッピング関係に基づいて、第1の仮想アドレス空間を使用することにより第1の物理アドレス空間にアクセスすることができ、ファイル・システムの中のファイルにアクセスできることを理解すべきである。たとえば、プロセスが図1-aに示された目標ファイルにアクセスする必要がある場合には、第2の物理アドレス空間170の中の目標ファイルには、その目標ファイルに対応する仮想アドレス空間(すなわち、第1の仮想アドレス空間140の中の第2の物理アドレス空間170のマッピングされたアドレス空間)にしたがってアクセスすることができる。したがって、ファイル・システムの中の目標ファイルにアクセスする必要があるプロセスはいずれも、第1の仮想アドレス空間にアクセスすることによってその目標ファイルへのアクセスを実装することができ、それにより、従来技術における頻繁なシステム・コールを回避することができる。
【００４６】
選択的に、図1-aのプライベート・プロセス空間150は、2つの部分、すなわち、ファイル・アクセス空間151及びプロセス活動空間152を含んでもよい。ファイル・アクセス空間151は、(以下で詳述される)開かれるべき目標ファイルをマッピングするのに使用され、プロセス活動空間152は、共用プロセス活動が属する空間である。
【００４７】
選択的に、第1の仮想アドレス空間140と第1の物理アドレス空間160との間の第1のマッピング関係は、線形マッピング関係であってもよく、その線形マッピング関係は、第1の物理アドレス空間160へのアクセスを容易にすることができる。
【００４８】
図1-aに概略的に示されているプライベート・プロセス空間150は、いずれかのプロセスのプライベート空間を表してもよいが、図1-aに示された概略的なブロック図は、本発明の本実施形態にいずれの特定の限定も課さないということを理解すべきである。
【００４９】
図1-aの第1の物理アドレス空間160は、物理メモリの中の記憶領域に対応する物理アドレス空間であり、その記憶領域は、ファイル・システムを格納するのに使用される。さらに、図1-bに示されるように、ファイル・システムを格納するのに使用される第1の物理アドレス空間160は、ファイル・システムのデータであるデータ及びメタデータを格納するのに使用される第1の物理メモリ領域161と、ファイル・システムの実行中に生成されるバッファリングされたデータを格納するのに使用される第2の物理メモリ領域162とにさらに分割されてもよい。ファイル・システムの実行中に生成されるバッファリングされたデータは、特に、ファイル・オブジェクト"file"、ファイル・インデックス・ノード・オブジェクト"inode"、ファイル・ディレクトリ・オブジェクト"dentry"、及び(ハンドルとも称されてもよい)ファイル記述子等のプロセスによるファイル・アクセスの間に生成されたデータを示す。目標ファイルを格納するのに使用され、第1の物理アドレス空間160の中に存在する第2の物理アドレス空間170は、(図1-bに示される)第1の物理メモリ領域161の中に存在するということを理解すべきである。選択的に、第1の物理メモリ領域161及び第2の物理メモリ領域162は、物理アドレスの点で隣接していなくてもよい。
【００５０】
図1-bに示されるように、第1のマッピング関係は、第1の仮想アドレス空間140と第1の物理アドレス空間160との間に存在する。したがって、第1の物理アドレス空間160の分割によって得られる2つの領域に対応して、第1の仮想アドレス空間140は、それに対応して、第1の領域141及び第2の領域142の2つの領域を含んでもよい。第1の仮想アドレス空間140の中の第1の物理メモリ領域161に関するマッピングされた領域は、第1の領域141であり、第1の仮想アドレス空間140の中の第2の物理メモリ領域162に関するマッピングされた領域は、第2の領域142である。プロセスは、第1の領域141及び第2の領域142にアクセスすることによって、それぞれ第1の物理メモリ領域161及び第2の物理メモリ領域162にアクセスすることができ、それによってファイル・システムのデータであるデータとメタデータ、及びファイル・システムの実行中に生成されるバッファリングされたデータにアクセスすることができることを理解すべきである。目標ファイルを格納する第2の物理アドレス空間170に関する第1の仮想アドレス空間140の中のマッピングされたアドレス空間は、第1の領域141の中に存在するということを理解すべきである。
【００５１】
第1の物理アドレス空間160を2つの領域に分割することは、一例にすぎないことを理解することができる。代替的に、実際の適用例では、第1の物理アドレス空間160は、実際の必要に応じて多数の領域に分割されてもよく、もちろん、実際の適用例では、第1の仮想アドレス空間140も、同様に、実際の必要に応じて多数の領域に分割されてもよく、これらは本明細書においては限定されない。
【００５２】
本発明の実施形態において、1つの事例では、第1の物理メモリ領域161及び第2の物理メモリ領域162は、双方が、相変化メモリ(Phase  Change  Memory，PCM)、可変抵抗型ランダム・アクセス・メモリ(Resistive  RAM，ReRAM)、磁気ランダム・アクセス・メモリ(Magnetic  Random  Access  Memory，MRAM)、又はDRAMの読み出し/書き込み機能と同様の読み出し/書き込み機能を有しアクセスのためのメモリ・バスに実装できる他の不揮発性記憶媒体等の不揮発性メモリ(Non-Volatile  Memory，NVM)媒体を使用してもよい。別の事例では、第1の物理メモリ領域161は、不揮発性記憶媒体を使用してもよく、第2の物理メモリ領域162は、特に、耐摩耗性を有するダイナミック・ランダム・アクセス・メモリ(Dynamic  Random  Access  Memory，DRAM)媒体等の揮発性記憶媒体を使用してもよい。
【００５３】
本発明の1つの実施形態にしたがったファイル・アクセス方法200は、コントローラ又は中央処理装置(Central  Processing  Unit，CPU)によって実行されてもよい。
【００５４】
以下の記載は、図2乃至図5を参照して本発明の複数の実施形態にしたがったファイル・アクセス方法を詳述する。図2は、本発明の1つの実施形態にしたがったファイル・アクセス方法の概略的なフローチャートである。図2は、プロセスのファイル・アクセス要求が、説明のための一例として用いられていることに留意すべきである。方法200は、プロセスがファイルにアクセスすることを要求するシナリオのいずれかに適用してもよいことが理解することができる。図2に示されるように、方法200は以下のステップを含む。
【００５５】
ステップS210:  プロセスからファイル・アクセス要求を受信する。ファイル・アクセス要求は、ファイル識別子を含み、ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される。
【００５６】
特に、ファイル識別子は、目標ファイルのストレージ・パス、目標ファイルのファイル・タイプ(ディレクトリ・ファイル又はデータ・ファイル)等を含んでいてもよい。ファイル・アクセス要求は、特に、ファイル・オープン要求、ファイル読み出し要求、ファイル書き込み要求、又は他のアクセス要求であってもよいということを理解すべきである。
【００５７】
ステップS220:  第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された第1の仮想アドレス空間にしたがって、第1の物理アドレス空間にアクセスする。第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、第1の物理アドレス空間は、ファイル・システムを格納するとともに、メモリ空間の一部になっている。
【００５８】
選択的に、本発明の本実施形態においては、第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された第1の仮想アドレス空間にしたがって第1の物理アドレス空間にアクセスし、第1の物理アドレス空間は、ファイル・システムを格納するステップS220は、以下のステップを含む。
【００５９】
ステップS221:  ファイル・アクセス要求にしたがって第1の仮想アドレス空間にアクセスする。
【００６０】
ステップS222:  第1の仮想アドレス空間に対応するプロセス・ページ・テーブルが、ファイル・システムを格納する第1の物理アドレス空間と第1の仮想アドレス空間との間の第1のマッピング関係を記録しているということを決定する。
【００６１】
ステップS223:  第1の仮想アドレス空間及び第1のマッピング関係にしたがって第1の物理アドレス空間にアクセスする。
【００６２】
さらに、第1のマッピング関係は、線形マッピング関係である。したがって、第1の物理アドレス空間の開始アドレスは、第1の仮想アドレス空間の開始アドレスに対応しており、その後のアドレスも同じように続き、それにより、第1の物理アドレス空間へのアクセスが容易になる。
【００６３】
ステップS230:  目標ファイルのファイル識別子にしたがって第1の物理アドレス空間から目標ファイルのインデックス・ノードを取得する。インデックス・ノードは、目標ファイルのファイル・ページ・テーブル情報を含む。
【００６４】
選択的に、本発明の本実施形態においては、目標ファイルのファイル識別子にしたがって第1の物理アドレス空間から目標ファイルのインデックス・ノードを取得するステップS230は、以下のステップを含む。
【００６５】
ステップS231:  第1の物理アドレス空間が、ファイル識別子によって示されるアクセスされるべき目標ファイルを格納しているか否かを、目標ファイルのファイル識別子にしたがって判定する。
【００６６】
ステップS232:  第1の物理アドレス空間が、ファイル識別子によって示されるアクセスされるべき目標ファイルを格納している場合に、その目標ファイルのインデックス・ノードを取得する。
【００６７】
ステップS233:  第1の物理アドレス空間が、ファイル識別子によって示されるアクセスされるべき目標ファイルを格納していない場合には、第1の物理アドレス空間の中に目標ファイルを生成し、その目標ファイルにインデックス・ノードを割り当てる。目標ファイルに割り当てられたインデックス・ノードは、目標ファイルのファイル・ページ・テーブル情報を含み、ファイル・ページ・テーブルが、第1の物理アドレス空間の中に生成される目標ファイルの第2の物理アドレス空間を指すのに使用される。
【００６８】
ファイル・システムの中の各々のファイルは、1つのインデックス・ノード"inode"に対応しているということを理解すべきである。したがって、ファイル・システムの第1の物理アドレス空間が目標ファイルを格納した後に、目標ファイルに対応しているインデックス・ノードを取得することができる。代替的に、第1の物理アドレス空間は、デフォルトで目標ファイルを記憶できるということもまた理解すべきである。このシナリオにおいては、第1の物理アドレス空間が目標ファイルを格納しているか否かを判定する関連するステップを省略してもよい。
【００６９】
インデックス・ノードは、目標ファイルのファイル・ページ・テーブル情報を含む。特に、インデックス・ノードは、第1の物理アドレス空間の中の、目標ファイルを記憶しているメモリ・ページの第2の物理アドレス空間を取得するのに使用できる情報を含んでいてもよい。たとえば、目標ファイルのインデックス・ノードは、目標ファイルのファイル・ページ・テーブル(File  Page  Table，略して"FPT")、又は目標ファイルのファイル・ページ・テーブルを指すのに使用されるポインタを記録していてもよい。特に、図3に示されるように、目標ファイルのインデックス・ノードは、ファイル・ページ・テーブルを指すのに使用されるポインタ(Pointer)を含み、ポインタは、特に、目標ファイルの最高レベルのファイル・ページ・テーブル(PUD)を格納する。
【００７０】
ステップS240:  インデックス・ノードに含まれる目標ファイルのファイル・ページ・テーブル情報にしたがって目標ファイルのファイル・ページ・テーブルを取得する。ファイル・ページ・テーブルは、第1の物理アドレス空間の中の第2の物理アドレス空間を記録し、目標ファイルのデータ・ページは、第2の物理アドレス空間の中に格納され、目標ファイルのデータ・ページは、ファイル・データを格納するのに使用される。
【００７１】
特に、目標ファイルのファイル・ページ・テーブルは、第1の物理アドレス空間の中の、目標ファイル格納するメモリ・ページの物理アドレスを指すのに使用される。したがって、目標ファイルの第2の物理アドレス空間は、目標ファイルのファイル・ページ・テーブルにしたがって方向付けることができる。
【００７２】
選択的に、本発明の本実施形態においては、目標ファイルのファイル・ページ・テーブルのデータ構造は、プロセス・ページ・テーブルのデータ構造と同様又は同一である。
【００７３】
従来技術では、プロセス・ページ・テーブルは、オペレーティング・システムの中のプロセスによって保護モードで使用され、プロセスの仮想空間及び物理空間である仮想空間と物理空間との間のマッピング関係を表すということを理解すべきである。所与のアクセスされるべき仮想アドレスについては、メモリ管理ユニット(MMU)は、仮想アドレスに対応するプロセス・ページ・テーブル・エントリを、仮想アドレスにしたがって現在のプロセス・ページ・テーブルの中で方向付け、その次に、そのページ・テーブル・エントリを解析して、実際の物理アドレスを取得し、それによってアクセスを実行する。サイズが232バイトの32ビットアドレス空間又はサイズが264バイトの64ビットアドレス空間を含む、オペレーティング・システムの異なるアドレス空間が存在する。共用プロセス・ページ・テーブルは、3レベル・ページ・テーブル又は4レベル・ページ・テーブルであってもよい。4レベル・ページ・テーブルは、ページ・グローバル・ディレクトリ(PGD)、ページ・アッパ・ディレクトリ(PUD)、ページ・ミドル・ディレクトリ(PMD)、及びページ・テーブル・エントリ(PTE)を含む。3レベル・ページ・テーブルは、4レベル・ページ・テーブルと互換性があり、また、通常は、PGD、PUD、PMD、及びPTEを含む。しかしながら、PUD及びPMDは、ページ・テーブルの同一レベルに属する。高レベル・ページ・テーブル・エントリは、低レベル・ページ・テーブル・エントリを指す物理開始アドレスを含み、最終レベル・ページ・テーブル・エントリ  PTEは、特定の物理ページを指す物理開始アドレスを含む。
【００７４】
本発明の本実施形態においては、ファイル・ページ・テーブルの構造は、プロセス・ページ・テーブルの構造と同一又は同様であってもよい。特に、ファイル・ページ・テーブルは、単一レベル又は複数レベルのページ・テーブルであってもよく、最も低いページ・テーブルではないページ・テーブルにおけるページ・テーブルの各々のレベルの各々のエントリは、より低レベル・ページ・テーブルの物理開始アドレスを記録し、最低レベル・ページ・テーブルの各々のエントリは、ファイルのメモリ・ページの物理開始アドレスを記録する。特に、図3に示されているように、図3は、目標ファイルのファイル・ページ・テーブルが、PUD、PMD及びPTEを含む3レベル・ファイル・ページ・テーブルである一例を提示する。PUDの各々のエントリは、PMDの物理開始アドレスを記録し、PMDの各々のエントリは、PTEの物理開始アドレスを記録し、PTEの各々のエントリは、メモリ・ページの物理開始アドレスを記録する(メモリ・ページは、目標ファイルのファイル・コンテンツを格納する)。すべてのファイルは、3レベル・ファイル・ページ・テーブルを使用する必要があるとは限らず、また、3レベル・ページ・テーブルが使用される場合でも、ページ・テーブルは、固定フォーマットを当然に有するわけではないということを理解すべきである。たとえば、すべてのファイルが1024個のPTEを使用する必要があるわけではなく、ファイル・ページ・テーブルの編成構造は、ファイル・サイズの変化にしたがって動的に調整されてもよい。
【００７５】
図3は、目標ファイルのインデックス・ノードが、3レベル・ファイル・ページ・テーブルの第1のレベルのファイル・ページ・テーブルPUDを指している(たとえば、PUDの物理開始アドレス等の)ポインタを記録する一例を使用して説明している。代替的に、目標ファイルのインデックス・ノードは、目標ファイルを格納するとともに第1の物理開始アドレス空間の中に存在する第2の物理アドレス空間、第2の物理アドレス空間の開始アドレス等を直接格納してもよいということをさらに理解することができる。目標ファイルのインデックス・ノードに記録された情報にしたがって目標ファイルの第2の物理アドレス空間に関連する情報を取得できるのであれば、目標ファイルのインデックス・ノードの中に記録される情報には、特別な制限がここでは何も課されない。
【００７６】
図3に示された例は、当業者が本発明の本実施形態をより良く理解することを助けるものであり、本発明の本実施形態の範囲を限定することを意図したものではないということを理解すべきである。明らかに、当業者であれば、図3に示される例にしたがって様々な等価な修正又は変形を考え出すことができ、そのような修正又は変形もまた、本発明の本実施形態の範囲に入るものとする。
【００７７】
ステップS250:  第2の物理アドレス空間にしたがって目標ファイルにアクセスする。
【００７８】
特に、第2の物理アドレス空間の中の目標ファイルにユーザ空間の中でアクセスする2つの方法が存在してもよい。第1の方法は、第2の物理アドレス空間を第1の仮想アドレス空間にマッピングすることによって得られる目標仮想アドレス空間を、計算による第1のマッピング関係にしたがって取得するステップと、目標仮想アドレス空間にアクセスすることによって第2の物理アドレス空間にユーザ空間の中でアクセスして、目標ファイルへのアクセスを実行するステップである。第2の方法は、隣接する第2の仮想アドレス空間のセグメントを目標ファイルにユーザ空間の中で割り当てるステップと、第2の仮想アドレス空間と目標ファイルの第2の物理アドレス空間との間に第2のマッピング関係を確立するステップであって、それにより、第2の仮想アドレス空間にアクセスすることによってユーザ空間の中で第2の物理アドレス空間にアクセスすることが可能になり、結果として、目標ファイルへの連続アクセスを実行する。
【００７９】
本発明の本実施形態にしたがったファイル・アクセス方法においては、第1の仮想アドレス空間を使用することにより、ユーザ空間の中の第1の仮想アドレス空間と第1の物理アドレス空間との間のマッピング関係にしたがって、ファイル・システムを格納する第1の物理アドレス空間の中の目標ファイルにアクセスし、それによりファイル・アクセスは、従来技術におけるファイル・アクセスの間の頻繁なシステム・コールなしで、ユーザ空間において直接実行され、ファイル・アクセスの間のソフトウェアの実行オーバーヘッドを効果的に低減することができ、ファイル・アクセス速度を増加させることができる。
【００８０】
以下の記載は、図4を参照して、第2の物理アドレス空間の中の目標ファイルにユーザ空間の中でアクセスする第2の方法を詳述する。
【００８１】
図4に示されているように、選択的に、図2に示されているファイル・アクセス方法200において、第2の物理アドレス空間にしたがって目標ファイルにアクセスするステップS250は、以下のステップを含む。
【００８２】
ステップS251:  目標ファイルに第2の仮想アドレス空間を割り当てる。第2の仮想アドレス空間は、プライベート空間の一部となっており、プライベート空間は、プロセスに割り当てられるとともにオペレーティング・システムのユーザ空間の中に存在し、第2の仮想アドレス空間は、隣接アドレス空間である。
【００８３】
特に、第2の仮想アドレス空間は、図1-aを参照して上記で説明されたプライベート・プロセス空間150のファイル・アクセス空間151の中の隣接仮想アドレス空間のセグメントであってもよい。
【００８４】
ステップS252:  第2の物理アドレス空間と第2の仮想アドレス空間との間に第2のマッピング関係を確立する。
【００８５】
選択的に、本発明の本実施形態においては、第2の物理アドレス空間と第2の仮想アドレス空間との間に第2のマッピング関係を確立するステップS252は、
第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに、目標ファイルのファイル・ページ・テーブルをリンクさせることによって第2のマッピング関係を確立するステップを含む。
【００８６】
特に、第2の仮想アドレス空間に対応するプロセス・ページ・テーブルは、Nレベル・ページ・テーブルであるのに対し、目標ファイルのファイル・ページ・テーブルは、Mレベル・ページ・テーブルであると仮定し、M≦Nであり、ファイル・ページ・テーブルは、レベル0からレベル(N-M-1)のページ・テーブル・エントリがない。第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに目標ファイルのファイル・ページ・テーブルをリンクさせることは、特に、ファイル・ページ・テーブルのページ・テーブル・エントリのうちの最も高い(N-M)レベルを、第2の仮想アドレス空間に対応するプロセス・ページ・テーブルのページ・テーブル・エントリのうちの(N-M)レベルにコピーすることを意味する。この方法によれば、第2の仮想アドレス空間と目標ファイルの第2の物理アドレス空間との間に第2のマッピング関係を確立することができる。上記の説明から、第2のマッピング関係を"リンク"させる方法により確立するためには、目標ファイルのファイル・ページ・テーブルの最も高いレベル・ページ・テーブル・エントリは、第2の仮想アドレス空間に対応するプロセス・ページ・テーブルのページ・テーブル・エントリのうちの対応するレベルにコピーされる必要があるということを理解することができる。このようにして、レベルが目標ファイルのファイル・ページ・テーブルの最も高いレベルの(レベル(N-M)の)ページ・テーブル・エントリのレベルよりも低い他のページ・エントリは、第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに自動的にリンクさせられる。したがって、このように"リンク"させる方法により、コピーされるページ・テーブルの数量を効果的に低減することができ、ソフトウェアの実行オーバーヘッドを低減することができる。
【００８７】
目標ファイルの第2の物理アドレス空間と第2の仮想アドレス空間との間に第2のマッピング関係を確立した後、隣接する第2の仮想アドレス空間を使用して第2の物理アドレス空間にアクセスすることができる。したがって、目標ファイルへの連続アクセスを実行することができる。
【００８８】
ステップS253:  第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルにアクセスする。
【００８９】
特に、第2の仮想アドレス空間のアクセス・アドレスが、目標ファイルに対応する仮想アドレス空間に含まれているのであれば、データ・ページ・フォルトは発生せず、すなわち、ユーザ空間の中で目標ファイルに直接アクセスすることができる。従来技術と比較して、システム・コールを実行する回数が大幅に低減され、したがって、ソフトウェアの実行オーバーヘッドを低減することができ、ファイル・アクセス速度を増加させることができる。
【００９０】
上記の"目標ファイルに対応する仮想アドレス空間"は、特に、目標ファイルの第2の物理アドレス空間を第2の仮想アドレス空間にマッピングすることによって得られるマッピングされた空間を意味する。すなわち、"目標ファイルに対応する仮想アドレス空間"は、第2の仮想アドレス空間の一部である。加えて、マッピング関係が、"目標ファイルに対応する仮想アドレス空間"の中の各々の仮想アドレスと(目標ファイルのデータ・ページの物理アドレスである)1つの特定の物理アドレスとの間に存在する。したがって、"目標ファイルに対応する仮想アドレス空間"にアクセスすることによって目標ファイルの第2の物理アドレス空間にアクセスすることができる。第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルにアクセスするステップS253は、第2の仮想アドレス空間の中の"目標ファイルに対応する仮想アドレス空間"及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルにアクセスするステップ、と記述することもできる。
【００９１】
選択的に、本発明の本実施形態においては、目標ファイルに割り当てられた第2の仮想アドレス空間は、"目標ファイルに対応する仮想アドレス空間"と等しいか又はそれよりも大きい。すなわち、目標ファイルに割り当てられた第2の仮想アドレス空間は、目標ファイルの第2の物理アドレス空間と等しいか又はそれよりも大きくなってもよい。
【００９２】
上記の"データ・ページ・フォルト"は、以下の場合が発生したときに、現在のアクセス動作を中断することを意味する。すなわち、第2の仮想アドレス空間に対応するプロセス・ページ・テーブルが、現在のアクセス・アドレスと1つの特定の物理アドレスの間のマッピング関係を記録していない、すなわち、第2の仮想アドレス空間に対応するプロセス・ページ・テーブルが、現在のアクセス・アドレスとその特定の物理アドレスとの間のマッピング関係を示すエントリを欠いている場合である。したがって、現在のアクセス・アドレスを使用することによっては物理アドレスにアクセスすることはできず、目標ファイルへの現在のアクセスが中断される。
【００９３】
特に、2つの場合が存在する。すなわち、(1)  第2の仮想アドレス空間が"目標ファイルに対応する仮想アドレス空間"と等しいときに、第2の仮想アドレス空間を使用することにより目標ファイルにアクセスすると、アクセス・アドレスは、例外なく、"目標ファイルに対応する仮想アドレス空間"に含まれ、マッピング関係は、"目標ファイルに対応する仮想アドレス空間"の中の各々の仮想アドレスと(目標ファイルのデータ・ページの物理アドレスである)1つの特定の物理アドレスとの間に存在し、したがって、上記の場合には、"データ・ページ・フォルト"が発生しない。(2)  第2の仮想アドレス空間が"目標ファイルに対応する仮想アドレス空間"よりも大きいときに、第2の仮想アドレス空間を使用することにより目標ファイルにアクセスすると、アクセス・アドレスが"目標ファイルに対応する仮想アドレス空間"に含まれていないので、上記の"データ・ページ・フォルト"が発生する。
【００９４】
第2の仮想アドレス空間が"目標ファイルに対応する仮想アドレス空間"よりも大きい場合には、読み出し及び/又は書き込み動作が、第2の仮想アドレス空間を使用することにより目標ファイルに実行されたときに、境界外アクセスが発生する可能性がある。境界外読み出し動作によって生じる読み出し誤りを低減するために、本発明の本実施形態においては、第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルにアクセスするステップS253は、
第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルに読み出し動作を実行するステップと、
読み出し動作によって読み出されるべきデータに対応する仮想アドレスが、目標ファイルに対応する仮想アドレス空間に含まれていない場合には、読み出し動作を終了するステップとを含んでもよい。
【００９５】
本実施形態における"目標ファイルに対応する仮想アドレス空間"は、目標ファイルの第2の物理アドレス空間を第2の仮想アドレス空間にマッピングすることによって得られるとともに、第2の仮想アドレス空間の一部である上記のマッピングされた空間を意味するということを理解すべきである。
【００９６】
特に、目標ファイルのファイル・データを読み出すことを要求するのに使用されるファイル読み出し指示は、プロセスから受信され、第2のマッピング関係に基づいて、第2の仮想アドレス空間を使用することにより第2の物理アドレス空間にアクセスして、目標ファイルに読み出し動作を実行し、読み出し動作によって読み出されるべきデータに対応する仮想アドレスが、目標ファイルに対応する仮想アドレス空間に含まれていない場合には、読み出し動作は終了する。特に、第2の仮想アドレス空間の中の開始読み出しアドレスが、あらかじめ設定された読み出しバイト長をオフセットした後に、終止読み出しアドレスを取得し、その終止読み出しアドレスが、"目標ファイルに対応する仮想アドレス空間"に含まれていない場合に、その目標ファイルに実行される読み出し動作は終了する。
【００９７】
選択的に、本発明の本実施形態においては、目標ファイルのファイル記述子"fd"及び目標ファイルのファイル・オブジェクト"file"を、第1の物理アドレス空間160の(図1-bに示されている)第2の物理メモリ領域162に生成することができ、ファイル記述子"fd"と目標ファイルのファイル・オブジェクト"file"との間の接続関係が生成される。ファイル・オブジェクト"file"は、第2の仮想アドレス空間のサイズ、目標ファイルの第2の物理アドレス空間を第2の仮想アドレス空間にマッピングすることによって得られる開始アドレス、目標ファイルのファイル・サイズ、及び他の情報を記録するのに使用される。目標ファイルについての読み出し動作要求が受信されると、第1の仮想アドレス空間の(図1-bに示されている)第2の領域142の中に存在しているとともに目標ファイルのファイル記述子"fd"に対応している(ファイル記述子"fd"を格納し第2の物理メモリ領域162の中にある物理アドレスに関する第2の領域142の中のマッピングされたアドレスである)仮想アドレスを使用することにより、第2の物理メモリ領域162の中の目標ファイルのファイル記述子"fd"にアクセスし、それによって、目標ファイルに割り当てられた第2の仮想アドレス空間のサイズ、目標ファイルの第2の物理アドレス空間を第2の仮想アドレス空間にマッピングすることによって得られる開始アドレス、目標ファイルのファイル・サイズ、及び他の情報を取得することができ、さらに、第2の仮想アドレス空間を使用することにより目標ファイルに読み出し動作を実行することができる。
【００９８】
したがって、本発明の本実施形態にしたがったファイル・アクセス方法においては、境界外読み出し動作の問題を解決することができ、これによりアクセス・セキュリティを効果的に保証することができる。
【００９９】
境界外書き込み動作によって生じる書き込みエラーを低減させるために、本発明の本実施形態においては、第2の仮想アドレス空間が第2の物理アドレス空間よりも大きい場合に、第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルにアクセスするステップS253は、
第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルに書き込み動作を実行するステップと、
書き込み動作によって書き込まれるべきデータに対応する仮想アドレスが第2の仮想アドレス空間に含まれていない場合には、書き込み動作を終了するステップとを含む。
【０１００】
特に、目標ファイルに書き込み動作を実行するのに要求されるファイル書き込み要求は、プロセスから受信され、第2のマッピング関係に基づいて、第2の仮想アドレス空間を使用することにより第2の物理アドレス空間にアクセスし、目標ファイルに書き込み動作を実行し、書き込み動作によって書き込まれるべきデータに対応する仮想アドレスが、第2の仮想アドレス空間に含まれていない場合に、書き込み動作は終了する。特に、第2の仮想アドレス空間の中の開始書き込みアドレスが、あらかじめ設定された書き込みバイト長をオフセットした後に、終止書き込みアドレスを取得し、その終止書き込みアドレスが、第2の仮想アドレス空間に含まれていない場合には、目標ファイルに実行される書き込み動作は終了する。
【０１０１】
選択的に、本発明の本実施形態においては、第1の物理アドレス空間160の(図1-bに示されている)第2の物理メモリ領域162の中に目標ファイルのファイル記述子"fd"及び目標ファイルのファイル・オブジェクト"file"を生成してもよく、ファイル記述子"fd"と目標ファイルのファイル・オブジェクト"file"との間の接続関係が生成される。ファイル・オブジェクト"file"は、第2の仮想アドレス空間のサイズ、目標ファイルの第2の物理アドレス空間を第2の仮想アドレス空間にマッピングすることによって得られる開始アドレス、目標ファイルのファイル・サイズ、及び他の情報を記録するのに使用される。目標ファイルについての書き込み動作要求が受信されると、第1の仮想アドレス空間の(図1-bに示されている)第2の領域142の中に存在しているとともに目標ファイルのファイル記述子"fd"に対応している(ファイル記述子"fd"を格納し第2の物理メモリ領域162の中にある物理アドレスに関する第2の領域142の中のマッピングされたアドレスである)仮想アドレスを使用することにより、第2の物理メモリ領域162の中の目標ファイルのファイル記述子"fd"にアクセスし、それによって、目標ファイルに割り当てられた第2の仮想アドレス空間のサイズ、目標ファイルの第2の物理アドレス空間を第2の仮想アドレス空間にマッピングすることによって得られる開始アドレス、目標ファイルのファイル・サイズ、及び他の情報を取得することができ、さらに、第2の仮想アドレス空間を使用することにより目標ファイルに書き込み動作を実行することができる。上述のように、第2の仮想アドレス空間が"目標ファイルに対応する仮想アドレス空間"よりも大きい場合に、第2の仮想アドレス空間を使用することにより書き込み動作を目標ファイルに実行すると、"データ・ページ・フォルト"が発生する可能性がある。中断処理が完了した後、目標ファイルに書き込み動作を引き続き実行してもよい。
【０１０２】
選択的に、本発明の本実施形態においては、第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルに書き込み動作を実行するプロセスの間に、
第2の仮想アドレス空間に対応するプロセス・ページ・テーブルが、現在の書き込みアドレスに関する第1の物理アドレス空間の中のマッピングされた物理アドレスを記録するエントリを欠いている場合は、目標ファイルに実行される書き込み動作が中断され、現在の書き込みアドレスは、目標ファイルに対応する仮想アドレス空間の中に含まれず、
第3の物理アドレスが第1の物理アドレス空間の中の目標ファイルに割り当てられ、現在の書き込みアドレスと第3の物理アドレスとの間のマッピング関係を記録するのに使用されるエントリが、第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに加えられ、
第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに加えられる上記のエントリに記録されたマッピング関係に基づいて、現在の書き込みアドレスを使用することにより第3の物理アドレスにアクセスし、引き続き目標ファイルに書き込み動作を実行する。
【０１０３】
本発明の本実施形態にしたがったファイル・アクセス方法においては、ファイル書き込み動作の範囲を増大させることができ、境界外アクセスの問題を解決することができ、それによりアクセス・セキュリティを効果的に保証することができる。本発明の本実施形態においては、第2の仮想アドレス空間は、隣接アドレス空間のセグメントであり、それにより、複数の異なる物理メモリ・ページに対応する仮想アドレスを探索するソフトウェアを何回も使用する必要なく、アクセスされるべき目標ファイルに対応する仮想アドレスの開始アドレスから、要求されるアクセス長の範囲内の物理メモリ・ページへの1回限りのアクセスの実行を容易にする。このようにして、ファイルへの連続アクセスを実行することができ、ファイル・アクセス速度を増加させることができる。さらに、メモリ管理ユニット(Memory  Management  Unit，略して"MMU")を使用することにより、目標ファイルの仮想アドレスと物理アドレスとの間の変換を透過的に完了することができ、それによりファイル・アクセス速度の増加が容易になり、ソフトウェアの実行オーバーヘッドをさらに低減することができる。代替的に、中央処理装置(Central  Processing  Unit，略してCPU)に対するロード/記憶(Load/Store)命令によって、第2の仮想アドレス空間を使用することにより、目標ファイルへの連続アクセスを実行することができるということを理解すべきである。
【０１０４】
本発明の本実施形態においては、目標ファイルは、ユーザ空間において隣接仮想アドレス空間のセグメントにマッピングされる。一方、システム・コールの数量が減少した場合に、ファイル・アクセスをユーザ空間で実行することができ、他方、ファイル・アクセス速度を効果的に増加させることができ、ファイル・アクセスの効率を効果的に向上させることができる。
【０１０５】
以下の記載は、図5を参照して、本発明の他の実施形態にしたがったファイル・アクセス方法300を説明している。図5においては、プロセスのファイル・アクセス要求が、説明のための一例として用いられているということに留意すべきである。方法300は、プロセスがファイルにアクセスすることを要求するいずれかのシナリオに適用できるということを理解することができる。図5に示されているように、方法300は、以下のステップを含む。
【０１０６】
ステップS310:  あらかじめ設定された第1の仮想アドレス空間と第1の物理アドレス空間との間の第1のマッピング関係をカーネル空間において確立し、第1のマッピング関係に対応するマッピング・ページ・テーブルを、カーネル空間に対応するプロセス・ページ・テーブルの中に格納する。第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、第1の物理アドレス空間は、メモリ空間の一部である。
【０１０７】
特に、システム初期化中に、第1の仮想アドレス空間と第1の物理アドレス空間との間の(図1-a及び図1-bに示されている)第1のマッピング関係が確立され、第1のマッピング関係に対応するマッピング・ページ・テーブルが、カーネル空間に対応するプロセス・ページ・テーブルに格納される。たとえば、第1のマッピング関係に対応するマッピング・ページ・テーブルは、カーネル空間の共用のページ・グローバル・ディレクトリに格納される。
【０１０８】
第1の仮想アドレス空間と第1の物理アドレス空間との間の第1のマッピング関係がステップS310でカーネル空間において確立される前に、第1の物理アドレス空間が初期化される必要があるということを理解すべきである。特に、システムが起動した後に、第1の物理アドレス空間があらかじめ定義されている場合に、あらかじめ定義された物理アドレス空間のセグメントのヘッダ位置に格納されたデータが、ファイル・システムの物理構造編成形式に適合するか否かが検証される。データが編成形式に適合する場合には、初期化が行われる必要はないが、データが編成形式に適合しない場合には、初期化が第1の物理アドレス空間に実行される。物理アドレス空間のセグメントがブランク・メモリ領域である場合には、ブランク・メモリ領域は、ファイル・システムの物理構造編成形式にしたがって初期化される。たとえば、物理メモリ領域のセグメントは、ファイル・システムの第1の物理アドレス空間のサイズ及びデータ編成構造等の要素にしたがってフォーマットされる。たとえば、物理メモリ領域(すなわち、第1の物理アドレス空間)のセグメントは、スーパーブロック又はインデックス・ノード等のデータ構造を確立することによって編成され管理される。
【０１０９】
ステップS320:  プロセスからファイル・アクセス要求を受信する。ファイル・アクセス要求は、ファイル識別子を含み、ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される。ステップS320は、図2に示されているステップS210と同じである。簡潔さのために、詳細については本明細書では再び説明しない。
【０１１０】
ステップS330:  第1の仮想アドレス空間に対応するプロセス・ページ・テーブルが、第1のマッピング関係を記録していないということを決定する。
【０１１１】
特に、プロセスからファイル・アクセス要求を受信した後に、ユーザ空間において第1の仮想アドレス空間にアクセスするとき、第1の仮想アドレス空間に対応するプロセス・ページ・テーブルは、第1のマッピング関係を記録するエントリを欠いている可能性がある。
【０１１２】
ステップS340:  第1のマッピング関係に対応しているとともにカーネル空間の中に格納されるマッピング・ページ・テーブルを、第1の仮想アドレス空間に対応するプロセス・ページ・テーブルにリンクさせる。
【０１１３】
特に、ユーザ空間がカーネル空間に切り換えられ、第1のマッピング関係に対応しているとともにカーネル空間に格納されているマッピング・ページ・テーブルが、第1の仮想アドレス空間に対応するプロセス・ページ・テーブルにリンクさせられ、それによりファイル・アクセスが、第1の仮想アドレス空間及び第1のマッピング関係にしたがってユーザ空間において引き続き実行される。
【０１１４】
ステップS350:  第1の仮想アドレス空間及び第1のマッピング関係にしたがって、第1の物理アドレス空間にアクセスする。ステップS350は、図2に示されたステップS220と同じであり、詳細について本明細書では再び説明しない。
【０１１５】
ステップS360:  目標ファイルのファイル識別子にしたがって第1の物理アドレス空間から目標ファイルのインデックス・ノードを取得する。インデックス・ノードは、目標ファイルのファイル・ページ・テーブル情報を含む。ステップS360は、図2に示されたステップS230と同じであり、詳細について本明細書では再び説明しない。
【０１１６】
ステップS370:  インデックス・ノードに含まれる目標ファイルのファイル・ページ・テーブル情報にしたがって目標ファイルのファイル・ページ・テーブルを取得する。ファイル・ページ・テーブルは、第1の物理アドレス空間の中の第2の物理アドレス空間を記録し、目標ファイルのデータ・ページが、第2の物理アドレス空間の中に格納され、目標ファイルのデータ・ページは、ファイル・データを格納するのに使用される。ステップS370は、図2に示されたステップS240と同じであり、詳細について本明細書では再び説明しない。
【０１１７】
ステップS380:  第2の物理アドレス空間にしたがって目標ファイルにアクセスする。ステップS380は、図2に示されたステップS250と同じであり、詳細について本明細書では再び説明しない。
【０１１８】
本発明の本実施形態にしたがったファイル・アクセス方法において、第1の仮想アドレス空間に対応するプロセス・ページ・テーブルが第1のマッピング関係を記録していない場合に、ページ・フォルトが1回実行される必要がある。すなわち、ユーザ空間がカーネル空間に切り換えられ、第1のマッピング関係に対応するマッピング・ページ・テーブルが、第1の仮想アドレス空間に対応するプロセス・ページ・テーブルにリンクさせられる。第1の仮想アドレス空間に対応するプロセス・ページ・テーブルが第1のマッピング関係を記録している場合には、第1のマッピング関係及び第1の仮想アドレス空間にしたがって、ファイル・システムを格納する第1の物理アドレス空間にアクセスし、それによりファイル・システムの中のファイルにアクセスする。本発明の本実施形態においては、第1の仮想アドレス空間は、すべてのプロセスによって共用されるとともにユーザ空間の中にある空間であるということに留意すべきである。すべてのプロセスのファイル・アクセス要求について、要求された目標ファイルへのアクセスを、ユーザ空間において直接実行することができる。
【０１１９】
本発明の本実施形態においては、第1の仮想アドレス空間と第1の物理アドレス空間との間の第1のマッピング関係に対応するマッピング・ページ・テーブルが、第1の仮想アドレス空間に対応するプロセス・テーブルにリンクさせられた後に、システムが停止されない場合には、第1の仮想アドレス空間に対応するプロセス・ページ・テーブルは、第1のマッピング関係を記録するエントリを恒久的に格納し、いずれのプロセスも、第1の仮想アドレス空間に基づいて、ファイル・アクセスをユーザ空間において引き続き実行することができるということを理解すべきである。
【０１２０】
従来技術と比較して、本発明の本実施形態にしたがったファイル・アクセス方法では、システム・コールの数量が相対的に大きく減少した場合に、ファイル・アクセスをユーザ空間で実行することができる。したがって、ソフトウェアの実行オーバーヘッドをファイル・アクセスの間に効果的に減少させることができ、ファイル・アクセス速度を効果的に増加させることができ、ファイル・アクセス効率を効果的に向上させることができる。
【０１２１】
本発明の本実施形態において提供される技法的解決方法は、Linuxオペレーティング・システムに適用することができ、或いは、各々のプロセスがその専用の空間を有している他のオペレーティング・システムに適用できることを理解すべきである。
【０１２２】
以上の記載は、図1乃至図5を参照して、本発明の複数の実施形態にしたがったファイル・アクセス方法を詳述し、以下の記載は、図6乃至図8を参照して、本発明の1つの実施形態にしたがったファイル・アクセス装置を詳述する。
【０１２３】
図6は、本発明の1つの実施形態にしたがったファイル・アクセス装置400の概略的なブロック図である。装置400は、
プロセスからファイル・アクセス要求を受信するように構成される受信モジュール410であって、ファイル・アクセス要求は、ファイル識別子を含み、ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される、受信モジュール410と、
第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された第1の仮想アドレス空間にしたがって、第1の物理アドレス空間にアクセスするように構成される第1のアクセス・モジュール420であって、第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、第1の物理アドレス空間は、ファイル・システムを格納するとともに、メモリ空間の一部になっている、第1のアクセス・モジュール420と、
目標ファイルのファイル識別子であって受信モジュール410で受信されるファイル識別子にしたがって第1の物理アドレス空間から目標ファイルのインデックス・ノードを取得するように構成される取得モジュール430であって、インデックス・ノードは、目標ファイルのファイル・ページ・テーブル情報を含み、
取得モジュール430は、さらに、インデックス・ノードに含まれる目標ファイルのファイル・ページ・テーブル情報にしたがって目標ファイルのファイル・ページ・テーブルを取得するように構成され、ファイル・ページ・テーブルは、第1の物理アドレス空間の中の第2の物理アドレス空間を記録し、目標ファイルのデータ・ページは、第2の物理アドレス空間の中に格納され、目標ファイルのデータ・ページは、ファイル・データを格納するのに使用される、取得モジュール430と、
取得モジュール430で取得されたファイル・ページ・テーブルによって示される第2の物理アドレス空間にしたがって、目標ファイルにアクセスするように構成される第2のアクセス・モジュール440を含む。
【０１２４】
本発明の本実施形態にしたがったファイル・アクセス装置においては、ユーザ空間の中の第1の仮想アドレス空間と第1の物理アドレス空間との間のマッピング関係にしたがって、第1の仮想アドレス空間を使用することにより、ファイル・システムを格納する第1の物理アドレス空間の中の目標ファイルにアクセスし、それにより、従来技術におけるファイル・アクセスの間の頻繁なシステム・コールなしで、ユーザ空間においてファイル・アクセスを直接実行し、ファイル・アクセスの間のソフトウェアの実行オーバーヘッドを効果的に低減することができ、ファイル・アクセス速度を高めることができる。
【０１２５】
図7に示されているように、選択的に、1つの実施形態においては、第2のアクセス・モジュール440は、
目標ファイルに第2の仮想アドレス空間を割り当てるように構成される割当ユニット441であって、第2の仮想アドレス空間は、プライベート空間の一部となっており、プライベート空間は、プロセスに割り当てられるとともにオペレーティング・システムのユーザ空間の中に存在し、第2の仮想アドレス空間は、隣接アドレス空間である、割当ユニット441と、
割当ユニット441によって割り当てられる第2の仮想アドレス空間と第2の物理アドレス空間との間に第2のマッピング関係を確立するように構成される確立ユニット442と、
割当ユニット441によって割り当てられる第2の仮想アドレス空間及び確立ユニット442によって確立される第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルにアクセスするように構成されるアクセス・ユニット443とを含む。
【０１２６】
選択的に、1つの実施形態においては、確立ユニット442は、特に、第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに、目標ファイルのファイル・ページ・テーブルをリンクさせることによって第2のマッピング関係を確立するように構成される。
【０１２７】
選択的に、1つの実施形態においては、割当ユニットによって割り当てられる第2の仮想アドレス空間は、第2の物理アドレス空間よりも大きく、
アクセス・ユニットは、特に、
第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルに読み出し動作を実行し、
読み出し動作によって読み出されるべきデータに対応する仮想アドレスが、目標ファイルに対応する仮想アドレス空間に含まれていない場合には、読み出し動作を終了するように、構成される。
【０１２８】
選択的に、1つの実施形態においては、割当ユニットによって割り当てられる第2の仮想アドレス空間は、第2の物理アドレス空間よりも大きく、
アクセス・ユニットは、特に、
第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルに書き込み動作を実行し、
書き込み動作によって書き込まれるべきデータに対応する仮想アドレスが、第2の仮想アドレス空間に含まれていない場合には、書き込み動作を終了するように、構成される。
【０１２９】
図8に示されているように、選択的に、1つの実施形態においては、装置400は、
第1の仮想アドレス空間と第1の物理アドレス空間との間の第1のマッピング関係をカーネル空間において確立し、第1のマッピング関係に対応するマッピング・ページ・テーブルを、カーネル空間に対応するプロセス・ページ・テーブルの中に格納するように、構成される確立モジュール450と、
プロセスからファイル・アクセス要求を受信するように構成される受信モジュール410であって、ファイル・アクセス要求は、ファイル識別子を含み、ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される、受信モジュール410と、
受信モジュール410がプロセスからファイル・アクセス要求を受信した後に、第1の仮想アドレス空間に対応するプロセス・ページ・テーブルが、第1のマッピング関係を記録していないことを決定するように構成される決定モジュール460と、
確立モジュール450によって確立された第1のマッピング関係に対応しているとともにカーネル空間に格納されているマッピング・ページ・テーブルを、第1の仮想アドレス空間に対応するプロセス・ページ・テーブルにリンクさせるように構成されるリンク・モジュール470と、
第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された第1の仮想アドレス空間にしたがって、第1の物理アドレス空間にアクセスするように構成される第1のアクセス・モジュール420であって、第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、第1の物理アドレス空間は、ファイル・システムを格納するとともに、メモリ空間の一部になっている、第1のアクセス・モジュール420と、
目標ファイルのファイル識別子であって受信モジュール410で受信されるファイル識別子にしたがって第1の物理アドレス空間から目標ファイルのインデックス・ノードを取得するように構成される取得モジュール430であって、インデックス・ノードは、目標ファイルのファイル・ページ・テーブル情報を含み、
取得モジュール430は、さらに、インデックス・ノードに含まれる目標ファイルのファイル・ページ・テーブル情報にしたがって目標ファイルのファイル・ページ・テーブルを取得するように構成され、ファイル・ページ・テーブルは、第1の物理アドレス空間の中に格納された目標ファイルのデータ・ページの第2の物理アドレス空間を記録し、目標ファイルのデータ・ページは、ファイル・データを格納するのに使用される、取得モジュール430と、
取得モジュールで取得されたファイル・ページ・テーブルによって示される第2の物理アドレス空間にしたがって、目標ファイルにアクセスするように構成される第2のアクセス・モジュール440とを含む。
【０１３０】
確立モジュール450は、受信モジュール410がファイル・アクセス要求を受信する前に、第1のマッピング関係をカーネル空間において確立するということを理解すべきである。第1のアクセス・モジュール420は、リンク・モジュール470が、確立モジュールによって確立された第1のマッピング関係に対応しているとともにカーネル空間の中に格納されているマッピング・ページ・テーブルを、第1の仮想アドレス空間に対応するプロセス・ページ・テーブルにリンクさせる場合に、第1の仮想アドレス空間及び第1のマッピング関係にしたがって第1の物理アドレス空間にアクセスするということもまた理解すべきである。
【０１３１】
本発明の本実施形態にしたがったファイル・アクセス装置400の各々のモジュールの上記の及び他の動作及び/又は機能は、別々に、図2、図4及び図5に示された方法の対応する手順を個別に実行することを意図しているということを理解すべきである。簡略にするために、詳細については本明細書で再び説明しない。
【０１３２】
本発明の本実施形態にしたがったファイル・アクセス装置400においては、ユーザ空間の第1の仮想アドレス空間と第1の物理アドレス空間との間のマッピング関係にしたがって、第1の仮想アドレス空間を使用することにより、ファイル・システムを格納する第1の物理アドレス空間の中の目標ファイルにアクセスし、それにより従来技術におけるファイル・アクセスの間の頻繁なシステム・コールなしで、ユーザ空間においてファイル・アクセスを直接実施し、ファイル・アクセスの間のソフトウェアの実行オーバーヘッドを効果的に減少させることができ、ファイル・アクセス速度を増加させることができる。
【０１３３】
図9に示されているように、本発明の1つの実施形態は、さらに、ストレージ・システムの概略的な構成図を提供する。ストレージ・システム500は、プロセッサ510、メモリ520、及びバス・システム530を含む。プロセッサ510は、バス・システム530を使用することによりメモリ520に接続され、メモリ520は、ファイル及びプログラムを格納するように構成される。プロセッサ510は、メモリ520に格納されたプログラムを実行するように構成される。プロセッサ510は、バス・システム530を使用することにより、メモリ520に格納されたコードを呼び出して以下のステップ、すなわち、プロセスからファイル・アクセス要求を受信するステップであって、ファイル・アクセス要求は、ファイル識別子を含み、ファイル識別子は、アクセスされるべき目標ファイルを示すのに使用される、ステップと、第1の仮想アドレス空間と第1の物理アドレス空間との間のあらかじめ設定された第1のマッピング関係及びあらかじめ設定された第1の仮想アドレス空間にしたがって、第1の物理アドレス空間にアクセスするステップであって、第1の仮想アドレス空間は、オペレーティング・システムのユーザ空間の一部であり、第1の物理アドレス空間は、ファイル・システムを格納するとともに、メモリ空間の一部になっている、ステップと、目標ファイルのファイル識別子にしたがって第1の物理アドレス空間から目標ファイルのインデックス・ノードを取得するステップであって、インデックス・ノードは、目標ファイルのファイル・ページ・テーブル情報を含む、ステップと、インデックス・ノードに含まれる目標ファイルのファイル・ページ・テーブル情報にしたがって目標ファイルのファイル・ページ・テーブルを取得するステップであって、ファイル・ページ・テーブルは、第1の物理アドレス空間の中の第2の物理アドレス空間を記録し、目標ファイルのデータ・ページは、第2の物理アドレス空間の中に格納され、目標ファイルのデータ・ページは、ファイル・データを格納するのに使用される、ステップと、第2の物理アドレス空間にしたがって目標ファイルにアクセスするステップとを実行する。
【０１３４】
本発明の本実施形態にしたがったストレージ・システムにおいては、ユーザ空間の第1の仮想アドレス空間と第1の物理アドレス空間との間のマッピング関係にしたがって、第1の仮想アドレス空間を使用することにより、ファイル・システムを格納する第1の物理アドレス空間の中の目標ファイルにアクセスし、それにより従来技術におけるファイル・アクセスの間の頻繁なシステム・コールなしで、ユーザ空間においてファイル・アクセスを直接実行し、ファイル・アクセスの間のソフトウェアの実行オーバーヘッドを効果的に減少させることができ、ファイル・アクセス速度を増加させることができる。
【０１３５】
選択的に、プロセッサ510は、バス・システム530を使用することにより、メモリ520に格納されたコードを呼び出して、特に、以下のステップ、すなわち、目標ファイルに第2の仮想アドレス空間を割り当てるステップであって、第2の仮想アドレス空間は、プライベート空間の一部となっており、プライベート空間は、プロセスに割り当てられるとともにオペレーティング・システムのユーザ空間の中に存在し、第2の仮想アドレス空間は、隣接アドレス空間である、ステップと、第2の物理アドレス空間と第2の仮想アドレス空間との間に第2のマッピング関係を確立するステップと、第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルにアクセスするステップとを実行する。
【０１３６】
選択的に、プロセッサ510は、バス・システム530を使用することにより、メモリ520に格納されているコードを呼び出して、特に、第2の仮想アドレス空間に対応するプロセス・ページ・テーブルに、目標ファイルのファイル・ページ・テーブルをリンクさせることによって第2のマッピング関係を確立するステップを実行する。
【０１３７】
選択的に、第2の仮想アドレス空間は、第2の物理アドレス空間よりも大きい。プロセッサ510は、バス・システム530を使用することにより、メモリ520に格納されているコードを呼び出して、特に、以下のステップ、すなわち、第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルに読み出し動作を実行するステップと、読み出し動作によって読み出されるべきデータに対応する仮想アドレスが、目標ファイルに対応する仮想アドレス空間に含まれていない場合には、読み出し動作を終了するステップとを実行する。
【０１３８】
選択的に、第2の仮想アドレス空間は、第2の物理アドレス空間よりも大きい。プロセッサ510は、バス・システム530を使用することにより、メモリ520に格納されているコードを呼び出して、特に、以下のステップ、すなわち、第2の仮想アドレス空間及び第2のマッピング関係にしたがって第2の物理アドレス空間の中の目標ファイルに書き込み動作を実行するステップと、書き込み動作によって書き込まれるべきデータに対応する仮想アドレスが、第2の仮想アドレス空間に含まれていない場合には、書き込み動作を終了するステップとを実行する。
【０１３９】
選択的に、プロセッサ510は、バス・システム530を使用することにより、メモリ520に格納されているコードを呼び出して、以下のステップ、すなわち、第1の仮想アドレス空間と第1の物理アドレス空間との間の第1のマッピング関係をカーネル空間において確立し、第1のマッピング関係に対応するマッピング・ページ・テーブルを、カーネル空間に対応するプロセス・ページ・テーブルの中に格納するステップと、プロセスからファイル・アクセス要求を受信するステップの後に、第1の仮想アドレス空間に対応するプロセス・ページ・テーブルが、第1のマッピング関係を記録していないということを決定するステップと、第1のマッピング関係に対応しているとともにカーネル空間の中に格納されるマッピング・ページ・テーブルを、第1の仮想アドレス空間に対応するプロセス・ページ・テーブルにリンクさせるステップとをさらに実行する。
【０１４０】
本発明の本実施形態においては、プロセッサ510は、中央処理装置(Central  Processing  Unit，略して"CPU")であってもよく、或いは、プロセッサ510は、他の汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は他のプログラマブル論理デバイス、トランジスタ論理デバイス、ハードウェア構成要素等であってもよいということを理解すべきである。汎用プロセッサは、マイクロプロセッサであってもよく、或いは、プロセッサは、いずれかの通常のプロセッサ等であってもよい。
【０１４１】
メモリ520は、読み出し専用メモリ及びランダム・アクセス・メモリを含んでもよく、プロセッサ510に命令及びデータを供給する。メモリ520は、さらに、不揮発性ランダム・アクセス・メモリを含んでもよく、その不揮発性ランダム・アクセス・メモリは、ファイルを格納するように構成される。たとえば、メモリ520は、さらに、デバイス・タイプ等の情報を格納してもよい。
【０１４２】
バス・システム530は、データ・バスに加えて、電力バス、制御バス、状態信号バス等を含んでもよい。しかしながら、説明を明瞭にするために、図の中のバスのすべては、バス・システム530と名付けられている。
【０１４３】
本発明の本実施形態にしたがったストレージ・システム500は、ファイル・システムが確立されるコンピュータ、サーバ、ストレージ・アレイ等のデバイスを含んでもよい。ストレージ・システム500は、NVMをメモリ・バスに装着することができ、ファイル・システムがNVM内に確立されるということに留意すべきである。
【０１４４】
実施プロセスの間、上記の方法のステップは、プロセッサ510の中のハードウェアの集積論理回路、又はソフトウェアの形態の命令を使用することにより完了されてもよい。本発明の実施形態に関して開示された方法のステップは、ハードウェア・プロセッサによって直接実行されてもよく、或いは、プロセッサの中のハードウェア及びソフトウェア・モジュールの組み合わせにより実行されてもよい。ソフトウェア・モジュールは、ランダム・アクセス・メモリ、フラッシュ・メモリ、読み出し専用メモリ、プログラマブル読み出し専用メモリ、電気的消去可能プログラマブル読み出し専用メモリ、又はレジスタ等の従来技術で成熟している記憶媒体の中に位置していてもよい。記憶媒体は、メモリ520の中に位置している。プロセッサ510は、メモリ520から情報を読み出し、プロセッサ510のハードウェアと関連して上記の方法のステップを完了する。繰返しを避けるために、詳細については本明細書で再び説明しない。
【０１４５】
本発明の本実施形態にしたがったストレージ・システム500は、本発明の上記の実施形態にしたがったファイル・アクセス装置400に対応していてもよく、ストレージ・システム500は、図2、図4及び図5に示された方法を実装してもよいということを理解すべきである。簡略にするために、詳細については本明細書で再び説明しない。
【０１４６】
本発明の本実施形態にしたがったストレージ・システム500においては、ユーザ空間の中の第1の仮想アドレス空間と第1の物理アドレス空間との間のマッピング関係にしたがって、第1の仮想アドレス空間を使用することにより、ファイル・システムを格納する第1の物理アドレス空間の中の目標ファイルにアクセスし、それにより従来技術におけるファイル・アクセスの間の頻繁なシステム・コールなしで、ユーザ空間においてファイル・アクセスを直接実行し、ファイル・アクセスの間のソフトウェアの実行オーバーヘッドを効果的に減少させることができ、ファイル・アクセス速度を増加させることができる。
【０１４７】
本発明の明細書、特許請求の範囲、及び添付の図面においては、"第1の"、"第2の"、"第3の"等の用語は、複数の異なる対象を区別することを意図し、1つの特定の順序を示すものではないということを理解すべきである。加えて、"含む"及び"含有する"との記載、又はこれらのいずれかの他の変形は、非限定的な包含を対象とすることを意図している。たとえば、一連のステップ又はモジュールを含むプロセス、方法、システム、製品、又は装置は、列挙されたステップ又はモジュールに限定されるのではなく、列挙されていないステップ又はモジュールを選択的にさらに含み、或いは、プロセス、方法、製品、又は装置の他の固有のステップ又はモジュールを選択的にさらに含む。
【０１４８】
上記のプロセスの順序番号は、本発明の様々な実施形態における実行順序を意味するものではないということをまた理解すべきである。プロセスの実行順序は、プロセスの機能及び内部論理にしたがって決定されるべきであり、本発明の実施形態の実施プロセスに対するいかなる限定とも解釈されるべきではない。
【０１４９】
当業者は、本明細書に開示された複数の実施形態で説明された例と組み合わせて、ユニット及びアルゴリズム・ステップが、電子的ハードウェア、又はコンピュータ・ソフトウェアと電子的ハードウェアの組合せによって実装されてもよいということ知ることができる。機能がハードウェアで実行されるかソフトウェアで実行されるかは、技法的解決方法の複数の特定の応用及び設計制約条件によって決まる。当業者は、複数の異なる方法を使用して、各々の特定の応用について上記の機能を実装してもよく、その実装は、本発明の範囲を越えると解釈されるべきではない。
【０１５０】
本出願で提供されるいくつかの実施形態において、開示されたシステム、装置及び方法は、他の方法で実装されてもよいということを理解すべきである。たとえば、説明された装置実施形態は例示的なものにすぎない。たとえば、ユニットの区分は、論理的機能区分に過ぎず、現実の実装では別の区分となっていてもよい。たとえば、複数のユニット又は構成要素を組み合わせて或いは一体化して、他の1つのシステムにしてもよく、又はいくつかの機能を省略し或いは実行しなくてもよい。加えて、示された、又は論じられた相互の接続又は直接接続又は通信接続は、いくつかのインターフェースを使用することにより実装されてもよい。複数の装置又は複数のユニットの間の間接的な接続又は通信接続は、電子的形式、機械的形式又は他の形式で実装されてもよい。
【０１５１】
機能がソフトウェア機能ユニットの形で実施され、独立の製品として販売され又は使用される場合には、機能は、1つのコンピュータ読み取り可能な記憶媒体の中に格納されてもよい。そのような理解に基づいて、本発明の複数の技法的解決方法は、本質的に、又はそれらの技術的解決方法のうちの従来技術に寄与する部分は、又はそれらの技法的解決方法のいくつかは、ソフトウェア製品の形態で実装されてもよい。ソフトウェア製品は、1つの記憶媒体の中に格納され、本発明の複数の実施形態に関して説明された複数の方法のステップの全部又はいくつかを実行するように(パーソナルコンピュータ、サーバ、又はネットワーク・デバイスであってもよい)コンピュータ・デバイスに指示するいくつかの命令を含む。上記の記憶媒体は、USBフラッシュ・ドライブ、取外し可能なハードディスク、読み出し専用メモリ(ROM，Read-Only  Memory)、ランダム・アクセス・メモリ(RAM，Random  Access  Memory)、磁気ディスク、又は光ディスク等の、プログラムコードを格納することができるいずれかの非一時的(non-transitory)機械読み取り可能な媒体を含む。
【０１５２】
当業者は、説明の便宜及び簡潔さのために、上記の複数の実施形態において、それらの複数の実施形態は、複数の異なる態様を強調し、1つの実施形態で詳細に説明されていない部分については、他の実施形態の関連する説明を参照してもよいということを明確に知ることができる。本発明の複数の実施形態で開示された複数の特徴、特許請求の範囲、及び添付の図面は、単独で存在してもよく、又は組合せて存在してもよい。本発明の複数の実施形態でハードウェアの形態で説明された複数の特徴は、ソフトウェアによって実行されてもよく、逆も同様であり、これは本明細書では限定されない。
【図１−ａ】
0006377257.tif 000002
【図１−ｂ】
0006377257.tif 000003
【図２】
0006377257.tif 000004
【図３】
0006377257.tif 000005
【図４】
0006377257.tif 000006
【図５】
0006377257.tif 000007
【図６】
0006377257.tif 000008
【図７】
0006377257.tif 000009
【図８】
0006377257.tif 000010
【図９】
0006377257.tif 000011