JPH07191892A - フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム - Google Patents
フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステムInfo
- Publication number
- JPH07191892A JPH07191892A JP1398093A JP1398093A JPH07191892A JP H07191892 A JPH07191892 A JP H07191892A JP 1398093 A JP1398093 A JP 1398093A JP 1398093 A JP1398093 A JP 1398093A JP H07191892 A JPH07191892 A JP H07191892A
- Authority
- JP
- Japan
- Prior art keywords
- block
- entry
- file
- data
- area
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operations
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Library & Information Science (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
なプログラマブル・リードオンリメモリに記憶されたフ
ァイルをマネージする方法及びシステムを提供する。 【構成】 ファイルをマネージするためのマネージャ
は、データを記憶するメモリ位置のブロックを選択する
ためのブロック割り当てルーチンを備えており、各ブロ
ックは、割り当てテーブルと、データエリアに分割され
たデータ領域とを有し、割り当てテーブルはデータエリ
アに対応するエントリを有している。更に、上記マネー
ジャは、上記選択されたブロックに対してデータ領域内
のデータエリアを選択し、それに対応するように割り当
てテーブルのエントリを選択し、そして選択されたデー
タエリア及び割り当てられた状態に対応するように上記
選択されたエントリをセットするためのデータエリア割
り当てルーチンを備えている。
Description
ネージするためのコンピュータシステムに係り、より詳
細には、フラッシュ消去可能なプログラマブル・リード
オンリメモリ(FEProm)に記憶されたファイルを
マネージするための方法及びシステムに係る。
性及び不揮発性の両方の記憶装置における情報の記憶を
サポートする。揮発性記憶装置と不揮発性記憶装置の相
違は、揮発性記憶装置から電源が切断されたときに情報
が失われることである。これに対して、不揮発性記憶装
置から電源が切断されたときには、情報が失われない。
従って、不揮発性記憶装置に情報を記憶した場合には、
たとえコンピュータシステムの電源が切られていても、
ユーザはあるときに情報を入力しそしてその後に情報を
検索することができる。又、ユーザは、不揮発性記憶装
置をコンピュータから切断しそしてその記憶装置を別の
コンピュータに接続して、その別のコンピュータが情報
をアクセスするようにすることができる。
般に、ファイルに編成される。ファイルとは、関連情報
を収集したものである。時間の経過と共に、コンピュー
タシステムは、記憶装置の容量にもよるが、記憶装置に
何百、何千のファイルを記憶することができる。情報を
記憶することに加えて、コンピュータシステムは、典型
的に、ファイルの情報を読み取ったり、修正したり、削
除したりすることができる。コンピュータシステムは、
記憶、読み取り、修正及び削除を効率的に行えるように
記憶装置にファイルを編成することが重要である。
ステムの一部分であるファイルシステムは、記憶装置上
のファイルを管理する助けをするために開発されたもの
である。1つのこのようなファイルシステムが、マイク
ロソフト・コーポレーションによりそのディスクオペレ
ーティングシステム(MS−DOS)として開発されて
いる。このファイルシステムは、ファイルを記憶するた
めにハイアラーキ解決策を使用している。図1は、記憶
装置のディレクトリ構造体を示している。これらのディ
レクトリはファイルの論理グループを含む。これらのデ
ィレクトリは、引出しの折り畳み器が引き出し内にペー
パを編成していくのと同様にファイルを編成する。DO
S、WORD、DAVID及びMARYと示されたブロ
ックは、ディレクトリを表しており、そしてAUTOE
XEC.BAT、COMMAND.COM、FORMA
T.EXE、LETTER2.DOC、LETTER.
DOCと示されたブロック及びLETTER1.DOC
と示された2つのファイルは、ファイルを表している。
このディレクトリ構造では、ユーザが関連ファイルをそ
れら自身のディレクトリに入れることによりファイルを
編成することができる。この例において、WORDとい
うディレクトリは、ワードプロセッシングプログラムW
ORDによって発生された全てのファイルを含む。この
ディレクトリWORDの中には2つのサブディレクトリ
DAVID及びMARYがあり、これらは、WORDフ
ァイルを、Davidにより開発されたもの及びMar
yにより開発されたものへと更に編成する上で助けとな
るものである。
装置の多数回書き込み機能の利点を取り入れている。多
数回書き込み機能は、記憶装置上のいかなる情報ビット
でも実質上無限の回数で1から0へそして0から1へ変
更することができる。この機能では、ファイルを記憶装
置に書き込みそしてファイルの幾つかのビットを変更す
ることによりファイルを選択的に修正することができ
る。
する従来の記憶装置の欠点は、その速度が内部のコンピ
ュータメモリの速度に比して遅いことである。これに対
し、そのコンピュータメモリに勝るこれら記憶装置の利
点は、不揮発性であること、コストが低いこと、容量が
大きいことである。
して知られている記憶装置は、内部コンピュータメモリ
の速度と、コンピュータディスクの不揮発性とが結合さ
れたものである。この装置はEProm型(消去可能な
プログラマブル・リードオンリメモリ)のデバイスであ
る。FEPromの内容は、典型的なEPromと同様
にデバイスに紫外線を照射するのではなく、入力にある
電圧を印加することによって消去することができる。消
去は、デバイス内の各ビットを同じ値にセットする。他
のEPromと同様に、FEPromは不揮発性メモリ
である。FEPromは、その速度がコンピュータの内
部メモリに匹敵する。最初と、消去後とに、FEPro
mの各ビットは1にセットされる。FEPromの特徴
は、他のEPromと同様に、ビット値1を0に変更で
きるが、ビット値0は1に変更できないというものであ
る。従って、データは、1から0へのビットの変更を行
うようにEPromに書き込むことができる。しかしな
がら、いったんビットが0に変更されると、1に変更し
直すことはできず、即ち全FEPromを全て1に消去
しない限り1に戻すことができない。実際には、FEP
romの各ビットは一度しか書き込むことができない
が、次々の消去の間に何回も読み取ることができる。更
に、FEPromの各ビットを消去して0にセットでき
るのは、ある限定された回数だけである。この限定され
た回数がFEPromの実効寿命を定める。
は、アクセスの形式と多数の他のファクタとによって異
なる。読み取りアクセス時間は数百ナノ秒の範囲であ
り、バイトを読み取る回数については制限がない。書き
込みアクセス時間は、典型的に数十マイクロ秒の範囲で
ある。書き込みアクセス時間は、バイトを消去した回数
と、デバイスの温度と、FEPromのバイト密度とに
よって左右される。バイトを書き込む回数に理論的な制
限はないが、消去の制限が実際上の書き込みの制限とな
る。FEPromの消去時間は数秒の範囲である。消去
時間は、FEPromを消去した回数、デバイスの温
度、及びFEPromのバイト密度とによって左右され
る。
ムは、記憶装置が多数回書き込み能力を有するものと仮
定していたので、これらのファイルシステムは、実際上
一回の書き込み能力しか持たないFEPromには不適
である。従って、FEPromをベースとする記憶装置
をサポートするファイルシステムをもつことが望まし
い。このようなファイルシステムは、コンピュータシス
テムの速度と、コンピュータディスクの不揮発性とを有
するものである。
装置は、バイトでアドレスできるのではなくブロックで
アドレスすることができる。バイトは、コンピュータの
内部メモリのアドレス能力の単位であり、即ちコンピュ
ータは一度に1バイト(典型的に8ビット)で書き込み
又は読み取りすることができるのであって、それ未満で
はできない。コンピュータがディスクに書き込んだりデ
ィスクから読み取ったりするときには、ブロックと称す
るバイトのグループで行わねばならない。ブロックのサ
イズは変えられるが、典型的には2の累乗である(12
8、256、512等)。例えば、ディスク上の1バイ
トだけを変更しようとする場合に、そのブロックサイズ
内の全バイト数の書き込みを行わねばならない。これに
は、ディスクからコンピュータメモリへブロック全体を
読み取り、1バイトを変更し(内部メモリはバイトでア
ドレス可能である)そしてそのブロック全体をディスク
に書き込むことが含まれる。
使用の部分を残す状態でデータを記憶する。このファイ
ルシステムは、一度に1つのファイルのみからのデータ
を所与のブロック内に記憶する。例えば、このファイル
システムは、1つのファイルからのデータをブロックの
最初の50バイトには記憶せず、そして別のファイルか
らのデータを128バイトブロックの最後の78バイト
には記憶しない。しかしながら、ファイルの長さがブロ
ックサイズの偶数倍でない場合には、ブロック端のスペ
ースが未使用となる。上記例において、ブロックの最後
の78バイトは未使用となる。ディスクが4096とい
った大きなブロックサイズを使用するときには、409
5バイトまでのデータが使用できないことになる。多数
回書き込み能力を有していて数百万バイトを記憶できる
ようなディスクドライブではこのような未使用スペース
が無視できる量であるが、多数回書き込み能力をもた
ず、しかも数百万バイトのデータを記憶する容量をもた
ない記憶装置では相当の量である。
て、ブロックアドレス式ではなくてバイトアドレス式で
ある。従って、FEPromのバイトアドレス能力をサ
ポートするファイルシステムをもつことが望まれる。
なフォーマットで編成することができる。ブロックで消
去可能なFEPromは、個々に消去できる多数のブロ
ック(典型的に16)を含んでいる。例えば、図6は、
0から15まで番号が付けられた16個のブロックを有
するブロック消去可能なFEProm301の概略図で
ある。ブロックの各々は、他のブロックの内容に影響を
及ぼすことなく個々に消去することができる。ブロック
番号14のブロック302は、他のブロックのデータに
影響を及ぼすことなく消去することができる。ブロック
消去可能なFEPromをサポートするファイルシステ
ムをもつことが所望される。
置、特に、ブロック消去可能で且つフラッシュ消去可能
なプログラマブル・リードオンリメモリにデータを記憶
する方法を提供することである。
FEPromにおいてメモリを割り当てたり割り当て解
除したりするコンピュータメモリマネージャを提供する
ことである。
FEPromにおいてブロックを消去した回数を追跡す
る方法を提供することである。
てを容易にするデータ構造体を備えたブロック消去可能
なFEPromを提供することである。
るためのブロックを割り当てる方法を提供することであ
る。
能なFEPromにおいて割り当て解除されたスペース
をリクレイミングする方法を提供することである。
能なFEPromのためのファイルシステムを提供する
ことである。
的は、以下の説明から明らかとなるように、ブロック消
去可能で且つフラッシュ消去可能なプログラマブル・リ
ードオンリメモリにおいてメモリをマネージするための
方法及びシステムを提供することにより達成される。こ
のシステムは、好ましい実施例において、ブロックヘッ
ダと、ブロック割り当てテーブルと、データ記憶エリア
と、データを記憶すべきブロックを選択するためのブロ
ック割り当てルーチンと、ブロック割り当てテーブルの
エントリ及びデータ記憶エリアの一部分を選択するため
のデータエリア割り当てルーチンと、データを記憶する
ための記憶ルーチンとを有したブロック消去可能なFE
Promを具備している。又、このシステムは、好まし
い実施例において、ブロック消去可能なFEPromの
ためのファイルシステムを実施するファイルマネージャ
を備えている。
ック消去可能なFEPromのメモリをマネージする方
法及びシステムを提供する。このシステムは、FEPr
omマネージャ及びファイルシステムとして説明する。
FEPromマネージャは、FEPromのメモリの割
り当てと割り当て解除とを管理する。ファイルシステム
は、ハイアラーキ式のディレクトリシステムであり、F
EPromマネージャを用いてメモリの割り当て及び割
り当て解除を行う。或いは又、FEPromマネージャ
及びファイルシステムは、ある最適化を達成するように
一体化することができる。しかしながら、個別のFEP
romマネージャを使用することによりFEPromは
異なるファイルシステムからのデータや非ファイルシス
テムデータも記憶することができる。
ク消去可能なFEPromにおいて自由スペースの割り
当て、割り当てられたスペースの割り当て解除、及び割
り当て解除されたスペースのリクレイミングを行う。図
26に示す好ましい実施例では、FEPromの各ブロ
ックが、ブロック割り当て構造体2302と、データ領
域2303と、自由スペース2304とを含んでいる。
ブロック割り当て構造体2302は、ヘッダ及び割り当
てアレイを含んでいる。ヘッダは、ブロックの状態情報
を含む固定長さの構造体である。割り当てアレイは可変
長さであり、割り当てアレイのエントリはデータ領域を
記述する。テーブルAは、ブロック割り当て構造体のデ
ータ構造を示している。この構造体は、構造体変数の記
述と共にCプログラミング言語フォーマットで示されて
いる。アレイのAllocは、割り当てアレイであり、
他の変数がヘッダを構成する。データ領域は、FEPr
omに記憶されたデータを保持する可変長さの領域であ
る。自由スペース2304は、ブロック割り当て構造体
又はデータ領域に割り当てられないスペースである。ブ
ロック割り当て構造体2302及びデータ領域2303
はブロックの両端に割り当てられる。領域が追加される
ときには、ブロック割り当て構造体2302及びデータ
領域が矢印2305及び2306によって示されたよう
に互いに向かって成長する。ブロック割り当て構造体の
Allocエントリは、ブロックの対応領域に対するオ
フセット2310−2315を含んでいる。好ましい実
施例においては、ブロック割り当て構造体が、その領域
に記憶されたデータに対して特定のデータを含んでい
る。
ントリを追加し、自由スペース内の第1位置を指すよう
に可変オフセットをセットし、変数Lenを領域の長さ
にセットし、そして割り当てられたことを指示するよう
に変数Statusをセットすることによりブロック内
のデータ領域を割り当てる。FEPromマネージャ
は、対応するAllocエントリにおける変数Stat
usを割り当て解除された状態にセットすることにより
領域の割り当て解除を行う。割り当て解除されたスペー
スは一般に再割り当てには使用できない。というのは、
非FNULL値にセットされているからである。割り当
て解除されたスペースは、再割り当てされる前にFNU
LLにセットされる。割り当て解除されたスペースをF
NULLにセットしそして割り当てに使用できるように
するプロセスは、ブロックリクレイミングである。割り
当て解除されたスペースは、割り当てられた領域を第2
のブロックにコピーしそして第2のブロックのAllo
cエントリを新たなオフセットを指すようにセットする
ことによりリクレイミングされる。ブロックのリクレイ
ミングプロセスは、第2ブロックのAllocエントリ
がブロックヘッダに対しコピー元ブロックにあったのと
同じ位置になるように確保する。FEPromマネージ
ャは、論理ブロックシーケンス番号であるヘッダの変数
BlockSeqを使用して、データの特定の論理ブロ
ックを識別する。リクレイミング中に、ブロックがコピ
ーされるときには、物理的なブロック番号が変化する
が、論理的なブロックシーケンス番号は変化しない。
トアドレスではなくて割り当てられた領域に対するハン
ドルを与える。このハンドルは、2つの部分、即ち
(1)物理的なブロックを間接的に参照する論理ブロッ
クシーケンス番号と、(2)物理的なブロック内の領域
を間接的に参照するAllocエントリに対するインデ
ックスとを含んでいる。ハンドルは、論理的なブロック
シーケンス番号に対応する物理的なブロックを決定しそ
してハンドルのインデックス部分によって指示されたA
llocエントリの変数Offsetをアクセスしてそ
の変数Offsetを物理的なブロックのスタートアド
レスに加えることにより参照解除される。この参照解除
により領域のアドレスが形成される。ハンドルを使用す
ると、FEPromマネージャは、存在するかもしれな
いデータ領域へのリンクを調整せずにブロックをリクレ
イミングすることができる。更新しなければならないも
のは、メモリ内にあって論理ブロックシーケンス番号を
物理的なブロックに対してマップする変換キャッシュ
(以下で説明する)と、Allocアレイのオフセット
だけである。ハンドルが参照解除されるときには、新た
なオフセットを用いて正しいアドレスが形成される。図
29は、9の論理ブロックシーケンス番号2502と、
3のAllocインデックス2503とを有するハンド
ル2501の参照解除を示している。ブロック変換キャ
ッシュ2504は、論理的なブロック番号を物理的なブ
ロック番号に対してマップする。FEPromマネージ
ャはキャッシュを維持する。ある物理的なブロックがブ
ロックのリクレイミング中に別の物理的なブロックへ移
動されるときには、FEPromマネージャは、論理ブ
ロックシーケンス番号を新たな物理的ブロックにマップ
するように変換キャッシュを調整する。図29の例にお
いては、論理ブロックシーケンス番号9が物理的ブロッ
ク14 2505へとマップされる。物理的なブロック
番号14に対するAllocアレイは、ハンドル250
1のAllocインデックス2503によって指示され
る。Alloc〔3〕エントリの変数Offsetは、
物理的なブロック番号14 2505に領域3 250
6のオフセットを含んでいる。領域3 2506のアド
レスは、物理的なブロック2505のアドレスにオフセ
ットを追加することによって決定される。
当てる領域割り当てルーチンの流れ線図である。このル
ーチンに対する入力パラメータは、その領域に記憶すべ
きデータと、データの長さである。このルーチンは、割
り当てられた領域にハンドルを返送する。或いは又、こ
のルーチンはデータを書き込まず、単にスペースを割り
当てる。このルーチンは、ブロックが領域に対して充分
な自由スペースと、追加のAllocエントリとを有す
ると仮定する。図35は、Allocエントリのステー
タスに対する状態図である。Allocエントリは、次
のステータスのうちの1つである。即ち、未使用、割り
当てられた状態、割り当て解除された状態、取って代わ
られた状態、自由、又はゼロである。又、エントリは、
割り当てが処理中である間は移行状態にある。エントリ
が未使用である場合には、Allocアレイの最後のエ
ントリを通過しており、即ちアレイの一部分ではない。
エントリが割り当てられた場合には、それに対応する領
域が現在割り当てられる。エントリが割り当て解除され
る場合には、それに対応する領域が不要であるが、その
領域はまだリクレイミングされていない。エントリが取
って代わられる場合には、別のAllocエントリ(単
数又は複数)がその同じデータ領域に対応する。リクレ
イミング中、取って代わられたエントリにあるデータは
無視される。というのは、別のエントリ(単数又は複
数)がデータ領域を指すからである。エントリが自由の
場合には、それに対応する領域がリクレイミングされて
おり、新たな領域がブロックに追加されたときにAll
ocエントリを再使用することが出来る。エントリがゼ
ロの場合には、エントリへの書き込み中に問題が生じて
おり、消去されるまで使用されない。エントリが割り当
てにおいてプロセス移行状態にある場合には、エントリ
におけるデータの若干は有効であるが必ずしも全部では
ない。
初は未使用状態3101にあり、ブロックが消去された
ときに未使用状態3101へ移行する。エントリは、未
使用状態3101から割り当て進行状態3104を経て
割り当て状態3103へ移行する。自由状態3102に
あるエントリは割り当て状態3103へ移行する。未使
用状態3101にあるエントリは、そのエントリが割り
当て解除されるか又は取って代わられて、リクレイミン
グされるべきブロック内の最後に割り当てられたエント
リの後に探索されないときに、ブロックリクレイミング
によって自由状態3102へ移行する。割り当てられた
状態3103にあるエントリは、対応する領域が割り当
て解除されたときに割り当て解除状態3105に移行す
る。割り当てられた状態3105にあるエントリは、同
じ領域に対応する別の1つ又は複数のエントリが割り当
てられたときに、取って代わられた状態3106へ移行
する。最後に、いかなる状態にあるエントリも、そのエ
ントリに対する書き込みエラーの際にはゼロ状態310
7へ移行する。
おいて、システムはAllocエントリが自由の状態に
あるかどうかを判断する。このようなエントリが見つか
った場合には、システムはそのエントリを再使用し、ブ
ロック2902へ続くが、さもなくば、ブロック290
3へ続く。ブロック2902において、システムは自由
のAllocエントリを選択し、ブロック2905へ続
く。ブロック2903において、システムは新たなAl
locエントリを選択し、ブロック2904へ続く。新
たなAllocエントリは、最終とマークされたエント
リの直後のエントリである。ブロック2904におい
て、システムは、選択されたAllocエントリに対し
て変数Statusをセットし、割り当てが進行中であ
ることを指示する。割り当て進行中状態は、データが一
貫した状態にないかもしれないことを指示する移行状態
である。ブロック2905において、システムは変数O
ffset及びLenをセットし、自由スペースの第1
位置から始まってデータ領域にデータを書き込む。ブロ
ック2906において、Allocエントリが新規であ
った場合には、システムはブロック2907へ続くが、
さもなくば、システムはブロック2908へ続く。ブロ
ック2907において、システムは手前の最終Allo
cエントリのステータスをリセットし、もはやAllo
c構造体の最終エントリでないことを指示する。ブロッ
ク2908において、システムは、選択されたAllo
cエントリに対する変数Statusを割り当てられた
状態にセットし、データが今や一貫した状態にあること
を指示する。次いで、システムは割り当てを終了する。
の性能は、消去カウントが増加するにつれて低下する。
各ブロックの消去カウントをほぼ等しく(均等化したと
称する)維持することが好ましい。通常の動作において
は、消去カウントが均等化されない。例えば、実行可能
なファイルがブロックに書き込まれた場合には、そのブ
ロックを消去する必要は決して生じない。従って、その
ブロックの消去カウントは、他のブロックの消去カウン
トが増加しても一定のままである。好ましい実施例では
ブロックの消去カウントを均等化するために多数の解決
策を使用する。まず、ブートアップ中又はFEProm
がロードされるときに(初期化)、FEPromマネー
ジャはブロックを走査して、FEPromをマネージす
るデータを得る。好ましい実施例では、このデータが各
ブロックの消去カウントを含んでいる。消去カウントの
均等化を助けるために、FEPromマネージャは、消
去カウントの大きいブロックのデータと、消去カウント
の低いブロックのデータをスワッピングする。このスワ
ッピングは時間がかかるので、初期化中に生じるスワッ
ピングの回数を最小にすることが望ましい。更に、スワ
ッピングは、消去カウントの差がスレッシュホールド値
又は比を越えたときだけ実行すればよい。第2に、FE
Promマネージャがブロックに対してリクレイミング
を実行するときには、消去カウントの小さい使用可能な
ブロックを選択するのが好ましい。第3に、FEPro
mマネージャが領域を割り当てるときには、消去カウン
トの低いブロックの領域を割り当てる。第4に、FEP
romマネージャはブロックの消去回数を追跡する。消
去の回数がスレッシュホールド値を越えた場合には、F
EPromマネージャは、2つのブロックに対する消去
カウントの差がスレッシュホールド値又は比を越えたか
どうかを決定する。そのスレッシュホールド値を越えた
場合には、マネージャはそれらブロックのデータをスワ
ッピングする。
ロックのヘッダに消去カウントを維持するのが好まし
い。ブロックが消去されたときには、FEPromマネ
ージャは、増加された消去カウントをブロックヘッダに
書き込んで戻す。ブロックがコピーされたときには、消
去カウントが転送されない。各ブロックはそれ自身の消
去カウントを保持する。或いは又、消去カウントは単一
のブロックに記憶することができる。しかしながら、こ
の別の方法は、好ましい方法以上に幾つかの欠点があ
る。第1に、単一のブロックに欠陥が生じると、全ての
消去カウントが失われる。第2に、ブロックが消去され
ると、消去カウントブロックを更新しなければならな
い。最終的に、消去カウントブロックは消去され、再書
き込みされねばならない。
mのどのブロックを使用して領域を割り当てるかを選択
するブロック割り当てルーチンの流れ線図である。FE
Promマネージャは、多数のファクタに基づいてどの
ブロックを割り当てるかを決定する。まず、FEPro
mマネージャは、消去カウントが最も低い充分な自由ス
ペースを有するブロックを割り当てる。消去カウントの
低いブロックを割り当てることは、ブロックの均等化を
確保する上で助けとなる。第2に、FEPromマネー
ジャは、充分な自由スペースをもつブロックがない場合
には多数のブロックを割り当てる。データは、異なるブ
ロックに各々記憶された多数の領域に分割される。第3
に、FEPromマネージャは、あまりに多数の部分が
生じるときには割り当てを許さない。このルーチンに対
する入力パラメータは、割り当てられるべき領域の長さ
と、領域を多数のブロックに記憶できるかどうかであ
る。ブロック2801において、システムは、データを
記憶するに充分な自由スペースを有する全てのブロック
を選択する。好ましい実施例において、システムは、自
由スペースの開始位置とAllocエントリの数とに基
づいて自由スペースの長さを決定する。このデータは、
初期化中及び必要に応じて更新される間にFEProm
マネージャバッファに記憶されるのが好ましい。又、シ
ステムは、もし必要ならば、新たなAllocエントリ
を追加するに充分なスペースが存在するよう確保する。
1つの実施例において、システムは、ブロックが充分な
自由スペースを有しているかどうかを決定する前に、リ
クレイミング基準に合致するブロックに対してブロック
リクレイミングを実行する。別の実施例においては、充
分な自由スペースがないと決定されるまでリクレイミン
グは行われない。ブロック2802においては、少なく
とも1つのブロックが選択された場合に、領域を保持す
るに充分な自由スペースが単一ブロックにあり、システ
ムはブロック2803に続き、さもなくば、システムは
ブロック2804に続く。ブロック2803において、
システムは、選択されたブロックのどれが最も低い消去
カウントを有するかを決定し、そのブロックを割り当て
ると共に、システムはブロックの割り当てを終了する。
ブロック2804においては、システムは、領域データ
を保持するに充分な自由スペースを有する1組のブロッ
クを選択する。ブロック2805においては、全自由ス
ペースと割り当て解除されたスペースがデータを保持す
るに充分でないか或いはあまりに多数の部分がある場合
に、システムはブロック2807へ続き、さもなくば、
システムはブロック2806へ続く。領域データを単一
ブロックに記憶しなければならない場合には、2つのブ
ロックを選択すると、部分が多数になり過ぎる。又、デ
ータを多数のブロックに記憶すべき場合には、リクレイ
ミングが適当である。ブロック2806において、シス
テムは選択されたブロックを割り当て、ブロックの割り
当てが終了する。ブロック2807において、全てのブ
ロックがリクレイミングされた場合には、FEProm
にはデータを記憶するに充分な余裕がなく、ブロックの
割り当てが終了するか、さもなくば、システムはブロッ
ク2808へ続く。ブロック2808において、システ
ムはブロックをリクレイミングし、ブロック2801へ
進んで、新たな充分な自由スペースがあるかどうかを決
定する。
た領域をリクレイミングするブロックリクレイミングル
ーチンの流れ線図である。入力パラメータは、リクレイ
ミングされるべきブロックの数と、スペアブロックの物
理的な番号とである。ブロックは、多数の種々の時間に
リクレイミングされる。第1に、割り当て要求を満たす
充分な自由スペースがないときには、ブロックがリクレ
イミングされる(上記したように)。第2に、FEPr
omマネージャは、FEPromへの書き込みアクセス
の回数を追跡することができる。書き込み回数がスレッ
シュホールド数を越えた場合には、マネージャがいずれ
かのブロックをリクレイミングすべきかどうかを決定す
る。割り当て解除されたスペースとブロックサイズとの
比がスレッシュホールド値を越えたときにはブロックを
リクレイミングしなければならない。当業者に明らかな
ように、例えば、FEPromが最初にロードされると
きのような別の時間にブロックリクレイミングを行うこ
ともできる。FEPromマネージャは、割り当てられ
た領域をスペアブロック、即ち消去されたブロックへコ
ピーすることによりブロックをリクレイミングする。割
り当てられた領域のみをコピーすることにより、割り当
て解除された領域がリクレイミングされる。或いは又、
FEPromマネージャは、割り当てられた領域を非F
EPromメモリへコピーし、次いで、ブロックを消去
し、そして領域をブロックへコピーして戻す。しかしな
がら、この方法は、割り当てられた領域を記憶するに充
分な非FEPromメモリを必要とし、消去の後であっ
て且つブロックが再書き込みされる前に停電が生じたと
すれば、データを失うおそれがある。好ましい方法にお
いては、FEPromマネージャは、リクレイミングさ
れるべきブロック内の割り当てられた領域をスペアブロ
ックへコピーすると共に、そのスペアブロック内の新た
な領域位置を表す変数Offsetを調整するブロック
割り当て構造体をコピーする。図27は、領域1及び5
をリクレイミングした後の図26のブロックレイアウト
の例を示している。割り当てられた領域は隣接するよう
にコピーされている。対応するAllocエントリは、
新たな領域位置を指すように更新される。たとえ領域1
がリクレイミングされていてもAlloc〔1〕エント
リは依然として必要とされる。ハンドルを使用するため
に、全てのAllocエントリはブロック割り当て構造
体においてそれらの同じ位置を維持しなければならな
い。しかしながら、Alloc〔1〕エントリに対する
変数Statusは自由状態にセットされ、これを用い
て、リクレイミングされたブロックに追加される次の位
置を指すことができる。Alloc〔5〕エントリの後
にはAlloc入力はないので、ハンドルに対するプレ
ースホルダーとして必要とされず、除去されている。A
lloc〔4〕エントリの位置状態は、それがAllo
cアレイにおける最終エントリであることを指示する。
る。ブロックの状態は変数Statusのヘッダに記憶
される。ブロックの状態は、消去3201、更新進行中
3202、スペア3203、リクレイミング進行中32
04、レディ3205、消去のための待ち行列320
6、及びリタイア3207である。新たに消去されたブ
ロックは消去状態3201である。消去されたブロック
は、通常、更新進行状態3202へ移行され、次いで、
スペア状態3203へ移行される。更新進行状態320
2は、ヘッダ内のあるデータ、例えば消去カウントが更
新されていることを指示する。この更新が完了すると、
ブロックはスペアの状態3203へ移行する。更新が失
敗すると、ブロックは消去のための待ち行列状態320
6へ移行する。スペア状態3203のブロックは、その
ブロックがリクレイミングされているブロックからデー
タを受け取るべきときに、リクレイミング進行状態32
04へ移行する。リクレイミング進行状態3204は、
ブロック割り当て構造体が一貫した状態にないことを指
示する移行状態である。データが一貫したものになる
と、ブロックはレディ状態3205へ移行する。しかし
ながら、リクレイミング進行状態3205の間にエラー
が生じた場合には、そのブロックに対してリクレイミン
グが行われた後に、ブロックが消去待ち行列状態320
6へ移行する。消去待ち行列状態3206にあるブロッ
クは、消去されたときに消去状態3201へ移行する。
消去が失敗すると、ブロックはリタイア状態3207へ
移行する。それからブロックはリタイア状態に留まる。
FEPromが最初に初期化されるときには、ブロック
がレディ状態又はスペア状態にセットされる。レディ状
態にあるブロックはデータを含むことができ、スペア状
態にあるブロックはデータを含まない。
おいて、システムは、リクレイミングされるべきスペア
ブロックに対する変数Statusを、リクレイミング
進行中を指示するようにセットする。ブロック3002
において、システムは、リクレイミングされるべきブロ
ックのヘッダから変数Seq、SeqCheckSu
m、及びBootRecordPtrをスペアブロック
へコピーする。ブロック3003において、システム
は、リクレイミングされるべきブロックに対して割り当
て状態にある最終Allocエントリの位置を決定す
る。リクレイミングプロセス中に、Allocエントリ
は、最後に割り当てられたエントリの後に無視される。
従って、リクレイミングされたブロックは、これらエン
トリの状態を未使用にセットする。ブロック3004な
いし3010において、システムは、最後に割り当てら
れたエントリまでの各Allocエントリをスペアブロ
ックにコピーする。ブロック3004において、システ
ムは、Allocエントリを指示するインデックスjを
初期化する。ブロック3005において、このインデッ
クスjがブロック3003で決定された最後に割り当て
られたエントリのインデックスより大きい場合には、全
てのAllocエントリとそれに対応する領域がコピー
されており、システムはブロック3011へ続き、さも
なくば、システムはブロック3006へ続く。ブロック
3006において、エントリの状態が割り当てられた状
態である場合には、システムはブロック3007へ続
き、さもなくばブロック3009へ続く。ブロック30
07において、システムは、Alloc〔j〕エントリ
に対応する領域データをスペアブロックへコピーする。
ブロック3008において、システムは、スペアブロッ
クのAlloc〔j〕入力における変数Offsetを
更新し、コピーされた領域の位置を指示するようにする
と共に、変数Status(位置の状態を適当にセット
する)及びLenをコピーし、ブロック3010に続
く。ブロック3009では、システムは、スペアブロッ
クのAlloc〔j〕エントリの状態を更新し、そのエ
ントリが自由状態であることを指示するようにする。ブ
ロック3010では、システムはインデックスjを増加
して、次のAllocエントリを指示し、ブロック30
05へとループする。ブロック3011においては、シ
ステムはスペアブロックの状態をレディにセットする。
ブロック3012では、システムは、リクレイミングさ
れるべきブロックの状態を消去のための待ち行列にセッ
トする。ブロック3011についての処理が完了した後
であって且つブロック3012についての処理が完了す
る前に、スペアブロックと、リクレイミングされるべき
ブロックの両方は有効データを有している。ブロック3
012についての処理が完了する前に処理が中断した場
合には、FEPromは、同じ論理シーケンス番号を有
する2つのブロックを含む。システムは、好ましくは、
FEPromの初期化中にこの状態をチェックする。こ
のときに、システムはブロック3012の処理を完了す
ることができる。ブロック3013では、システムは、
スペアブロック(以下で述べる)の状態を表すように変
数PhysicalBlockNum、FirstFr
eeByteOffset、LenDeallocat
eSpace及びAllocStructCnt in
BlockData〔Seq〕を更新する。ブロック
3014では、システムは、スペアブロックのリストを
調整するようにDriveRecを更新し、リクレイミ
ングが終了となる(以下で述べる)。
クの数 BlockSize ブロック内のバイトの
数 RootDirPtr FEPromをファイル記憶
装置として使用した時のルートディレクトリを含むデー
タ領域へのハンドル SpareBlockPtr 〔 〕 予備ブロックの物理ブ
ロックの数を含む可変長アレイ SpareBlockCnt 予備ブロックの数 WriteAccessCntThreshold ブロックを再利用すべ
きか否かをシステムに決定させる FEProm への書込みの
数 EraseCntThreshold ブロックレベル化を行
うべきか否かをシステムに決定させる FEProm への消去
の数 BlockReclamationThreshold ブロック再利用をトリ
ガする割当て解除スペースとブロックサイズとの比 BlockEraseLevelingThreshold ブロック間のレベル化
プロセスをトリガする最小及び最大消去数間の差 PhysicalBlockNum 論理的ブロックを含む
物理ブロックの数 FirstFreeByteOffset 空きスペースの最初の
バイトの物理ブロック内のオフセット LenDeallocatedSpace 物理ブロック内の割当
て解除済領域の合計の長さ FirstUseableAllocEntry ブロック内の最初の使
用可能な Allocエントリ索引 FreeAllocEntryCnt Alloc エントリの数 BlockEraseCnt 物理ブロックが消去さ
れた回数 FEPromが最初にロードされる時、FEProm管理者は FEPro
m を走査して表Bに示す内部データを初期化する。構造
DriveRec は装置に関するデータを含み、構造ConfigRe
c は構成パラメタに関するデータを含み、アレイ Block
Dataは FEProm内の各物理ブロック毎のデータを有する
エントリを含む。アレイ BlockDataはブロック変換キャ
ッシュである。初期化中、 FEProm 管理者はアレイ Blo
ckData内の各変数及び構造 DriveRec 内の予備ブロック
に関する変数を初期化する。構造DriveRec内の他の変数
はシステム定義された変数である。好ましい実施例で
は、FEProm管理者は、これらのデータ構造内の領域デー
タの型に特定の情報を記憶している。例えばもし FEPro
m がファイル記憶装置として使用されていれば、データ
構造はルートディレクトリへのハンドルを含むことがで
きる。図31は、好ましい実施例における初期化プロセ
スの流れ図である。この手順は、 FEProm 上の各ブロッ
ク毎にブロック割当て構造を走査することによって Dri
veRec 及び BlockData構造を初期化する。システムはブ
ロック2701乃至2709をループして各ブロック毎
のデータを読む。ブロック2701ではシステムは、現
在アクセスされている物理ブロックを指示する索引iを
初期化する。ブロック2702において、もし索引iが
FEProm 内のブロックの数より大きければ、全てのブロ
ックは走査されたのでありシステムはブロック2710
へ進み、そうでない場合にはシステムはブロック270
3へ進む。ブロック2703では、システムは索引iに
よって指示されたブロックの見出しを読む。ブロック2
704では、システムは DriveRec 及び BlockData
〔i〕データを更新する。もしそのブロックが予備ブロ
ックであれば、システムは SpareBlockCntをインクリメ
ントさせ、そのブロックを SpareBlockPtrアレイに追加
する。好ましい実施例では、システムはこれらの領域内
に記憶されているデータに特定の情報をも走査する。例
えばもし FEProm をファイルシステムとして使用してい
て、そのブロックがブートレコードを含んでいれば、シ
ステムは BootRecPtr をセットし、ブートレコードを読
み、そして RootDirPtr をセットする。
をループして各 Allocエントリ内のデータを処理する。
ブロック2705では、 Allocエントリを指示する指標
jを初期化する。ブロック2706において、もしシス
テムが最後のAlloc エントリを処理済であればシステム
はブロック2709へ進み、そうでなければシステムは
ブロック2707へ進む。ブロック2707では、シス
テムはjによって指示された Allocエントリに基づいて
BlockData〔 BlockSeq 〕データを更新する。システム
は変数 FirstFreeByteOffset、LenDeallocatedSpace 、
及び AllocaStructCntを更新する。システムは、変換キ
ャッシュを初期化する索引iに変数 PhysicalBlockNum
をセットする。ブロック2708では、システムは索引
jをインクリメントさせて次の Allocエントリを指示さ
せ、ブロック2706へループする。ブロック2710
では、システムはブロック使用をレベル化する。システ
ムは BlockDataアレイを走査して最大 BlockEraseCntを
有するブロック及び最小 BlockEraseCntを有するブロッ
クを決定する。次いでシステムはブロック間でデータを
スワップ(交換)する。システムは先ず最大ブロックを
予備ブロックへ複写する。次にシステムは最大ブロック
を消去する。システムは最小ブロックからのデータを消
去されたブロックへ複写し、そして好ましくは複写しな
がらブロック再利用を遂行する。システムは最小ブロッ
クを消去し、予備ブロックからのデータを最小ブロック
へ複写し、そして好ましくは複写中にブロック再利用を
遂行する。
ていない、または消去することができない媒体を支援す
ることができる。ブロック再利用及びブロック消去カウ
ントレベル化プロセスはブロック消去可能性に頼ってい
る。従ってもし媒体がブロック消去可能性を支援しなけ
れば、これらのプロセスを不能にすべきである。好まし
い実施例では、予備ブロックカウントを0にセットする
ことによってこれらのプロセスを実効的に不能にするこ
とができる。 FEProm 管理者ははこれらのプロセスを作
動させるために少なくとも1つの予備ブロックに頼って
いる。もし媒体がブロック化されていなければ、任意の
ブロックサイズを論理的ブロックとして選択することが
できる。好ましい実施例ではブロックのサイズは、割当
てアレイエントリ内のオフセットが全ブロックをアドレ
スできない程大きくすべきではなく、またブロック見出
し及び割当てアレイがブロックサイズのかなりなパーセ
ントを占めたり、または変換キャッシュが大き過ぎる程
は小さくすべきでない。
去エラーからの動的な回復を可能にする。書込みエラー
は、メモリ位置を指定された値にセットできない場合に
生成される。これらのエラーは、ハードウエアの障害に
よって、または既に0に変化しているあるビット内に1
を要求するというように、あるメモリ位置にある値を書
込もうと試みることによってもたらされる。
し、及び割当てアレイエントリへ書込む時に発生し得
る。好ましい実施例では、データ領域へ書込み中に書込
みエラーが発生すると、 FEProm 管理者はそのブロック
を割当て解除された状態にセットする。次いで FEProm
管理者は、図33に示す領域割当てプロセスを再始動さ
せることによって、データを異なるデータ領域へ書込む
ことを試みる。
エラーが発生すると、 FEProm 管理者はその割当てアレ
イエントリを空白(ヌル)状態にセットする。あるエン
トリを置換された( superseded )状態、割当て解除され
た状態、解放された(フリー)状態、または割当て進行
中状態にセットしている時に、もし書込みエラーが発生
すると、そのエントリを空白状態にセットすることによ
って FEProm は一貫した( consistent )状態に保たれ
る。しかしながら、もしあるエントリを割当て済状態に
セットしている時にエラーが発生すると、データ領域は
割当て済状態の対応割当てアレイエントリを有していな
いのであるから、 FEProm は非一貫状態になる。 FEPro
m 管理者はそのデータ領域に対して別のエントリを割当
てる。あるエントリを空白状態にセットしている時にも
エラーは発生し得る。空白状態は、0の値のステータス
として定義されているから、あるエントリを空白状態に
セットしている時に発生するエラーは必然的にハードウ
エアエラーである。もしエラーが発生すれば、対応する
領域を再利用しなければならないことを指定する再利用
を必要とするかも知れない。例えば、もしあるエントリ
を割当て解除状態にセット中に、及び再びそのエントリ
を空白状態にセット中にエラーが発生すれば、そのエン
トリは割当て済状態になる。もしこの状態のままであれ
ば、このエントリ及び対応データ領域は正常の再利用の
下では決して再利用されなくなる。
すると、 FEProm 管理者はそのブロックを消去待ち行列
状態にセットする。もしあるブロックを消去待ち行列状
態にセット中にエラーが発生すれば、 FEProm 管理者は
そのブロックを引退( retired)状態にセットするので、
そのエラーを回復することはできなくなる。あるブロッ
クを消去中に書込みエラーが発生すると、 FEProm 管理
者はそのブロックを引退状態にセットする。もし引退さ
せたブロックが予備ブロックであったならば、 FEProm
管理者は少なくなった予備ブロックで動作する。代替と
してFEProm管理者は割当て済の割当てアレイエントリを
用いずにブロックを探知することを試みる。次いで FEP
rom 管理者は探知したブロックを消去し、それを予備状
態にセットする。予備ブロックが使用できない場合には
FEProm 管理者は FEProm を、あたかもそれが前述した
消去不能であるかのように取扱う。
合の動的エラー回復をも提供する。図33を参照する。
例えば、もしブロック2905においてオフセットが書
込まれた後に、しかしブロック2908において状態が
解放状態から割当て済状態へ更新される前に FEProm が
除去されれば、 FEProm は非一貫状態になる。FEPromに
次にロードする時に、 FEProm 管理者は割当てエントリ
が解放されていることを見て、それを再使用しようとす
る。しかしながら、オフセットへ書込もうとする試みは
失敗する(同一データがオフセットへ書込まれている場
合を除く)。上述したように、 FEProm 管理者はエント
リを空白状態にセットすることによって回復し、領域割
当てプロセスを再始動させて異なるエントリを選択す
る。もしFEPromが取外される前にデータの一部分がデー
タ領域へ書こまれれば、 FEProm 管理者がデータをその
領域へ書込もうとする時にエラーが検出される。このエ
ラーは上述したようにして処理される。ファイルシステム 本発明は、 FEProm 装置に対してディレクトリをベース
とする階層ファイルシステムを提供する。階層ファイル
システムは論理的グルーピング内にファイルを記憶させ
る。好ましい実施例は、ディレクトリ階層及び内部ファ
イル記憶の両者を実現するためにリンクされたリストデ
ータ構造を使用する。
す。ワシントン州レッドモンドのマイクロソフト社から
入手できる MS-DOS オペレーティングシステムが、階層
ディレクトリ構造を有するファイルシステムを実現す
る。図1に示すように、ディレクトリ「ルート」100
は、2つのサブディレクトリ(「 DOS」102及び「ワ
ード」103)と、2つのファイル(「 AUTOEXEC.BAT
」104及び「 COMMAND.COM」105)とを含む。デ
ィレクトリ「 DOS」102は1つのファイル(「 FORMA
T.EXE 」106)を含む。ディレクトリ「ワード」10
3は次に低いレベルに2つのサブディレクトリ(「デー
ビッド(DAVID) 」107及び「メリー(MARY) 」10
8)を含む。ディレクトリ「デービッド」107は1つ
のファイル「 LETTER1.DOC」109を含む。ディレクト
リ「メリー」108は3つのファイル「LETTER1.DOC 」
110、「LETTER2.DOC 」111及び「LETTER3.DOC 」
112を含む。
ィレクトリ構造を実現する考え得るリンクされたリスト
を示す。ディレクトリ「ルート」レコード100(本明
細書においては「レコード」及び「エントリ」という語
を互換可能なように使用する)はポインタ120を有
し、このポインタ120は次に低いレベルのサブディレ
クトリのリンクされたリスト140及びファイルレコー
ドを指し示す。リンクされたリスト140は、ポインタ
121、122、123によってリンクされたサブディ
レクトリレコード DOS102及び「ワード」103と、
ファイルレコード「 AUTOEXEC.BAT 」104及び「 COM
MAND.COM」105とからなる。サブディレクトリレコー
ド「 DOS」102は次に低いレベルのファイルレコード
106を指し示すポインタ124を有し、サブディレク
トリレコード「ワード」103は次に低いレベルのファ
イルレコードのリンクされたリスト141を指し示すポ
インタ125を有している。リンクされたリスト141
は、ポインタ126によってリンクされているディレク
トリレコード「デービッド」107及び「メリー」10
8からなる。サブディレクトリレコード「デービッド」
107は次に低いレベルのファイルを指し示すポインタ
127を有し、サブディレクトリレコード「メリー」1
08は次に低いレベルのファイルレコードのリンクされ
たリスト142を指し示すポインタ128を有してい
る。リンクされたリスト142は、ポインタ129及び
130によってリンクされているファイルレコード「 L
ETTER1.DOC」110、「LETTER2.DOC 」111及び「LE
TTER3.DOC 」112からなる。右上のテンプレート10
は図面を通して使用されるレコードレイアウトを示す。
好ましい実施例では図2に示すレコードは、以下に説明
するように DirEntry 及び FileEntry構造である。
ンクされたリスト配列を表すに過ぎない。この配列は、
もしファイルが追加されたが次いで削除されたか、また
はディレクトリ名が変更されていれば異なる配列にな
る。図3は別の考え得る配列を示す。図3は、図1と同
一のディレクトリ階層を表しているが、一時期存在した
ディレクトリ「ビル(BILL)」113は削除されてい
る。 FEProm 装置は一回限り書込み可能である(消去さ
れた場合を除く)から、本発明の好ましい実施例では図
3に示すように、ディレクトリレコード「ビル」113
をリンクされたリストから物理的に除去しない。ディレ
クトリまたはファイルは、ディレクトリまたはファイル
エントリのステータスをセットすることによってリンク
されたリストから削除される。もしディレクトリまたは
ファイルがコンピュータディスク上に記憶されていたの
であれば、ディレクトリレコード「ビル」113は、デ
ィレクトリレコード「メリー」108を指し示している
ポインタ131をディレクトリレコード「デービッド」
107内に再書込みすることによって物理的に除去する
ことができる。
る範囲( extent )をリンクするためにもリンクされたリ
ストデータ構造を使用する。各ファイルはそれに対応付
けられたファイルレコードを有し、このファイルレコー
ドは他のデータと共にファイル名を含み、また上述した
ようにディレクトリ階層内にリンクされている。ある範
囲は、そのファイルに関するデータを含むメモリの連続
域である。各ファイルは、ファイルデータを含む1また
はそれ以上の範囲である。各範囲はそれに対応付けられ
た範囲レコードを有している。範囲レコードは、他のデ
ータと共にその範囲を指し示すポインタと範囲の長さと
を含む。図4はファイル“\A \D.DAT”202の範囲
を示す。範囲レコードR1 203、R2 204及び
R3 205はリンクされ、対応範囲E1 211、E
2 212及びE3 213を指し示すポインタを含ん
でいる。ファイルは範囲E1 211、E2 212及
びE3 213の論理的連結である。好ましい実施例で
は、範囲レコードは後述するように FileInfo 構造であ
る。
のための単なる1つの考え得るリンクされたリスト配列
を表すに過ぎない。図5に同一ファイルを表す別の配列
を示す。範囲E4 214はファイルに追加されたが、
削除されている。好ましい実施例では範囲レコードR4
206は、ファイルを構成する範囲のリンクされたリ
ストから物理的に除去されていない。そうではなく、レ
コードの削除を指示するようにレコードのステータスを
セットすることによって範囲レコードR4 206は論
理的に除去されているのである。
使用される幾つかのデータ構造を含んでいる。表Cに示
されているデータ構造は BootRecord である。 BootRec
ordは、以下に説明するように、ファイルシステムの識
別に関するある一般的な情報、 FEProm をアクセスする
ことができるファイルシステムのバージョン番号、ルー
トディレクトリを指し示すポインタ、及び付加的なデー
タを含む。表Dに示す第1及び第2の構造は、 DirEntr
y 構造及び FileEntry構造である。これらの構造の1つ
が各ディレクトリ及びファイル毎に割当てられる。これ
らの構造は同一である。変数 SiblingPtr はディレクト
リ階層の同一レベルの DirEntry 構造及びFileEntry 構
造のリンクされたリスト内の次の同胞を指し示す。変数
PrimaryPtr 及び SecondaryPtr は以下に詳述する。第
3の構造は、 FileInfo 構造である。各ファイル範囲は
関連 FileInfo 構造を有している。変数 PrimaryPtr は
ファイルの FileInfo 構造を指し示す。 定義 Signature 媒体がこのファイルシステムを
支援することを指示する値 SerialNumber VolumeLabel との組合せは特定
FEProm の独特な識別子である FFSWriteVersion このボリュームへ書込むために
要求されるファイルシステムの高バイトにおけるバージ
ョン番号及び低バイトにおける改定番号 FFSReadVersion このボリュームを読出すために
要求されるファイルシステムの最早バージョンの高バイ
トにおけるバージョン番号及び低バイトにおける改定番
号 TotalBlockCount FEProm内の予備ブロックを含む
ブロックの合計数 SpareBlockCount ブロック再利用及びエラー回復
に使用可能なブロックの数 BlockLen バイトで表したブロックの長さ RootDirectoryPtr ルートディレクトリを指し示す
ポインタ Status ファイル名フォーマットを指定
するデータ VolumeLabelLen ボリュームラベル内の文字の数 BootCodeLen ブートコードアレイ内のバイト
の数。もし0ならば媒体はブート不能 VolumeLabel 〔 〕 ボリュームラベル BootCode〔 〕 オペレーティングシステムに関
するブートコード 定義 Name ディレクトリ/ファイル名 Ext ファイル拡張 Statusbit # 0 1:レコードはディレクトリ構造内に
存在(存在) 0:レコードはディレクトリ構造から削除済(削除済) 1 1:レコードは現属性、日付、及び時
間データを含む( ATDRecent ) 0:レコードは置換されたデータを含むか、またはデー
タを含まない( ATDSuperseded ) 3 - 2 11:未定義 10:FileInfo 01:FileEntry 00:DirEntry 4 1: PrimaryPtr は有効ではない 0: PrimaryPtr は有効 ( PrimaryPtrValid ) 5 1: SecondaryPtr は有効ではない 0: SecondaryPtr は有効 ( SecondaryPtrValid ) 6 1: SiblingPtr/ExtentPtr は有効で
はない 0: SiblingPtr/ExtentPtr は有効( SiblingPtrValid/
ExtentPtrValid ) DirEntry 15 - 7 保留 FileEntry 7 1:ファイルは圧縮されていない 0:ファイルは圧縮されている 15 - 8 圧縮アルゴリズムの識別 FileInfo 7 1:ファイルは圧縮されていない 0:ファイルは圧縮されている 8 1:範囲は圧縮されたブロックの最
初のセグメントを含まない 0:範囲は圧縮されたブロックの最初のセグメントを含
む 9 1:範囲は圧縮されたブロックの最
後のセグメントを含まない 0:範囲は圧縮されたブロックの最後のセグメントを含
む 15 - 10 保留 SiblingPtr 同胞連鎖内の次の DirEntry ま
たは FileEntryを指すポインタ ExtentPtr FileInfoEntry に対応付けられ
た範囲を指すポインタ PrimaryPtr DirEntry:ディレクトリ階層内
の次に低いレベルの最初の DirEntry または FileEntry
を指す FileEntry :ファイルに対応付けられた FileInfo エン
トリのリンクされたリストを指す FileInfo:ファイルのための次の FileInfo エントリを
指す SecondaryPtr DirEntry:ディレクトリのため
の次の DirEntry エントリを指す;SecondaryPtrを除く
このエントリの全内容は有効ではなく、無視される FileEntry :ファイルのための次の FileEntryエントリ
を指す;SecondaryPtrを除くこのエントリの全内容は有
効ではなく、無視される FileInfo:ファイルのための次の FileInfo エントリを
指す Attributes 読出し専用、読出し/書込み等
のようなファイル属性 Time 創成または変更の時刻 Date 創成または変更の日付 NameLen バイトで表した名前及び拡張の
長さ Name〔8〕 名前 Ext 〔3〕 拡張 ExtentLen バイトで表した範囲の長さ 本発明のファイルシステムは、ディレクトリ及びファイ
ル構造をブロック消去可能な FEProm 内のブロック境界
を横切って分散させる。ファイルシステムは、FEProm内
の記憶装置の割当て及び割当て解除に FEProm 管理者を
使用する。ファイルシステムは、上述したように、リン
クされたリスト内のポインタとしてハンドルを使用す
る。以下の説明では「ハンドル」及び「ポインタ」を互
換可能に使用する。図30は、図2のディレクトリ階層
の一部のブロック割当て例を示す。図30に示した部分
はディレクトリ「ルート」、ディレクトリ「 DOS」、デ
ィレクトリ「ワード」、ファイル「 AUTOEXEC.BAT 」、
及びファイル「 COMMAND.COM」のための DirEntry 及び
FileEntryレコードからなっている。ブロック0はディ
レクトリ「 DOS」及びディレクトリ「ワード」を含み、
ブロック 12 はディレクトリ「ルート」及びファイル
「 COMMAND.COM」を含み、そしてブロック 14 はファイ
ル「 AUTOEXEC.BAT 」を含んでいる。
造及び領域例を示す。図28はブロック0 2401、
ブロック12 2402、及びブロック14 2403
を示す。ブロック0 2401は、領域2420及び2
430を含む。領域2420はディレクトリ「 DOS」の
ための DirEntry を含み、領域2430はディレクトリ
「ワード」のための DirEntry を含む。ブロック0 2
401は、見出し2404、領域2420に対応する A
lloc
する Alloc〔1〕エントリ2431をも含む。ブロック
12 2402は領域2410及び2450を含む。領
域2410はディレクトリ「ルート」のための DirEntr
y を含み、領域2450はファイル「 COMMAND.COM」の
ための FileEntryを含む。ブロック12 2402は、
ブロック見出し2405、領域2410に対応する All
oc
るAlloc〔1〕エントリ2451をも含む。ブロック1
4 2403は、領域2490及び2440を含む。領
域2490はブートレコードを含み、領域2440はフ
ァイル「 AUTOEXEC.BAT 」のための FileEntryを含む。
ブロック14 2403は、ブロック見出し2406、
領域2490に対応する Alloc
1、及び領域2440に対応する Alloc〔1〕エントリ
2441をも含む。
3、24233、2433、2443、2453、及び
2493は、ポインタ2407から始まりブロック見出
し2406内のブートレコードまでのディレクトリ階層
を限定する。ブートレコード2490はブロック14
2403内にある。ブロック14 2403のための可
変ステータスは、このブロックがブートディレクトリを
含んでいることを指示する。 BootRecordPtr2407は
ブートレコードのための Alloc
を指し示している。 Alloc
領域2490のオフセットを含む変数「オフセット」2
492を含む。領域2490はブートレコードを含む。
ブートレコードはディレクトリ「ルート」に対応する A
lloc
irectoryPtr 2493を含む。 Alloc
411は、領域2410のオフセットを含む変数「オフ
セット」2412を含む。領域2410はディレクトリ
「ルート」のための DirEntry を含む。ディレクトリ
「ルート」の PrimaryPtr 2413はディレクトリ「 D
OS」に対応する Alloc
す。 Alloc
オフセットを含む変数「オフセット」2422を含む。
DirEntry を含む。ディレクトリ「DOS」の SiblingPtr
2423はディレクトリ「ワード」のための Alloc
〔1〕エントリ2431を指し示す。 Alloc〔1〕エン
トリ2431は、領域2430のオフセットを含む変数
「オフセット」2432を含む。領域2430はディレ
クトリ「ワード」のための DirEntry を含む。ディレク
トリ「ワード」の SiblingPtr 2433はファイル「 A
UTOEXEC.BAT 」のための Alloc〔1〕エントリ2441
を指し示す。 Alloc〔1〕エントリ2441は、領域2
440のオフセットを含む変数「オフセット」2442
を含む。領域2440はファイル「 AUTOEXEC.BAT 」の
ための FileEntryを含む。ファイル「 AUTOEXEC.BAT 」
のためのポインタ SiblingPtr 2443はファイル「 C
OMMAND.COM」のための Alloc〔1〕エントリ2451を
指し示す。 Alloc〔1〕エントリ2451は、領域24
50のオフセットを含む変数「オフセット」2452を
含む。領域2450はファイル「 COMMAND.COM」のため
の FileEntryを含む。 SiblingPtr 2453は FNULLに
セットされ、リンクされたリストの終わりを指示する。
追加及び削除、及びファイルの創成、拡張及び変更を可
能にする。図7は、ディレクトリを FEProm へ追加する
ルーチンの流れ図である。このルーチンの入力パラメタ
は、新しいディレクトリの完全パスネームと、新しいデ
ィレクトリのための属性データである。このルーチン
は、親ディレクトリのための DirEntry のアドレスを含
むように変数Pをセットし、また子ディレクトリのため
の DirEntry のアドレスを含むように変数Cをセットす
る。例えば、パスネーム“\P\C”は、ルートディレ
クトリのサブディレクトリであるPのサブディレクトリ
であるディレクトリCが創成されることを意味する。図
8はディレクトリCがPの最初のサブディレクトリであ
る場合を示し、図9はディレクトリCがPの最初のサブ
ディレクトリではない場合を示す。図8及び9におい
て、実線はディレクトリCを追加する前のディレクトリ
構造を示し、点線はディレクトリCが追加された後のデ
ィレクトリ構造を示す。
は、ルートディレクトリからの経路を追跡することによ
ってディレクトリPを探知し、ディレクトリPのための
DirEntry を指し示すように変数Pをセットする。ディ
レクトリPを探知する時システムは、変数 SecondaryPt
r によって置換されていない限り変数 PrimaryPtr を追
跡する。ブロック402では、システムはディレクトリ
Cのための DirEntry に領域を割当てる。システムは、
FEProm 管理者の手順を呼出すことによって領域を割当
てる。システムは、割当て済領域を指し示すように変数
Cをセットする。以下の説明では FEProm 管理者から戻
されるハンドルを領域を指し示すポインタと呼ぶ。ブロ
ック403においてシステムは、変数「名、時刻、日
付、及び属性」を新たに割当てられたレコード内にセッ
トし、新たに割当てられたエントリがディレクトリエン
トリであることを指示するように変数「ステータス」を
セットする。
ムは、新しいディレクトリエントリを古いディレクトリ
構造内へリンクする。システムは、ブロック406乃至
410において新しいディレクトリがPの最初のサブデ
ィレクトリではない場合の状況を処理し、ブロック41
1及び412において新しいディレクトリがPの最初の
サブディレクトリである場合の状況を処理する。ブロッ
ク405において、もし PrimaryPtr が有効であること
をP−>「ステータス」が指示すれば、ディレクトリP
はサブディレクトリを有しているか、または有していた
のであり、システムはブロック406へ進み、そうでな
い場合ディレクトリPはサブディレクトリを有していた
ことはなく、システムはブロック411へ進む。ブロッ
ク411では、システムは新たに割当てられたディレク
トリエントリであるディレクトリCを指し示すようにP
−> PrimaryPtr をセットして新しいディレクトリへの
リンキングを遂行する。ブロック412においてシステ
ムは、変数 PrimaryPtr が有効であることを指示するよ
うにP−>「ステータス」をセットしてルーチンを終了
する。
next-ptr をP−> PrimaryPtr に等しくセットする。
変数 next-ptr は同胞サブディレクトリのリンクされた
リスト内の次のディレクトリを指し示すポインタを含
む。ブロック407において、SiblingPtrが有効である
ことを next-ptr によって指し示されるレコードのステ
ータスが指示していればシステムはブロック408へ進
み、そうでなければ同胞のリンクされたリストの終わり
に到達したのであり、システムはブロック409へ進
む。ブロック408では、 next-ptr は next-ptr によ
って指し示されるレコードの SiblingPtr に等しくセッ
トされ、これはリンクされたリスト内の次のディレクト
リを指し示すように next-ptr を前進させ、システムは
ブロック407へ進められてリンクされたリストの終わ
りに達したか否かが決定される。同胞のリンクされたリ
ストの終わりを探索する場合、システムは変数 Sibling
Ptr を追跡する。システムはブロック409において、
next-ptr によって指し示されるレコードの SiblingPt
r を、ディレクトリCのためのDirEntryを指し示すポイ
ンタに等しくセットする。ブロック410においてシス
テムは、新たに割当てられたディレクトリエントリを指
し示すエントリ内の SiblingPtr が有効であることを指
示するように、 next-ptr によって指し示されるレコー
ドの「ステータス」をセットし、ルーチンを終了する。
ntryレコードをファイルシステム内へ追加するルーチン
の流れ図である。 FileEntryレコードは階層的な木構造
のファイルシステムの単なる葉ノードに過ぎず、 FileE
ntryレコードを追加するルーチンは図7に示したディレ
クトリ追加ルーチンに酷似している。主要な相違点はブ
ロック803において、レコードがファイルであること
を指示するように変数「ステータス」がセットされるこ
とである。
わりに追加するためのルーチンの流れ図である。このル
ーチンには、完全パスネーム、書込まれるデータ及び書
込まれるバイトの数が渡される。図13は拡張されるフ
ァイル\L.DAT を含むディレクトリ構造のレイアウトの
見本である。実線はファイルが拡張される前の構造を示
し、点線はファイルが拡張された後の構造を示す。ファ
イル「 L.DAT」は始めに FileEntryレコード1101、
FileInfo レコード1102、及びそれに対応付けられ
た範囲1103を有している。点線は、範囲D2 11
05内のファイルへ追加されるデータを有する FileInf
o レコード1104を表す。
ムは、領域を FEProm 内の新 FileInfo レコードに割当
て、そのレコードを指し示すように変数 FI をセットす
る。システムはブロック1002において領域をデータ
範囲に割当て、その範囲を指し示すように変数Dをセッ
トする。システムはブロック1003において、割当て
られたブロックへデータを書込む。ブロック1004に
おいてシステムは割当てられた FileInfo エントリ内に
変数「属性、時刻、及び日付」をセットする。ブロック
1005においてシステムは、 FI −> ExtentPtrを割
当てられた範囲のハンドルにセットする。ブロック10
05Aでは、 FI −> ExtentLenが範囲の長さを含むよ
うにセットされる。ブロック1005Bでは FI −>
「ステータス」が、「存在」、 ATDRecent、 FileInfo
、及び ExtentPtrvalid にセットされる。ブロック1
006ではシステムは、拡張すべきファイルの FileEnt
ryレコードを探知し、そのレコードのアドレスに FE を
セットする。好ましい実施例では、システムは新範囲及
び FileInfo レコードを割当てる前に FileEntryレコー
ドを探知して、何等かの割当てが行われる前にファイル
が存在するようにしている。
07乃至1012においてシステムは、拡張すべきファ
イルの最後の FileInfo レコード(もし1つが存在すれ
ば)を探知する。システムは FileEntryレコード及び F
ileInfo レコードの PrimaryPtr または SecondaryPtr
を追跡する。有効 SecondaryPtr は、 PrimaryPtr によ
って指し示されるレコードが、 SecondaryPtr によって
指し示されるレコード内のデータによって置換されたこ
とを指示する。ブロック1007においてシステムは、
ポインタ next-ptr を FileEntryレコードを指し示すポ
インタに等しくセットする。ブロック1008Aでは、
ポインタ prev-ptr が next-ptr に等しくセットされ
る。ファイル内の最後の FileInfo レコードが探知され
ると、ポインタ prev-ptr はそのレコードを指し示すポ
インタを含む。ブロック1009では、もし Secondary
Ptr が有効であることを next-ptr によって指し示され
るレコードのステータスが指示していれば、 PrimaryPt
r によって指し示されるレコード内のデータは置換され
たのであり、システムはブロック1011へ進み、そう
でない場合はシステムはブロック1010へ進む。ブロ
ック1010においてシステムは next-ptr を、 next-
ptr によって指し示されるレコードの PrimaryPtr に等
しくセットしてリンクされたリスト内の次のレコードを
指し示すポインタを入手し、ブロック1012へ進む。
ブロック1011ではシステムは next-ptr を、 next-
ptr によって指し示されるレコードの SecondaryPtr に
等しくセットしてリンクされたリスト内の次のレコード
を指し示すポインタを入手し、ブロック1008Aへ進
む。ブロック1012では、もし next-ptr が有効であ
れば、リンクされたリストの終わりに達したのであり、
システムはブロック1013へ進み、そうでない場合に
はシステムは1008Aへ戻ってリンクされたリスト内
の次のレコードを処理する。ブロック1013ではシス
テムは prev-ptr によって指し示されるレコードの Pri
maryPtr を、 FI を指し示すポインタに等しくセットし
てファイルの拡張を遂行する。ブロック1014におい
てシステムはprev-ptrによって指し示されるレコードの
「ステータス」を PrimaryPtrValidに等しくセットして
ルーチンを終了する。
更新する「ファイル更新」ルーチンの流れ図である。こ
のルーチンのパラメタは、変更された関連範囲を持つた
めのFileInfoブロックのアドレスであるRと、新データ
のための範囲内へのオフセットである extent-offset
と、新データである new-data と、新データの長さであ
る data-lengthとである。少なくともあるブロックが消
去されるまでは、FEPromは1回書込み装置であるから、
データが記憶される領域は、ファイルへの更新が発生す
る時には再書込みはできない。以下に説明するように好
ましい実施例では更新されるデータは FEProm の異なる
領域へ書込まれる。
o レコードのリンクされたリストの典型的部分を示す。
ファイル更新ルーチンは陰影を施した領域1301によ
って表されるデータを置換する。図17は変更されるデ
ータが FEProm へ書込まれた後のリンクされたリストの
構造を示す。3つの FileInfo レコードR1 141
1、R2 1412、及びR3 1413がリンクされ
たリスト内へ挿入されている。範囲全体が再書込みされ
るのではなく、実際に変更された部分だけが再書込みさ
れるのである。ルーチンは範囲を3つの区分D1 14
01、D2 1402、及びD3 1403に分割す
る。区分D1 1401及びD3 1403は、更新に
よって変化しないデータを含み、区分D2 1402は
変化するデータを含む。各区分は対応する FileInfo レ
コードを有する。 FileInfo レコードR1 1411、
R2 1412、及びR3 1413はそれらの Prima
ryPtrフィールドを通してリンクされている。またR1
1411及びR3 1413内の ExtentPtrフィール
ドはそれらの対応範囲区分を指し示すようにセットさ
れ、 ExtentLenフィールドがセットされる。新範囲は、
レコードR2 1412によって指し示される区分であ
る新D2 1404に対応する新データに割当てられ
る。レコードR 1410の SecondaryPtr は FileInf
o R1 1411を指し示し、R 1410の Primary
Ptr が置換されたことを指示する。 FileInfoレコード
R3 1413の PrimaryPtr は FileInfo レコードR
1410の PrimaryPtr 内に含まれている値にセット
されてリンクを完了する。ファイル更新ルーチンは、ブ
ロック内に3つの新 Allocエントリを追加するための範
囲を含む十分なスペースが存在することに依存する。こ
れら3つの Allocエントリは、1つの領域ではなく3つ
の領域内に範囲を再定義する。もし十分なスペースが存
在しなければ、ブロックの再利用によって空きスペース
を発生させることができ、ファイル更新ルーチンを呼出
すことができる。しかし、もし十分な空きスペースが存
在しなければ、その範囲内のデータは新範囲へ移動させ
られる。もしデータが移動させられれば、新データは古
データと統合され、1つだけの FileInfo レコードを有
する新ブロック内の1領域へ書込まれる。古ブロック内
の領域は割当て解除される。好ましい実施例では、 FEP
rom 管理者は既存領域の部分を指し示すAlloc エントリ
の追加を支援する。図17の例は、ブロックへ追加する
3つの新Alloc エントリを必要とし、これらはD1、D
2、及びD3に関連付けられた新たに定義された領域に
対応する。D2のための Allocエントリは割当て解除さ
れ、D1及びD3のための Allocエントリが割当てられ
る。区分D1、D2、及びD3からなる領域に対応する
古い Allocエントリのステータスは、それが置換された
ことを指示するようにセットされる。置換済のステータ
スは、 Allocエントリが本質的に対応領域を用いずに割
当て解除されることを指示する。
ムは FileInfo レコードのための3つの領域を割当て、
領域のアドレスを含むように変数R1、R2、及びR3
をセットする。ブロック1202においてもしR−>
「ステータス」が ATDRecentを指示していれば、システ
ムはR1−>「時刻」、R1−>「日付」、及びR1−
>「属性」をR内の値にセットし、R1−>「ステータ
ス」を ATDRecentにセットし、そうではない場合には、
システムはこれらのフィールドを FNULLにしたままであ
る。好ましい実施例では、 FEProm 管理者は Allocエン
トリを置換にセットするのと、 Allocエントリを既存領
域に割当てるのを支援する。ブロック1203において
システムはある領域を新データに割当て、 R2NewDataを
その領域のアドレスにセットする。ブロック1204で
は、3つの Allocエントリが割当てられる。これらのエ
ントリはD1、D2、及びD3を指し示すように初期化
される。D1、D2、及びD3からなる領域を指し示す
Allocエントリのステータスは置換にセットされる。ブ
ロック1205においてシステムは R2NewDataによって
アドレスされた新領域へ new-data を書込む。システム
はブロック1206乃至1208Aにおいてデータを F
ileInfo レコードR2内にセットする。ブロック120
6においてシステムは、R2−> ExtentPtrを新データ
のための領域を指し示すポインタに等しくセットする。
ブロック1207では、R2−> ExtentLenを新領域の
長さに等しくセットする。ブロック1208において
は、R2−> PrimaryPtr がR3を指し示すポインタに
セットされる。ブロック1208Aにおいてシステム
は、ExtentPtr 及び PrimaryPtr が有効であることを指
示するようにR2−>「ステータス」をセットする。
09乃至1211Aにおいてシステムは、データを Fil
eInfo レコードR3内にセットする。ブロック1209
ではD3領域を指し示すポインタに等しくR3−> Ext
entPtrをセットする。ブロック1210ではR3−> E
xtentLenをD3領域の長さに等しくセットする。ブロッ
ク1211においてシステムは、R3−> PrimaryPtr
をR−> PrimaryPtrに等しくセットする。ブロック1
211Aでは、ExtentPtr 及び PrimaryPtr が有効であ
ることを指示するようにR3−>「ステータス」をセッ
トする。
システムは、データを FileInfo レコードR1内にセッ
トする。ブロック1212ではD1領域を指し示すポイ
ンタに等しくR1−> ExtentPtrをセットする。ブロッ
ク1213ではR1−> ExtentLenをD3領域の長さに
等しくセットする。ブロック1214においてシステム
は、R1−> PrimaryPtr をR2を指し示すポインタに
セットする。ブロック1214Aでは、ExtentPtr 及び
PrimaryPtr が有効であることを指示するようにR1−
>「ステータス」をセットする。
示すポインタに等しくなるようにR−> SecondaryPtr
がセットされる。ブロック1216では、 SecondaryPt
r が有効であることを指示するようにR−>「ステータ
ス」がセットされる。これでルーチンが終了する。図1
8及び19は、ファイル更新の特別な場合の結合の Fil
eInfo リストを示す。これらの特別な場合を処理するた
めのルーチンは、図14、15に示したファイル更新の
一般的な場合の処理に必要なルーチンの部分集合であ
る。図18において、範囲の始まりから始まるデータが
更新される。区分D1 1501は更新すべき範囲の始
まりのデータを含み、区分D2 1502は更新されな
い範囲の終わりのデータを含む。2つの新 FileInfo レ
コードだけが必要である。第1の FileInfo レコードR
1 1511は新データ1503を指し示し、第2のFi
leInfoレコードR2 1512は区分D2 1502内
の古いデータを指し示す。図19に示すように範囲境界
上で終わるデータが更新される場合にも同様な状況が発
生する。ファイル更新の一般的な場合のように、D1及
びD2を含む古い領域は、古い領域を含むブロックに2
つの新しい割当て表エントリを割当てることによって2
つの領域に細分される。またもしエントリのために十分
なスペースが存在しなければ、変更されないデータは新
ブロックへ移動させられる。
場合の FileInfo レコードのためのリンクされたリスト
を示す。図21は、 FEProm からディレクトリを削除す
るルーチンの流れ図である。ファイルを削除するルーチ
ンは、対応付けられた FileInfo レコードが割当て解除
されること以外は同一である。このルーチンは、 DirEn
try のステータスを、それが削除されることを指示する
ようにセットする。ブロック1801においてシステム
は、削除すべきディレクトリを探知し、そのディレクト
リのアドレスを含むように変数「ポインタD」をセット
する。ブロック1802では、そのディレクトリを削除
することを指示するようにD−>「ステータス」をセッ
トする。
しい DirEntry または FileEntryをそれぞれ割当て、次
いで新しいエントリを指し示すように古いエントリの S
econdaryPtr をセットすることによって変更される。図
23は、名前が“ B.DAT”に変更される時の、“ D.DA
T”のためのファイルエントリを実線で、また変更を点
線で示してある。新エントリは FileInfo エントリ、デ
ィレクトリ構造、及び古いエントリに対応付けられた範
囲のリンクされたリストを指し示す。
しいサブルーチンの流れ図である。ディレクトリ名を変
更するためのサブルーチンは、対応付けられる範囲が存
在しないことを除いて同一である。このルーチンへの入
力パラメタは、ファイルの同胞及び新ファイル名であ
る。ブロック1901においてシステムはディレクトリ
を通してシステムを探索し、名前を変更すべきファイル
を探知し、 FileEntryを指し示すように変数Pをセット
する。システムは、そのファイルのためのエントリのリ
ンクされたリスト内の最後の FileEntryを探索する。フ
ァイルは各名前変更毎にエントリを有する。
域を新 FileEntryに割当て、その領域を指し示すように
変数Cをセットする。ブロック1905においてシステ
ムはC−>「名前」を新ファイル名に等しくセットし、
C−>「属性」、C−>「日付」、C−>「時刻」をセ
ットし、 ATDRecentに置換されるファイルエントリに基
づいてC−>「ステータス」をセットする。ブロック1
906においてシステムは、C−> SiblingPtr をP−
> SiblingPtr に等しくセットしてエントリをディレク
トリ階層にリンクする。ブロック1909では、C−>
PrimaryPtr がP−> PrimaryPtr に等しくセットさ
れ、新エントリは範囲のリストにリンクされる。ブロッ
ク1909Aでは、 ExtentPtr及び PrimaryPtr が有効
であることを指示するためにC−>「ステータス」がセ
ットされる。ブロック1910ではシステムはCを指し
示すポインタに等しくP−> SecondaryPtr をセットす
る。ブロック1911においてシステムは SecondaryPt
r が有効であることを指示するようにP−>「ステータ
ス」をセットし、古いエントリの置換を完了させてルー
チンを終了させる。
ータを変更するルーチンの流れ図である。あるファイル
に関連する属性データは、 ATDRecentのステータスを有
し、また「性、日付、及び時刻」フィールドが FNULLに
セットされている第1の FileInfo エントリを選択する
ことによって変更される。もしこのようなフィールドが
存在しなければ、新しい FileInfo エントリが創成さ
れ、選択される。次いでシステムは「属性、日付、及び
時刻」フィールドを選択された FileInfo エントリ内に
セットする。先に最新の「属性、日付、及び時刻」デー
タを記憶していたFileInfoエントリは、 ATDSuperesede
d にセットされているステータスを有している。入力パ
ラメタはパスネーム及び属性データである。ブロック2
101においてシステムはディレクトリ構造を通して探
索してファイルを探知し、 FileEntryを指し示すように
変数Pをセットする。ブロック2102においてもしP
−>「ステータス」が ATDRecentを指示していれば、 F
ileEntryは最新の属性データを含んでおり、システムは
ブロック2103に進み、そうでない場合にはシステム
はブロック2104に進む。ブロック2103において
システムは変数Xを変数Pにセットして図25のブロッ
ク2111に進む。ブロック2104ではシステムは変
数CをP−> PrimaryPtr に等しくセットする。システ
ムはブロック2105乃至2108をループして最新の
属性データを指示しているステータスを有するFileInfo
エントリを探索する。ブロック2105においてもし S
econdaryPtr が有効であることをC−>「ステータス」
が指示していれば、システムはブロック2106へ進
み、そうでない場合はシステムはブロック2107へ進
む。ブロック2106では変数CはC−> SecondaryPt
r にセットされて置換されるエントリを指し示すように
され、ブロック2105へループバックされる。ブロッ
ク2107においてもしC−>「ステータス」が ATDRe
centを指示していればFileInfoエントリは最新の属性デ
ータを含んでいるのであり、システムはブロック210
9へ進み、そうでない場合にはシステムはブロック21
08へ進む。ブロック2108においてシステムは変数
CをC−> PrimaryPtr に等しくセットし、ブロック2
105へループバックする。ブロック2109において
はシステムは変数Xを変数Cにセットし、図25のブロ
ック2111へ進む。
数Yを変数Xに初期化する。変数Xは最新の属性データ
を有するエントリを指し示す。ブロック2112乃至2
119においては、再新のステータスを有し FNULLにセ
ットされた属性データを有する次のエントリを探知す
る。ブロック2112においてもし PrimaryPtr が有効
であることをY−>「ステータス」が指示していれば、
システムはブロック2113へ進み、そうでなければ新
エントリを追加するためにブロック2120へ進む。ブ
ロック2113では、変数YはY−> PrimaryPtr にセ
ットされる。ブロック2114においてもし Secondary
Ptr が有効であることをY−>「ステータス」が指示し
ていれば、システムはブロック2115へ進み、そうで
なければブロック2116へ進む。ブロック2115で
は変数YがY−> SecondaryPtr に等しくセットされ、
ブロック2114へループバックされる。ブロック21
16においてもしY−>「ステータス」が ATDRecentに
セットされていればシステムはブロック2117へ進
み、そうでなければブロック2112へ戻される。ブロ
ック2117においてもしY−>「属性」、Y−>「日
付」、及びY−>「時刻」が FNULLに等しければシステ
ムはブロック2118へ進み、そうでなければブロック
2112へループバックされる。ブロック2118にお
いて、Y−>「属性」、Y−>「日付」及びY−>「時
刻」は新しい属性データにセットされる。ブロック21
19ではX−>「ステータス」が ATDSupersededに等し
くセットされ、ルーチンは完了する。
ステムは新 FileInfo エントリを割当てて初期化する。
ブロック2120では新 FileInfo エントリが割当てら
れ、新エントリを指し示すように変数Zがセットされ
る。ブロック2121では、システムはZ−>「属
性」、Z−>「日付」、及びZ−>「時刻」を新属性デ
ータにセットし、Z−>「ステータス」を「存在」、 A
TDRecent、及び FileInfo にセットし、Z−>ExtentPt
r をY−>ExtentPtr にセットし、そしてZ−>Extent
Len をY−>ExtentLen にセットする。ブロック212
2ではY−>SecondaryPtrが変数Zに等しくセットさ
れ、 SecondaryPtr が有効であることを指示するように
Y−>「ステータス」がセットされる。ブロック212
3では、X−>「ステータス」が ATDSupersededに等し
くセットされ、エントリが最早現属性データを含んでい
ないことを指示し、ルーチンが完了する。
明したが、本発明はこの実施例に限定されるものではな
い。当業者ならば本発明の思想に基づく多くの変更が明
白であろう。本発明の範囲は特許請求の範囲によっての
み限定されるものである。
ーキ構造もしくはツリー構造の編成を示す図である。
たリスト構造体の図である。
されたリスト構造体を示した図である。
対するリンクされたリストの構造を示す図である。
対する別のリンクされたリストの構造を示す図である。
能なFEPromのレイアウトを示す図である。
ectoryルーチンを示す流れ線図である。
造に新たにディレクトリが追加される前後の図である。
造に新たにディレクトリが追加される前後の図である。
leルーチンを示す流れ線図である。
Fileルーチンを示す流れ線図である。
Fileルーチンを示す流れ線図である。
ィレクトリ及びファイルレイアウトを示す図である。
Fileルーチンを示す流れ線図である。
Fileルーチンを示す流れ線図である。
後のファイルのサンプル部分を示す図である。
後のファイルのサンプル部分を示す図である。
新された後のファイルのサンプル部分を示す図である。
新された後のファイルのサンプル部分を示す図である。
新された後のファイルのサンプル部分を示す図である。
rectoryルーチンを示す流れ線図である。
File Nameルーチンを示す流れ線図である。
リ構造の前後を表す図である。
Attribute Dataルーチンを示す流れ線
図である。
Attribute Dataルーチンを示す流れ線
図である。
レイアウトを示す図である。
った後の図26のブロックのレイアウトを示す図であ
る。
割り当て構造及び領域を示す図である。
対するサンプルブロック割り当てを示す図である。
す流れ線図である。
ーチンを示す流れ線図である。
ンを示す流れ線図である。
ングルーチンを示す流れ線図である。
図である。
Claims (41)
- 【請求項1】 コンピュータメモリをメモリ位置のブロ
ックに分割し、各ブロックは、割り当てテーブルと、デ
ータエリアに分割されたデータ領域とを有するものであ
り、上記割り当てテーブルは上記領域のデータエリアに
対応するエントリを有し、そしてデータを記憶するブロ
ックを選択するためのブロック割り当てルーチンと、 データを記憶する上記選択されたブロックに対しデータ
領域内のデータエリアを選択し、その選択されたデータ
エリアに対応するように割り当てテーブルのエントリを
選択し、そして上記選択されたデータエリア及び割り当
てられた状態に対応するように上記選択された割り当て
テーブルエントリをセットするためのデータエリア割り
当てルーチンと、 上記選択されたデータエリアにデータを記憶するための
記憶ルーチンとを備えたことを特徴とするコンピュータ
メモリ用のマネージャ。 - 【請求項2】 割り当てられた状態にある割り当てテー
ブルエントリを割り当て解除状態にセットするためのデ
ータエリア割り当て解除ルーチンと、 その割り当て解除された状態にある割り当てテーブルエ
ントリに対応するデータエリアをリクレイミングするた
めのブロックリクレイマルーチンとを更に備えた請求項
1に記載のコンピュータメモリ用のマネージャ。 - 【請求項3】 各ブロックがヘッダ情報を有し、これら
ヘッダ及び割り当てテーブルから情報を収集しそしてそ
の収集した情報をメモリキャッシュに記憶するための初
期化ルーチンを更に備えた請求項1に記載のコンピュー
タメモリ用のマネージャ。 - 【請求項4】 1つ以上の論理ブロックを有する一回書
き込み多数回読み取りのメモリデバイスにおいて、 データを記憶するためのエリアに論理的に分割される各
ブロック内のデータ領域と、 各ブロック内に記憶されるブロック構造体であって、ヘ
ッダと割り当てテーブルとを有していて、ヘッダはブロ
ックに特定の情報を含み、割り当てテーブルはデータ領
域のエリアに対応するエントリを有していると共に、そ
の対応するデータ領域のエリアに関連した情報を含んで
いるようなブロック構造体とを備えたことを特徴とする
メモリデバイス。 - 【請求項5】 上記ヘッダは、論理ブロック番号と、ブ
ロック状態と、ブロック消去カウントとを含む請求項4
に記載のメモリデバイス。 - 【請求項6】 割り当てテーブルエントリは、対応する
データ領域のエリアを指すポインタと、対応するデータ
領域のエリアの長さを指示するレングスと、割り当てテ
ーブルエントリのステータスとを含んでいる請求項4に
記載のメモリデバイス。 - 【請求項7】 上記メモリデバイスは、ブロック消去可
能なプログラマブル・リードオンリメモリである請求項
4に記載のメモリデバイス。 - 【請求項8】 複数のブロックを備えたブロック消去可
能なプログラマブル・リードオンリメモリにおいてメモ
リをマネージする方法が、 各ブロックにブロックヘッダ情報を記憶し、 各ブロックに割り当てテーブルを記憶し、そして各ブロ
ックのデータ記憶エリアにデータを記憶する、という段
階を備えたことを特徴とする方法。 - 【請求項9】 上記ブロックヘッダ情報は、論理ブロッ
ク番号と、ブロック状態と、ブロック消去カウントとを
含んでいる請求項8に記載の方法。 - 【請求項10】 上記割り当てテーブルはデータ記憶エ
リアの一部分に対応するエントリを含み、これらのエン
トリは、データ記憶エリアの対応する部分を指すポイン
タと、データ記憶エリアの対応部分の長さを指示するレ
ングスと、エントリの状態を指示するステータスとを含
む請求項8に記載の方法。 - 【請求項11】 ブロックを備えたブロック消去可能な
プログラマブル・リードオンリメモリにおいて割り当て
解除されたスペースをリクレイミングする方法が、 リクレイミングされるべきブロックにおいて割り当て解
除された又は割り当てられたものとしてデータ領域を識
別し、 スペアブロックを消去し、そしてリクレイミングされる
べきブロックからスペアブロックへ割り当てられたデー
タ領域をコピーし、それにより、割り当て解除されたデ
ータ領域に対応するメモリエリアを割り当てのためにリ
クレイミングする、という段階を備えたことを特徴とす
る方法。 - 【請求項12】 割り当てられたデータ領域はスペアブ
ロック内の隣接するメモリ位置にコピーされる請求項1
1に記載の方法。 - 【請求項13】 コンピュータメモリデバイス内のデー
タ領域をアドレスする方法において、上記メモリはブロ
ックに分割され、そして各ブロックは物理的なブロック
番号を有しており、上記方法は、 各ブロックに割り当てテーブルを記憶し、この割り当て
テーブルは、ブロック内のデータ領域のオフセットを指
示するエントリと、エントリインデックスとを有してお
り、 更に、各ブロックに論理ブロック番号を記憶し、 この論理ブロック番号と、割り当てテーブルのエントリ
インデックスとによってデータ領域を識別し、そして上
記論理ブロック番号と、割り当てテーブルのエントリイ
ンデックスとに基づいてその識別されたデータ領域に対
するアドレスを発生する、という段階を備えたことを特
徴とする方法。 - 【請求項14】 アドレスを発生する上記段階は、 上記論理ブロック番号から物理的なブロック番号を決定
し、各ブロックは対応するスタートアドレスを有し、 上記割り当てテーブルのエントリインデックスによって
指示された上記決定された物理的なブロック番号におい
て上記割り当てテーブルのエントリからオフセットを検
索し、そしてその検索されたオフセットを上記決定され
た物理的なブロック番号と共にブロックのスタートアド
レスに追加して、識別されたデータ領域のアドレスを発
生するという段階を含む請求項13に記載の方法。 - 【請求項15】 コンピュータメモリデバイスは、ブロ
ック消去可能なプログラマブル・リードオンリメモリで
ある請求項13又は14に記載の方法。 - 【請求項16】 コンピュータメモリデバイスのブロッ
クを識別する方法において、各ブロックは物理的なブロ
ック番号を有しており、上記方法は、 各ブロックに論理ブロック番号を記憶し、 各論理ブロック番号から、その論理ブロック番号が記憶
された物理的なブロック番号へ至るマップを発生し、 論理ブロック番号を受け取り、そしてその受け取った論
理ブロック番号を、上記発生されたマップを用いて物理
的なブロック番号に変換する、という段階を備えたこと
を特徴とする方法。 - 【請求項17】 ブロックをリクレイミングするとき
に、リクレイミングされるべきブロックからリクレイミ
ングされたブロックへ論理ブロック番号をコピーする段
階を備えた請求項16に記載の方法。 - 【請求項18】 コンピュータメモリデバイスは、ブロ
ック消去可能なプログラマブル・リードオンリメモリで
ある請求項16又は17に記載の方法。 - 【請求項19】 複数のブロックを有するブロック消去
可能なプログラマブル・リードオンリメモリにおいてブ
ロックの消去カウントを維持する方法が、 ブロックを消去した回数を指示する消去カウントを各ブ
ロックに記憶し、 第1ブロックを第2ブロックにコピーするときに、第2
ブロックの消去カウントを保持し、そしてブロックを消
去するときに、その消去の前に消去カウントを増加しそ
してその増加した消去カウントを消去したブロックに記
憶する、という段階を備えたことを特徴とする方法。 - 【請求項20】 データを記憶するためのブロック消去
可能なプログラマブル・リードオンリメモリにおいてブ
ロックを割り当てる方法が、 ブロックを消去した回数を示す消去カウントを各ブロッ
クごとに維持し、 データを記憶するに充分なスペースを有するブロックを
選択し、そしてデータを記憶するためにその消去カウン
トに基づいて上記選択されたブロックを識別し、ブロッ
クの割り当てを行う、という段階を備えたことを特徴と
する方法。 - 【請求項21】 ブロック消去可能なプログラマブル・
リードオンリメモリにおいてブロックの消去を均等化す
る方法が、 消去された第1ブロックを識別し、 第1ブロックよりも少ない回数で消去された第2ブロッ
クを識別し、そして第1ブロックのデータを第2ブロッ
クのデータとスワッピングする、という段階を備えたこ
とを特徴とする方法。 - 【請求項22】 複数のディレクトリエントリを有する
ハイアラーキ式のディレクトリ構造体に基づいてファイ
ルを編成するためのコンピュータファイル記憶システム
において、 ディレクトリエントリを記憶するメモリを有するコンピ
ュータと、 ディレクトリエントリを記憶するメモリの一部分を割り
当てる手段であって、ディレクトリエントリは、一次ポ
インタと、二次ポインタと、兄弟ポインタとを有し、こ
れらのポインタが最初に所定値にセットされているよう
な割り当て手段と、 ディレクトリエントリの上記兄弟ポインタを、ディレク
トリ構造体の同じレベルにある別のディレクトリエント
リを指すようにセットして、兄弟ディレクトリエントリ
のリンクされたリストを形成するための手段と、 ディレクトリエントリの上記一次ポインタを、ディレク
トリ構造体の次に低いレベルにある別のディレクトリエ
ントリを指すようにセットする手段と、 取って代えられるディレクトリエントリの上記二次ポイ
ンタを、取って代わるディレクトリエントリを指すよう
にセットする手段とを具備し、この取って代わるディレ
クトリエントリは、取って代えられるディレクトリエン
トリの更新されたデータを含むことを特徴とするコンピ
ュータファイル記憶システム。 - 【請求項23】 上記取って代わるディレクトリエント
リの一次ポインタを上記取って代えられるディレクトリ
エントリの一次ポインタに等しくセットするための手段
と、 上記取って代わるディレクトリエントリの兄弟ポインタ
を上記取って代えられるディレクトリエントリの兄弟ポ
インタに等しくセットするための手段とを更に備えた請
求項22に記載のコンピュータファイル記憶システム。 - 【請求項24】 ファイルエントリを記憶するためのメ
モリの一部分を割り当てる手段を更に備え、ファイルエ
ントリは、関連ファイルに関する情報を含むものであ
り、そしてディレクトリエントリの一次ポインタをその
割り当てられたファイルエントリを指すようにセットす
る手段を更に備えた請求項22に記載のコンピュータフ
ァイル記憶システム。 - 【請求項25】 上記の割り当てられたファイルエント
リは、一次ポインタと、二次ポインタと、最初に所定値
にセットされる兄弟ポインタとを含み、 ファイルエントリの上記兄弟ポインタを、別のファイル
又はディレクトリエントリを指すようにセットして、フ
ァイル又はディレクトリエントリのリンクされたリスト
を形成するための手段と、 取って代えられるファイルエントリの上記二次ポインタ
を、取って代わるファイルエントリを指すようにセット
する手段とを具備し、この取って代わるファイルエント
リは、取って代えられるファイルエントリの更新された
データを含む請求項24に記載のコンピュータファイル
記憶システム。 - 【請求項26】 上記取って代わるファイルエントリの
一次ポインタを上記取って代えられるファイルエントリ
の一次ポインタに等しくセットするための手段と、 上記取って代わるファイルエントリの兄弟ポインタを上
記取って代えられるファイルエントリの兄弟ポインタに
等しくセットするための手段とを更に備えた請求項25
に記載のコンピュータファイル記憶システム。 - 【請求項27】 ファイル情報エントリを記憶するため
のメモリの一部分を割り当てる手段を更に備え、ファイ
ル情報エントリは、ファイルエクステントに関する情報
を含むものであり、そしてファイルエントリの一次ポイ
ンタをその割り当てられたファイル情報エントリを指す
ようにセットする手段を更に備えた請求項24に記載の
コンピュータファイル記憶システム。 - 【請求項28】 上記ファイル情報エントリは、最初に
所定値にセットされる一次ポインタ及び二次ポインタを
含み、 ファイル情報エントリの上記一次ポインタを、その同じ
ファイルに関連した別のファイル情報エントリを指すよ
うにセットして、その同じファイルに対するファイル情
報エントリのリンクされたリストを形成するための手段
と、 取って代えられるファイル情報エントリの上記二次ポイ
ンタを、取って代わるファイル情報エントリを指すよう
にセットする手段とを具備し、この取って代わるファイ
ル情報エントリは、取って代えられるファイル情報エン
トリの更新されたデータを含む請求項27に記載のコン
ピュータファイル記憶システム。 - 【請求項29】 上記取って代わるファイル情報エント
リの一次ポインタを上記取って代えられるファイル情報
エントリの一次ポインタに等しくセットする手段を更に
備えた請求項28に記載のコンピュータファイル記憶シ
ステム。 - 【請求項30】 ファイルを記憶するためのコンピュー
タファイル記憶システムにおいて、 ファイルを記憶するメモリを有するコンピュータと、 ファイルエントリを記憶するメモリの一部分を割り当て
る手段であって、ファイルエントリは、それに関連した
ファイルに関する情報を含むと共に、一次ポインタと、
二次ポインタと、最初に所定値にセットされる兄弟ポイ
ンタとを有しているような割り当て手段と、 ファイルエントリの上記兄弟ポインタを、別のファイル
エントリを指すようにセットして、ファイルエントリの
リンクされたリストを形成する手段と、 取って代えられるファイルエントリの上記二次ポインタ
を、取って代わるファイルエントリを指すようにセット
する手段とを具備し、この取って代わるファイルエント
リは、取って代えられるファイルエントリの更新された
データを含むことを特徴とするコンピュータファイル記
憶システム。 - 【請求項31】 上記取って代わるファイルエントリの
一次ポインタを上記取って代えられるファイルエントリ
の一次ポインタに等しくセットするための手段と、 上記取って代わるディレクトリエントリの兄弟ポインタ
を上記取って代えられるディレクトリエントリの兄弟ポ
インタに等しくセットするための手段とを更に備えた請
求項30に記載のコンピュータファイル記憶システム。 - 【請求項32】 上記ファイル情報エントリは、最初に
所定値にセットされる一次ポインタ及び二次ポインタを
含み、 ファイル情報エントリを記憶するためのメモリの一部分
を割り当てる手段を更に備え、ファイル情報エントリ
は、ファイルのファイルエクステントに関する情報を含
むものであり、 更に、ファイルエントリの一次ポインタをその割り当て
られたファイル情報エントリを指すようにセットする手
段と、 ファイル情報エントリの上記一次ポインタを、その同じ
ファイルに関連した別のファイル情報エントリを指すよ
うにセットして、その同じファイルに対するファイル情
報エントリのリンクされたリストを形成するための手段
と、 取って代えられるファイル情報エントリの上記二次ポイ
ンタを、取って代わるファイル情報エントリを指すよう
にセットする手段とを具備し、この取って代わるファイ
ル情報エントリは、取って代えられるファイル情報エン
トリの更新されたデータを含む請求項30に記載のコン
ピュータファイル記憶システム。 - 【請求項33】 上記取って代わるファイル情報エント
リの一次ポインタを上記取って代えられるファイル情報
エントリの一次ポインタに等しくセットする手段を更に
備えた請求項32に記載のコンピュータファイル記憶シ
ステム。 - 【請求項34】 コンピュータメモリデバイスに記憶さ
れたデータを新たなデータで更新する方法であって、上
記メモリデバイスはデータの記録を含んでおり、各記録
は最初に所定値を有する二次ポインタを備えており、上
記方法は、 更新されるべきデータを含む記録を探索し、 新たなデータを含むように記録を割り当て、 その割り当てられた記録に新たなデータを書き込み、そ
して上記探索された記録における二次ポインタを上記割
り当てられた記録を指すようにセットし、その割り当て
られた記録の新たなデータが上記探索された記録におけ
るデータの更新であることを指示するようにする、とい
う段階を備えたことを特徴とする方法。 - 【請求項35】 二次ポインタをセットする上記段階
は、二次ポインタが所定値から変化したことを示すよう
に上記探索された記録にフラグをセットすることを含む
請求項34に記載の方法。 - 【請求項36】 1つ以上の論理ブロックを有する一回
書き込み多数回読み取りのメモリデバイスを備えたコン
ピュータシステム内でエラーを回復するための方法にお
いて、 (a)各ブロックごとにデータ領域を画成し、データ領
域は、データを記憶するためのデータ領域エリアに論理
的に分割され、 (b)各ブロックごとにブロック構造体を画成し、ブロ
ック構造体はヘッダと割り当てテーブルとを有し、ヘッ
ダはブロックに特定の情報を含み、割り当てテーブル
は、データ領域エリアに対応するエントリを有すると共
に、対応するデータ領域エリアに関連した情報を含んで
おり、 (c)割り当てテーブルエントリを割り当て、 (d)データを記憶するためのデータ領域エリアを割り
当て、 (e)その割り当てられたデータ領域エリアに関連した
データをその割り当てられた割り当てテーブルエントリ
に書き込み、 (f)その割り当てられたデータ領域エリアにデータを
書き込み、 (g)データ領域エリアに書き込みをしながらエラーを
検出し、そして (h)エラーを検出した際には、割り当てテーブルエン
トリを割り当て解除状態にセットし、そしてデータ領域
エリアにデータを書き込む間にエラーが検出されなくな
るまで上記段階(c)、(d)、(e)及び(f)を繰
り返すことを特徴とする方法。 - 【請求項37】 1つ以上の論理ブロックを有する一回
書き込み多数回読み取りのメモリデバイスを備えたコン
ピュータシステム内でエラーを回復するための方法にお
いて、 (a)各ブロックごとにデータ領域を画成し、データ領
域は、データを記憶するためのデータ領域エリアに論理
的に分割され、 (b)各ブロックごとにブロック構造体を画成し、ブロ
ック構造体はヘッダと割り当てテーブルとを有し、ヘッ
ダはブロックに特定の情報を含み、割り当てテーブル
は、データ領域エリアに対応するエントリを有すると共
に、対応するデータ領域エリアに関連した情報を含んで
おり、 (c)割り当てテーブルエントリを割り当て、 (d)データを記憶するためのデータ領域エリアを割り
当て、 (e)その割り当てられたデータ領域エリアに関連した
データをその割り当てられた割り当てテーブルエントリ
に書き込み、 (f)その割り当てられたデータ領域エリアにデータを
書き込み、 (g)その割り当てられた割り当てテーブルエントリを
割り当て状態にセットし、 (h)その割り当てられた割り当てテーブルエントリを
割り当て状態にセットしながらエラーを検出し、そして (i)エラーを検出した際には、割り当てテーブルエン
トリをゼロ状態にセットし、そして割り当てられた割り
当てテーブルエントリにデータを書き込む間にエラーが
検出されなくなるまで上記段階(c)、(e)及び
(g)を繰り返すことを特徴とする方法。 - 【請求項38】 消去可能な1つ以上の論理ブロックを
有する一回書き込み多数回読み取りのメモリデバイスを
備えたコンピュータシステム内でエラーを回復するため
の方法において、 上記ブロックに対してブロックの状態を含むブロックヘ
ッダデータ構造体を画成し、 そのブロックヘッダデータ構造体にデータを書き込み、
そしてそのブロックヘッダデータ構造体にデータを書き
込む間にエラーが検出された際に、そのブロックを消去
状態のための待ち行列にセットし、これにより、そのブ
ロックは、それが消去されるまでデータの記憶に使用さ
れないようにすることを特徴とする方法。 - 【請求項39】 消去可能な1つ以上の論理ブロックを
有する一回書き込み多数回読み取りのメモリデバイスを
備えたコンピュータシステム内でエラーを回復するため
の方法において、 上記ブロックに対してブロックの状態を含むブロックヘ
ッダデータ構造体を画成し、 上記ブロックを消去し、そしてそのブロックの消去中に
エラーが検出された際に、そのブロックをリタイア状態
にセットし、これにより、そのブロックは、データの記
憶に使用されないようにすることを特徴とする方法。 - 【請求項40】 コンピュータメモリマネージャにおい
て指定のメモリデバイスがブロック消去可能でないこと
を指定する方法であって、上記コンピュータメモリマネ
ージャはブロック消去可能な一回書き込み多数回読み取
りのメモリデバイスをマネージするものであり、上記メ
モリマネージャはスペアブロックのカウントを維持し、
更に、上記メモリマネージャは、データをスペアブロッ
クにコピーし、指定されたブロックを消去しそしてその
指定されたブロックをスペアブロックとなるようセット
することによってその指定されたブロック内のデータを
圧縮するものであり、上記方法は、その指定のメモリブ
ロックにおいてスペアブロックが使用できないために上
記メモリマネージャがブロック内のデータを圧縮しない
ようにスペアブロックのカウントを0にセットする段階
を備えたことを特徴とする方法。 - 【請求項41】 コンピュータメモリマネージャにおい
て指定の一回書き込み多数回読み取りのメモリデバイス
がブロック消去可能でないことを指定する方法であっ
て、上記コンピュータメモリマネージャはブロック消去
可能な一回書き込み多数回読み取りのメモリデバイスを
マネージするものであり、更に、上記メモリマネージャ
は、ブロック内のデータを圧縮するのに使用するための
スペアブロックのカウントを維持し、上記方法は、メモ
リマネージャによりブロックの消去を抑制するようにス
ペアブロックの上記カウントを0にセットする段階を備
えたことを特徴とする方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/828,763 US6256642B1 (en) | 1992-01-29 | 1992-01-29 | Method and system for file system management using a flash-erasable, programmable, read-only memory |
| US07/828763 | 1992-01-29 |
Related Child Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2006130478A Division JP4365385B2 (ja) | 1992-01-29 | 2006-05-09 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2006130477A Division JP2006209807A (ja) | 1992-01-29 | 2006-05-09 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH07191892A true JPH07191892A (ja) | 1995-07-28 |
| JP3825479B2 JP3825479B2 (ja) | 2006-09-27 |
Family
ID=25252682
Family Applications (10)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP01398093A Expired - Lifetime JP3825479B2 (ja) | 1992-01-29 | 1993-01-29 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2006130477A Pending JP2006209807A (ja) | 1992-01-29 | 2006-05-09 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2006130478A Expired - Lifetime JP4365385B2 (ja) | 1992-01-29 | 2006-05-09 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2008214841A Expired - Lifetime JP4485586B2 (ja) | 1992-01-29 | 2008-08-25 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2009081080A Expired - Lifetime JP4858789B2 (ja) | 1992-01-29 | 2009-03-30 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2009273034A Expired - Lifetime JP4608588B2 (ja) | 1992-01-29 | 2009-12-01 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2009273039A Expired - Lifetime JP4608589B2 (ja) | 1992-01-29 | 2009-12-01 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2009273033A Expired - Lifetime JP4608587B2 (ja) | 1992-01-29 | 2009-12-01 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2011012551A Expired - Lifetime JP4836217B2 (ja) | 1992-01-29 | 2011-01-25 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2011173783A Pending JP2011222051A (ja) | 1992-01-29 | 2011-08-09 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
Family Applications After (9)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2006130477A Pending JP2006209807A (ja) | 1992-01-29 | 2006-05-09 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2006130478A Expired - Lifetime JP4365385B2 (ja) | 1992-01-29 | 2006-05-09 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2008214841A Expired - Lifetime JP4485586B2 (ja) | 1992-01-29 | 2008-08-25 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2009081080A Expired - Lifetime JP4858789B2 (ja) | 1992-01-29 | 2009-03-30 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2009273034A Expired - Lifetime JP4608588B2 (ja) | 1992-01-29 | 2009-12-01 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2009273039A Expired - Lifetime JP4608589B2 (ja) | 1992-01-29 | 2009-12-01 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2009273033A Expired - Lifetime JP4608587B2 (ja) | 1992-01-29 | 2009-12-01 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2011012551A Expired - Lifetime JP4836217B2 (ja) | 1992-01-29 | 2011-01-25 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
| JP2011173783A Pending JP2011222051A (ja) | 1992-01-29 | 2011-08-09 | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム |
Country Status (5)
| Country | Link |
|---|---|
| US (3) | US6256642B1 (ja) |
| EP (1) | EP0557736B1 (ja) |
| JP (10) | JP3825479B2 (ja) |
| CA (3) | CA2325812C (ja) |
| DE (1) | DE69333906T2 (ja) |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH06124596A (ja) * | 1991-11-28 | 1994-05-06 | Hitachi Ltd | フラッシュメモリを使用した記憶装置 |
| JPH11110263A (ja) * | 1997-09-30 | 1999-04-23 | Sony Corp | 記憶装置、データ処理装置及びデータ処理方法 |
| JP2000148569A (ja) * | 1998-11-17 | 2000-05-30 | Matsushita Electric Ind Co Ltd | 記録再生装置 |
| JP2000163302A (ja) * | 1997-09-30 | 2000-06-16 | Sony Corp | 外部記憶装置、デ―タ処理装置及びデ―タ処理方法 |
| US6189081B1 (en) | 1996-05-24 | 2001-02-13 | Nec Corporation | Non-volatile semiconductor storage with memory requirement and availability comparison means and method |
| JP2003203016A (ja) * | 1991-11-28 | 2003-07-18 | Hitachi Ltd | 記憶装置 |
| US7610442B2 (en) | 2002-12-24 | 2009-10-27 | Lg Electronics Inc. | Dual journaling store method and storage medium thereof |
| JP2010003150A (ja) * | 2008-06-20 | 2010-01-07 | Nec Personal Products Co Ltd | メモリコントローラおよびフラッシュメモリのデータ管理方法 |
Families Citing this family (211)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2251324B (en) * | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
| GB2251323B (en) * | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
| US5357475A (en) * | 1992-10-30 | 1994-10-18 | Intel Corporation | Method for detaching sectors in a flash EEPROM memory array |
| US5369616A (en) * | 1992-10-30 | 1994-11-29 | Intel Corporation | Method for assuring that an erase process for a memory array has been properly completed |
| US5341330A (en) * | 1992-10-30 | 1994-08-23 | Intel Corporation | Method for writing to a flash memory array during erase suspend intervals |
| US5822781A (en) * | 1992-10-30 | 1998-10-13 | Intel Corporation | Sector-based storage device emulator having variable-sized sector |
| JP3641280B2 (ja) * | 1992-10-30 | 2005-04-20 | インテル・コーポレーション | フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 |
| US5452311A (en) * | 1992-10-30 | 1995-09-19 | Intel Corporation | Method and apparatus to improve read reliability in semiconductor memories |
| US5416782A (en) * | 1992-10-30 | 1995-05-16 | Intel Corporation | Method and apparatus for improving data failure rate testing for memory arrays |
| US5740395A (en) * | 1992-10-30 | 1998-04-14 | Intel Corporation | Method and apparatus for cleaning up a solid state memory disk storing floating sector data |
| US5473753A (en) * | 1992-10-30 | 1995-12-05 | Intel Corporation | Method of managing defects in flash disk memories |
| US5448577A (en) * | 1992-10-30 | 1995-09-05 | Intel Corporation | Method for reliably storing non-data fields in a flash EEPROM memory array |
| US5479633A (en) * | 1992-10-30 | 1995-12-26 | Intel Corporation | Method of controlling clean-up of a solid state memory disk storing floating sector data |
| US5337275A (en) * | 1992-10-30 | 1994-08-09 | Intel Corporation | Method for releasing space in flash EEPROM memory array to allow the storage of compressed data |
| US5535369A (en) * | 1992-10-30 | 1996-07-09 | Intel Corporation | Method for allocating memory in a solid state memory disk |
| US5471604A (en) * | 1992-10-30 | 1995-11-28 | Intel Corporation | Method for locating sector data in a memory disk by examining a plurality of headers near an initial pointer |
| US5603036A (en) * | 1993-02-19 | 1997-02-11 | Intel Corporation | Power management system for components used in battery powered applications |
| US5835933A (en) * | 1993-02-19 | 1998-11-10 | Intel Corporation | Method and apparatus for updating flash memory resident firmware through a standard disk drive interface |
| US5740349A (en) * | 1993-02-19 | 1998-04-14 | Intel Corporation | Method and apparatus for reliably storing defect information in flash disk memories |
| US5581723A (en) * | 1993-02-19 | 1996-12-03 | Intel Corporation | Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array |
| US5455800A (en) * | 1993-02-19 | 1995-10-03 | Intel Corporation | Apparatus and a method for improving the program and erase performance of a flash EEPROM memory array |
| US5586285A (en) * | 1993-02-19 | 1996-12-17 | Intel Corporation | Method and circuitry for increasing reserve memory in a solid state memory disk |
| US5640529A (en) * | 1993-07-29 | 1997-06-17 | Intel Corporation | Method and system for performing clean-up of a solid state disk during host command execution |
| US5490264A (en) * | 1993-09-30 | 1996-02-06 | Intel Corporation | Generally-diagonal mapping of address space for row/column organizer memories |
| SG49632A1 (en) * | 1993-10-26 | 1998-06-15 | Intel Corp | Programmable code store circuitry for a nonvolatile semiconductor memory device |
| US5765175A (en) * | 1994-08-26 | 1998-06-09 | Intel Corporation | System and method for removing deleted entries in file systems based on write-once or erase-slowly media |
| US5809558A (en) * | 1994-09-29 | 1998-09-15 | Intel Corporation | Method and data storage system for storing data in blocks without file reallocation before erasure |
| US5754817A (en) * | 1994-09-29 | 1998-05-19 | Intel Corporation | Execution in place of a file stored non-contiguously in a non-volatile memory |
| JPH08137634A (ja) * | 1994-11-09 | 1996-05-31 | Mitsubishi Electric Corp | フラッシュディスクカード |
| US5563828A (en) * | 1994-12-27 | 1996-10-08 | Intel Corporation | Method and apparatus for searching for data in multi-bit flash EEPROM memory arrays |
| JP2734391B2 (ja) * | 1995-01-18 | 1998-03-30 | 日本電気株式会社 | 不揮発性メモリのファイル管理装置 |
| US5724592A (en) * | 1995-03-31 | 1998-03-03 | Intel Corporation | Method and apparatus for managing active power consumption in a microprocessor controlled storage device |
| EP1635579A2 (en) * | 1995-09-12 | 2006-03-15 | Matsushita Electric Industrial Co., Ltd. | Coding method, coding apparatus, wavelet transform apparatus, and wavelet reverse transform apparatus |
| US6014724A (en) * | 1995-10-27 | 2000-01-11 | Scm Microsystems (U.S.) Inc. | Flash translation layer block indication map revision system and method |
| US5860082A (en) * | 1996-03-28 | 1999-01-12 | Datalight, Inc. | Method and apparatus for allocating storage in a flash memory |
| US5845296A (en) * | 1996-07-10 | 1998-12-01 | Oracle Corporation | Method and apparatus for implementing segmented arrays in a database |
| KR0185954B1 (ko) * | 1996-09-30 | 1999-05-15 | 삼성전자주식회사 | 휴대형 단말기기의 메모리 관리방법 |
| US5832493A (en) * | 1997-04-24 | 1998-11-03 | Trimble Navigation Limited | Flash file management system |
| US5983239A (en) * | 1997-10-29 | 1999-11-09 | International Business Machines Corporation | Storage management system with file aggregation supporting multiple aggregated file counterparts |
| US6021415A (en) * | 1997-10-29 | 2000-02-01 | International Business Machines Corporation | Storage management system with file aggregation and space reclamation within aggregated files |
| US6098074A (en) * | 1997-10-29 | 2000-08-01 | International Business Machines Corporation | Storage management system with file aggregation |
| US6094585A (en) * | 1997-11-14 | 2000-07-25 | Lucent Technologies Inc. | CDMA forward link power overload control in a base station |
| US6092163A (en) | 1998-12-04 | 2000-07-18 | W. Quinn Associates, Inc. | Pageable filter driver for prospective implementation of disk space quotas |
| US6038636A (en) * | 1998-04-27 | 2000-03-14 | Lexmark International, Inc. | Method and apparatus for reclaiming and defragmenting a flash memory device |
| DE19819205A1 (de) * | 1998-04-29 | 1999-11-04 | Siemens Ag | Datenhaltungssystem für persistente Daten |
| US7383294B1 (en) | 1998-06-30 | 2008-06-03 | Emc Corporation | System for determining the mapping of logical objects in a data storage system |
| US6542909B1 (en) * | 1998-06-30 | 2003-04-01 | Emc Corporation | System for determining mapping of logical objects in a computer system |
| US6883063B2 (en) * | 1998-06-30 | 2005-04-19 | Emc Corporation | Method and apparatus for initializing logical objects in a data storage system |
| US6393540B1 (en) | 1998-06-30 | 2002-05-21 | Emc Corporation | Moving a logical object from a set of source locations to a set of destination locations using a single command |
| WO2000050997A1 (en) | 1999-02-22 | 2000-08-31 | Hitachi, Ltd. | Memory card, method for allotting logical address, and method for writing data |
| US6742078B1 (en) * | 1999-10-05 | 2004-05-25 | Feiya Technology Corp. | Management, data link structure and calculating method for flash memory |
| ATE390788T1 (de) | 1999-10-14 | 2008-04-15 | Bluearc Uk Ltd | Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen |
| DE19960114A1 (de) * | 1999-12-08 | 2001-06-13 | Heidenhain Gmbh Dr Johannes | Verfahren zum Speichern von Daten in einer Datei eines Datenspeichersystems |
| US7051054B1 (en) * | 2000-05-30 | 2006-05-23 | Dphi Acquisitions, Inc. | Method and apparatus for emulating read/write file system on a write-once storage disk |
| US6704835B1 (en) | 2000-09-26 | 2004-03-09 | Intel Corporation | Posted write-through cache for flash memory |
| US7013455B1 (en) * | 2000-10-19 | 2006-03-14 | International Business Machines Corporation | System for automatically altering environment variable to run proper executable file by removing references to all except one duplicate file in the path sequence |
| KR20020032803A (ko) * | 2000-10-27 | 2002-05-04 | 구자홍 | 스트리밍 서비스를 위한 파일 구조 |
| JP4401565B2 (ja) * | 2000-12-12 | 2010-01-20 | キヤノン株式会社 | 記録装置及び管理方法 |
| US6740603B2 (en) * | 2001-02-01 | 2004-05-25 | Texas Instruments Incorporated | Control of Vmin transient voltage drift by maintaining a temperature less than or equal to 350° C. after the protective overcoat level |
| JP2003196142A (ja) * | 2001-12-25 | 2003-07-11 | Sony Corp | ライトワンス型メモリ装置及びファイル管理方法 |
| PL351784A1 (en) * | 2002-01-21 | 2003-07-28 | Advanced Digital Broadcast Ltd | System for of storing data and method of recording them in that system |
| US7533214B2 (en) * | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
| US7010662B2 (en) * | 2002-02-27 | 2006-03-07 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
| US6901499B2 (en) * | 2002-02-27 | 2005-05-31 | Microsoft Corp. | System and method for tracking data stored in a flash memory device |
| US7085879B2 (en) * | 2002-02-27 | 2006-08-01 | Microsoft Corporation | Dynamic data structures for tracking data stored in a flash memory device |
| US7072910B2 (en) * | 2002-03-22 | 2006-07-04 | Network Appliance, Inc. | File folding technique |
| US7155464B2 (en) * | 2002-03-29 | 2006-12-26 | Panasas, Inc. | Recovering and checking large file systems in an object-based data storage system |
| US6895464B2 (en) * | 2002-06-03 | 2005-05-17 | Honeywell International Inc. | Flash memory management system and method utilizing multiple block list windows |
| US6968439B2 (en) | 2002-08-29 | 2005-11-22 | Micron Technology, Inc. | Single segment data object management |
| US7130979B2 (en) * | 2002-08-29 | 2006-10-31 | Micron Technology, Inc. | Dynamic volume management |
| US6970969B2 (en) * | 2002-08-29 | 2005-11-29 | Micron Technology, Inc. | Multiple segment data object management |
| US7108605B2 (en) * | 2002-09-30 | 2006-09-19 | Igt | EPROM file system in a gaming apparatus |
| US8041735B1 (en) | 2002-11-01 | 2011-10-18 | Bluearc Uk Limited | Distributed file system and method |
| US7457822B1 (en) | 2002-11-01 | 2008-11-25 | Bluearc Uk Limited | Apparatus and method for hardware-based file system |
| US7093101B2 (en) * | 2002-11-21 | 2006-08-15 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
| US7032090B2 (en) * | 2003-04-08 | 2006-04-18 | International Business Machines Corporation | Method, system, and apparatus for releasing storage in a fast replication environment |
| CA2426619A1 (en) * | 2003-04-25 | 2004-10-25 | Ibm Canada Limited - Ibm Canada Limitee | Defensive heap memory management |
| US7827375B2 (en) * | 2003-04-30 | 2010-11-02 | International Business Machines Corporation | Defensive heap memory management |
| US7069402B2 (en) * | 2003-06-02 | 2006-06-27 | International Business Machines Corporation | Host-independent incremental backup method, apparatus, and system |
| CN100390817C (zh) * | 2003-06-10 | 2008-05-28 | 大唐微电子技术有限公司 | 动态逻辑分区并控制访问权限的ic智能卡及其实现方法 |
| DE10332831B4 (de) * | 2003-07-18 | 2009-07-30 | Siemens Ag | Verfahren zur Darstellung einer Dateistruktur |
| EP1659497A4 (en) * | 2003-08-29 | 2008-01-23 | Matsushita Electric Industrial Co Ltd | NON-VOLATILE MEMORY BLOCK AND WRITING PROCESS THEREFOR |
| US20050086430A1 (en) * | 2003-10-17 | 2005-04-21 | International Business Machines Corporation | Method, system, and program for designating a storage group preference order |
| US7089349B2 (en) * | 2003-10-28 | 2006-08-08 | Sandisk Corporation | Internal maintenance schedule request for non-volatile memory system |
| US7073149B2 (en) * | 2004-03-03 | 2006-07-04 | Xilinx, Inc. | System for representing the logical and physical information of an integrated circuit |
| US7120892B1 (en) | 2004-03-03 | 2006-10-10 | Xilinx, Inc. | Process for adjusting data structures of a floorplan upon changes occurring |
| US7437695B1 (en) | 2004-03-03 | 2008-10-14 | Xilinx, Inc. | Method of memory and run-time efficient hierarchical timing analysis in programmable logic devices |
| US20060026377A1 (en) * | 2004-07-27 | 2006-02-02 | Somsubhra Sikdar | Lookup interface for array machine context data memory |
| US9171100B2 (en) * | 2004-09-22 | 2015-10-27 | Primo M. Pettovello | MTree an XPath multi-axis structure threaded index |
| US9639554B2 (en) * | 2004-12-17 | 2017-05-02 | Microsoft Technology Licensing, Llc | Extensible file system |
| US8606830B2 (en) | 2004-12-17 | 2013-12-10 | Microsoft Corporation | Contiguous file allocation in an extensible file system |
| US8321439B2 (en) | 2004-12-17 | 2012-11-27 | Microsoft Corporation | Quick filename lookup using name hash |
| US7873596B2 (en) * | 2006-05-23 | 2011-01-18 | Microsoft Corporation | Extending cluster allocations in an extensible file system |
| US7457909B2 (en) * | 2005-01-14 | 2008-11-25 | Angelo Di Sena | Controlling operation of flash memories |
| US20060184719A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct data file storage implementation techniques in flash memories |
| US20060184718A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct file data programming and deletion in flash memories |
| US7877539B2 (en) * | 2005-02-16 | 2011-01-25 | Sandisk Corporation | Direct data file storage in flash memories |
| US9104315B2 (en) * | 2005-02-04 | 2015-08-11 | Sandisk Technologies Inc. | Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage |
| US7698704B2 (en) * | 2005-02-17 | 2010-04-13 | International Business Machines Corporation | Method for installing operating system on remote storage: flash deploy and install zone |
| DE602005003778T2 (de) * | 2005-03-08 | 2008-04-30 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Wiederbeschreiben eines Sektors mit Bootloader-Software in einem sektor-löschbaren nichtflüchtigen Halbleiterspeicher |
| WO2006133597A1 (en) * | 2005-06-15 | 2006-12-21 | Intel Corporation | Using transacted writes and caching mechanism to improve write performance in multi-level cell flash memoty |
| US7552271B2 (en) | 2005-08-03 | 2009-06-23 | Sandisk Corporation | Nonvolatile memory with block management |
| US7949845B2 (en) | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
| US7669003B2 (en) * | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
| US7984084B2 (en) | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
| US7558906B2 (en) | 2005-08-03 | 2009-07-07 | Sandisk Corporation | Methods of managing blocks in nonvolatile memory |
| US7627733B2 (en) * | 2005-08-03 | 2009-12-01 | Sandisk Corporation | Method and system for dual mode access for storage devices |
| US7480766B2 (en) * | 2005-08-03 | 2009-01-20 | Sandisk Corporation | Interfacing systems operating through a logical address space and on a direct data file basis |
| US7529905B2 (en) * | 2005-10-13 | 2009-05-05 | Sandisk Corporation | Method of storing transformed units of data in a memory system having fixed sized storage blocks |
| US7814262B2 (en) * | 2005-10-13 | 2010-10-12 | Sandisk Corporation | Memory system storing transformed units of data in fixed sized storage blocks |
| US7664742B2 (en) | 2005-11-14 | 2010-02-16 | Pettovello Primo M | Index data structure for a peer-to-peer network |
| US7877540B2 (en) * | 2005-12-13 | 2011-01-25 | Sandisk Corporation | Logically-addressed file storage methods |
| US7747837B2 (en) * | 2005-12-21 | 2010-06-29 | Sandisk Corporation | Method and system for accessing non-volatile storage devices |
| US7793068B2 (en) * | 2005-12-21 | 2010-09-07 | Sandisk Corporation | Dual mode access for non-volatile storage devices |
| US7769978B2 (en) * | 2005-12-21 | 2010-08-03 | Sandisk Corporation | Method and system for accessing non-volatile storage devices |
| US7831783B2 (en) * | 2005-12-22 | 2010-11-09 | Honeywell International Inc. | Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems |
| US20070174309A1 (en) * | 2006-01-18 | 2007-07-26 | Pettovello Primo M | Mtreeini: intermediate nodes and indexes |
| US7783686B2 (en) * | 2006-06-16 | 2010-08-24 | Microsoft Corporation | Application program interface to manage media files |
| US7603387B2 (en) * | 2006-06-16 | 2009-10-13 | Microsoft Corporation | Techniques to manage media files |
| US20080077590A1 (en) * | 2006-09-22 | 2008-03-27 | Honeywell International Inc. | Efficient journaling and recovery mechanism for embedded flash file systems |
| US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
| US9734086B2 (en) | 2006-12-06 | 2017-08-15 | Sandisk Technologies Llc | Apparatus, system, and method for a device shared between multiple independent hosts |
| US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
| US9063181B2 (en) * | 2006-12-29 | 2015-06-23 | Electro Industries/Gauge Tech | Memory management for an intelligent electronic device |
| US9885739B2 (en) | 2006-12-29 | 2018-02-06 | Electro Industries/Gauge Tech | Intelligent electronic device capable of operating as a USB master device and a USB slave device |
| US8285757B2 (en) * | 2007-01-31 | 2012-10-09 | Agency For Science, Technology And Research | File system for a storage device, methods of allocating storage, searching data and optimising performance of a storage device file system |
| US7991942B2 (en) * | 2007-05-09 | 2011-08-02 | Stmicroelectronics S.R.L. | Memory block compaction method, circuit, and system in storage devices based on flash memories |
| US7765426B2 (en) | 2007-06-07 | 2010-07-27 | Micron Technology, Inc. | Emerging bad block detection |
| JP2009003784A (ja) * | 2007-06-22 | 2009-01-08 | Toshiba Corp | 不揮発性メモリの制御装置及び制御方法及び記憶装置 |
| US8082387B2 (en) * | 2007-10-29 | 2011-12-20 | Micron Technology, Inc. | Methods, systems, and devices for management of a memory system |
| US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
| US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
| CN101334797B (zh) * | 2008-08-04 | 2010-06-02 | 中兴通讯股份有限公司 | 一种分布式文件系统及其数据块一致性管理的方法 |
| US8347055B2 (en) * | 2009-06-30 | 2013-01-01 | Incard S.A. | Method to defrag a memory of an IC card |
| US20110004720A1 (en) * | 2009-07-02 | 2011-01-06 | Chun-Ying Chiang | Method and apparatus for performing full range random writing on a non-volatile memory |
| US8588364B2 (en) | 2009-08-19 | 2013-11-19 | J. Morita Manufacturing Corporation | Medical X-ray apparatus |
| KR101717644B1 (ko) * | 2009-09-08 | 2017-03-27 | 샌디스크 테크놀로지스 엘엘씨 | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 |
| US8429436B2 (en) | 2009-09-09 | 2013-04-23 | Fusion-Io, Inc. | Apparatus, system, and method for power reduction in a storage device |
| US9223514B2 (en) | 2009-09-09 | 2015-12-29 | SanDisk Technologies, Inc. | Erase suspend/resume for memory |
| US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
| WO2011031903A2 (en) | 2009-09-09 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for allocating storage |
| US8631028B1 (en) | 2009-10-29 | 2014-01-14 | Primo M. Pettovello | XPath query processing improvements |
| USD712289S1 (en) | 2009-12-01 | 2014-09-02 | Electro Industries/Gauge Tech | Electronic meter |
| US8572311B1 (en) * | 2010-01-11 | 2013-10-29 | Apple Inc. | Redundant data storage in multi-die memory systems |
| US20110203944A1 (en) * | 2010-02-20 | 2011-08-25 | Todd Edward Singer | Combination food storage bag and container with soaker pad |
| JP5407945B2 (ja) | 2010-03-05 | 2014-02-05 | 株式会社デンソー | 充電制御システム |
| US9396104B1 (en) | 2010-03-22 | 2016-07-19 | Seagate Technology, Llc | Accessing compressed data of varying-sized quanta in non-volatile memory |
| WO2011143628A2 (en) | 2010-05-13 | 2011-11-17 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
| EP2598996B1 (en) | 2010-07-28 | 2019-07-10 | SanDisk Technologies LLC | Apparatus, system, and method for conditional and atomic storage operations |
| US8725934B2 (en) | 2011-12-22 | 2014-05-13 | Fusion-Io, Inc. | Methods and appratuses for atomic storage operations |
| EA030886B1 (ru) | 2010-08-17 | 2018-10-31 | Амбркс, Инк. | Модифицированные полипептиды релаксина, содержащие некодируемую в природе аминокислоту, связанную с полимером, и их применение |
| US8984216B2 (en) | 2010-09-09 | 2015-03-17 | Fusion-Io, Llc | Apparatus, system, and method for managing lifetime of a storage device |
| US9141526B2 (en) * | 2010-09-16 | 2015-09-22 | International Business Machines Corporation | Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit |
| CN103262054B (zh) | 2010-12-13 | 2015-11-25 | 桑迪士克科技股份有限公司 | 用于自动提交存储器的装置、系统和方法 |
| US9218278B2 (en) | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
| US10817421B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
| US10817502B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent memory management |
| US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
| US9047178B2 (en) | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
| US20120239860A1 (en) | 2010-12-17 | 2012-09-20 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
| US9213594B2 (en) | 2011-01-19 | 2015-12-15 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing out-of-service conditions |
| JP5917163B2 (ja) * | 2011-01-27 | 2016-05-11 | キヤノン株式会社 | 情報処理装置、その制御方法及びプログラム並びに記憶媒体 |
| US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
| US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
| US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
| WO2012116369A2 (en) | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
| US8966191B2 (en) | 2011-03-18 | 2015-02-24 | Fusion-Io, Inc. | Logical interface for contextual storage |
| US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
| JP5451682B2 (ja) * | 2011-05-20 | 2014-03-26 | 株式会社東海理化電機製作所 | フラッシュメモリ装置 |
| KR20130043445A (ko) * | 2011-10-20 | 2013-04-30 | 삼성전자주식회사 | 인터페이스 관리 방법 및 이를 이용한 저장 장치에서의 매핑 처리 방법 |
| US9274937B2 (en) | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
| US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
| US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
| US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
| US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
| US10346095B2 (en) | 2012-08-31 | 2019-07-09 | Sandisk Technologies, Llc | Systems, methods, and interfaces for adaptive cache persistence |
| US10509776B2 (en) | 2012-09-24 | 2019-12-17 | Sandisk Technologies Llc | Time sequence data management |
| US10318495B2 (en) | 2012-09-24 | 2019-06-11 | Sandisk Technologies Llc | Snapshots for a non-volatile device |
| KR102011135B1 (ko) | 2012-12-11 | 2019-08-14 | 삼성전자주식회사 | 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법 |
| US8812744B1 (en) | 2013-03-14 | 2014-08-19 | Microsoft Corporation | Assigning priorities to data for hybrid drives |
| US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
| JP2014206967A (ja) * | 2013-03-18 | 2014-10-30 | 株式会社Genusion | 記憶装置 |
| US10558561B2 (en) | 2013-04-16 | 2020-02-11 | Sandisk Technologies Llc | Systems and methods for storage metadata management |
| US10102144B2 (en) | 2013-04-16 | 2018-10-16 | Sandisk Technologies Llc | Systems, methods and interfaces for data virtualization |
| US9626126B2 (en) | 2013-04-24 | 2017-04-18 | Microsoft Technology Licensing, Llc | Power saving mode hybrid drive access management |
| US9946495B2 (en) | 2013-04-25 | 2018-04-17 | Microsoft Technology Licensing, Llc | Dirty data management for hybrid drives |
| US9842128B2 (en) | 2013-08-01 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for atomic storage operations |
| US10019320B2 (en) | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for distributed atomic storage operations |
| US10073630B2 (en) | 2013-11-08 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for log coordination |
| US9547553B1 (en) | 2014-03-10 | 2017-01-17 | Parallel Machines Ltd. | Data resiliency in a shared memory pool |
| US9781027B1 (en) | 2014-04-06 | 2017-10-03 | Parallel Machines Ltd. | Systems and methods to communicate with external destinations via a memory network |
| US9477412B1 (en) | 2014-12-09 | 2016-10-25 | Parallel Machines Ltd. | Systems and methods for automatically aggregating write requests |
| US9690713B1 (en) | 2014-04-22 | 2017-06-27 | Parallel Machines Ltd. | Systems and methods for effectively interacting with a flash memory |
| US9927470B2 (en) | 2014-05-22 | 2018-03-27 | Electro Industries/Gauge Tech | Intelligent electronic device having a memory structure for preventing data loss upon power loss |
| US9632936B1 (en) | 2014-12-09 | 2017-04-25 | Parallel Machines Ltd. | Two-tier distributed memory |
| US9639407B1 (en) | 2014-12-09 | 2017-05-02 | Parallel Machines Ltd. | Systems and methods for efficiently implementing functional commands in a data processing system |
| US9639473B1 (en) | 2014-12-09 | 2017-05-02 | Parallel Machines Ltd. | Utilizing a cache mechanism by copying a data set from a cache-disabled memory location to a cache-enabled memory location |
| US9781225B1 (en) | 2014-12-09 | 2017-10-03 | Parallel Machines Ltd. | Systems and methods for cache streams |
| US9753873B1 (en) | 2014-12-09 | 2017-09-05 | Parallel Machines Ltd. | Systems and methods for key-value transactions |
| US9946607B2 (en) | 2015-03-04 | 2018-04-17 | Sandisk Technologies Llc | Systems and methods for storage error management |
| US10009438B2 (en) | 2015-05-20 | 2018-06-26 | Sandisk Technologies Llc | Transaction log acceleration |
| US10528287B2 (en) * | 2015-10-09 | 2020-01-07 | Sony Corporation | Memory, memory controller, storage apparatus, information processing system, and control method for tracking erase count and rewrite cycles of memory pages |
| US10162552B2 (en) * | 2016-03-31 | 2018-12-25 | EMC IP Holding Company LLC | System and method for quasi-compacting garbage collection |
| PE20191716A1 (es) | 2017-02-08 | 2019-12-05 | Bristol Myers Squibb Co | Polipeptidos de relaxina modificada que comprenden un mejorador farmacocinetico y sus usos |
| KR20190001300A (ko) * | 2017-06-27 | 2019-01-04 | 에스케이하이닉스 주식회사 | 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법 |
| US12580024B2 (en) | 2017-10-31 | 2026-03-17 | Pure Storage, Inc. | Optimizing allocation unit sizes for heterogeneous storage systems |
| USD939988S1 (en) | 2019-09-26 | 2022-01-04 | Electro Industries/Gauge Tech | Electronic power meter |
| CN111522507B (zh) * | 2020-04-14 | 2021-10-01 | 中山大学 | 一种低延迟的文件系统地址空间管理方法、系统及介质 |
| KR102916003B1 (ko) * | 2023-02-21 | 2026-01-23 | 고려대학교산학협력단 | Ubifs로 포맷된 로우 플래시 메모리의 삭제된 데이터를 복구하는 방법 및 이를 위한 장치 |
| US12282671B2 (en) | 2023-05-05 | 2025-04-22 | The Boeing Company | Hardware file system |
| US12561205B2 (en) | 2023-12-21 | 2026-02-24 | Taiwan Semiconductor Manufacturing Company, Ltd. | Bit error detection in a compute-in-memory system, method of operating same, and method of manufacturing same |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63129586A (ja) * | 1986-11-19 | 1988-06-01 | Matsushita Electric Ind Co Ltd | 情報記憶装置 |
| JPS63233448A (ja) * | 1986-05-29 | 1988-09-29 | 松下電器産業株式会社 | 記憶領域割付方法及びその装置 |
| JPH0325798A (ja) * | 1989-06-23 | 1991-02-04 | Ricoh Co Ltd | Eepromを使用した記憶装置 |
| EP0439920A2 (en) * | 1990-01-31 | 1991-08-07 | Hewlett-Packard Company | System and method for memory management in a microcomputer |
| JPH0527924A (ja) * | 1991-07-12 | 1993-02-05 | Internatl Business Mach Corp <Ibm> | 半導体メモリを用いた外部記憶システム及びその制御方法 |
Family Cites Families (36)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4435752A (en) * | 1973-11-07 | 1984-03-06 | Texas Instruments Incorporated | Allocation of rotating memory device storage locations |
| US4408273A (en) | 1980-05-27 | 1983-10-04 | International Business Machines Corporation | Method and means for cataloging data sets using dual keyed data sets and direct pointers |
| DE3173549D1 (en) | 1981-03-16 | 1986-03-06 | Ibm | Improvements to digital data processing apparatus |
| US4704678A (en) | 1982-11-26 | 1987-11-03 | Inmos Limited | Function set for a microcomputer |
| US4507752A (en) | 1983-02-22 | 1985-03-26 | International Business Machines Corporation | In-place index compression |
| US4630234A (en) | 1983-04-11 | 1986-12-16 | Gti Corporation | Linked list search processor |
| US4606002A (en) | 1983-05-02 | 1986-08-12 | Wang Laboratories, Inc. | B-tree structured data base using sparse array bit maps to store inverted lists |
| JPS62102385A (ja) * | 1985-10-29 | 1987-05-12 | Toshiba Corp | 携帯可能媒体 |
| JPS62128391A (ja) * | 1985-11-30 | 1987-06-10 | Toshiba Corp | 携帯可能電子装置 |
| JPS62131354A (ja) * | 1985-12-03 | 1987-06-13 | Sharp Corp | Icカ−ドに於ける情報書き込み制御方法 |
| JP2685173B2 (ja) * | 1986-05-31 | 1997-12-03 | キヤノン株式会社 | メモリ書き込み制御方法 |
| JPH07109717B2 (ja) * | 1986-05-31 | 1995-11-22 | キヤノン株式会社 | メモリ書き込み制御方法 |
| US4953122A (en) | 1986-10-31 | 1990-08-28 | Laserdrive Ltd. | Pseudo-erasable and rewritable write-once optical disk memory system |
| JPS63200398A (ja) * | 1987-02-16 | 1988-08-18 | Hitachi Ltd | 情報処理装置 |
| US5060147A (en) | 1987-05-01 | 1991-10-22 | General Electric Company | String length determination on a distributed processing system |
| US4942541A (en) * | 1988-01-22 | 1990-07-17 | Oms, Inc. | Patchification system |
| JP2679761B2 (ja) * | 1987-09-29 | 1997-11-19 | 富士通株式会社 | データ管理システム |
| JPH01180688A (ja) * | 1988-01-12 | 1989-07-18 | Toshiba Corp | 携帯可能電子装置 |
| US4939598A (en) * | 1988-02-08 | 1990-07-03 | International Business Machines Corporation | Managing data storage space on large capacity record media |
| US5132853A (en) * | 1988-02-08 | 1992-07-21 | International Business Machines Corporation | Allocation procedures for optical disk recorders |
| US4953080A (en) | 1988-04-25 | 1990-08-28 | Hewlett-Packard Company | Object management facility for maintaining data in a computer system |
| JPH01276495A (ja) * | 1988-04-28 | 1989-11-07 | Hitachi Ltd | Eepromの制御方式 |
| JPH01286199A (ja) * | 1988-05-12 | 1989-11-17 | Hitachi Ltd | 書替え可能な不揮発性メモリ書替え装置 |
| US5268870A (en) * | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
| US5161256A (en) * | 1988-08-26 | 1992-11-03 | Kabushiki Kaisha Toshiba | Method and system for allocating file area in memory area of ic card |
| US4989132A (en) | 1988-10-24 | 1991-01-29 | Eastman Kodak Company | Object-oriented, logic, and database programming tool with garbage collection |
| US5115504A (en) | 1988-11-01 | 1992-05-19 | Lotus Development Corporation | Information management system |
| JPH02188000A (ja) * | 1989-01-13 | 1990-07-24 | Sharp Corp | 不揮発性メモリ内蔵マイクロコンピュータ |
| US5029125A (en) * | 1989-03-07 | 1991-07-02 | Drexler Technology Corporation | Method of reading and writing files on nonerasable storage media |
| US5491807A (en) | 1989-03-20 | 1996-02-13 | International Business Machines Corporation | System and method for worm volume management of new and updated data files using variable threshold block addresses |
| DE69024086T2 (de) * | 1989-04-13 | 1996-06-20 | Sundisk Corp | EEprom-System mit Blocklöschung |
| JPH0687229B2 (ja) * | 1989-06-19 | 1994-11-02 | 松下電送株式会社 | 追記型記憶媒体を用いたファイルの管理方法 |
| US5247658A (en) * | 1989-10-31 | 1993-09-21 | Microsoft Corporation | Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers |
| JP2646813B2 (ja) * | 1990-07-30 | 1997-08-27 | 松下電器産業株式会社 | ディジタル映像信号記録方法 |
| US5247516A (en) * | 1991-03-28 | 1993-09-21 | Sprint International Communications Corp. | Configurable composite data frame |
| US5229992A (en) * | 1991-03-28 | 1993-07-20 | Sprint International Communications Corp. | Fixed interval composite framing in integrated services networks |
-
1992
- 1992-01-29 US US07/828,763 patent/US6256642B1/en not_active Expired - Fee Related
-
1993
- 1993-01-29 EP EP93101396A patent/EP0557736B1/en not_active Expired - Lifetime
- 1993-01-29 JP JP01398093A patent/JP3825479B2/ja not_active Expired - Lifetime
- 1993-01-29 DE DE69333906T patent/DE69333906T2/de not_active Expired - Lifetime
- 1993-01-29 CA CA002325812A patent/CA2325812C/en not_active Expired - Fee Related
- 1993-01-29 CA CA002325810A patent/CA2325810C/en not_active Expired - Fee Related
- 1993-01-29 CA CA002088442A patent/CA2088442C/en not_active Expired - Lifetime
-
1995
- 1995-06-07 US US08/473,763 patent/US5634050A/en not_active Expired - Lifetime
- 1995-06-07 US US08/488,548 patent/US5898868A/en not_active Expired - Lifetime
-
2006
- 2006-05-09 JP JP2006130477A patent/JP2006209807A/ja active Pending
- 2006-05-09 JP JP2006130478A patent/JP4365385B2/ja not_active Expired - Lifetime
-
2008
- 2008-08-25 JP JP2008214841A patent/JP4485586B2/ja not_active Expired - Lifetime
-
2009
- 2009-03-30 JP JP2009081080A patent/JP4858789B2/ja not_active Expired - Lifetime
- 2009-12-01 JP JP2009273034A patent/JP4608588B2/ja not_active Expired - Lifetime
- 2009-12-01 JP JP2009273039A patent/JP4608589B2/ja not_active Expired - Lifetime
- 2009-12-01 JP JP2009273033A patent/JP4608587B2/ja not_active Expired - Lifetime
-
2011
- 2011-01-25 JP JP2011012551A patent/JP4836217B2/ja not_active Expired - Lifetime
- 2011-08-09 JP JP2011173783A patent/JP2011222051A/ja active Pending
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63233448A (ja) * | 1986-05-29 | 1988-09-29 | 松下電器産業株式会社 | 記憶領域割付方法及びその装置 |
| JPS63129586A (ja) * | 1986-11-19 | 1988-06-01 | Matsushita Electric Ind Co Ltd | 情報記憶装置 |
| JPH0325798A (ja) * | 1989-06-23 | 1991-02-04 | Ricoh Co Ltd | Eepromを使用した記憶装置 |
| EP0439920A2 (en) * | 1990-01-31 | 1991-08-07 | Hewlett-Packard Company | System and method for memory management in a microcomputer |
| JPH04213129A (ja) * | 1990-01-31 | 1992-08-04 | Hewlett Packard Co <Hp> | メモリ管理システム及びメモリ管理方法 |
| JPH0527924A (ja) * | 1991-07-12 | 1993-02-05 | Internatl Business Mach Corp <Ibm> | 半導体メモリを用いた外部記憶システム及びその制御方法 |
Non-Patent Citations (1)
| Title |
|---|
| ジェフリー・R・デュルーデ: "追記型光ディスクのアプリケーション・インタフェース", 日経バイト, vol. 第24号, JPNX006027813, 1 September 1986 (1986-09-01), JP, pages 113 - 114, ISSN: 0000749260 * |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH06124596A (ja) * | 1991-11-28 | 1994-05-06 | Hitachi Ltd | フラッシュメモリを使用した記憶装置 |
| JP2003203016A (ja) * | 1991-11-28 | 2003-07-18 | Hitachi Ltd | 記憶装置 |
| US6189081B1 (en) | 1996-05-24 | 2001-02-13 | Nec Corporation | Non-volatile semiconductor storage with memory requirement and availability comparison means and method |
| JPH11110263A (ja) * | 1997-09-30 | 1999-04-23 | Sony Corp | 記憶装置、データ処理装置及びデータ処理方法 |
| JP2000163302A (ja) * | 1997-09-30 | 2000-06-16 | Sony Corp | 外部記憶装置、デ―タ処理装置及びデ―タ処理方法 |
| JP2000148569A (ja) * | 1998-11-17 | 2000-05-30 | Matsushita Electric Ind Co Ltd | 記録再生装置 |
| US7610442B2 (en) | 2002-12-24 | 2009-10-27 | Lg Electronics Inc. | Dual journaling store method and storage medium thereof |
| JP2010003150A (ja) * | 2008-06-20 | 2010-01-07 | Nec Personal Products Co Ltd | メモリコントローラおよびフラッシュメモリのデータ管理方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP4858789B2 (ja) | 2012-01-18 |
| JP2010049714A (ja) | 2010-03-04 |
| JP3825479B2 (ja) | 2006-09-27 |
| JP2011103137A (ja) | 2011-05-26 |
| JP4608589B2 (ja) | 2011-01-12 |
| JP2006209808A (ja) | 2006-08-10 |
| CA2325812C (en) | 2001-12-18 |
| JP4608588B2 (ja) | 2011-01-12 |
| JP2010049712A (ja) | 2010-03-04 |
| DE69333906D1 (de) | 2005-12-22 |
| CA2325810A1 (en) | 1993-07-30 |
| CA2088442A1 (en) | 1993-07-30 |
| JP4608587B2 (ja) | 2011-01-12 |
| JP4485586B2 (ja) | 2010-06-23 |
| JP2010049713A (ja) | 2010-03-04 |
| JP2008282429A (ja) | 2008-11-20 |
| CA2325810C (en) | 2001-08-21 |
| JP2006209807A (ja) | 2006-08-10 |
| US5634050A (en) | 1997-05-27 |
| CA2325812A1 (en) | 1993-07-30 |
| CA2088442C (en) | 2003-04-15 |
| EP0557736A2 (en) | 1993-09-01 |
| JP4836217B2 (ja) | 2011-12-14 |
| EP0557736B1 (en) | 2005-11-16 |
| EP0557736A3 (ja) | 1994-02-09 |
| US5898868A (en) | 1999-04-27 |
| US6256642B1 (en) | 2001-07-03 |
| DE69333906T2 (de) | 2006-05-24 |
| JP2009146458A (ja) | 2009-07-02 |
| JP4365385B2 (ja) | 2009-11-18 |
| JP2011222051A (ja) | 2011-11-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4608588B2 (ja) | フラッシュ消去可能なプログラマブル・リードオンリメモリを用いてファイルシステムをマネージする方法及びシステム | |
| US5392427A (en) | System for updating data stored on a flash-erasable, programmable, read-only memory (FEPROM) based upon predetermined bit value of indicating pointers | |
| US6587915B1 (en) | Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same | |
| US7610434B2 (en) | File recording apparatus | |
| US7558906B2 (en) | Methods of managing blocks in nonvolatile memory | |
| US20070033331A1 (en) | NonVolatile Memory With Block Management | |
| US20030229753A1 (en) | Flash memory file system | |
| KR20070060070A (ko) | 최적화된 순차적인 클러스터 관리용 에프에이티 분석 | |
| JP2009199625A (ja) | メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法 | |
| US10496612B2 (en) | Method for reliable and efficient filesystem metadata conversion | |
| KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
| TWI399642B (zh) | 具區塊管理之非揮發性記憶體 | |
| US20070005929A1 (en) | Method, system, and article of manufacture for sector mapping in a flash device | |
| Wiseman | The SMITE object oriented backing store |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040927 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20041227 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050112 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050328 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050613 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050913 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050916 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051213 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060116 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060417 |
|
| A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20060607 |
|
| 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: 20060626 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060630 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090707 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100707 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110707 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110707 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120707 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120707 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130707 Year of fee payment: 7 |
|
| EXPY | Cancellation because of completion of term | ||
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130707 Year of fee payment: 7 |