(57)【特許請求の範囲】
【請求項１】
計算システムであって、
（ａ）ホストシステムであって、
（ｉ）前記ホストシステム上で動作するファイルシステムおよびブロックデバイスドライバと、
（ｉｉ）前記ホストシステム上で動作する少なくとも１つのアプリケーションと、を有するホストシステムと、
（ｂ）記憶装置であって、
（ｉ）前記記憶装置を制御するコントローラと、
( ｉｉ）情報を前記記憶装置に格納するための、制限部分および非制限部分を含む記憶エリアと、を有する記憶装置と、
（ｃ）前記非制限部分のみを介する、前記ファイルシステムによる前記記憶装置へのアクセスを許すための第１のメカニズムと、
（ｄ）前記少なくとも１つのアプリケーションが前記ファイルシステムおよび前記非制限部分を介して前記制限部分にアクセスすることを可能にするための、前記記憶装置に存在する第２のメカニズムと、
を備える計算システム。
【請求項２】
請求項１記載の計算システムにおいて、
前記第２のメカニズムは、前記記憶装置がデータを前記非制限部分から前記制限部分にコピーすることを可能にするように構成される計算システム。
【請求項３】
請求項１記載の計算システムにおいて、
前記第２のメカニズムは、前記制限部分内のアドレスに向けられたホストシステム読み出しリクエストを前記非制限部分内のアドレスへ経路指定するように前記記憶装置に指示するように動作可能である計算システム。
【請求項４】
請求項１記載の計算システムにおいて、
前記第２のメカニズムは、前記ホストシステムによるデータアクセスリクエストが前記非制限部分にアドレス指定されているときに前記ホストシステムのアクセスコマンドを前記制限部分内に存在するデータに適用するように動作可能である計算システム。
【請求項５】
コンピュータ可読記憶媒体において具体化されたコンピュータ可読コードを有するコンピュータ可読記憶媒体であって、前記コンピュータ可読コードは、記憶装置を管理するためのものであり、制限記憶部分および非制限記憶部分を有する記憶エリアを含むと共に、前記記憶装置の前記記憶エリアへのそのアクセスが前記非制限部分に限定されるファイルシステムを有するホストシステムに操作可能に結合され、さらに前記ホストシステム上で動作するアプリケーションが前記ファイルシステムおよび前記非制限部分を介して前記制限部分にアクセスすることを可能にするためのプログラムコードを含むコンピュータ可読記憶媒体。
【請求項６】
請求項５記載の記憶媒体において、
前記アプリケーションによる前記制限部分への前記アクセスは、前記記憶装置にデータを前記非制限部分から前記制限部分へコピーさせることを含むステップによって可能にされる記憶媒体。
【請求項７】
請求項５記載の記憶媒体において、
前記アプリケーションによる前記制限部分への前記アクセスは、前記制限部分内のアドレスに向けられたホストシステム読み出しリクエストを前記非制限部分内のアドレスへ経路指定することを含むステップによって可能にされる記憶媒体。
【請求項８】
請求項５記載の記憶媒体において、
前記アプリケーションによる前記制限部分への前記アクセスは、前記ホストシステムが前記非制限部分内のデータアドレスへのアクセスをリクエストするときに前記ホストシステムのアクセスコマンドを前記制限部分に存在するデータに適用することを含むステップによって可能にされる記憶媒体。
【請求項９】
ホストシステム上で動作するアプリケーションが非制限部分をも含む記憶装置の制限部分にアクセスするための方法であって、
（ａ）前記ホストシステム上で動作するファイルシステムを提供するステップと、
（ｂ）前記非制限部分のみを介する、前記ファイルシステムによる前記記憶装置へのアクセスを許すステップと、
（ｃ）前記アプリケーションによって前記ファイルシステムを介して前記記憶装置に送られるデータが前記制限部分に向けられるように意図されているという指示を前記アプリケーションから前記記憶装置に送るステップと、
（ｄ）前記指示を前記記憶装置において検出するステップと、
（ｅ）前記指示に従って、前記制限部分および前記非制限部分の両方をアドレス指定することを含む仕方で前記データを前記記憶装置に格納するステップと、
を含む方法。
【請求項１０】
請求項９記載の方法において、
前記データは前記制限部分に格納され、
（ｆ）アプリケーションリクエストを受け取ったときに、前記制限部分に存在する前記データを前記アプリケーションによる読み出しのために利用可能にするステップをさらに含む方法。
【請求項１１】
請求項９記載の方法において、
（ｆ）前記記憶装置の無駄エリアを前記ファイルシステムによる使用のために解放するステップをさらに含む方法。
【請求項１２】
請求項９記載の方法において、
前記データを前記記憶装置に格納するステップは、前記データを前記非制限部分から前記制限部分にコピーすることを含む方法。
【請求項１３】
請求項９記載の方法において、
前記データは前記非制限部分に格納され、
（ｆ）前記制限部分に向けられたホストシステムのアクセスリクエストを前記非制限部分内の前記データの少なくとも１つのアドレスへ経路指定するステップをさらに含む方法。
【請求項１４】
請求項９記載の方法において、
（ｆ）前記非制限部分に向けられたホストシステムのアクセスリクエストを、前記制限部分への制限アクセスリクエストと解釈するステップをさらに含む方法。
【請求項１５】
ファイルシステムを使用するホストシステムによりアクセスされるデータを格納するための記憶装置であって、
（ａ）制限部分および非制限部分を含む記憶エリアであって、前記ファイルシステムを介しての前記ホストシステムによる前記記憶装置へのアクセスは前記非制限部分のみを介して許される記憶エリアと、
（ｂ）前記ホストシステム上で動作するアプリケーションが前記ファイルシステムおよび前記非制限部分を介して前記制限部分にアクセスすることを可能にするように動作可能なコントローラと、
を備える記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、許可済みアプリケーションがファイルシステムアプリケーションインターフェイス（ＦＳＡＰＩ：file-system application-interface ）だけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムに関する。
【背景技術】
【０００２】
ホストシステムの動作を可能にする不揮発性メモリ（ＮＶＭ）記憶装置は、コンピュータ工学の技術分野で良く知られている。単純なセキュリティ上の考慮から、ホストシステムの開発者は必然的に「ブートパーティション」が普通のファイルシステムによってアクセスされるのを防止しようとする。
【０００３】
ブートパーティションおよびシステムデータ（例えば、セキュリティキー）などの制限サブエリアへのアクセスは制限され、これらのサブエリアはＦＳＡＰＩだけを使用するアプリケーションによってはアクセスされ得ない。アプリケーションおよびユーザにサービスするように意図されている他の記憶サブエリアは、ＦＳＡＰＩを用いるファイルシステムによってアクセスされる。この制限は、通例、制限サブエリアのアドレスを除いて、ファイルシステムがアクセスできるアドレスの範囲を制限することによって実施される。
【０００４】
しかし、ホストシステムの寿命の間に、制限サブエリア内のデータに（例えば、ブートイメージを更新するために、またシステムキーを読み出すために）アクセスすることが時折必要になる。ブートパーティションを更新する必要は、いろいろな理由から（例えば、ソフトウェアバグを直すか、あるいは新しく利用可能になった機能をインストールするかなど）生じ得る。
【０００５】
制限エリアはＦＳＡＰＩを使用するオペレーティングシステム（ＯＳ）によっては改変され得ないので、そのような更新は複雑であって、制限を迂回して特権付きエリアにアクセスすることのできる特定デバイス向け、特定ホスト向け、特定ＯＳ向けのアプリケーションを必要とする。
【０００６】
そのような解決策（例えば、Ｍｉｃｒｏｓｏｆｔ（マイクロソフト）（登録商標）社から入手できるＵｐｄａｔｅＸＩＰ）は、ＲＡＭをフラギングすること、パワーダウンせずにホストシステムをリブートすること、フラグをブートコードによってチェックすること、ブートパーティションからブートパーティションにアクセスできる特別のコードをロードすることを含む。この手続きは、関係するコンポーネント（例えば、記憶装置、ホストシステム、およびＯＳ）の間に不均一性が存在するであろうということを意味する。このような事情は、記憶装置における制限エリア（例えば、ブートパーティション）の更新を非常に高価な機能とする。
【０００７】
あたかもその全体が本願明細書において完全に開示されたかのように参照により援用されているMoran の米国特許出願第２００６−００３１６３２号（以降、特許文献１と称される）などの従来技術システムは、ホストシステムのファイルシステムによってデータが直接書き込まれないようにデータを格納するためのシステムを開示している。しかし、特許文献１は、記憶装置がホストシステムによって書き込まれたデータを（パワーアップ時にそれを自動的にリストアすることによって）失わないようにそれによって保護するところの内部バックアップメカニズムを開示しているだけであって、データが書き込まれているアドレスとは異なる論理アドレスからデータがどのように読み出され得るかを開示していない。従って、特許文献１によるシステムは、制限エリア内のデータへのアクセスを可能にするためには役立たない。
【０００８】
許可済みアプリケーションがＦＳＡＰＩだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムを有することが望ましい。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許出願第２００６−００３１６３２号
【発明の概要】
【００１０】
本発明の目的は、許可済みアプリケーションがＦＳＡＰＩだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムを提供することである。
【００１１】
明瞭性を目的として、以下の幾つかの用語が本願明細書での使用のために特別に定義される。「ファイルシステムアプリケーションインターフェイス」、「ＦＳＡＰＩ」、および「ファイルシステムＡＰＩ」という用語は、本願明細書において、ファイルシステムが記憶装置において実行し得る標準的操作、すなわちファイル／ディレクトリを開く／作成する(open/create file/directory)、ファイル／ディレクトリを読み出す／書き込む(read/write file/directory) 、ファイル／ディレクトリを削除する(delete file/directory) 、ファイル／ディレクトリを改名する(rename file/directory) 、およびファイル／ディレクトリを閉じる(close file/directory)のセットを指すために使用される。「記憶エリア」という用語は、本願明細書において、記憶装置の１つの連続する論理（物理的でない）アドレス範囲を指すために使用される。
【００１２】
「ＦＡＴ３２」という用語は、本願明細書において、ＭｉｃｒｏｓｏｆｔＦＡＴ３２仕様において定義されているファイルシステムを指すために使用される。「クラスタ」という用語は、本願明細書において、ＭｉｃｒｏｓｏｆｔＦＡＴ３２仕様において定義されている１つのデータ構造を指すために使用される。「ＦＡＴエントリ」という用語は、本願明細書において、ＭｉｃｒｏｓｏｆｔＦＡＴ３２仕様において定義されている１つのデータ構造を指すために使用される。「ファイルアロケーションテーブル」および「ＦＡＴ」という用語は、本願明細書において、ＭｉｃｒｏｓｏｆｔＦＡＴ３２仕様において定義されている１つのデータ構造を指すために使用される。「ＤｉｒＥｎｔｒｙ」という用語は、本願明細書において、ＭｉｃｒｏｓｏｆｔＦＡＴ３２仕様において定義されている１つのデータ構造を指すために使用される。
【００１３】
「最終更新時間フィールド」および「ＬＵＴフィールド」という用語は、本願明細書において、ＭｉｃｒｏｓｏｆｔＦＡＴ３２仕様において定義されているように、ファイルが更新された最終時間を明示する、ＤｉｒＥｎｔｒｙ内の１つのパラメータを指すために使用される。「ファイル長パラメータ」という用語は、本願明細書において、ＭｉｃｒｏｓｏｆｔＦＡＴ３２仕様において定義されているように、ファイルの長さをバイト数で明示する、ＤｉｒＥｎｔｒｙ内の１つのパラメータを指すために使用される。
【００１４】
「セクタ」という用語は、本願明細書において、データパケットの論理シーケンシャルアドレスを指すために使用される。データパケットは、論理シーケンシャル５１２バイト、論理シーケンシャルＦＡＴ３２セクタ、または論理シーケンシャルＦＡＴ３２クラスタであり得る。「ファイル」という用語は、本願明細書において、ＦＳＡＰＩにより処理され得る任意のデータオブジェクト（例えば、データファイル、データファイルの一部分、ディレクトリ、およびプレイリストなど）を指すために使用される。「ＦＡＴ３２セクタ」という用語は、本願明細書において、５１２バイトのセクタを指すために使用される。
【００１５】
「論理パーティション」という用語は、本願明細書において、セクタの１つの論理的連続的範囲を指すために使用される。論理パーティションは、一度に１つのホストソフトウェアモジュールによってのみ管理され得る。ホストソフトウェアモジュールの例は、ファイルシステムおよびチップセットブートＲＯＭを含む。「制限エリア」という用語は、本願明細書において、ホストファイルシステムによってアクセスされるべきではないが他のモジュールによってアクセスされるべき論理パーティションを指すために使用される。「非制限エリア」という用語は、本願明細書において、ホストファイルシステムによってアクセスされ得る論理パーティションを指すために使用される。「制限セクタ」という用語は、本願明細書において、制限エリアの範囲内にあるセクタを指すために使用される。「非制限セクタ」という用語は、本願明細書において、非制限エリアの範囲内にあるセクタを指すために使用される。
【００１６】
「スマグリング(smuggling) 」という用語は、本願明細書において、それによってホストファイルシステムがデータを１つの論理アドレスに書き込み、また記憶装置が異なる論理アドレスにおいてデータへのアクセスを内部的に可能にするところの内部記憶操作を指すために使用される。特別の場合には、スマグリングは、ホストファイルシステムが制限エリアにおいてデータを読み出しおよび書き込むことを可能にするために使用され得る。「被スマグルデータ(smuggled data) 」という用語は、本願明細書において、それに対してスマグリング操作が行われたところのデータを指すために使用される。「無駄セクタ」という用語は、本願明細書において、スマグリング操作に起因して記憶装置がデータ格納のために使用しない論理セクタを指すために使用される。「スペースを解放する」という用語は、本願明細書において、無駄セクタの、データを記憶するセクタへの変換を指すために使用される。
【００１７】
本発明は、ＦＳＡＰＩだけを使用する記憶装置において制限エリアにアクセスする方法を教示する。記述の目的のために、記憶装置にアクセスするときに最も問題となる操作が扱われ、それは更新操作である。それでも、本発明は、後述するように、開く操作、作成する操作、読み出す操作、および削除する操作にも当てはまる。
【００１８】
本発明の好ましい実施形態は、３つのステップを有する間接プロセスを用いて実行される。第１のステップは、制限エリア内にスマグリングされるべきファイルを非制限エリアに格納することである。ファイルは、ＦＳＡＰＩにおいて適法であるけれども記憶装置によって「スマグリング表示」として認識され得る属性と共に格納される。記憶装置により実行される第２のステップは、新しく格納されたファイル中の「スマグリング表示」を探すことである。第３のステップは、スマグリング表示が検出された場合に限って行われるステップであって、記憶装置によって内部で行われる、ファイルの、指定された制限エリアへのスマグリングである。
【００１９】
検出
本発明の１つの好ましい実施形態では、スマグリング表示はファイルの名前である。本発明の他の１つの好ましい実施形態では、スマグリング表示はファイルのボディの特別のコンテンツ（例えば、ヘッダ、フッタ、あるいはファイル中の他の任意の定義済みオフセット）である。
【００２０】
スマグリング
本発明の１つの好ましい実施形態では、非制限エリアから制限エリアへのファイルのスマグリングは、データを非制限エリアから制限エリアへ物理的にコピーすることによって実行される。これは「コピー」モードと称される。
【００２１】
本発明の他の１つの好ましい実施形態では、スマグリングは、制限エリアからデータを読み出さなければならないデバイスが非制限エリアへリダイレクトされるように、非制限エリアを制限エリア中に論理的にマッピングすることにより実行される。これは「マップアウト」モードと称される。
【００２２】
本発明の他の１つの好ましい実施形態では、スマグリングは、ファイルにおける被スマグルデータの論理オフセットを制限エリアにおける対応するオフセットに変換し、これにより読み出しのために非制限エリアを制限エリアにマッピングすることによって、実行される。非制限エリアに書き込まれている被スマグルファイル(smuggled file) からファイルシステムがデータを読み出そうと試みるとき、記憶装置はその操作を「被スマグルデータを読み出すこと」として検出する。データは、制限エリアにおけるオフセットを被スマグルファイルにおけるオフセットに整合させることによって制限エリア内の対応する位置から取り出される。これは「マップイン」モードと称される。
【００２３】
本発明の他の好ましい実施形態では、コピーモード、マップアウトモード、あるいはマップインモードにおいて、スマグリングは、非制限エリアへの書き込みが完了し、ファイルが閉じられた後に、実行される。本発明の他の好ましい実施形態では、マップアウトモードまたはマップインモードにおいて、スマグリングは、ファイルが書き込まれている間に実行される。
【００２４】
スペースを解放する
本発明の１つの好ましい実施形態では、記憶装置の容量を超える仮想サブエリアを付け加え、その仮想サブエリアをアドレスの失われた範囲にマッピングすることによって、記憶装置は、制限エリアアドレスにマッピングされて失われた非制限エリアの論理アドレスを再使用する。
【００２５】
本発明の他の１つの好ましい実施形態では、アプリケーションは、スマグリング操作が行われるように適当な期間待った後に、ちょうど書き込まれたばかりのファイルを削除する。この手続きは、非制限エリアを使用するために解放する。これは「コピー−削除」モードと称される。
【００２６】
一般
本発明の他の好ましい実施形態では、検出するステップ、スマグリングするステップ、およびスペースを解放するステップは、後述するように、ファイルの一部に対して実行され得る。
【００２７】
本発明の他の好ましい実施形態では、検出するステップ、スマグリングするステップ、およびスペースを解放するステップは、各制限エリアが記憶装置へのスマグリングの宛先を指示するためのそれ自身の特定のポインタを有する複数のファイルに対して実行され得る。
【００２８】
従って、本発明に従って初めて計算システムが提供される。この計算システムは、（ａ）ホストシステムであって、（ｉ）ホストシステム上で動作するファイルシステムおよびブロックデバイスドライバと、（ｉｉ）ホストシステム上で動作する少なくとも１つのアプリケーションと、を有するホストシステムと、（ｂ）記憶装置であって、（ｉ）記憶装置を制御するコントローラと、（ｉｉ）情報を記憶装置に格納するための記憶エリアと、を有する記憶装置と、（ｃ）ファイルシステムによる記憶エリアの制限エリアへのアクセスを制限するための第１のメカニズムと、（ｄ）少なくとも１つのアプリケーションがファイルシステムを介して制限エリアにアクセスすることを可能にするための、記憶装置に存在する第２のメカニズムと、を備える。
【００２９】
好ましくは、第２のメカニズムは、記憶装置がデータを記憶エリアの非制限エリアから制限エリアにコピーすることを可能にするように構成される。
【００３０】
好ましくは、第２のメカニズムは、制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを記憶エリアの非制限エリア内のアドレスへ経路指定するように記憶装置に指示するように動作可能である。
【００３１】
好ましくは、第２のメカニズムは、ホストシステムが記憶エリアの非制限エリアへアドレス指定された非制限データへのアクセスをリクエストするときにホストシステムのアクセスコマンドを制限エリア内に存在する制限データに適用するように動作可能である。
【００３２】
本発明に従って、コンピュータ可読記憶媒体において具体化されたコンピュータ可読コードを有するコンピュータ可読記憶媒体が初めて提供される。このコンピュータ可読コードは、（ａ）記憶装置の記憶エリアの制限エリアへの、ホストシステム上で動作するファイルシステムによるアクセスを制限するためのプログラムコードと、（ｂ）少なくとも１つのアプリケーションがファイルシステムを介して制限エリアにアクセスすることを可能にするためのプログラムコードと、を含む。
【００３３】
好ましくは、コンピュータ可読コードは、（ｃ）記憶装置がデータを記憶エリアの非制限エリアから制限エリアにコピーすることを可能にするためのプログラムコードをさらに含む。
【００３４】
好ましくは、コンピュータ可読コードは、（ｃ）制限エリア内のアドレスに向けられたホストシステム読み出しリクエストを記憶エリアの非制限エリア内のアドレスへ経路指定するように記憶装置に指示するためのプログラムコードをさらに含む。
【００３５】
好ましくは、コンピュータ可読コードは、（ｃ）ホストシステムが記憶エリアの非制限エリアへアドレス指定された非制限データへのアクセスをリクエストするときにホストシステムのアクセスコマンドを制限エリア内に存在する制限データに適用するためのプログラムコードをさらに含む。
【００３６】
これらの実施形態およびさらなる実施形態は、以下の詳細な説明および実施例から明らかとなる。  本発明は、添付図面を参照して、単に例示により、ここで記述される。
【図面の簡単な説明】
【００３７】
【図１】本発明の好ましい実施形態に従う、データをスマグリングし、また記憶装置のスペースを解放するための計算システムの簡略ブロック図である。
【図２】図２Ａは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。図２Ｂは、被スマグルデータについてＦＡＴ３２から書き込みリクエストを受け取った後の図２Ａのパーティションを示す。図２Ｃは、記憶装置が被スマグルデータを制限エリアに内部的にコピーした後の図２Ｂのパーティションを示す。図２Ｄは、非制限エリアに格納されていた被スマグルデータが削除された後の図２Ｃのパーティションを示す。
【図３】図３Ａは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図３Ｂは、データセクタを非制限セクタに書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図３Ａのパーティションを示す。図３Ｃは、データセクタが記憶装置によって制限セクタに内部的に格納された後の図３Ｂのパーティションを示す。
【図４】図４Ａは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。図４Ｂは、データセクタを非制限セクタに書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図４Ａのパーティションを示す。図４Ｃは、制限セクタが図４Ｂで書き込まれた非制限セクタに記憶装置によってマッピングされた後の図４Ｂのパーティションを示す。
【図５】図５Ａは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図５Ｂは、データセクタを非制限セクタに書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図５Ａのパーティションを示す。図５Ｃは、データセクタを仮想セクタに書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図５Ｂのパーティションを示す。図５Ｄは、図５Ｃの制限セクタに既にマッピングされた非制限セクタに記憶装置によってマッピングされた仮想セクタを読み出すＦＡＴ３２からのリクエストを受け取った後の図５Ｃのパーティションを示す。
【図６】図６Ａは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。図６Ｂは、データセクタを非制限セクタに書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図６Ａのパーティションを示す。図６Ｃは、データセクタを仮想セクタに書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図６Ｂのパーティションを示す。図６Ｄは、仮想セクタを読み出すＦＡＴ３２からの読み出しリクエストを受け取った後の図６Ｃのパーティションを示す。
【図７Ａ】本発明の好ましい実施形態に従う、新しい被スマグルファイルを作成するというシナリオ（Ａ）のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図７Ｂ】本発明の好ましい実施形態に従う、被スマグルファイルを削除するというシナリオ（Ｂ）のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図７Ｃ】本発明の好ましい実施形態に従う、被スマグルファイルに上書きするというシナリオ（Ｃ）のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図７Ｄ】本発明の好ましい実施形態に従う、被スマグルファイルを更新するというシナリオ（Ｄ）のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【図７Ｅ】本発明の好ましい実施形態に従う、被スマグルファイルに付加するというシナリオ（Ｅ）のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。
【発明を実施するための形態】
【００３８】
本発明は、許可済みアプリケーションがＦＳＡＰＩだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするためのシステムに関する。本発明に従う、許可済みアプリケーションがＦＳＡＰＩだけを用いて制限記憶エリア内のデータにアクセスすることを可能にするための原理および操作は、付随する記述および図面を参照してより良く理解され得る。
【００３９】
図面は、データを記憶装置にスマグリングする３つの段階、すなわち
（１）プレスマグリング：スマグリング操作の始まりを検出すること
（２）スマグリング：スマグリング操作自体のこと
（３）ポストスマグリング：スマグリング操作後にスペースを解放することによって記憶装置上の空きスペースを最大にすることを記述している。
【００４０】
記述を簡単にするために、以下の仮定が行われる。
（１）記憶装置は２つの論理パーティション、すなわちＯＳイメージ、このＯＳイメージを格納するための制限エリアと、ユーザアプリケーションおよびデータファイルを格納するための非制限エリアとに分割されている。
（２）ホストシステムプロセッサは、このホストシステムプロセッサのＮＶＭに格納されているソフトウェアコードを実行することによって記憶装置の制限エリアにアクセスする。このソフトウェアコードは、ブートＲＯＭであって、パワーアップ時にホストシステムプロセッサによって自動的に実行される。ホストシステムプロセッサは、ＯＳイメージを制限エリアからホストシステムＲＡＭにロードし、このＲＡＭ内のスタートアドレスに移動し、その後にコードを実行する。ブートＲＯＭは、サイズが限られているので、ＦＡＴ３２メタデータおよびデータ構造に関するいかなる情報も包含できない。
（３）ホストシステムは、ＦＡＴ３２を介して記憶装置の非制限エリアにアクセスする。ＦＡＴ３２は、ブートプロセスが完了するときに実行される。
（４）制限エリアはセクタ０からスタートする。従って、ＯＳイメージは、セクタ０からスタートして格納される。
（５）非制限エリアは、ＯＳイメージセクタより大きな任意のセクタであり得るセクタ「ＦＡＴ３２ＳｔａｒｔＳｅｃｔｏｒ（ＦＡＴ３２スタートセクタ）」からスタートする。
（６）記憶装置は、本願明細書において「ＦＡＴ３２エンジン」と称されるソフトウェアまたはハードウェアロジックを有し、これは、ＦＡＴおよびＤｉｒＥｎｔｒｙの位置および構造などの、ＦＡＴ３２により使用されるメタデータおよびデータ構造を認識する。
（７）（制限エリアに格納されている）ＯＳイメージは、データを非制限エリアに書き込む、ＦＡＴ３２を介しての、ユーザアプリケーションリクエストによって更新される。
（８）記憶装置は、不揮発性隠れエリア（すなわち、ホストシステムプロセッサ、ブートＲＯＭ、およびＦＡＴ３２から隠されている）に、スマグリングされるべきファイルの名前（例えば、ＯＳＩＭＡＧＥ．ＢＩＮ）と、制限エリアのスタートセクタへのポインタ（例えば、４バイト）とを含むストリングを格納する。
【００４１】
ここで図面を参照すると、図１は、本発明の好ましい実施形態に従う、データをスマグリングし、また記憶装置のスペースを解放するための計算システムの簡略ブロック図である。ホストシステム４を有する計算システム２が示されている。ホストシステム４は、ファイルシステム５、ＯＳ６、ドライバ７、ホストシステムプロセッサ８、およびアプリケーション９を含む。ドライバ７は、標準的ブロックデバイスドライバを含む。ホストシステム４は、コントローラ１２および記憶エリア１４を有する記憶装置１０に操作可能に接続されて示されている。記憶エリア１４は、制限エリア１６および非制限エリア１８を有する。
【００４２】
図２Ａ〜２Ｄは、本発明の好ましい実施形態に従う、プロセスのいろいろな段階でデータをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。図２Ａ〜２Ｄは、非制限エリアを介して制限エリアの中にデータをスマグリングし、その後に、非制限エリアをスマグリングプロセス中に生成された中間データから解放することによってＯＳイメージを更新するための４つの段階を示す。
【００４３】
図２Ａは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングし、またスペースを解放するためのコピー−削除モードの簡略ブロック図である。記憶装置は２つのパーティション、すなわち、ＯＳイメージを格納するための制限エリア２０と、ユーザデータを格納するための非制限エリア２２とを有する。
【００４４】
図２Ｂは、被スマグルデータについてＦＡＴ３２から書き込みリクエストを受け取った後の図２Ａのパーティションを示す。図２Ｂは、被スマグルファイル２４（例えば、ＯＳイメージ）を示す。記憶装置は、被スマグルファイル２４を非制限エリア２２に格納する。検出プロセスは、図７Ａ〜７Ｅに関連して記述される。
【００４５】
図２Ｃは、記憶装置が被スマグルデータを制限エリアに内部的にコピーした後の図２Ｂのパーティションを示す。被スマグルファイル２４は、制限エリア２０にコピーされて示されている。被スマグルファイル２４は、そのとき、制限ファイル２６（すなわち、ＦＡＴ３２によってアクセスされ得ないデータファイル）になる。
【００４６】
図２Ｄは、非制限エリアに格納されていた被スマグルデータが削除された後の図２Ｃのパーティションを示す。被スマグルファイル２４の削除は、ファイルを書き込んだアプリケーションにより（記憶装置がスマグリングを完了することを可能にする安全遅延後に）、または記憶装置自体により（次のパワーアップ時に）開始され得る。
【００４７】
被スマグルファイル２４がＯＳイメージである例において、このＯＳイメージは、（制限ファイル２６として）制限エリアに格納され、ホストシステムプロセッサのブートＲＯＭによってアクセスされ得るけれども、ＦＡＴ３２によっては読み出され得ない。データをスマグリングしてスペースを解放するコピー−削除モードは、ＯＳイメージの部分的更新には適用され得なくて、ＯＳイメージが完全に更新される場合に限って適用され得る。
【００４８】
図３Ａ〜３Ｃは、本発明の好ましい実施形態に従う、プロセスのいろいろな段階でデータをスマグリングするマップインモードの簡略ブロック図である。図３Ａ〜３Ｃは、データを非制限エリアに書き込み、その後に非制限エリアを制限エリアの中にマッピングすることによりデータをスマグリングすることによってＯＳイメージを更新するための３つの段階を示す。
【００４９】
図３Ａは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。図２Ａに関して説明したように、記憶装置は２つのパーティション、すなわち、ＯＳイメージを格納するための制限エリア２０と、ユーザデータを格納するための非制限エリア２２とを有する。
【００５０】
図３Ｂは、データセクタを非制限セクタに書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図３Ａのパーティションを示す。データセクタ３０は、非制限セクタ３２に書き込まれるように示されている。ＦＡＴ３２が被スマグルファイルの基準に適合するデータセクタ３０を書き込むためのリクエストを送ったことを記憶装置が（図７Ａ〜７Ｅに関して説明されるデータスマグリング検出方式に従って）検出したならば、記憶装置は非制限セクタ３２のセクタ番号を制限セクタ３４の制限エリアセクタ番号に「変換すること」によって非制限セクタ３２を制限セクタ３４にマッピング（マッピングＡ）する。「変換」は次のように行われる。すなわち、記憶装置は、ファイルにおける非制限セクタ３２のオフセットを計算し（図７Ａ〜７Ｅに関して詳しく説明される）、セクタオフセットは制限エリア２０におけるセクタオフセットに変換される。
【００５１】
図３Ｃは、データセクタが記憶装置によって制限セクタに内部的に格納された後の図３Ｂのパーティションを示す。ＦＡＴ３２からの（非制限セクタ３２への）、あるいはホストシステムのブートＲＯＭコードからの（制限セクタ３４への）書き込みリクエストは、記憶装置によって内部的に制限セクタ３４へ経路指定される。経路指定メカニズムは記憶装置によって管理され、それは非制限セクタから制限セクタへのルックアップテーブルを管理する。テーブルのどのエントリも、スマグリングされた非制限セクタ番号と、図３Ｂにおいてマッピングされた対応する制限セクタ番号とを含む。記憶装置は、ＦＡＴ３２から来る書き込みリクエストを監視し、非制限セクタがリクエストされているか否かをルックアップテーブルにおいて調べる。非制限セクタがリクエストされているならば、記憶装置は、セクタ３６に位置すると期待されているデータセクタに対する書き込みリクエストを、実際にはセクタ３８に書き込まれるように経路指定する（マッピングＢ）。このプロセスは、非制限エリアの範囲内のセクタを制限エリアの範囲内のセクタにマッピングするので、マップインモードと称される。
【００５２】
マップインモードは、大抵は、ホストシステムプロセッサが記憶装置からの速い応答を必要とし、従ってルックアップテーブルを構築するために記憶装置のＦＡＴ３２エンジンにより必要とされる「準備」に関して寛容ではない場合に適用可能である。ＦＡＴ３２エンジンにより必要とされる準備を図７Ａ〜７Ｅに関して説明する。マップインモードは、ＦＡＴ３２リクエスト（ホストシステムプロセッサにより実行される）をＦＡＴ３２への指示なしでルックアップテーブルに従って制限セクタへ内部的に経路指定する。従って、ルックアップテーブルに現れる非制限セクタは、データを格納するために記憶装置によって使用されない。このような無駄セクタがＦＡＴ３２により再使用される方法を図５Ａ〜５Ｄに関して説明する。
【００５３】
図４Ａ〜４Ｃは、本発明の好ましい実施形態に従う、プロセスの種々の段階においてデータをスマグリングするマップアウトモードの簡略ブロック図である。図４Ａ〜４Ｃは、データを非制限セクタの中に直接スマグリングし、その後に制限セクタを非制限セクタの中にマッピングアウトすることによってＯＳイメージを更新するための３つの段階を示す。
【００５４】
図４Ａは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。（図２Ａおよび２Ａに関して説明したように、）制限エリア２０と非制限エリア２２とが示されている。
【００５５】
図４Ｂは、データセクタを非制限セクタに書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図４Ａのパーティションを示す。記憶装置は、ＦＡＴ３２によりリクエストされたように非制限セクタ４０にデータを格納する。
【００５６】
図４Ｃは、図４Ｂで書き込まれた非制限セクタに記憶装置によって制限セクタがマッピングされた後の図４Ｂのパーティションを示す。記憶装置によって、図３Ｃに関して説明したルックアップテーブルに従って、データセクタ４２が非制限セクタ４０の中に内部的にマッピングされる（マッピングＣ）。従って、（制限エリアに格納されているＯＳイメージに対してホストシステムプロセッサブートＲＯＭから来る）アクセスリクエストがあったとき、記憶装置はアクセスリクエストを前述したルックアップテーブルに従って非制限セクタへ内部的に経路指定する。
【００５７】
マップアウトモードは、制限エリアの範囲内のセクタを非制限エリアの範囲内のセクタの中にマッピングする。このようなマッピングは、ルックアップテーブルにおいて現れる制限セクタが記憶装置によってＯＳイメージデータを格納するために使用されないという状況を作り出す。そのような無駄セクタがＦＡＴ３２により再使用される方法は、図６Ａ〜６Ｄに関して記載される。マップアウトモードは、大抵は、ホストシステムプロセッサが記憶装置からの速い応答を必要とせず、従ってルックアップテーブルを構築するために記憶装置のＦＡＴ３２エンジンにより必要とされる準備に関して寛容でない場合に適用可能である。
【００５８】
図５Ａ〜５Ｄは、本発明の好ましい実施形態に従う、プロセスの種々の段階でデータをスマグリングするマップインモードにおいてスペースを解放することの簡略ブロック図である。図５Ａ〜５Ｄは、マップインプロセス中に作成された無駄セクタを利用するための４つの段階を示す。
【００５９】
図５Ａは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップインモードの簡略ブロック図である。ＯＳイメージを格納するための制限エリア５０、ユーザデータを格納するための非制限エリア５２、および仮想エリア５４が示されている。図２Ａ、２Ａ、および３Ａとは対照的に、記憶装置は制限エリア５０のサイズを有する仮想エリア５４をホストシステムに提供する。仮想エリア５４はセクタの論理シーケンシャル範囲である。記憶装置は、ホストシステムのＦＡＴ３２に、非制限エリア５２のためのセクタと仮想エリア５４のためのセクタとを有するエリアを提供する。その結果として、ＦＡＴ３２がホストシステムプロセッサ上で実行されるとき、ＦＡＴ３２は非制限エリア５２と仮想エリア５４とを１つの非制限エリアとして管理する。
【００６０】
図５Ｂは、データセクタを非制限セクタに書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図５Ａのパーティションを示す。データセクタ５６は非制限セクタ５８に書き込まれるように示されている。被スマグルファイルの基準に適合するデータセクタ５６を書き込むためのリクエストをＦＡＴ３２が送ったことを記憶装置が（図７Ａ〜７Ｅに関して説明されるデータスマグリング検出方式に従って）検出したならば、記憶装置はルックアップテーブルを調べて、その被スマグルデータを書き込むための制限セクタ６０についてのセクタ番号を得る。記憶装置は、データセクタ５６を制限セクタ６０に格納されるように経路指定（マッピングＤ）する。
【００６１】
図５Ｃは、データセクタを仮想セクタに書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図５Ｂのパーティションを示す。制限エリア５０に格納されている被スマグルデータ６２が示され、ホストシステムプロセッサで実行されるＦＡＴ３２からの仮想エリア５４の範囲内の仮想セクタ６６にデータセクタ６４を書き込むリクエストを受け取る。記憶装置は、図３Ｃに関して言及されたルックアップテーブルのほかに、「仮想−論理(virtual-to-logical)」（ＶＴＬ）ルックアップテーブルを管理する。ＶＴＬテーブルのどのエントリも、仮想セクタ番号と、対応する非制限セクタ番号とを含む。ＦＡＴ３２がデータセクタ６４を仮想データセクタ６６（仮想エリア５４の範囲内のセクタ）に書き込もうと試みるとき、記憶装置は、仮想セクタ６６が非制限セクタに既にマッピングされているか否かを判定するためにＶＴＬルックアップテーブルを内部的に調べる。
【００６２】
（図５Ｂのデータセクタ５６に関して説明したように）仮想セクタ６６がマッピングされていたならば、記憶装置はＦＡＴ３２リクエストを適合する非制限セクタ６８へ内部的に経路指定する（マッピングＥ）。仮想セクタ６６がまだマッピングされていなければ、記憶装置は、仮想セクタが非制限セクタにマッピングされているかどうかを確かめるためにＶＴＬルックアップテーブル中の非制限セクタ番号を調べる。仮想セクタがマッピングされていない非制限セクタ（すなわち、無駄セクタ）を記憶装置が発見したならば、記憶装置は、仮想セクタ６６を非制限セクタ６８（利用可能な「無駄セクタ」）にマッピング（マッピングＥ）し、ＶＴＬルックアップテーブル中の対応するエントリをその非制限セクタ番号で更新する。記憶装置は、その後、（ＦＡＴ３２により仮想セクタ６６に送られた）データセクタ６４をセクタ６８に内部的に格納する。
【００６３】
記憶装置は、ルックアップテーブルを、（図３Ｃに関して説明したように）制限セクタ６２のマッピング済みセクタ番号で更新する。ＦＡＴ３２が（図５Ｃに示されているように）非制限セクタ６８にアクセスしよう（すなわち、読み出すかまたは書き込もう）と試みるとき、記憶装置はそのリクエストを（制限エリア５０内の）制限セクタ６２に内部的に経路指定（マッピングＦ）する。
【００６４】
無駄エリアが制限エリア５０より小さいために（それは、制限エリア５０の全体よりは小さいエリアをスマグリングすることの結果である）利用可能な非制限セクタ（制限セクタにマッピングされていない）を記憶装置が発見できなければ、記憶装置は、ＦＡＴ３２により仮想アドレスに送られるデータセクタを格納するために制限エリア５０内の利用可能な記憶エリアを使用する。このとき、これらのデータセクタは仮想エリア５４から制限エリア５０の中に直接マッピングされる。より多くのデータが制限エリア５０内にスマグリングされ、より多くの無駄エリアが非制限エリア５２に作られると、直ちに記憶装置はこれらの「直接マッピングされた」データセクタを制限エリア５０から非制限エリア５２に移し、制限エリア５０を新たにスマグリングされるデータのために利用可能にする。
【００６５】
図５Ｄは、図５Ｃの制限セクタに既にマッピングされた非制限セクタに記憶装置によってマッピングされた仮想セクタを読み出すＦＡＴ３２からのリクエストを受け取った後の図５Ｃのパーティションを示す。図５Ｄにおいて、ＦＡＴ３２は、非制限論理セクタ７０（これは、既に制限セクタ６２の中にマッピングされている）の中に既にマッピングされている仮想セクタ６６を、記憶装置から、読み出すかまたは書き込もうと試みる。記憶装置は、マッピングされている非制限論理セクタ７０に関してＶＴＬルックアップテーブルを調べて、ＦＡＴ３２リクエストを非制限論理セクタ７０へ経路指定（マッピングＧ）する。従って、
（１）非制限エリア５２に向けられたデータは非制限エリア５２に格納され、
（２）（データスマグリング方式により意図されているように、）非制限エリア５２に向けられた被スマグルデータは制限エリア５０に格納され、
（３）仮想エリア５４に向けられたデータは非制限エリア５２に格納される。
【００６６】
図６Ａ〜６Ｄは、本発明の好ましい実施形態に従う、プロセスの種々の段階でデータをスマグリングするマップアウトモードにおいてスペースを解放することの簡略ブロック図である。図６Ａ〜６Ｄは、マップアウトプロセス中に作られる無駄セクタを利用するための４つの段階を示す。
【００６７】
図６Ａは、本発明の好ましい実施形態に従う、記憶装置の論理パーティションを示す、データをスマグリングするマップアウトモードの簡略ブロック図である。（図５Ａに関して説明したように、）制限エリア５０、非制限エリア５２、および仮想エリア５４が示されている。
【００６８】
図６Ｂは、非制限セクタにデータセクタを書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図６Ａのパーティションを示す。データセクタ７２は、非制限セクタ７４に書き込まれるように示されている。被スマグルファイルの基準に適合するデータセクタ７２を書き込むためのリクエストをＦＡＴ３２が送ったことを記憶装置が（図７Ａ〜７Ｅに関して説明されるデータスマグリング検出方式に従って）検出したならば、記憶装置は、（図３Ｃに関して説明した）ルックアップテーブルを調べて、制限セクタ７６についてのセクタ番号を得る。
【００６９】
記憶装置は、データセクタ７２を非制限セクタ７４に内部的に格納する。記憶装置は、ルックアップテーブルを、マッピングされた非制限セクタ７４のセクタ番号で更新する。次のブート操作時にホストシステムプロセッサがＯＳイメージを制限エリア５０内の制限セクタ７６から読み出そうと試みるとき、記憶装置は、リクエストを制限セクタ７６の代わりに非制限エリア５２内のデータセクタ７４へ内部的に経路指定する（マッピングＨ）。
【００７０】
図６Ｃは、データセクタを仮想セクタに書き込むＦＡＴ３２からの書き込みリクエストを受け取った後の図６Ｂのパーティションを示す。データセクタ７８は、ホストプロセッサ上で実行されるＦＡＴ３２により仮想セクタ８０に書き込まれるように示されている。記憶装置は、１つの固定されたオフセットを適用することによって仮想エリア５４のアドレスを制限エリア５０のアドレスに変換する。ＦＡＴ３２がデータを仮想セクタ８０（仮想エリア５４の範囲の中のセクタ）に書き込もうと試みるとき、記憶装置は、アドレスを仮想エリア５４から制限エリア５０内に内部的にオフセットさせ（マッピングＩ）、データセクタ７８を制限エリア５０に格納する。制限エリア５０に向けられたデータは実際には非制限エリア５２に格納されるということ、および、記憶装置はデータを非制限エリア５２内のマッピングされた非制限セクタ８２から取り出す（マッピングＪ）ということに留意するべきである。従って、
（１）非制限エリア５２に向けられたデータは非制限エリア５２に格納され、
（２）制限エリア５０に向けられた被スマグルデータも非制限エリア５２に格納され、
（３）仮想エリア５４に向けられたデータは制限エリア５０に格納される。
【００７１】
図６Ｄは、仮想セクタを読み出すＦＡＴ３２からの読み出しリクエストを受け取った後の図６Ｃのパーティションを示す。仮想セクタ８０を読み出すＦＡＴ３２からの読み出しリクエストを記憶装置が受け取ったとき、記憶装置は、固定されたオフセットを適用し（マッピングＫ）、制限エリア５０からデータセクタ８４を読み出す。
【００７２】
図７Ａ〜７Ｅは、本発明の好ましい実施形態に従う、以下で挙げられる種々のデータスマグリングシナリオのために、記憶装置を有するホストシステムで実行される、データスマグリング検出方式の簡略フローチャートである。図７Ａ〜７Ｅは、記憶装置において任意のファイルに対してＦＡＴ３２が実行しなければならなくなるかもしれない全ての普通の更新操作を包含する、被スマグルファイルについての５つのデータスマグリングシナリオを示す。データスマグリングシナリオは次のとおりである。
（Ａ）（ファイルが初めて、あるいはファイルの削除後に、作成されるときに、）新しい被スマグルファイルを作成する。
（Ｂ）（被スマグルファイルが削除されなければならないときに、）被スマグルファイルを削除する。
（Ｃ）（新しい被スマグルファイルが、古い被スマグルファイルを削除して新しい被スマグルファイルを作成することによって、古い被スマグルファイルに取って代わらなければならないときに、）被スマグルファイルに上書きする。
（Ｄ）（存在する被スマグルファイルが部分的に更新されなければならないときに、）所定位置にある被スマグルファイルを更新する。
（Ｅ）（存在する被スマグルファイルが拡張されなければならないときに、）被スマグルファイルに付加する。
【００７３】
データスマグリング検出方式は、ＦＡＴ３２から記憶装置に到来する書き込みリクエストを監視し、そのリクエストがＦＡＴのためのものか、ディレクトリエントリＦＡＴ３２セクタのためのものか、あるいはデータクラスタのためのものかを識別する動作を利用する。
【００７４】
ファイルを、このファイルをスマグリングすることによって、更新するように意図されているデータは、ＮＶＭに格納されている所定ストリングの検出によって識別される。その所定ストリング（以降、「被スマグルファイル識別子」と称される）は、データをスマグリングしなければならないアプリケーションに知られている。被スマグルファイル識別子は、被スマグルファイルのフルパスおよびファイル名である。被スマグルファイル識別子は、アプリケーションにより、ＦＡＴ３２を介して、被スマグルファイルのディレクトリエントリデータの一部として送られる。
【００７５】
前に挙げられた全てのデータスマグリングシナリオにおいて、システムがパワーアップされるとき（ステップ１００）、記憶装置はＦＡＴ３２エンジンを次のように初期化する（ステップ１０２）。
（１）記憶装置はＦＡＴ３２エンジンをマウントする。
（２）記憶装置は所定の被スマグルファイル識別子をロードする。
（３）記憶装置は、被スマグルＤｉｒＥｎｔｒｙアドレス（ＤｉｒＥｎｔｒｙセクタとＦＡＴ３２セクタ内でのオフセットと）を指す、以下で「被スマグルファイルＤｉｒＥｎｔｒｙポインタ」と称されるポインタをヌルにセットする。
（４）記憶装置は、値「真」または「偽」を有するバイナリパラメータである以下で「ＦｉｌｅＥｘｉｓｔｓＦｌａｇ（ファイル存在フラグ）と称されるフラグを次のようにセットする。
（ｉ）記憶装置は、被スマグルファイル識別子のファイル名を有するファイルが存在するか否か調べる（ＮＶＭにおいてファイルのＤｉｒＥｎｔｒｙを探す）。
（ｉｉ）被スマグルファイルが存在するならば、記憶装置はＦｉｌｅＥｘｉｓｔｓＦｌａｇを真にセットし、被スマグルファイルＤｉｒＥｎｔｒｙポインタを更新する。
（ｉｉｉ）被スマグルファイル識別子のファイル名を有するファイルが存在しなければ、記憶装置はＦｉｌｅＥｘｉｓｔｓＦｌａｇを偽にセットし、被スマグルファイルＤｉｒＥｎｔｒｙポインタを、被スマグルファイルが格納されると考えられるディレクトリ内のＤｉｒＥｎｔｒｙの最後のＦＡＴ３２セクタに更新する。
（５）ＦｉｌｅＥｘｉｓｔｓＦｌａｇが真であるならば、記憶装置は被スマグルファイルＤｉｒＥｎｔｒｙを読み出し、ＤｉｒＥｎｔｒｙから第１の被スマグルファイルデータクラスタ番号を抽出する。
（６）記憶装置はＦＡＴからＦＡＴチェーン全体を読み出し、その後、リンクリストに従うことによって被スマグルファイルデータクラスタ番号を再構築する。
【００７６】
この段階（ステップ１０２）の後に、記憶装置はＦＡＴ３２からの書き込みリクエストを待つ（ステップ１０４）。記憶装置は、ＦＡＴ３２から書き込みリクエストを受け取ったとき、ＦｉｌｅＥｘｉｓｔｓＦｌａｇが真であるか偽であるかを調べる（ステップ１０６）。この段階から、それぞれのデータスマグリングシナリオは、図７Ａ〜７Ｅにおいて後述する異なるフローをたどる。
【００７７】
図７Ａは、本発明の好ましい実施形態に従う、新しい被スマグルファイルを作成するというシナリオ（Ａ）のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図７ＡのフローＡ（点線で表されている）は、新しい被スマグルファイルを作成するための手続き経路を描いている。被スマグルファイルが存在しなくてＦＡＴ３２が新しい被スマグルファイルを書き込もうと試みるとき、フローＡは次のステップを実行する。
【００７８】
システムのパワーアップ（ステップ１００）の後、記憶装置はその内部初期化を実行し、ＦｉｌｅＥｘｉｓｔｓＦｌａｇを偽にセットし、被スマグルファイルＤｉｒＥｎｔｒｙポインタを、新しい被スマグルファイルが格納されると考えられるディレクトリのＤｉｒＥｎｔｒｙの最後のクラスタを指すようにセットする（ステップ１０２）。記憶装置は、その後、書き込みリクエストを待ち（ステップ１０４）、ＦｉｌｅＥｘｉｓｔｓＦｌａｇを調べる（ステップ１０６）。シナリオ（Ａ）において、この段階ではファイルは存在しないので、ＦｉｌｅＥｘｉｓｔｓＦｌａｇは偽であり、記憶装置は以下の条件が妥当であるか否かを調べる（ステップ１０８）。
（１）新しいＤｉｒＥｎｔｒｙは、被スマグルファイルＤｉｒＥｎｔｒｙポインタにおいて指定されているのと同じアドレスに書き込まれるか？（シナリオ（Ａ）のこの段階では、被スマグルファイルＤｉｒＥｎｔｒｙポインタは、被スマグルファイルが格納されると考えられるディレクトリのＤｉｒＥｎｔｒｙの最後のクラスタを指す。）
（２）ＤｉｒＥｎｔｒｙにおいて指定されるファイル名は被スマグルファイルの名前（被スマグルファイル識別子において指定される）と同じか？
【００７９】
両方の条件が満たされるならば（新しい被スマグルファイルＤｉｒＥｎｔｒｙが書き込まれつつあることを記憶装置が発見するということを意味する）、記憶装置はＦｉｌｅＥｘｉｓｔｓＦｌａｇを真にセットし、ＦＡＴ３２が被スマグルファイルクラスタ、ＦＡＴエントリ、およびデータクラスタを書き込むのを待つ（ステップ１１０）。あるいは、ファイルが偶然に空であったならば（すなわち、長さ＝０）、記憶装置は、図７Ｂに関して以下に説明されるように、新しいＤｉｒＥｎｔｒｙを更新することによってファイルを閉じる。この２条件のいずれもが満たされなければ（新しい被スマグルファイルが作成されていないということを意味する）、記憶装置は新しい書き込みリクエストを待つ（ステップ１０４）。
【００８０】
図７Ｂは、本発明の好ましい実施形態に従う、被スマグルファイルを削除するというシナリオ（Ｂ）のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図７ＢのフローＢは、被スマグルファイルを削除するための手続き経路を描いている。新しい書き込みリクエストがＦＡＴ３２から来たとき（ステップ１０４）、記憶装置はＦｉｌｅＥｘｉｓｔｓＦｌａｇを調べる（ステップ１０６）。ＦｉｌｅＥｘｉｓｔｓＦｌａｇが真ならば、記憶装置は新しいＤｉｒＥｎｔｒｙが更新されつつあるか否かを調べる（すなわち、現在書き込まれているＦＡＴ３２セクタが被スマグルファイルＤｉｒＥｎｔｒｙポインタと同じか否かを確かめる）（ステップ１１２）。
【００８１】
被スマグルファイルＤｉｒＥｎｔｒｙがＦＡＴ３２により更新されつつあるのであれば（ステップ１１２）、記憶装置は（この場合には更新されるＤｉｒＥｎｔｒｙ内のＬＵＴフィールドおよびファイル長パラメータを調べることにより）ＤｉｒＥｎｔｒｙに対する書き込みリクエストが「閉じる」操作であるか否かを調べる（ステップ１１４）。書き込みリクエストが閉じる操作であれば、記憶装置はＦＡＴ３２からの次の「更新操作」（すなわち、書き込みリクエスト）を待つ（ステップ１０４）。
【００８２】
ＤｉｒＥｎｔｒｙに対する書き込みリクエストが「閉じる」操作でなければ（ステップ１１４）（被スマグルファイルＤｉｒＥｎｔｒｙに対する書き込みリクエストが被スマグルファイルＤｉｒＥｎｔｒｙに「削除フラグ」を書き込むことによる「削除」操作であることを記憶装置が検出するということを意味する）、記憶装置は、ＦｉｌｅＥｘｉｓｔｓＦｌａｇを偽にセットし、被スマグルファイルＤｉｒＥｎｔｒｙポインタを更新し、（被スマグルファイルに属するデータクラスタが存在しなくなるように）リンクリスト中の被スマグルファイルクラスタ番号を除去し（ステップ１１６）、ＦＡＴ３２からの次の書き込み操作を待つ（ステップ１０４）。
【００８３】
図７Ｃは、本発明の好ましい実施形態に従う、被スマグルファイルに上書きするというシナリオ（Ｃ）のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。被スマグルファイルに上書きするためのフローは、新しい被スマグルファイルを作成するための図７ＡのフローＡが後に続く、被スマグルファイルを削除するための図７ＢのフローＢの組み合わせである。被スマグルファイルに上書きするための手続き経路は、図７Ｃにおいて、図７ＡのフローＡ（すなわち、ステップ１０４，１０６，１０８，１１０，および１０４のシーケンス）に関連するフローＣ２が後に続く、図７ＢのフローＢ（すなわち、ステップ１００，１０２，１０４，１０６，１１２，１１４，１１６，および１０４のシーケンス）に関連するフローＣ１として描かれている。
【００８４】
図７Ｄは、本発明の好ましい実施形態に従う、被スマグルファイルを更新するというシナリオ（Ｄ）のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図７ＤのフローＤは、所定位置にある被スマグルファイルを更新するための手続き経路を描いている。被スマグルファイルＤｉｒＥｎｔｒｙが更新されつつあるのでなければ（ステップ１１２）、記憶装置は、書き込みリクエストがリンクリスト中の被スマグルファイルクラスタ番号のうちの１つに関連しているか否かを調べることによって現在の書き込みリクエストが被スマグルファイルデータクラスタのうちの１つを更新しつつあるかどうかを調べる（ステップ１１８）。被スマグルファイルデータクラスタのうちの１つが更新されつつあるということを記憶装置が発見したならば、記憶装置は、（図３および４に示されているマップインスマグリングモードまたはマップアウトスマグリングモードを用いて）データクラスタをスマグリングし、ＦｉｌｅＥｘｉｓｔｓＦｌａｇをセットし（ステップ１２０）、その後に次の書き込みリクエストを待つ（ステップ１０４）。シナリオ（Ｂ）（図７Ｂのステップ１０６）では、ＦｉｌｅＥｘｉｓｔｓＦｌａｇは、シナリオ（Ｄ）（図７Ｄのステップ１２０）でセットされるので真として検出され得るということに留意する。
【００８５】
図７Ｅは、本発明の好ましい実施形態に従う、被スマグルファイルに付加するというシナリオ（Ｅ）のために、記憶装置を有するホストシステムで実行されるデータスマグリング検出方式の簡略フローチャートである。図７ＥのフローＥは、被スマグルファイルに付加するための手続き経路を描いている。書き込みリクエストが被スマグルファイルデータクラスタのうちの１つを更新しつつあるのでなければ（ステップ１１８）、記憶装置は、書き込みリクエストがリンクリスト中の被スマグルファイルクラスタ番号のうちの１つに関連するか否かを調べることによって、更新されつつあるＦＡＴエントリのうちの少なくとも１つがＦＡＴ内の被スマグルファイルデータクラスタに関連しているか否かを調べる（ステップ１２２）。ＦＡＴ内の被スマグルファイルデータクラスタＦＡＴエントリのうちの１つ以上が更新されつつあるのであれば、記憶装置は、リンクリスト中の被スマグルファイルクラスタ番号を新しいクラスタ番号または削除されるクラスタ番号で更新し（ステップ１２４）、その後、ＦＡＴ３２からの次の書き込みリクエストを待つ（ステップ１０４）。
【００８６】
結局は、ＦＡＴ３２が被スマグルファイルデータクラスタおよび／またはＦＡＴ内のデータクラスタＦＡＴエントリを更新した後、ＦＡＴ３２は、前述したように被スマグルファイルＤｉｒＥｎｔｒｙ中のＬＵＴフィールド、および場合によってはファイル長フィールドを更新することによってファイルを閉じなければならない。
【００８７】
被スマグルファイルが既に存在する（すなわち、ＦｉｌｅＥｘｉｓｔｓＦｌａｇが真にセットされている）というシナリオでは、記憶装置はＦＡＴ３２からの書き込みリクエストを待ち（ステップ１０４）、次のシナリオのうちの１つが生じるのを待つ。
◆シナリオ（Ｂ）：ＦＡＴ３２は被スマグルファイルを削除しようと試みる。このシナリオでは、ステップ１００および１０２のシーケンスを実行した後、記憶装置は、（前に記載した）ステップ１０４，１０６，１１２，１１４，および１１６のシーケンスを実行する。
◆シナリオ（Ｄ）：ＦＡＴ３２は所定位置にある被スマグルファイルを更新しようと試みる。このシナリオでは、ステップ１００および１０２のシーケンスを実行した後、記憶装置は、（前に記載した）ステップ１０４，１０６，１１２，１１８，および１２０のシーケンスを数回実行する。記憶装置がこれらのステップを何回繰り返して実行するかは、ＦＡＴ３２から来る更新の数による。
◆シナリオ（Ｅ）：ＦＡＴ３２は追加のデータを被スマグルファイルに付加しようと試みる。このシナリオでは、ステップ１００および１０２のシーケンスを実行した後、記憶装置は、新しいデータクラスタＦＡＴエントリの割り当てのために（前に記載した）ステップ１０４，１０６，１１２，１１８，１２２，および１２４のシーケンスを数回実行する。記憶装置が何回繰り返して実行するかは、更新されつつあるデータクラスタＦＡＴエントリの数による。記憶装置は、新たに割り当てられるデータクラスタ更新のためにステップ１０４，１０６，１１２，１１８，および１２０のシーケンス（シナリオ（Ｄ））をも数回実行する。記憶装置が何回繰り返して実行するかは、データクラスタ更新の数による。
【００８８】
本発明は、限られた数の実施形態に関して記載してきたが、本発明の多くの変形、改変、および他の応用がなされ得るということが認識されるべきである。
【図１】
0004665065.tif 000002
【図２】
0004665065.tif 000003
【図３】
0004665065.tif 000004
【図４】
0004665065.tif 000005
【図５】
0004665065.tif 000006
【図６】
0004665065.tif 000007
【図７Ａ】
0004665065.tif 000008
【図７Ｂ】
0004665065.tif 000009
【図７Ｃ】
0004665065.tif 000010
【図７Ｄ】
0004665065.tif 000011
【図７Ｅ】
0004665065.tif 000012