JP2005276212A - 比較的限られた記憶スペースを備えたコンピューティング装置およびそのオペレーティングシステム/ファイルシステム - Google Patents

比較的限られた記憶スペースを備えたコンピューティング装置およびそのオペレーティングシステム/ファイルシステム Download PDF

Info

Publication number
JP2005276212A
JP2005276212A JP2005082353A JP2005082353A JP2005276212A JP 2005276212 A JP2005276212 A JP 2005276212A JP 2005082353 A JP2005082353 A JP 2005082353A JP 2005082353 A JP2005082353 A JP 2005082353A JP 2005276212 A JP2005276212 A JP 2005276212A
Authority
JP
Japan
Prior art keywords
file
storage device
virtual
computing device
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005082353A
Other languages
English (en)
Other versions
JP4825433B2 (ja
Inventor
Andrew Michael Rogers
マイケル ロジャーズ アンドリュー
Bor-Ming Hsieh
アシュ ボー−ミン
Fischer Kelley David
フィッシャー ケリー デビッド
Yadhu N Gopalan
エヌ.ゴパラン ヤドゥ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005276212A publication Critical patent/JP2005276212A/ja
Application granted granted Critical
Publication of JP4825433B2 publication Critical patent/JP4825433B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65DCONTAINERS FOR STORAGE OR TRANSPORT OF ARTICLES OR MATERIALS, e.g. BAGS, BARRELS, BOTTLES, BOXES, CANS, CARTONS, CRATES, DRUMS, JARS, TANKS, HOPPERS, FORWARDING CONTAINERS; ACCESSORIES, CLOSURES, OR FITTINGS THEREFOR; PACKAGING ELEMENTS; PACKAGES
    • B65D85/00Containers, packaging elements or packages, specially adapted for particular articles or materials
    • B65D85/70Containers, packaging elements or packages, specially adapted for particular articles or materials for materials not otherwise provided for
    • B65D85/804Disposable containers or packages with contents which are mixed, infused or dissolved in situ, i.e. without having been previously removed from the package
    • B65D85/808Disposable containers or packages with contents which are mixed, infused or dissolved in situ, i.e. without having been previously removed from the package for immersion in the liquid to release part or all of their contents, e.g. tea bags
    • AHUMAN NECESSITIES
    • A23FOODS OR FOODSTUFFS; TREATMENT THEREOF, NOT COVERED BY OTHER CLASSES
    • A23FCOFFEE; TEA; THEIR SUBSTITUTES; MANUFACTURE, PREPARATION, OR INFUSION THEREOF
    • A23F3/00Tea; Tea substitutes; Preparations thereof
    • A23F3/16Tea extraction; Tea extracts; Treating tea extract; Making instant tea
    • A23F3/30Further treatment of dried tea extract; Preparations produced thereby, e.g. instant tea
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B29/00Packaging of materials presenting special problems
    • B65B29/02Packaging of substances, e.g. tea, which are intended to be infused in the package
    • B65B29/04Attaching, or forming and attaching, string handles or tags to tea bags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mechanical Engineering (AREA)
  • Polymers & Plastics (AREA)
  • Food Science & Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Chemical & Material Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 プロセッサと、実行可能ファイルを有する記憶装置と、プロセッサの代わりに記憶装置上の適所でファイルを実行するためのファイルシステムとを含むコンピューティング装置を提供すること。
【解決手段】 ファイルは記憶装置上で複数の連続しないフラグメントに分割され、コンピューティング装置は、記憶装置上にあるファイルのフラグメントの物理アドレスと、プロセッサによって使用される対応する仮想アドレスとの間で変換するために、プロセッサと記憶装置との間に挿入された仮想アドレス変換器をさらに含む。
【選択図】 図7

Description

本発明は、一般にコンピューティング装置に関し、具体的に言えば、たとえばそうした装置用のオペレーティングシステムが格納された比較的小規模なハードディスクまたはランダムアクセスメモリ(RAM)などを備えたポータブルコンピューティング装置などの、比較的限られた記憶スペースを備えたコンピューティング装置に関する。より詳細には、本発明は、こうしたコンピューティング装置およびそのオペレーティングシステム/ファイルシステムに関し、具体的には比較的安全かつ効率的な方法でファイルシステム操作を実行することに関する。
パーソナルコンピュータ、ゲームコンピュータ、家庭用ビデオレコーディングコンピュータ、およびその他などの多くの典型的なコンピューティング装置では、コンピューティング装置が比較的大規模な記憶装置を含む。その記憶装置は、もちろんそのコンピューティング装置上で実行可能であるアプリケーションと、そのコンピューティング装置上で実行され、同様に動作し、および記憶装置にアクセスできるオペレーティングシステムおよび/またはファイルシステム(以下、「ファイルシステム」と呼ぶ)とを含む、コンピューティング装置に関するデータを格納することができる。記憶装置が比較的大規模であるため、その上でアプリケーションおよびファイルシステムが使用する容量は比較的重要ではなく、したがって、ファイル保守、システムアップグレード、ファイルアクセス、ファイル記憶、およびその他の問題は特に深刻ではない。
しかしながら、コンピューティング装置がこのように比較的大規模な記憶装置を含んでおらず、代わりに比較的小規模な記憶装置を含んでいる場合、その上でアプリケーションおよびファイルシステムが使用する容量は比較的重要となり、前述の問題がより深刻になる可能性がある。たとえば、コンピューティング装置がたとえばポータブルオーディオまたはビデオプレーヤあるいはポータブルゲームコンピュータなどのポータブルコンピューティング装置等あり、比較的小型な場合、特にコンピューティング装置は、その上で実行可能なアプリケーションおよび収容可能な記憶装置の物理的大きさといった必要な機能が制限される可能性がある。そのため、こうしたコンピューティング装置は、比較的小規模な記憶装置を含む場合がある。記憶装置が比較的小規模であるため、その上でファイルシステムが使用する容量は比較的重要であり、したがってファイル保守、システムアップグレード、ファイルアクセス、ファイル記憶、およびその他の問題を慎重に考慮する必要がある。
考慮しなければならない問題の1つが、比較的小規模な記憶装置上のアプリケーションまたはファイルシステムを更新する方法である。具体的に言えば、比較的大規模な記憶装置では、こうした更新は、更新データを記憶装置の未使用部分に首尾よく書き込み、その後、対応する古いデータを記憶装置の他の部分から削除することによって達成することができる。しかしながら比較的小規模な記憶装置では、その記憶装置上のスペースを使用して、古いデータを削除するのに先立って更新データを書き込むことができない場合があり、したがって更新データを書き込むのに先立って容量を確保するために古いデータを削除しなければならない。
しかしながら批判的に言えば、アプリケーションまたはファイルシステムの更新が何らかの形で失敗し、その古いデータがすでに削除されてしまっている場合、更新されていないアプリケーションまたはファイルシステムをコンピューティング装置上で実行することが可能であった以前の状態に、コンピューティング装置を復元する方法がない可能性がある。アプリケーションの場合、可能であればアプリケーションが再ロードされるまで、こうした障害は苛立ちの原因となる可能性がある。しかしながらファイルシステムの場合、ファイルシステムが機能しなければコンピューティング装置は動作不能となるため、こうした障害は致命的となる可能性がある。
考慮しなければならない他の問題が、比較的小規模な記憶装置上にファイルを格納する方法である。具体的に言えば、比較的大規模な記憶装置ではファイルの格納はクラスタごとに実行され、各ファイルは1、2、4、8、または16キロバイトあるいはそれ以上として定義可能な少なくとも1つのクラスタを使用する。したがって、特定のクラスタに少量のデータ(たとえば1バイト)しか割り当てられていないファイルの場合、こうしたクラスタ内の残りのすべてのスペースは他のいずれのファイルによっても使用されることがなく、したがって無駄になる。比較的大規模な記憶装置、具体的には何十または何百ギガバイトといった容量を備えた記憶装置内では、こうした無駄なスペースは特に問題ではない。
しかしながら比較的小規模な記憶装置では、こうした無駄なスペースがすぐにかなりの水準にまで達し、記憶装置のスペースを使い果たしてしまうことさえある。たとえば、16メガバイトの容量と16キロバイトとして定義されたクラスタとを備えた記憶装置は、たとえ各ファイルがわずか数バイトであっても、約1000ファイルしか保持できない。さらに多くの場合、上記で述べたような比較的小規模な記憶デバイスは、実際にその上にかなりの数のおよそ数バイトから数百バイトという非常に小さなファイルを格納している。
考慮の対象となる他の問題は、ファイルが未割り振りデータまたはnullデータの一部を含む場合に、比較的小規模な記憶装置上にファイルを格納する方法である。ファイル内のこうした未割り振りデータまたはnullデータは、ファイル内にそのためのスペースが存在するデータであるが、こうしたデータはまだ確立されていないことが理解できるであろう。たとえば特定の128キロバイトファイルでは、その中央部分が、プレースホルダとして動作するが後に何らかの型の情報で満たされることになる、32キロバイトのnullデータで構成される場合がある。したがって、こうしたnullデータはすべてゼロなどで表すことが可能であり、また一方では後に実質的な情報で満たされる可能性がある。
具体的に言えば、比較的大規模な記憶装置では、たとえこうしたnullデータが何も表さない場合であっても、こうしたnullデータを含むファイル全体が格納される。こうした「格納された」nullデータは、比較的大規模な記憶装置上でのスペースの無駄であり、もっと適切な使い方が可能なことが理解できるであろう。しかしながら、ここでもこうした無駄なスペースは、特におよそ何十または何百ギガバイトの容量を備えた比較的大規模な記憶デバイスでは特に重要ではない。
しかしながらまた一方、比較的小規模な記憶装置では、こうした無駄なスペースがすぐにかなりの水準にまで達し、記憶装置のスペースを使い果たしてしまうことさえある。さらに、こうした比較的小規模な記憶装置上に、装置上の古いファイルに基づいて新しいファイルを構築しようと試みる場合、具体的には装置がほとんど満杯である場合、こうした無駄なスペースが妨げとなる場合があることも理解されよう。
考慮の対象となる他の問題は、比較的小規模な記憶装置上でファイルを実行する方法である。具体的に言えば、たとえば移動式電話、ポジションロケータ、音楽プレーヤなどのこうした比較的小規模な記憶装置を有することになるコンピューティング装置では、ユーザは要求された処置がほぼ即時に実行されることを望む可能性がある。言い換えれば、要求された処置が実行可能ファイルの実行を必要とする場合、こうしたユーザは、ファイルを記憶装置からローカルRAMなどにロードして実行の準備が整うまでに何秒も待っていたくはない。さらに特定の状況では、たとえばコンピューティング装置が緊急時に救急隊員が使用する可能性のある携帯通信装置である場合など、動作の性質によってほぼ即時の実行が要求される可能性がある。
したがって、比較的小規模な記憶装置を備えたコンピューティング装置上でアプリケーションまたはファイルシステムを更新するための方法が求められている。
さらに、必要以上の無駄なスペースなしに、比較的小規模な記憶装置の記憶容量を効率よく使用するファイルシステムのフレームワークが求められている。
さらに、特にファイルがnullデータを含んでいる場合に、比較的小規模な記憶装置の記憶容量を効率よく使用することが可能なファイルの構造が求められている。
さらに、コンピューティング装置の記憶装置上にあるファイルがほぼ即時に実行可能な方法および機構が求められている。具体的に言えば、ファイルが記憶装置上に格納され、そこから直接実行可能な方法および機構が求められている。さらに、ファイルをフラグメント化方式で記憶装置上に格納することが可能であり、こうした記憶装置から直接実行可能である方法および機構が求められている。
上記で求められていることは、コンピューティング装置の記憶装置に常駐するアプリケーションを更新するための方法が提供される本発明によって、少なくとも部分的に満たされる。この方法では、更新に関するデータを記憶装置へ実際にコミットする(commit)ことを除き、すべての必要な処置を実行することによって更新がシミュレートされ、シミュレートされた更新が成功したか否かが判別される。成功した場合、更新は、同じ必要な処置を実行すること、および更新に関するデータを記憶装置へ実際にコミットすることによって実行される。
上記で求められていることは、コンピューティング装置が記憶装置と記憶装置上でファイルを格納および検索するためのファイルシステムとを含む本発明の態様によっても、少なくとも部分的に満たされる。記憶装置は、セクタに分けられた記憶スペースを含む。ファイルシステムは、外部的には記憶装置をセクタごとにアドレス指定するが、内部的には記憶装置の各セクタをチャンクに分割し、各セクタ内のデータをチャンクごとに管理する。したがってファイルシステムは、チャンクを有するセクタを読み取ることまたは書き込むことによって、記憶装置からチャンクを読み取り、または記憶装置にチャンクを書き込む。
さらに上記で求められていることは、コンピューティング装置がファイルを有する記憶装置と、記憶装置上でファイルを格納および検索するためのファイルシステムとを含む本発明によっても、少なくとも部分的に満たされる。ファイルは複数のセグメントを含み、少なくとも一部のセグメントはそれぞれnullデータであり、少なくとも一部のセグメントはそれぞれ実質的データである。ファイルは、各nullデータセグメント向けに割り振られたスペースを有するが、こうした割り振られたスペースは、実際には情報で満たされていない。一方でファイルは、各実質的データセグメント向けに割り振られたスペースを有し、こうした割り振られたスペースは実際に情報で満たされている。各nullデータセグメントは実際には記憶装置上に物理的に格納されず、各実質的データセグメントは実際に記憶装置上に格納される。
さらに上記で求められていることは、コンピューティング装置が、プロセッサと、実行可能ファイルを有する記憶装置と、プロセッサの代わりに記憶装置上の適所でファイルを実行するためのファイルシステムとを含む本発明によっても、少なくとも部分的に満たされる。ファイルは、記憶装置上で複数の連続しないフラグメントに分割される。コンピューティング装置は、記憶装置上にあるファイルのフラグメントの物理アドレスと、プロセッサによって使用される対応する仮想アドレスとの間で変換する、プロセッサと記憶装置との間に挿入された仮想アドレス変換器をさらに含む。
前述の要約および本発明の諸態様についての以下の詳細な説明は、添付の図面と共に読むことでより良く理解されるであろう。図面には、現時点で好ましい態様が本発明を例示する目的で示されている。しかしながら本発明は、図示された精密な配置構成および手段に限定されるものでないことを理解されたい。
(コンピュータ環境)
図1および以下の考察は、本発明および/またはその一部が実施可能な好適なコンピューティング環境を簡単かつ全般的に説明することを意図するものである。必須ではないが、本発明については、クライアントワークステーションまたはサーバなどのコンピュータによって実行中であるプログラムモジュールなどのコンピュータ実行可能命令との一般的な関連において説明する。一般にプログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、構成要素、データ構造、およびその他を含む。さらに本発明および/またはその一部は、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電子製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ等を含む、他のコンピュータシステム構成でも実施可能であることを理解されたい。本発明は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される、分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラムモジュールをローカルおよびリモートのどちらのメモリ記憶装置にも配置することができる。
図1に示されるように、例示的な汎用コンピューティングシステムは、処理ユニット121、システムメモリ122、および、システムメモリを含む様々なシステム構成要素を処理ユニット121に結合するシステムバス123を含む、従来のパーソナルコンピュータ120またはその他を含む。システムバス123は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのうちのいずれかを使用するローカルバスを含む、いくつかの種類のバス構造のいずれかとすることができる。システムメモリは、読み取り専用メモリ(ROM)124およびランダムアクセスメモリ(RAM)125を含む。起動時などにパーソナルコンピュータ120内の要素間で情報を転送する際に役立つ基本ルーチンを含む基本入力/出力システム126(BIOS)は、ROM124に格納される。
パーソナルコンピュータ120は、ハードディスク(図示せず)からの読み取りおよびこれへの書き込みのためのハードディスクドライブ127と、取り外し可能磁気ディスク129からの読み取りおよび書き込みを行う磁気ディスクドライブ128と、CD−ROMまたは他の光学式媒体などの取り外し可能光ディスク131からの読み取りおよび書き込みを行う光ディスクドライブ130とをさらに含むことができる。ハードディスクドライブ127、磁気ディスクドライブ128、および光ディスクドライブ130は、それぞれハードディスクドライブインターフェース132、磁気ディスクドライブインターフェース133、および光ドライブインターフェース134によって、システムバス123に接続される。ドライブおよびそれらに関連するコンピュータ読取り可能媒体は、パーソナルコンピュータ120に関するコンピュータ読取り可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶を提供する。
本明細書に記載された例示的な環境では、ハードディスク、取り外し可能磁気ディスク129、および取り外し可能光ディスク131を利用しているが、例示的なオペレーティング環境では、コンピュータがアクセス可能なデータを格納することができる他の種類のコンピュータ読取り可能媒体も使用可能であることを理解されたい。こうした他の種類の媒体には、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、およびその他が含まれる。
オペレーティングシステム135、1つまたは複数のアプリケーションプログラム136、他のプログラムモジュール137、およびプログラムデータ138を含み、いくつかのプログラムモジュールをハードディスク、磁気ディスク129、光ディスク131、ROM124、またはRAM125に格納することができる。ユーザは、キーボード140およびポインティングデバイス142などの入力装置を介して、パーソナルコンピュータ120にコマンドおよび情報を入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナ、またはその他を含むことができる。これらおよび他の入力装置は、多くの場合システムバスに結合されたシリアルポートインターフェース146を介して処理ユニット121に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェースによって接続することができる。モニタ147または他の種類のディスプレイ装置も、ビデオアダプタ148などのインターフェースを介してシステムバス123に接続される。パーソナルコンピュータには、通常、モニタ147に加えてスピーカおよびプリンタなどの他の周辺出力装置(図示せず)が含まれる。図1の例示的なシステムには、ホストアダプタ155、小型コンピュータシステムインターフェース(SCSI)バス156、およびSCSIバス156に接続された外部記憶装置162も含まれる。
パーソナルコンピュータ120は、リモートコンピュータ149などの1つまたは複数のリモートコンピュータへの論理接続を使用する、ネットワーク化環境で動作することができる。リモートコンピュータ149は、他のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の共通ネットワークノードとすることが可能であり、通常は、パーソナルコンピュータ120に関して上記で説明した要素の多くまたはすべてを含むが、図1ではメモリ記憶装置150のみが示されている。図1に示す論理接続には、ローカルエリアネットワーク(LAN)151およびワイドエリアネットワーク(WAN)152が含まれる。こうしたネットワーキング環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびインターネットでよく見られるものである。
LANネットワーキング環境で使用される場合、パーソナルコンピュータ120はネットワークインターフェースまたはアダプタ153を介してLAN151に接続される。WANネットワーキング環境で使用される場合、パーソナルコンピュータ120は、通常、インターネットなどのワイドエリアネットワーク152を介した通信を確立するためのモデム154または他の手段を含む。モデム154は内蔵型または外付け型が可能であり、シリアルポートインターフェース146を介してシステムバス123に接続される。ネットワーク化環境では、パーソナルコンピュータ120に関して示されたプログラムモジュールまたはその一部を、リモートのメモリ記憶装置に格納することができる。図示されたネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するための他の手段が使用可能であることを理解されよう。
(比較的小規模な記憶装置を備えたコンピューティングデバイス)
次に図2を見ると、本発明は、1つまたは複数のアプリケーション14およびファイルシステム16がロードされた比較的小規模な記憶装置12を備えたコンピューティング装置10に関連して、特に有用であると考えられる。コンピューティング装置10は、本発明の趣旨および範囲を逸脱することのない任意の種類のコンピューティング装置とすることが可能であるが、記憶装置12が比較的小型である場合、コンピューティング装置10も同様であることが多い。たとえばコンピューティング装置10は、携帯メディアプレーヤまたはゲームプレーヤ、携帯情報端末、または携帯パーソナルコンピュータとすることができる。
コンピューティング装置10上の記憶装置12は、本発明の趣旨および範囲を逸脱することのない任意の記憶装置とすることができる。本発明は、記憶装置12が比較的小型である状況に特に適用可能であるが、こうした記憶装置12は、実際には本発明の趣旨および範囲を逸脱することのない任意のサイズとすることができる。コンピューティング装置10に応じて、記憶装置12は、ハードディスクドライブ、メモリカード、フラッシュRAM(ランダムアクセスメモリ)等とすることが可能であり、こうした記憶装置12は、それを介してアクセスが管理される適切なハードウェアドライバ(図示せず)を有する場合がある。
記憶装置12に加えて、コンピューティング装置10は、記憶装置12からのデータを操作に先立って転送することができるローカルRAM18を有する場合があることに留意されたい。すなわちコンピューティング装置10は、少なくとも一部のインスタンスでは記憶装置12に格納されたデータに対して直接操作を加えることはないと思われるが、代わりにこうしたデータを記憶装置12からローカルRAM18へとコピーし、ローカルRAM18内でデータに対して操作を加え、その後必要であれば、こうした操作が加えられたデータを記憶装置12へと再度コピーする。このようにする理由は数多くあって多様であるが、通常、速度およびアクセスの高速化に関連することを理解されたい。いずれにしてもこうしたローカルRAM18は、本発明の趣旨および範囲を逸脱することのない任意の種類の適切なRAMとすることができる。
記憶装置12上のアプリケーション14は、本発明の趣旨および範囲を逸脱することのない任意のアプリケーションとすることが可能であり、ローカルRAM18またはその他の場所でインスタンス化することができる。コンピューティング装置10がたとえばオーディオプレーヤ用などの特定タスク向け装置である場合、アプリケーション14も同様に特定タスク向けであると思われるが、少なくとも一部のインスタンスでは、他のアプリケーション14も存在可能であることを理解されよう。
ファイルシステム16は、実際には一種のアプリケーション14であるが、コンピューティング装置10にとって特に重要であることを理解されよう。記憶装置12上のファイルシステム16も同様に本発明の趣旨および範囲を逸脱することのない任意のファイルシステムとすることが可能であり、ローカルRAM18またはその他の場所でインスタンス化することができる。ファイルシステム16は、必ずしも特定タスク向けである必要はないが、代わりにコンピューティング装置10の特定タスク向けでない動作要件に合わせてさらに調整することができる。したがってこうしたファイルシステム16は、コンピューティング装置10の起動時およびその上にアプリケーション14をロードする間に、コンピューティング装置10を動作させるために使用され、記憶装置12、ローカルRAM18、およびその他の場所にあるデータにアクセスするためにも使用される。
(記憶装置12上でのアプリケーション14/ファイルシステム16の更新)
上記で述べたように、比較的小規模な記憶装置12上のアプリケーション14またはファイルシステム16の更新は、記憶装置12が有する使用可能な空きスペースがそれほど多くない場合は特に複雑である可能性がある。たとえば、こうした記憶装置12上に空きスペースがないことで、最初に古いデータを削除しなければデータの更新を書き込むことができない場合、更新時の障害がアプリケーション14またはファイルシステム16を首尾一貫しない状態および恐らく機能しない状態にする場合がある。同様に、こうした記憶装置12上に空きスペースがないことから、「デルタ」データを使用して個々のファイルを修正することで更新を適用させる必要がある場合、更新時の障害がアプリケーション14またはファイルシステム16を首尾一貫しない状態および恐らく機能しない状態にする場合もある。ここでも、アプリケーション14の場合、可能であればアプリケーションが再ロードされるまでこうした障害が苛立ちの原因となる場合があるが、ファイルシステム16の場合、ファイルシステム16が機能しなければコンピューティング装置10は動作不能となるため、こうした障害は致命的となる可能性がある。
したがって本発明の一実施形態では、コンピューティング装置10上でのアプリケーション14またはファイルシステム16(以下、「アプリケーション14」とする)の更新は、2段階の手順として実行され、第1のステップでは更新がシミュレートされ、第1のステップのシミュレートされた更新が成功したとみなされる場合にのみ、第2のステップで更新が実際に実行される。具体的に言えば第1のステップでは、シミュレートされた更新が、更新に関するデータを実際に記憶装置12にコミットすることを除くすべての必要な処置を実行し、第2のステップでは、実際の更新が同じ必要な処置を実行し、更新に関するデータも実際に記憶装置12にコミットする。
本発明を実施するためには、通常、コンピューティング装置10のファイルシステム16が記憶装置12上に格納されたデータに関するメタデータ20を維持することを理解されたい。こうしたデータは、通常、記憶装置12上にファイルとして格納され、メタデータ20は、名前、サイズ、様々なタイムスタンプ、記憶装置12上のファイルあるいは記憶装置12上でファイルを構成する部分の物理および/または仮想位置、ならびにファイルに関する様々な属性等を含む各ファイルについてのデータを含むことができることを理解されよう。加えて、記憶装置12が複数部分のデータに編成されていると想定すると、こうしたメタデータ20は、記憶装置12に関してデータの受け入れに使用可能なこうした部分の「空き」リスト、またはその等価物を含むことができる。
次に、コンピューティング装置10の記憶装置12のファイル内にあるデータを修正するためには、修正されたファイルに関するメタデータおよび恐らくは空きリストも修正する必要があるであろうことを理解されたい。また通常、ファイルシステム16はその動作時にメタデータ20またはその一部あるいはその等価物をローカルRAM18にコピーし、その結果、ローカルRAM18上のメタデータ20のコピーがファイルシステム16の動作中に必要に応じて修正され、ローカルRAM18上のメタデータ20の修正済みコピーが必要に応じて記憶装置12に記憶される。
通常、ファイルシステム16による記憶装置12上のファイルへの修正は、新規ファイルの追加、既存ファイルの削除、および既存ファイルの修正を含むことができる。簡単に言えば、新規ファイルの追加は、メタデータ20内の空きリストを利用してファイル用のスペースを見つけること、メタデータ20内のファイルに適したデータを作成すること、記憶装置12上の見つけたスペースに新規ファイルに関するデータを追加すること、および見つけたスペースの使用を反映するようにメタデータ内の空きリストを更新することによって達成される。同様に、既存ファイルの削除は、メタデータ20内のファイルに関するデータを適宜除去すること、および現在の空きスペースを反映するようにメタデータ内の空きリストを更新することによって達成される。既存ファイルの修正は、データがファイルに追加され、もしくはファイルから削除される、またはその両方であるか否かに応じて、ファイルの追加または削除と類似した方法で達成される。いずれにしても、ファイルへの何らかの修正の結果として、ファイルに関連付けられたメタデータ20への、またさらに記憶装置12それ自体に関するメタデータ20への、対応する修正が生じることを理解されよう。
前述の内容を念頭に置くと、本発明の一実施形態では、コンピューティング装置10はシミュレーションモードおよび正規モードで動作可能であり、更新がシミュレートされる前述の第1のステップでは、コンピューティング装置10はシミュレーションモードで動作する。同様に、第1のステップでシミュレートされた更新が成功したとみなされる場合に限り、更新が実際に実行される前述の第2のステップおよびその他の大部分の時間の間、コンピューティング装置10は正規モードで動作する。アプリケーション14に対する更新は、通常、インストーラによって実行され、コンピューティング装置10は、その動作時に、こうしたインストーラによってシミュレーションモード内およびシミュレーションモード外に置くことができる。
主として、コンピューティング装置10が正規モードからシミュレーションモードに置かれる場合、ローカルRAM18に記述されたメタデータ20のコピーは、後で検索するために記憶装置12、ローカルRAM18、キャッシュ、またはその他の場所のいずれかに保存される。その後、コンピューティング装置10の動作時には、実際に記憶装置12へデータがコミットされることはない。その後のある時点で、コンピューティング装置10がシミュレーションモードから正規モードに戻される場合、メタデータ20の保存されたコピーが検索され、記憶装置12上のデータはシミュレーションモード中に変更されないため、記憶装置12の実際の状態を反映するようにローカルRAM18に復元される。その後、コンピューティング装置10の動作時に、データが再度実際に記憶装置12にコミットされる。したがって、コンピューティング装置10をシミュレーションモードに置くことは、記憶装置12上に格納されたいずれのデータをも永続的に変更しない。したがってこうしたデータへの「変更」は、あったとしてもそれほど多くのリスクなしにシミュレートすることができる。
ここで理解されるように、コンピューティング装置10上でのアプリケーション14の更新中にシミュレーションモードを使用することによって、こうした更新は第1にこうしたコンピューティング装置10の記憶装置12上のファイルを修正しないような非破壊的な方法で実行することができる。したがってこうしたシミュレーションモードは、修正を記憶装置12にコミットすることなく、一連の修正が成功するかまたは失敗するかを予め判別することができる。シミュレーションモードでは、記憶装置12に対するすべての修正が、実際にはローカルRAM18内で維持されるメタデータ20に対してのみ実行される。ファイルのコンテンツが割り振りおよび割り振り解除されると、ローカルRAM18上のメタデータ20の空きリストにある空きスペースが追跡されるが、ファイルデータは実際には記憶装置12にコミットされない。たとえば、空きスペースが使い尽くされるか、またはファイル操作時にファイルシステム16がエラーに遭遇すると、戻り値を介して呼び出し側エンティティに通知される。重要なことに、障害が発生した場合、コンピューティング装置10が正規モードに戻されたときに、実際には更新の実行が許可されることはない。したがって障害が発生しない場合、コンピューティング装置10が正規モードに戻されたときに、同じ一連の修正を再度実行することによって、実際に更新の実行が許可される。
ここで理解されるように、本発明では、コンピューティング装置10がシミュレーションモードに置かれている間に第1のステップで実行されたコードは、記憶装置12へデータを書き込むためのすべての書き込み操作がシミュレーションモードでは使用不可になることを除き、コンピューティング装置10が正規モードに戻されている間に第2のステップで実行されたコードと同一である。したがって、シミュレーションモードにおける第1のステップですべての修正が成功した場合、同じ修正シーケンスは、正規モードにおける第2のステップも成功することになると想定することができる。同様に、シミュレーションモードおける第1のステップでいずれかの修正が失敗した場合、同じ修正は正規モードにおける第2のステップでも失敗することになると想定することが可能であるため、こうした第2のステップは実際には実行されない。
次に図3を見ると、コンピューティング装置10の記憶装置12上でアプリケーション14をインストールまたは更新するインストーラ等は、以下の方法で実行する。予めインストーラは、コンピューティング装置10をシミュレーションモードにすることによって、第1のステップを実行する(ステップ301)。こうしたステップは、通常、コンピューティング装置10、具体的にはプロセッサまたはそのコントローラに対してコマンドを発行することによって実行可能であり、もちろんこれは、こうしたコンピューティング装置10が実際にこうしたコマンドの受け入れおよび理解が可能であり、実際に前述のようにシミュレーションモードに入ることが可能であると想定している。
いずれにせよ、また上記でも述べたように、シミュレーションモードに入ると、コンピューティング装置10は前述のように後で検索するためにメタデータ20のコピーをローカルRAM18に保存し、その後、こうしたコンピューティング装置10のファイルシステム16はファイル操作中に実際にデータを記憶装置12にコミットしないように設定されるが、そうでない場合は、通常はこうしたファイル操作での責務であるすべての他の処置を実行するように設定される。
その後、インストーラによって禁止された各ファイル操作について、もちろん実際に記憶装置12にデータをコミットすることを除き、ファイルシステム16は実際にこうしたファイル操作を実行する(ステップ303)。通常こうしたファイル操作はそれぞれ成功または失敗を示す戻り値を備えた呼び出しとして発行されるという理解の下で、インストーラはファイル操作に関連付けられた戻り値を受け取り、その値から操作が成功したか否かを判別する(ステップ305)。こうしたインストーラは、たとえばこうしたインストーラに含まれるコードに基づき、または特定のシステム値の判別に基づく等の、こうした戻り値とは無関係な基準に基づき操作が成功したか否かを判別できることにも留意されたい。
操作が実際に成功した場合、インストーラは次のファイル操作をステップ303として実行する。しかしながら、何らかの理由で操作が失敗した場合、代わりにインストーラは、通常はコンピューティング装置10および具体的にはそのプロセッサまたはコントローラにコマンドを発行することによって、コンピューティング装置10を正規モードに戻すが(ステップ307)、ここでもこうしたコンピューティング装置10は、実際にこうしたコマンドの受け入れおよび理解が可能であること、および実際に前述のような正規モードに戻ることが可能であることを想定している。
批判的に言えば、ステップ305での操作が成功しなかったとの判別を利用してステップ307で正規モードに戻ると、インストーラは実際に更新を実行せず、その代わりにコンピューティング装置10が更新を受信できないとの想定に基づいて手順を終了する(ステップ309)。前述のように、ステップ307でコンピューティング装置10がシミュレーションモードから正規モードに戻ると、保存されたメタデータ20のコピーが検索され、記憶装置12上のデータはシミュレーションモード中に変更されていないため、記憶装置12の実際の状態を反映するようにローカルRAM18に復元される。その後コンピューティング装置10の操作中に、データは再度実際に記憶装置12にコミットされる。
更新がステップ309で終了した場合、更新は実際には適用されず、更新されたはずのアプリケーション14が未更新の状態で記憶装置12上に残ることになる。重要なことに、こうしたアプリケーション14は更新されていないが、アプリケーション14を障害状態で機能させるか、さらに悪いことにはアプリケーション14をまったく機能させないことになるような、少なくとも何らかの更新未完成の状態のままでは残されない。
次に、ステップ303で実行された各操作に戻り、ステップ305では失敗した操作が見つからなかったと想定すると、インストーラはある時点ですべての操作が実行されたものと決定することになる(ステップ311)。したがってステップ1は更新が首尾よくシミュレートされているという結論に達する。したがって、こうした更新は次にステップ2として実行することができる。
具体的に言えば、シミュレーションが成功すると、ここでも通常はコンピューティング装置10および具体的にはそのプロセッサまたはコントローラにコマンドを発行することによって、インストーラはコンピューティング装置10を正規モードに戻す(ステップ313)。批判的に言えば、ステップ313ですべての操作が成功したとの判別を利用して正規モードに戻ると、インストーラは実際に更新を実行する。前述のように、ステップ313でコンピューティング装置10がシミュレーションモードから正規モードに戻されると、メタデータ20の保存されたコピーが検索され、記憶装置12上のデータはシミュレーションモード中に変更されていないため、記憶装置12の実際の状態を反映するようにローカルRAM18に復元される。その後、コンピューティング装置10の操作中に、データは再度実際に記憶装置12にコミットされる。
更新を実際に実行するため、およびインストーラによって禁止された各ファイル操作について、ファイルシステム16は実際にこうしたファイル操作を実行する(ステップ315)。重要なことに、コンピューティング装置10はここでは正規モードであるため、ファイルシステム16はこうした各操作に関連して実際に記憶装置12にデータをコミットする。ここでも、インストーラはある時点ですべての操作が実際に実行されたものと決定し、したがってアプリケーション14の更新は首尾よくインストールされたとの結論に達し、終了することになる(ステップ317)。
ステップ315で各ファイル操作を実行中のインストーラは、操作がステップ305と類似した方法で成功したか否かを判別することができる(図示せず)。しかしながらこうしたステップは、各操作が以前にステップ303で首尾よくシミュレートされているため、本発明にとって絶対に不可欠であるとは考えられない。にもかかわらず、操作がシミュレーションモードでは成功したが、正規モードでは失敗したというインスタンスが発生する可能性がある。とは言うものの、こうしたインスタンスは稀であり、本発明の範囲を超えるものと考えられる。
本発明は更新をシミュレートすることによって動作するものであり、こうしたシミュレートされた更新においては、いかなるデータも記憶装置12にコミットすることがない。シミュレーションモードで実行される操作は、正規モードで実行される操作と同一であるが、シミュレーションモード時には使用不可である記憶装置12にデータをコミットすることは例外である。したがって、シミュレーションモードですべての更新操作が成功した場合、インストーラはたとえば記憶装置12の致命的障害などの特定のケースを除き、同じ操作のシーケンスが正規操作でも成功するであろうと想定することができる。
更新が、記憶装置12にコミットされたものと予測されるが実際にはされていないデータに対する操作を含む場合、ある種のわずかな修正が必要となる可能性があることを理解されたい。一般に、こうしたわずかな修正には、こうしたデータをキャッシュに入れることおよびこうした操作の実行をこうしたキャッシュ済みデータに転送することが必要であることも理解されたい。
(記憶装置12の容量の効率的な使用)
通常、記憶装置12などの記憶装置は、その上に格納された情報の個々のバイトそれぞれにアドレス指定することはできない。そのようにすることは通常は不要であり、より重要なことには、そのようにするためには持て余すことになるほど非常に大規模なアドレス情報を必要とし、記憶装置に関する情報の追跡をより複雑にする。こうした情報の追跡には、たとえば空きスペースおよび/または未使用スペースのリスト、不良スペースのリストなどが含まれる。代わって、次に図4を参照すると、記憶装置は通常、情報のアドレス指定可能セクタ22に従ってそのスペースを細分化し、各セクタ22はおよそ512または1024バイトを有するように定義可能であり、その後こうした記憶装置は、たとえセクタ22内のほんの数バイトしか扱わない場合であっても、そのアドレスに従ってセクタごとにデータの読み取りおよび書き込みを行うことになる。
典型的なファイルシステムは、より大きなファイル28が格納されている比較的大規模な記憶装置に関して、クラスタ24をいくつかのセクタ22として定義し、こうした記憶装置をクラスタごとにアドレス指定し、各ファイル28が少なくとも1つのクラスタを使用するように要求する(図4ではそのように図示せず)方がより便利であるが、こうした記憶装置をセクタごとにアドレス指定することが可能である。前述のように、ファイルシステムがこのように実行することによって、前述のメタデータ20内の空きリストなどの記憶装置に関する情報の追跡が手に余りかつ複雑になるほどにアドレス情報が極度に大規模になるのを防止することができる。典型的にはクラスタ24は、たとえば1、2、4、8、16キロバイトまたはそれ以上などの、セクタ22の基数2の倍数(base−2 multiple)であり、ファイルシステムはたとえクラスタ24内のほんの数セクタ22しか扱わない場合であっても、クラスタごとにデータの記憶装置からの読み取りおよび記憶装置への書き込みを行うことになる。
しかしながら、また上記で指摘したように、少量のデータ(たとえば数バイトから数百バイト)しかないファイル28が特定のクラスタ24に割り当てられた場合、こうしたクラスタ24内の残りのすべてのスペースが無駄であり、比較的小規模な記憶装置では、こうした無駄なスペースがすぐに重大な問題となる可能性がある。したがって本発明の一実施形態では、第1の処置として、図2の記憶装置12用のファイルシステム16は、こうした記憶装置12をクラスタごとにアドレス指定せず、代わりにセクタごとに同様にアドレス指定するため、各ファイル28が記憶装置12の少なくとも1つのセクタ22を使用する(図4ではそのように図示せず)必要がある。その結果、たとえば512バイトのセクタ22上におよそ数バイトから数十バイトの比較的小さなファイル28を格納すると数百バイトしか無駄にせず、たとえば8キロバイトのクラスタ24の場合のように何千バイトも無駄にすることがない。
ファイルシステム16が記憶装置12をセクタごとにアドレス指定する必要があることにより、結果として、クラスタごとに比べてより長くより複雑なアドレス指定が生じる一方で、比較的小規模な記憶装置12の場合アドレス指定されることになる容量は比較的少なく、したがってアドレスも比較的少ない。たとえば、8キロバイトのクラスタおよび1キロバイトのセクタを備えた16メガバイトの記憶装置12の場合、セクタごとのアドレス指定には3つの追加ビットを備えたアドレスが必要であるが、こうしたアドレスでも依然として14ビット長であり、適度であるとみなすべきである。
理解できるように、たとえファイルシステム16が記憶装置12をセクタごとにアドレス指定する場合であっても、何百またはたとえ何十バイトであっても無駄にすることは、数バイトから数十バイトの比較的小さなファイル28がたとえば512バイトのセクタ22上に格納されている場合、依然として許容できない不効率さであるとみなされる可能性がある。したがって本発明の一実施形態では、第2の処置として、ファイルシステム16は依然として記憶装置12をセクタごとにアドレス指定する一方で、内部的には各セクタ内のデータをチャンクごとに管理し、各チャンク26(図4)はたとえばセクタ22の基数2の分割として定義される。
ファイル28を(図4に示されるように)チャンクごとに格納する場合、および理解されるように、ファイルシステム16は、内部的には各ファイル28が記憶装置12の少なくとも1つのチャンク26を使用することを必要とするが、外部的には依然としてセクタごとに記憶装置12をアドレス指定することになる。したがって、特定のチャンク26を記憶装置12から読み取るかまたはこれへ書き込む場合、ファイルシステム16はチャンク26を有するセクタ22を読み取るかまたは書き込まなければならなくなる。その結果、ファイルシステム16はファイル28が使用する各セクタ22だけでなく、ファイル28が使用する各セクタ22内の各チャンク26の追跡も続けなければならない。これを実行することは、より細密ではあるが極端に負担になるとは考えられず、本発明の趣旨および範囲を逸脱することのない任意の適切な様式で実行することができる。いずれにしても、また理解されるように、たとえば64バイトのチャンク26上に格納されたおよそ数バイトから数十バイトの比較的小さなファイル28は数バイトから数十バイトしか無駄にせず、たとえば512バイトのセクタ22の場合のように、何百バイトも無駄にすることはない。
上記と同様、ファイルシステム16が内部的にファイル28をチャンクごとにアドレス指定する必要があることにより、結果として、セクタごとに比べてより長くより複雑なアドレス指定が生じる一方で、比較的小規模な記憶装置12の場合アドレス指定されることになる容量は比較的少なく、したがってアドレスも比較的少ない。以前の例を続けると、1キロバイトのセクタ22および256バイトのチャンク26を備えた16メガバイトの記憶装置12の場合、チャンクごとにアドレス指定するには2つの追加ビットを備えたアドレスが必要であるが、こうしたアドレスでも依然として16ビット長さであり、適度であるとみなすべきである。
各クラスタ24のサイズおよび各セクタ22のサイズと同様に、記憶装置12が初期にフォーマット化および/または区画化されるときに、ファイルシステム16に関する各チャンク26のサイズも定義するべきであることに留意されたい。しかしながら、記憶装置12はファイルシステム16によってチャンクごとにアドレス指定されないため、各チャンク26のサイズを知っている必要はない。代わりに、および再度、ファイルシステム16は内部的には記憶装置12上のファイル28をチャンクごとに編成するが、外部的には記憶装置12をセクタごとにアドレス指定する。
上記で言及したように、ファイルシステム16は記憶装置12上の各ファイル28について、ファイル28によって使用される各セクタ22およびファイル28によって使用される各セクタ22内の各チャンク26の位置を特定するための情報の位置特定を維持しなければならない。理解されるように、このように実行することは、ファイル28が単一のセクタ22上で連続しているインスタンスでは比較的簡単であり、この場合、ファイルシステム16は、関係する部分のセクタ22のアドレス、セクタ22内の開始チャンク26のアドレス、およびチャンク26内のファイルの長さのみに留意するだけでよい。しかしながら、ファイル28が単一のセクタ22上で2つの連続するフラグメント内にある場合、ファイルシステム16はセクタ22のアドレス、セクタ22内の第1のフラグメントの開始チャンク26のアドレス、チャンク26内の第1のフラグメントの長さ、セクタ22内の第2のフラグメントの開始チャンク26のアドレス、およびチャンク26内の第2のフラグメントの長さに留意しなければならない。理解されるように、ファイル28をより多くのフラグメントに分けるに従い、こうしたファイル28は、複数のセクタ22上および各セクタ上の複数のチャンク26内に常駐することになり、これに対応してファイル28のすべてのフラグメントの位置を特定するための位置特定情報も同様により長くなる。
理解すべきであるように、こうした位置特定情報は、ファイルシステム16によって維持されるリストに格納することができる。別の方法として、こうした位置特定情報の大部分をファイル28それ自体と共にヘッダまたはその他として格納することも可能であり、この場合ファイルシステム16は、こうしたヘッダを見つけるために必要な情報だけを維持すればよい。後者の場合では、理解すべきであるように、こうした位置特定情報が比較的大規模である場合、こうした情報をヘッダと分離し、こうしたヘッダが必要に応じてそれへの参照を含むようにすることができる。
いずれにしても、ある時点でファイル28がより大きくなり、特にファイル28がより多くのフラグメントに分けられるに従って、特に記憶装置12が比較的小規模であり、そのスペースの使用が比較的効率よく実行されることになる場合、そのための位置特定情報は許容できないほど大規模になる。こうした問題は、各チャンク26の定義済みサイズがより小さくなるほど、したがってファイル28がより多くのフラグメントにまたがって広がることになるほど、特に深刻になる。またある時点でファイル28がより大きくなり、より多くのフラグメントに分けられるに従って、特に、ファイル28のフラグメントの数に相応して許容できないほど多数の読み取りまたは書き込み操作を実行しなければならない場合に、記憶装置12からのファイルの位置特定および読み取りまたはこれへのファイル28の書き込みが許容できないほど煩雑になる。前述のように、こうした問題は、各チャンク26の定義済みサイズがより小さくなるほど、したがってファイル28がより多くのフラグメントにまたがって広がることになるほど、特に深刻になる。
したがって要約すると、ファイルシステム16は、各チャンク26がセクタ22よりも小さい場合、記憶装置12上での各ファイル28の格納をチャンクごとに実行することによって、スペースに関してより効率的に格納するが、このように実行する場合、フラグメント化されたファイル28に関する位置特定情報が許容できないほどに大きくなり、フラグメント化されたファイル28の格納および検索が極度に煩雑になるまで、ファイルが大きくなるに従って、ファイル28はより多くのフラグメントに分けられる可能性がある。したがって本発明の一実施形態では、第3の処置として、ファイルシステム16は依然として内部的には各ファイル28をチャンクごとに管理しているにもかかわらず、ファイル28が最低サイズよりも小さい部分にフラグメント化できないように各ファイル28に対して最低サイズ要件を課している。たとえば、4キロバイトのセクタ22および256バイトのチャンク26(すなわちセクタ22ごとに16のチャンク26)を備えた記憶装置12の場合、最低サイズブロック30(図4A)は1、2、4、または8キロバイトまたはそれ以上として定義される可能性がある。少なくとも一部のインスタンスでは、こうした最低サイズブロック30(図4A)は、複数のセクタ22にまたがって実行される可能性があるが、こうしたインスタンスは問題であるとは考えられないことに留意されたい。
最低サイズブロックごとにファイル28を格納する場合において(図4Aに示されるように)、理解すべきであるように、ファイル28がフラグメント化された形式で記憶装置12上に格納される場合、ファイルシステム16は、内部的には各フラグメント32が少なくとも定義された最低サイズブロック30の大きさであることを要求するが、もちろんこうした最低サイズブロック30を満たさないファイル28の残りのフラグメント32があれば除外する。このように実行する場合、ファイルシステム16はデータを受け入れる際に使用可能なチャンク26の「空き」リスト34またはその等価物を維持し、これを考慮しなければならない。このような実行は当業者では知られているかまたは明らかなはずであるため、本明細書ではこれ以上詳細に説明する必要はない。したがってファイルシステム16は、本発明の趣旨および範囲を逸脱することなしに、こうした空きリスト34を使用し、こうした空きリスト34および最低サイズブロック30に基づいてファイル28をフラグメント32に分割する、任意の方法を使用することができる。
各チャンク26のサイズと同様に、記憶装置12が初期にフォーマット化および/または区画化されるときに、ファイルシステム16に関して最低サイズブロック30を定義しなければならないことに留意されたい。しかしながら、ファイルシステム16は最低サイズブロック30を直接参照して記憶装置12をアドレス指定するのではないため、同様にこれを知っている必要がないことを理解されよう。
また、最低サイズブロック30の要件を課すことによって、ファイルシステム16は、記憶装置12上にデータを格納する際にチャンク26を使用することによって得られる効率性の一部を失う可能性があることにも留意されたい。にもかかわらず、こうした効率性の損失は、ファイルのフラグメント化が削減されることによって得られる効率性の向上によって相殺され、またはかえって効率がよくなる場合さえある。さらに、最低サイズブロック30の要件に基づいて特定のファイル28が使用できない記憶装置12上のスペースのチャンク26も、依然として他のファイル28は使用できる。
少なくとも一部のインスタンスでは、ファイルシステム16は、格納する前に各ファイル28を圧縮することによって、記憶装置12上で使用されるスペースの効率を上げることができる。その場合、本発明の一実施形態では、ファイル28は最低サイズブロック30のサイズを有するフラグメント32に分割され、各フラグメント32が圧縮される。こうして圧縮された各フラグメント32は、最低サイズブロック30よりも小さいサイズであるにもかかわらず、こうした配置構成は全体として有効に働くことが分かっている。
(nullデータを備えたファイル用のファイル構造)
前述のように、あるインスタンスでは、記憶装置12などの記憶装置上のファイル28は、ファイル28内にスペースは存在するが実質的なデータで満たされていないような、未割り振りデータまたはnullデータの一部を含むことができる。こうしたnullデータは、すべてゼロまたは何らかの他のプレースホルダ値などのように単純に表すことが可能であり、ある後の時点でこうした実質的データによって満たされるためにのみ存在する。別の方法として、どのような理由であっても、実質的なデータがファイル28から除去されるときにこうしたnullデータを作成することができる。
したがって、比較的大規模なファイル28は記憶装置12上に存在することができるが、実際にはこうしたファイル28のほとんどの部分が、単一の連続する部分において、または複数の連続するまたは不連続な部分としてのいずれかで、nullデータである。こうしたインスタンスでは、特に記憶装置12が比較的小規模である場合、ファイル28のnullデータによって占有されたスペースを実際に解放することが非常に有用となろう。したがって、普通であれば占有されたこうしたスペースを他のファイル28が利用するように使用可能にすることができる。
本発明の一実施形態では、次に図5を見ると、ファイル28内のnullデータによって占有されたスペースを実際に解放するために、こうしたファイル28は図示された構造に従ってファイルシステム16によって記憶装置12上に格納される。具体的に言えば、図に示されるように、こうしたファイル28は、ファイルヘッダ36、セグメント割り振りテーブル38、およびnullデータを除く実際のファイルデータ40を含む。
理解されるように、ファイルヘッダ36は、ファイル属性、ファイルサイズ、タイムスタンプ、ファイル名、およびその他を含む、ファイル28に関する情報を含む。加えて本発明では、ファイルヘッダ36は、記憶装置12上のセグメント割り振りテーブル38の場所への参照を含む。こうした参照は、単一の連続するセグメント割り振りテーブル38への参照、または単一の連続するテーブル38を形成するために組み合わせられることになるこうしたセグメント割り振りテーブル38の複数の連続しない部分への参照とすることができることに留意されたい。セグメント割り振りテーブル38が高度にフラグメント化されている場合、ファイルヘッダ36は、セグメント割り振りテーブル38の一部の追加場所への参照を含む2次データヘッダ42のリストを参照することさえ可能である。
いずれにしても、セグメント割り振りテーブル38は、当業者では明らかなはずであるため本明細書ではこれ以上詳細に説明する必要のない方法で、こうした参照に基づいてこうした部分から構築することができる。実際にセグメント割り振りテーブル38を構築する場合、図5に示されるように、こうしたテーブル38は、ファイル28を構成する実際のファイルデータ40の場所への順序付けされた参照を含むことが分かる。理解されるように、こうした参照は、実際のファイルデータ40の固定長または可変長のセグメントとすることができる。前者の場合、固定長は、たとえば前述の最低サイズブロック30とすることが可能であり、後者の場合、各参照は、長さ属性を含むはずである。もちろん、固定長セグメントを使用する場合、こうした長さ属性は不要である。
したがって、アプリケーションが読み取りまたは書き込みのためにファイル28を開く場合は必ず、セグメント割り振りテーブル38のすべての部片位置を特定するためにファイルヘッダ36が調べられ、こうした部片は記憶装置12からローカルRAM18の連続するセクション等へとコピーされる。その後、ファイル28に関するデータ40は、記憶装置12上のこうしたデータ40の位置を見つけるために連続するセグメント割り振りテーブル38に索引付けすることによって位置を特定することができる。理解されるように、新しいデータがファイル28に書き込まれる場合、最も遠いオフセットにある(at the furthest offset)セグメントをファイル28に包含するために必要に応じてテーブル38が拡張される。テーブル38のフラグメント化を制限するために、特にファイル28の最終サイズがすでに分かっており、データ40のセグメント長が固定されている場合、こうしたテーブル38は、意図されたファイルサイズに予め割り振り可能であることに留意されたい。
重要なことに本発明では、ファイル28用のデータ40は「疎(sparse)」な方式で記憶装置12上に格納され、これによってデータ40の実質的なセグメントはセグメント割り振りテーブル38によって参照され、実際に格納される一方で、データ40のnullセグメントはセグメント割り振りテーブル38によって注記付けされるが、実際には格納または参照されない。具体的に言えば、実質的なデータ40を備えた各セグメントの場合、セグメント割り振りテーブル38内の対応するエントリは参照を含み、nullデータ40のみを備えた各セグメントの場合、セグメント割り振りテーブル38内の対応するエントリは参照を含まないか、もしくはnull参照を含む。したがって、図5に示されたファイル28は15のセグメントを有するが、セグメント3、7、および10〜14はnullデータ40を有するため、セグメント割り振りテーブル38のいずれのエントリによっても実際には参照されない。
図5に示すように、ファイル28を書き込む場合、コンピューティング装置10のファイルシステム16は、実際はデータ40のnullセグメントを書き込まず、代わりに単にこうしたファイル28用のセグメント割り振りテーブル38内にそのための適切なエントリを作成する。次に本発明では、ファイルシステム16は、ファイル28に関するセグメント割り振りテーブル38に基づいて、記憶装置12への適切な呼び出しを使用してファイル28の任意のオフセットからデータ40を読み取り、同様に、ファイルシステム16は、ファイル28に関するセグメント割り振りテーブル38に基づいて、記憶装置12への適切な呼び出しを使用してファイル28の任意のオフセットにデータ40を書き込む。重要なことに、ファイル28に割り振られた記憶装置12の任意の物理部分は、もはや必要でなくなった場合に後で割り振りを解除し、こうした記憶装置12上のスペースを解放することができる。
したがってファイルシステム16は、データの実質的なセグメントを記憶装置12に書き込み、それらに関するセグメント割り振りテーブル38内のエントリを適切な参照で更新することによって、ファイル28内のnullセグメントをデータ40の実質的なセグメントに置き変えることができる。同様に、ファイルシステム16は、セグメント割り振りテーブル38内のそれらに関するエントリをnull参照で更新するか、または既存の参照を除去することによって、その後のある時点でデータ40の実質的なセグメントをnullデータに置き換えることができる。置き換えられた実質的なデータ40は、たとえば物理的に削除するか、他の場所に移動するか、または他のデータ40によって上書きするように残しておくことができる。特に本発明では、実質的なデータ40をnullデータ40に置き換える場合、こうした置き換えられた実質的なデータ40によって占有されていた記憶装置12上のスペースが実際に解放され、他のデータ40を受け入れるために使用することが可能であるため、ファイルシステム16はこれを反映させるために空きリスト34を更新しなければならない。
本発明では、理解すべきであるように、ファイル28は必ずしも最初から最後まで直線的な様式で構築する必要はない。その代わりに、ファイルのサイズに関する知識を備えたファイルシステム16は、それらに関するセグメント割り振りテーブル38を確立し、その後ファイル28に関するデータ40のセグメントをいずれかの順序で記憶装置12上に読み込むことが可能である。重要なことに、こうしたデータ40の各セグメントを記憶装置12上に読み込む間、ファイルシステムは、テーブル38内の対応するエントリにある同様のものを適切に参照する。
特に図5に示された本発明のファイル構造では、ファイルシステム16はたとえばファイル28を更新する際などに、古いファイル28の一部を削除して新しいファイル28を構築することが可能であり、このように実行する場合、ファイル28の新しいバージョンを構築する一方で、ファイル28の古いバージョンを解体して記憶装置12上のスペースを解放することができる。実際には、ファイル28の古いバージョンから解放されたスペースを使用して、ファイル28の新しいバージョンの少なくとも一部を格納することができる。したがって、特にスペースがほとんど残されていない記憶装置12において、ファイル28を更新するために、こうしたファイル28の古いバージョンを削除せずにファイル28の新しいバージョンを構築するだけの十分な空きスペースを必ずしも必要とするわけではない。
代わりに、図6に示されるように、ファイル28の新しいバージョンがファイル28の古いバージョンからのセグメントを含めるためのものである場合、こうしたセグメントはファイル28の古いバージョンからコピーし(ステップ601)、ファイル28の新しいバージョンのセグメント割り振りテーブル38を適切に修正することと共に、ファイル28の新しいバージョンに保存する(ステップ603)ことができる。その後、こうしたファイル28のセグメント割り振りテーブル38を適切に修正すると共に、こうしたセグメントをファイル28の古いバージョンから削除する(ステップ605)ことが可能であり、その後、こうしたファイル28のセグメント割り振りテーブル38を適切に修正すると共に、こうした処置に基づいて記憶装置12から解放されたスペースを使用して、ファイル28の新しいバージョンの他のセグメントを格納する(ステップ607)ことができる。
ここで理解すべきであるように、こうしたステップは、最終的にファイル28の新しいバージョンが完全に構築される(ステップ609)まで多数回繰り返し可能であり、ファイル28の古いバージョンの物理サイズが減少するに従って記憶装置12上でファイル28の新しいバージョンの物理サイズは増加していく。その後ファイル28の古いバージョンを削除して、記憶装置12上のこうした古いファイル28の残りのセグメントによって占有されたスペースを解放することができる(ステップ611)。
少なくとも一部の環境では、ステップ601〜605に示されるように、セグメントをファイル28の古いバージョンから物理的にコピーし、こうしたファイル28の新しいバージョンに保存し、ファイル28の古いバージョンから削除する必要がないことに留意されたい。代わりに、ファイル28の古いバージョンのセグメント割り振りテーブル38からセグメントを単に参照解除(de−reference)し、ファイル28の新しいバージョンのセグメント割り振りテーブル38にある同じセグメントを参照するだけで十分な場合がある。
本発明では、ここで理解すべきであるように、ファイル28のnull部分が実際には格納されないように、ファイル28を疎な方式で記憶装置12上に格納することが可能である。その結果記憶装置12上のスペースが解放され、他のファイル28用に使用できる一方で、同時にその後のある時点でファイル28のこうしたnull部分を実質的なデータ40と共に読み込むことができる。
(記憶装置上の適所でのファイルの実行)
前述のように、あるインスタンスでは、実行可能ファイル28を記憶装置12上でほぼ即時に、かつ同じものをローカルRAM18または他の場所にロードせずに、実行することが望ましい。たとえば、コンピューティング装置10がオンデマンドおよびほぼ瞬間的にユーザコマンドに反応すると予測される場合であり、こうしたコマンドはこうした実行可能ファイル28の実行を必要とする。別の方法として、ファイル28を実行するためにローカルRAM18を使用しないで済ませることが望ましい場合がある。
前述のように、コンピューティング装置10向けの典型的な記憶装置12は、クラスタごとまたはセクタごとにしかアドレス指定ができない。したがって記憶装置12内の各バイトには、そのセクタ22またはクラスタ24を読み取らずに直接アクセスすることができない。結果として、一般にこうした典型的な記憶装置12からファイル28を直接実行することは、特にこうした実行が一般にこうしたファイルへのバイトごとのアクセスを必要とするため、実行不可能である。したがってファイル28を実行するために、通常、こうしたファイル28は、記憶装置12から、実際にこうしたファイル28の各バイトに直接アクセスできると理解されるローカルにロードされる。
しかしながら本発明の一実施形態では、記憶装置12は実際にバイトごとにアドレス指定することができる。たとえばこうした記憶装置12はNORフラッシュRAMとすることが可能であり、これは理解されるように、実際にバイトごとに直接アドレス指定可能なアクセスを可能にするものである。NORフラッシュRAMは、当業者には知られているため、本明細書でこれ以上詳細に説明する必要はない。したがって、こうしたNORフラッシュRAMの任意の適切な種類を、本発明の趣旨および範囲を逸脱することなしにコンピューティング装置10の記憶装置12として使用することができる。
このようにして、ファイル28はこうしたNORフラッシュRAM記憶装置12上の適所で実行することができる。しかしながら、こうしたNORフラッシュRAM12(図7)上の適所で実際に実行するためには、いくつかの要件を満たさなければならない。
第1の要件として、また初期の問題として、こうしたNORフラッシュRAM12がドライブなどの他の記憶装置である場合と同様に、コンピューティング装置10のファイルシステム16がNORフラッシュRAM12にアクセス可能でなければならない。そのためにNORフラッシュRAM12は、対応するアクセスドライバ44を必要とする。一般に、また理解すべきであるように、アクセスドライバ44はコンピューティング装置10上で実行される1つのソフトウェアであり、物理アドレスに基づいたファイルシステム16によるNORフラッシュRAM12からのデータの呼び出しに応答して、とりわけこうしたデータ40を実際に検索することができる。こうしたアクセスドライバ44は当業者には知られているため、本明細書でこれ以上詳細に説明する必要はない。したがって、本発明の趣旨および範囲を逸脱することなく、任意の適切な種類のこうしたアクセスドライバ44を使用することが可能であり、もちろんこうしたアクセスドライバ44が適切な機能を含んでいることを前提とする。
第2の要件として、ファイル28は、圧縮形式でNORフラッシュRAM12上に格納すべきではない。理解されるように、そのようにすると、こうしたファイル28をたとえばローカルRAM18などの他の場所にロードして圧縮解除しなければならなくなるため、実際にファイル28がこうしたNORフラッシュRAM12上の適所で実行できないことになる。
ファイル28が連続した形またはフラグメント化されていない形で、かつ適切な物理分岐アドレスと共にNORフラッシュRAM12上に格納されない限り、こうしたファイル28は通常、NORフラッシュRAM12上の適所で実行できないことに留意されたい。しかしながら本発明の一実施形態では、たとえ連続しない形またはフラグメント化された形であっても、こうしたファイル28を実際にNORフラッシュRAM12上の適所で実行することができる。しかしながらそのように実行するために、また第3の要件として、こうしたファイル28は開始仮想アドレスを指定し、指定された開始仮想アドレスに基づいて適切な仮想分岐アドレスと共にNORフラッシュRAM12上に格納される。
図7に示すように、また第4の要件として、NORフラッシュRAM12上のファイル28のフラグメント32の物理アドレスと、コンピューティング装置10上のプロセッサ48またはその他が使用可能な対応する仮想アドレスとの間での変換が可能な、コンピューティング装置10は仮想アドレス変換器46を含まなければならない。理解すべきであるように、適所でファイル28を実行中のこうしたプロセッサ48は、こうした仮想アドレス基づいてファイル28および仮想アドレス変換器46から命令を取り出すことによってこれを実行することになる。
したがって仮想アドレス変換器46を使用すると、NORフラッシュRAM12上のファイル28は少なくともプロセッサ48に対して連続するように見え、もちろん、それに対してファイル28内の開始仮想アドレスが実際に仮想アドレス変換器46によって使用されると仮定して、ファイル28内の仮想分岐アドレスは正しい。一般に、また理解すべきであるように、仮想アドレス変換器46は、ファイル28に関するこうした物理アドレスと仮想アドレスとの間のマッピングを維持することによって機能する。こうした仮想アドレス変換器46は当業者には知られているため、本明細書でこれ以上詳細に説明する必要はない。したがって、本発明の趣旨および範囲を逸脱することなく、任意の適切な種類のこうした仮想アドレス変換器46を使用することができる。
次に図8に進むと、その後操作時に、コンピューティング装置10は、以下の方式でNORフラッシュRAM12上の適所でファイル28を実行する。もちろんファイルシステム16は、適切なコマンドを利用してファイル28を実行することがユーザまたは他のエンティティによって予め約束されているため(ステップ801)、アクセスドライバ44を利用してNORフラッシュRAM12上でこうしたファイル28の位置を特定する(ステップ803)。その後ファイルシステム16は、ファイル28がNORフラッシュRAM12上に常駐している、圧縮されていない、仮想開始アドレスを指定する、およびそれに基づいて仮想分岐アドレスを含む、ならびにとりわけ仮想的にマッピング可能である、と判定することによって、ファイル28がNORフラッシュRAM12上の適所で実際に実行可能であると判定する(ステップ805)。
ファイル28が実際にNORフラッシュRAM12上の適所で実行可能であると想定すると、その後システム16は、アクセスドライバ44を利用して、ファイル28の前述の仮想開始アドレスならびに各フラグメント32の物理位置および長さを含む、ファイル28に関する必要な情報を取得し(ステップ807)、同様の情報に関して仮想アドレス変換器46に通知する(ステップ809)。ここで理解すべきであるように、こうした情報を使用して仮想アドレス変換器46は、NORフラッシュRAM12上の複数の連続しない物理位置から、ファイル28によって指定された仮想開始アドレスで始まる単一の連続する仮想位置への、ファイル28のマッピングを作成する(ステップ811)。
NORフラッシュRAM12上のファイル28内の仮想分岐アドレスは、指定された仮想開始アドレスに基づいて正しくなるようにすでにセットアップされているため、仮想アドレス変換器46もプロセッサ48もそれ自体が訂正に関与する必要はない。いずれにしても、プロセッサ48は作成されたマッピングを使用して、仮想アドレス変換器46によってマッピングされた仮想アドレスに基づいて適切にコマンドを発行することにより、ファイル28をいつでも実行することができる(ステップ813)。したがってこうした仮想アドレスに基づいて、変換器46は、ファイル28に関連してNOR RAM12から直接実行されるデータ40の位置を特定する。このように実行する場合、プロセッサ48はファイルシステム16およびアクセスドライバ44を使用する必要がないことに留意されたい。
本発明では、ここで理解すべきであるように、ファイル28は、たとえ連続していない場合であってもコンピューティング装置10の記憶装置12上の適所で実行することができる。このように実行するために、ファイル28は圧縮してはならず、所定の仮想開始アドレスに基づいて正しい仮想アドレスで格納しなければならず、記憶装置12はファイルシステム16がアクセスドライバ44を利用してアクセス可能でなければならず、さらに仮想アドレス変換器46は仮想アドレスから物理アドレスへの変換に基づいて記憶装置12に直接アクセスできなければならない。
以上、本発明について特定の処置を実行する特定の要素で表して述べたが、本発明の趣旨および範囲を逸脱することなく、1つの要素の機能を他の要素の機能に包含することができることを理解されよう。たとえば、ファイルシステム16がアクセスドライバ44の機能を含む場合、またはプロセッサ48が仮想アドレス変換器46の機能を含む場合がある。
さらに本発明について、記憶装置12として直接アドレス指定可能なNORフラッシュRAMで表して述べたが、本発明の趣旨および範囲を逸脱することなく、任意の他の直接アドレス指定可能な記憶装置12も使用可能であることを理解されよう。たとえば、ほとんどの記憶装置は現在のところ直接アドレス指定できないが、ある時点で、実際にハードドライブが直接アドレス指定できる場合がある。
結論
本発明は、関連する記憶媒体12のサイズに関係なく、ほとんどの任意のコンピューティング装置10上でのアプリケーション14の更新に関して実施可能である。ここで理解すべきであるように、本明細書で説明した本発明では、こうした更新は実際に実行される前にまずシミュレートされ、こうした実際の実行はシミュレーションが成功したとみなされた場合に限って実行される。
本発明に関連して実行されるプロセスを達成するために必要なプログラミングは比較的簡単であり、関連するプログラミング業界には明らかなはずである。したがって、こうしたプログラミングは本明細書に添付しない。任意の特定のプログラミングを使用して、本発明の趣旨および範囲を逸脱することなく本発明を達成することができる。
前述の説明で、本発明が、特に比較的小規模な記憶装置12を備えたコンピューティング装置10上のファイルシステム16などのアプリケーション14を更新するための新しい有用な方法を有することがわかるであろう。この方法は、更新が成功するか、そうでなければ更新の実行を許可しないことを保証するものである。
本発明は、チャンクごとに記憶装置12上でファイルを編成するためのファイルシステム16用の新しい有用なフレームワークも有する。このフレームワークは、ファイルシステム16が、必要以上の無駄なしに記憶装置12の記憶容量を効率よく使用できるようにするものである。
本発明は、特にファイル28がnullデータ40を含む場合に、記憶装置12の記憶容量を効率よく使用できるようにするファイル28の新しい有用な構造をさらに有する。こうした構造は、ファイルシステム16が、ファイル28内にこうしたnullデータを不必要に格納することに基づく必要以上の無駄をせずに、記憶装置12の記憶容量を効率よく使用できるようにするものである。
本発明は、コンピューティング装置10の記憶装置12上のファイル28をほとんど即時に実行できる方法および機構をさらに有する。ファイルは、記憶装置12上に格納され、たとえファイル28がフラグメント化された方式で記憶装置12上に格納された場合であっても、そこから直接実行することができる。
前述の諸実施形態は、本発明の概念を逸脱することなく変更が可能であることを理解されたい。したがって一般に本発明は、開示された特定の実施形態に限定されるものでなく、添付の特許請求の範囲に定義された本発明の趣旨および範囲の中での修正をカバーすることを意図するものであることを理解されたい。
本発明の諸態様および/またはその一部を組み込むことが可能な、汎用コンピュータシステムを表すブロック図である。 アプリケーションを含むデータ、ファイルシステム、およびデータに関するメタデータが格納された、記憶装置を備えたコンピューティング装置を示すブロック図である。 本発明の一実施形態に従って記憶装置上でアプリケーションを更新する際に、図2のコンピューティング装置に関連して実行される主要なステップを示す流れ図である。 本発明の一実施形態に従った、チャンクに細分された図2の記憶装置上のセクタを示すブロック図である。 本発明の一実施形態に従った、図4のチャンクに従って格納されたファイルと各ファイルの各フラグメントに対する最小サイズのブロックとを示すブロック図である。 本発明の一実施形態に従った、ファイルのnullデータセグメントが実際には格納されない疎な実施に従って図2の記憶装置上に格納されたファイルを示すブロック図である。 本発明の一実施形態に従って、図5のファイル記憶の疎な実施に関連して実行される主要なステップを示す流れ図である。 本発明の一実施形態に従った、図2の記憶装置上に格納され適所で実行可能なファイルを示すブロック図である。 本発明の一実施形態に従って、適所での図7のファイルの実行に関連して実行される主要なステップを示す流れ図である。
符号の説明
12 記憶装置
22 セクタ
26 チャンク
38 セグメント割り振りテーブル
40 ファイルデータ

Claims (13)

  1. プロセッサと、実行可能ファイルを有する記憶装置と、前記プロセッサの代わりに記憶装置上の適所でファイルを実行するためのファイルシステムとを含むコンピューティング装置であって、前記ファイルは、前記記憶装置上で複数の不連続なフラグメントに分けられ、前記コンピューティング装置は、前記記憶装置上の前記ファイルの前記フラグメントの物理アドレスと前記プロセッサによって使用される対応する仮想アドレスとの間で変換するために、前記プロセッサと前記記憶装置との間に挿入された仮想アドレス変換器をさらに備えたことを特徴とするコンピューティング装置。
  2. 前記記憶装置は、バイトごとにアドレス指定可能であることを特徴とする請求項1に記載のコンピューティング装置。
  3. 前記記憶装置は、NORフラッシュRAMであり、前記コンピュータ装置は、前記ファイルシステムが前記NORフラッシュRAM上の前記ファイルに関するファイル情報にアクセスできるようにするアクセスドライバをさらに含むことを特徴とする請求項1に記載のコンピューティング装置。
  4. 前記ファイルは、圧縮されない形で前記記憶装置上に格納されることを特徴とする請求項1に記載のコンピューティング装置。
  5. 前記ファイルは、開始仮想アドレスを指定するファイル情報を含み、前記指定された開始仮想アドレスに基づく仮想分岐アドレスと共に前記記憶装置上に格納されるものであって、前記記憶装置上の前記ファイルは前記仮想アドレス変換器を利用して前記プロセッサに対して連続するように見えることを特徴とする請求項1に記載のコンピューティング装置。
  6. 記憶装置上の適所でファイルを実行する方法であって、前記ファイルは前記記憶装置上の複数の連続しないフラグメントに分割され、前記方法は、
    アクセスドライバを利用して前記記憶装置上で前記ファイルの位置を特定するステップと、
    前記ファイルが実際に前記記憶装置上の適所で実行可能であると判定するステップと、
    前記アクセスドライバを利用して、前記ファイルによって指定された仮想開始アドレスと前記ファイルの各フラグメントの物理位置および長さとを含む前記ファイルに関する情報を取得するステップと、
    仮想アドレス変換器が、前記記憶装置上の前記複数の連続しないフラグメントを表す物理アドレスから、前記ファイルによって指定された前記仮想開始アドレスで始まる単一の連続する仮想位置を表す対応する仮想アドレスへの、前記ファイルのマッピングを作成できるように、前記取得された情報に関して仮想アドレス変換器に通知するステップと、
    前記仮想アドレス変換器によってマッピングされた前記仮想アドレスに基づいて、コマンドを発行することにより前記ファイルを実行するステップであって、前記仮想アドレス変換器は前記記憶装置から前記ファイルに関連して直接実行されるデータの位置を特定する、実行するステップと、
    を備えたことを特徴とする方法。
  7. 前記ファイルが圧縮されていないこと、および前記指定された仮想開始アドレスに基づく仮想分岐アドレスを含むものであると判定することによって、前記ファイルが前記記憶装置上の適所で実際に実行可能であると判定するステップを備えたことを特徴とする請求項6に記載の方法。
  8. それ自体の上で実行するための実行可能ファイルをそれ自体の上に格納したコンピュータ読取り可能記憶媒体であって、前記媒体は、プロセッサと、前記プロセッサの代わりに前記媒体上の適所で前記ファイルを実行するためのファイルシステムとを含むコンピューティング装置に取り付けられ、前記記憶媒体上の前記ファイルは複数の連続しないフラグメントに分けられ、前記コンピューティング装置は、前記記憶装置上の前記ファイルの前記フラグメントの物理アドレスと前記プロセッサによって使用される対応する仮想アドレスとの間で変換するために、前記プロセッサと前記記憶装置との間に挿入された仮想アドレス変換器をさらに含み、前記ファイルは、開始仮想アドレスを指定するファイル情報を含み、前記指定された開始仮想アドレスに基づく仮想分岐アドレスと共に前記記憶媒体上に格納されるものであって、前記記憶媒体上の前記ファイルは、前記仮想アドレス変換器を利用して前記プロセッサに対して連続するように見えることを特徴とするコンピュータ読取り可能記憶媒体。
  9. 前記記憶媒体は、バイトごとにアドレス指定可能であることを特徴とする請求項8に記載の記憶媒体。
  10. 前記記憶媒体は、NORフラッシュRAMであり、前記コンピュータ装置は、前記ファイルシステムが前記NORフラッシュRAM上の前記ファイルに関するファイル情報にアクセスできるようにするアクセスドライバをさらに含むことを特徴とする請求項8に記載の記憶媒体。
  11. 前記ファイルは、圧縮されない形で前記記憶媒体上に格納されることを特徴とする請求項8に記載の記憶媒体。
  12. 記憶装置上の適所でファイルを実行する方法を実行するコンピュータ実行可能命令を格納したコンピュータ読取り可能媒体であって、前記ファイルは、前記記憶装置上の複数の連続しないフラグメントに分割され、前記方法は、
    アクセスドライバを利用して前記記憶装置上で前記ファイルの位置を特定するステップと、
    前記ファイルが実際に前記記憶装置上の適所で実行可能であると判定するステップと、
    前記アクセスドライバを利用して、前記ファイルによって指定された仮想開始アドレスと前記ファイルの各フラグメントの物理位置および長さとを含む前記ファイルに関する情報を取得するステップと、
    仮想アドレス変換器が、前記記憶装置上の前記複数の不連続なフラグメントを表す物理アドレスから、前記ファイルによって指定された前記仮想開始アドレスで始まる単一の連続する仮想位置を表す対応する仮想アドレスへの、前記ファイルのマッピングを作成できるように、前記取得された情報に関して仮想アドレス変換器に通知するステップと、
    前記仮想アドレス変換器によってマッピングされた前記仮想アドレスに基づいて、コマンドを発行することにより前記ファイルを実行するステップであって、前記仮想アドレス変換器は、前記記憶装置から前記ファイルに関連して直接実行されるデータの位置を特定する実行するステップと、
    を備えたことを特徴とするコンピュータ読取り可能媒体。
  13. 前記方法は、前記ファイルが圧縮されていないこと、および前記指定された仮想開始アドレスに基づく仮想分岐アドレスを含むものであると判定することによって、前記ファイルが前記記憶装置上の適所で実際に実行可能であると判定するステップを備えたことを特徴とする請求項12に記載の媒体。
JP2005082353A 2004-03-22 2005-03-22 比較的限られた記憶スペースを備えたコンピューティング装置およびそのオペレーティングシステム/ファイルシステム Expired - Fee Related JP4825433B2 (ja)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US55539204P 2004-03-22 2004-03-22
US55510404P 2004-03-22 2004-03-22
US55515504P 2004-03-22 2004-03-22
US55510204P 2004-03-22 2004-03-22
US60/555,102 2004-03-22
US60/555,392 2004-03-22
US60/555,155 2004-03-22
US60/555,104 2004-03-22
US11/001,280 US8069192B2 (en) 2004-03-22 2004-12-01 Computing device with relatively limited storage space and operating / file system thereof
US11/001,280 2004-12-01

Publications (2)

Publication Number Publication Date
JP2005276212A true JP2005276212A (ja) 2005-10-06
JP4825433B2 JP4825433B2 (ja) 2011-11-30

Family

ID=34865464

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005082353A Expired - Fee Related JP4825433B2 (ja) 2004-03-22 2005-03-22 比較的限られた記憶スペースを備えたコンピューティング装置およびそのオペレーティングシステム/ファイルシステム

Country Status (5)

Country Link
US (1) US8069192B2 (ja)
EP (1) EP1580664B1 (ja)
JP (1) JP4825433B2 (ja)
KR (1) KR101150032B1 (ja)
CN (1) CN100445967C (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647358B2 (en) * 2004-03-22 2010-01-12 Microsoft Corporation Computing device with relatively limited storage space and operating/file system thereof
US7490096B2 (en) * 2005-11-04 2009-02-10 Sun Microsystems, Inc. Automatic intent log testing
US8219739B2 (en) * 2006-06-30 2012-07-10 Intel Corporation Read-only optimized flash file system architecture
TWI497414B (zh) * 2009-06-23 2015-08-21 Phison Electronics Corp 檔案執行方法及系統
US8831409B1 (en) * 2010-06-07 2014-09-09 Purplecomm Inc. Storage management technology
US10853306B2 (en) * 2011-08-02 2020-12-01 Ajay JADHAV Cloud-based distributed persistence and cache data model
CN105579977B (zh) 2014-09-01 2020-04-14 华为技术有限公司 访问文件的方法、装置及存储系统
CN105580010B (zh) 2014-09-01 2019-02-19 华为技术有限公司 访问文件的方法、装置和存储系统
CN105243102B (zh) * 2015-09-17 2018-11-23 北京金山安全软件有限公司 一种卸载残留文件的处理方法、装置及终端
WO2018170741A1 (zh) * 2017-03-21 2018-09-27 华为技术有限公司 一种更新操作系统的方法及装置
EP3698253A4 (en) * 2017-10-17 2021-08-04 Argus Cyber Security Ltd SYSTEM AND METHOD FOR MANAGING A PROGRAM MEMORY ON A MEMORY DEVICE
CN114095916A (zh) * 2017-12-19 2022-02-25 华为技术有限公司 配置文件管理的方法、嵌入式通用集成电路卡和终端
WO2022265615A1 (en) * 2021-06-14 2022-12-22 Hewlett-Packard Development Company, L.P. Image file installations
CN117785073B (zh) * 2024-02-28 2024-06-21 深圳市智岩科技有限公司 物联网设备及其时序数据存取方法和相应的装置与介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581768A (en) * 1995-02-27 1996-12-03 Intel Corporation Method and apparatus for executing applications in place from write once/seldom memories
US5754817A (en) * 1994-09-29 1998-05-19 Intel Corporation Execution in place of a file stored non-contiguously in a non-volatile memory
JP2003228513A (ja) * 2001-11-28 2003-08-15 Access:Kk メモリ制御方法および装置

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193184A (en) * 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5193180A (en) 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
JPH0778766B2 (ja) * 1992-09-25 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション ランダム・アクセス可能かつ書換え可能メモリを用いる外部記憶装置におけるプログラム直接実行の制御方法および装置
US5530850A (en) 1993-10-25 1996-06-25 International Business Machines Corporation Data storage library array with log-structured file system which allows simultaneous write and garbage collection
CA2137488C (en) * 1994-02-18 1998-09-29 Richard I. Baum Coexecuting method and means for performing parallel processing in conventional types of data processing systems
US5732402A (en) 1995-02-10 1998-03-24 International Business Machines Corporation System and method for data space management using buddy system space allocation
US6101590A (en) * 1995-10-10 2000-08-08 Micro Unity Systems Engineering, Inc. Virtual memory system with local and global virtual address translation
GB9606927D0 (en) 1996-04-02 1996-06-05 Memory Corp Plc Data storage devices
US5819298A (en) 1996-06-24 1998-10-06 Sun Microsystems, Inc. File allocation tables with holes
US5909540A (en) 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
EP0911827B1 (en) 1997-10-21 2011-11-30 Sony Corporation Recording and/or reproduction apparatus, file management method and providing medium
US6112210A (en) 1997-10-31 2000-08-29 Oracle Corporation Apparatus and method for null representation in database object storage
US6151602A (en) 1997-11-07 2000-11-21 Inprise Corporation Database system with methods providing a platform-independent self-describing data packet for transmitting information
US7428547B2 (en) 1998-01-26 2008-09-23 At&T Corp. System and method of organizing data to facilitate access and streaming
US6697846B1 (en) 1998-03-20 2004-02-24 Dataplow, Inc. Shared file system
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US6304867B1 (en) 1999-02-25 2001-10-16 Electronic Data Systems Corporation System and method for enhanced performance of a relational database management system through the use of application-specific memory-resident data
US6212613B1 (en) * 1999-03-22 2001-04-03 Cisco Technology, Inc. Methods and apparatus for reusing addresses in a computer
JP3763992B2 (ja) 1999-03-30 2006-04-05 富士通株式会社 データ処理装置及び記録媒体
US6574721B1 (en) * 1999-08-31 2003-06-03 International Business Machines Corporation Apparatus and method for providing simultaneous local and global addressing using software to distinguish between local and global addresses
US6647490B2 (en) * 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US7020664B1 (en) 1999-11-30 2006-03-28 Matsushita Electric Industrial Co., Ltd. File management apparatus and method
GB2373612B (en) 1999-12-22 2004-05-05 Seagate Technology Llc Buffer management system for managing the transfer of data into and out of a buffer in a disc drive
US6741978B1 (en) 2000-04-12 2004-05-25 Intel Corporation Accessing file data stored in non-volatile re-programmable semiconductor memories
US6430667B1 (en) * 2000-04-13 2002-08-06 International Business Machines Corporation Single-level store computer incorporating process-local address translation data structures
US6574747B2 (en) * 2000-06-02 2003-06-03 Microsoft Corporation Extensible execute in place (XIP) architecture and related methods
US6658437B1 (en) 2000-06-05 2003-12-02 International Business Machines Corporation System and method for data space allocation using optimized bit representation
EP1364510B1 (en) 2000-10-26 2007-12-12 Prismedia Networks, Inc. Method and system for managing distributed content and related metadata
DE10127198A1 (de) 2001-06-05 2002-12-19 Infineon Technologies Ag Vorrichtung und Verfahren zum Ermitteln einer physikalischen Adresse aus einer virtuellen Adresse unter Verwendung einer hierarchischen Abbildungsvorschrift mit komprimierten Knoten
IL147073A0 (en) 2001-12-10 2002-08-14 Monosphere Ltd Method for managing the storage resources attached to a data network
US6959373B2 (en) 2001-12-10 2005-10-25 Incipient, Inc. Dynamic and variable length extents
US7149750B2 (en) 2001-12-19 2006-12-12 International Business Machines Corporation Method, system and program product for extracting essence from a multimedia file received in a first format, creating a metadata file in a second file format and using a unique identifier assigned to the essence to access the essence and metadata file
US7178139B2 (en) * 2002-08-27 2007-02-13 Delphi Technologies, Inc. Executable file system for an embedded computer
US6988163B2 (en) * 2002-10-21 2006-01-17 Microsoft Corporation Executing binary images from non-linear storage systems
US7170890B2 (en) 2002-12-16 2007-01-30 Zetera Corporation Electrical devices with improved communication
US7353299B2 (en) 2003-05-29 2008-04-01 International Business Machines Corporation Method and apparatus for managing autonomous third party data transfers
US7089354B2 (en) 2003-07-30 2006-08-08 International Business Machines Corporation Disk fragmentation test system
DE60328379D1 (de) 2003-07-30 2009-08-27 Texas Instruments Inc Reformatier-logik-schaltung zur Reformatierung eines Speicherzugriffs auf ein Gerät
JP2005107803A (ja) 2003-09-30 2005-04-21 Hitachi Ltd システム更新方法、および、それを実行するための計算機システム
JP4385215B2 (ja) 2003-10-21 2009-12-16 日本電気株式会社 スナップショットシミュレーション機能を有するディスクアレイ装置
US7549042B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7647358B2 (en) 2004-03-22 2010-01-12 Microsoft Corporation Computing device with relatively limited storage space and operating/file system thereof
US7206915B2 (en) 2004-06-03 2007-04-17 Emc Corp Virtual space manager for computer having a physical address extension feature
US20060015528A1 (en) 2004-07-14 2006-01-19 Microsoft Corporation Generic representation of optional values
WO2006047163A2 (en) 2004-10-26 2006-05-04 Priderock, L.L.C. System and method for identifying and removing malware on a computer system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754817A (en) * 1994-09-29 1998-05-19 Intel Corporation Execution in place of a file stored non-contiguously in a non-volatile memory
US5581768A (en) * 1995-02-27 1996-12-03 Intel Corporation Method and apparatus for executing applications in place from write once/seldom memories
JP2003228513A (ja) * 2001-11-28 2003-08-15 Access:Kk メモリ制御方法および装置

Also Published As

Publication number Publication date
US8069192B2 (en) 2011-11-29
CN100445967C (zh) 2008-12-24
EP1580664A2 (en) 2005-09-28
EP1580664B1 (en) 2013-05-01
JP4825433B2 (ja) 2011-11-30
US20050209991A1 (en) 2005-09-22
EP1580664A3 (en) 2009-01-21
CN1680926A (zh) 2005-10-12
KR101150032B1 (ko) 2012-05-30
KR20060061204A (ko) 2006-06-07

Similar Documents

Publication Publication Date Title
JP4825433B2 (ja) 比較的限られた記憶スペースを備えたコンピューティング装置およびそのオペレーティングシステム/ファイルシステム
US20100115006A1 (en) Computing device with relatively limited storage space and operating/file system thereof
JP4809040B2 (ja) ストレージ装置及びスナップショットのリストア方法
US7698699B2 (en) Computing device with relatively limited storage space and operating/file system thereof
US7913051B1 (en) Methods and apparatus for increasing the storage capacity of a zone of a storage system
US8549051B2 (en) Unlimited file system snapshots and clones
US7496586B1 (en) Method and apparatus for compressing data in a file system
US8086810B2 (en) Rapid defragmentation of storage volumes
US8280858B2 (en) Storage pool scrubbing with concurrent snapshots
US9430331B1 (en) Rapid incremental backup of changed files in a file system
US7415653B1 (en) Method and apparatus for vectored block-level checksum for file system data integrity
CN113568566B (zh) 利用索引物件来进行简易存储服务无缝迁移的方法、主装置以及存储服务器
US8478933B2 (en) Systems and methods for performing deduplicated data processing on tape
JP4398464B2 (ja) 1つのターゲット・ボリュームと1つのソース・ボリュームとの間のポイント・イン・タイム・コピー関連性を管理するためのシステム、方法、及びプログラム
US9158781B1 (en) Version mapped incremental backups with version creation condition
US20080301203A1 (en) Managing a snapshot stored within a file system space for efficient detecting of in-use blocks
US7526622B1 (en) Method and system for detecting and correcting data errors using checksums and replication
US7499929B2 (en) Computing device with relatively limited storage space and operating/file system thereof
US10712941B2 (en) Leveraging temporal locality to link files together and bypass accessing a central inode list
US8046561B1 (en) Methods and apparatus for selecting a storage zone for a content unit
US7281188B1 (en) Method and system for detecting and correcting data errors using data permutations
US7734889B1 (en) Methods and apparatus for distributing information to multiple nodes
US7533225B1 (en) Method and apparatus for enabling adaptive endianness
US7818536B1 (en) Methods and apparatus for storing content on a storage system comprising a plurality of zones
US7925827B2 (en) Method and system for dirty time logging

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110215

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110511

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110707

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110906

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110912

R150 Certificate of patent or registration of utility model

Ref document number: 4825433

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140916

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees