JPH08278904A - 高性能ファイルシステム - Google Patents
高性能ファイルシステムInfo
- Publication number
- JPH08278904A JPH08278904A JP7354961A JP35496195A JPH08278904A JP H08278904 A JPH08278904 A JP H08278904A JP 7354961 A JP7354961 A JP 7354961A JP 35496195 A JP35496195 A JP 35496195A JP H08278904 A JPH08278904 A JP H08278904A
- Authority
- JP
- Japan
- Prior art keywords
- file
- directory
- sector
- volume
- computer system
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- 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
- G06F16/13—File access structures, e.g. distributed indices
-
- 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
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
- G06F16/1794—Details of file format conversion
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/12—Formatting, e.g. arrangement of data block or words on the record carriers
- G11B20/1217—Formatting, e.g. arrangement of data block or words on the record carriers on discs
- G11B20/1252—Formatting, e.g. arrangement of data block or words on the record carriers on discs for discontinuous data, e.g. digital information signals or computer program data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/10—Indexing; Addressing; Timing or synchronising; Measuring tape travel
- G11B27/19—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
- G11B27/28—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
- G11B27/32—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on separate auxiliary tracks of the same or an auxiliary record carrier
- G11B27/327—Table of contents
- G11B27/329—Table of contents on a disc [VTOC]
-
- 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/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】 (修正有)
【課題】 現在のファイルシステムより性能の勝ってい
る改良されたファイルシステム。 【解決手段】 第1のディスク フィールドがブート
ブロックを備え、これにつづいて第2のフィールドがス
ーパーブロックを、第3のフィールドがスペアブロック
を備える。複数のバンドがデータを記憶するための一連
の連続セクタを含み、各バンドはセクタ使用を示すフリ
ースペース ビット マップを含んでいる。ブートブロ
ックはボリューム ネーム、ボリュームI.D.そして
ディスク ブートストラップ プログラムを含んでい
る。スーパーブロックはフリースペース ビットマッ
プ、バッド ブロック リスト、デイクショナリ ブロ
ックバンドそしてルート デイクショナリへのポインタ
を含んでいる。ファイルとデイクショナリとはFノード
構成にアンカーされている。それはセクタの続きを指し
ている複数のポインタから成る。
る改良されたファイルシステム。 【解決手段】 第1のディスク フィールドがブート
ブロックを備え、これにつづいて第2のフィールドがス
ーパーブロックを、第3のフィールドがスペアブロック
を備える。複数のバンドがデータを記憶するための一連
の連続セクタを含み、各バンドはセクタ使用を示すフリ
ースペース ビット マップを含んでいる。ブートブロ
ックはボリューム ネーム、ボリュームI.D.そして
ディスク ブートストラップ プログラムを含んでい
る。スーパーブロックはフリースペース ビットマッ
プ、バッド ブロック リスト、デイクショナリ ブロ
ックバンドそしてルート デイクショナリへのポインタ
を含んでいる。ファイルとデイクショナリとはFノード
構成にアンカーされている。それはセクタの続きを指し
ている複数のポインタから成る。
Description
【産業上の利用分野】本発明はコンピュータ翻訳システ
ムの分野に関し、より詳しくは、コンピュータシステム
を備えた装置同士の通信を行う方法及び手段に関する。
なお、本明細書には、385個のフレームを含むマイク
ロフィッシュの4枚のシートからなる付録I(Appe
ndix I)が含まれている。
ムの分野に関し、より詳しくは、コンピュータシステム
を備えた装置同士の通信を行う方法及び手段に関する。
なお、本明細書には、385個のフレームを含むマイク
ロフィッシュの4枚のシートからなる付録I(Appe
ndix I)が含まれている。
【従来の技術】一般に、コンピュータシステムは、中央
処理装置と、ランダムアクセスメモリと、リードオンリ
メモリと、データ入力装置、データ出力装置、フロッピ
ディスク及び固定ディスク又はハードディスク等の種々
の不揮発性データ記憶装置等の種々の周辺装置とを有し
ている。一般に、それぞれの装置間の通信はコンピュー
タオペレーティングシステムにより制御される。良く知
られた1つのコンピュータオペレーティングシステムと
して、マイクロソフト社(Microsoft)から市
販されているMS−DOSオペレーティングシステムが
ある。MS−DOSオペレーティングシステムにおいて
は、単一のファイルシステムが、周辺装置に記憶された
ファイルの編成を記載しかつ構成している。コンピュー
タシステム及びそれぞれの周辺装置の両者により認識さ
れたフォーマット中のデータをコンピュータシステムが
読み取り又は書き込みできるようにするには、データは
このファイルシステムに従って編成されなくてはならな
い。例えば、MS−DOSオペレーティングシステムに
使用される従来のフロッピディスクを用いた周辺装置に
おいては、フロッピディスクのデータは、FATファイ
ルシステム(ファイル割当てテーブル(file al
location table)を用いていることか
ら、このように命名されている)として知られているフ
ァイルシステムに従って構成されている。FATファイ
ルシステムは、今日、世界中で最も広範囲に使用されて
いるファイルシステムの1つである。テープ記憶装置の
ような周辺装置の他の形式のデータ記憶装置には、他の
ファイルシステムを接続することもできる。ファイルシ
ステムにより、オペレーティングシステムのカーネルと
デバイス従属ドライバ(device dependa
nt derivers)との間の通信を容易に行うこ
とができる。また、ファイルシステムは、オペレーティ
ングシステムのカーネルにより発せられた読取り及び書
込みコマンド(並びに、ファイルを開閉する機能)をデ
バイスドライバが認識できるフォームに変換することに
応答することができる。
処理装置と、ランダムアクセスメモリと、リードオンリ
メモリと、データ入力装置、データ出力装置、フロッピ
ディスク及び固定ディスク又はハードディスク等の種々
の不揮発性データ記憶装置等の種々の周辺装置とを有し
ている。一般に、それぞれの装置間の通信はコンピュー
タオペレーティングシステムにより制御される。良く知
られた1つのコンピュータオペレーティングシステムと
して、マイクロソフト社(Microsoft)から市
販されているMS−DOSオペレーティングシステムが
ある。MS−DOSオペレーティングシステムにおいて
は、単一のファイルシステムが、周辺装置に記憶された
ファイルの編成を記載しかつ構成している。コンピュー
タシステム及びそれぞれの周辺装置の両者により認識さ
れたフォーマット中のデータをコンピュータシステムが
読み取り又は書き込みできるようにするには、データは
このファイルシステムに従って編成されなくてはならな
い。例えば、MS−DOSオペレーティングシステムに
使用される従来のフロッピディスクを用いた周辺装置に
おいては、フロッピディスクのデータは、FATファイ
ルシステム(ファイル割当てテーブル(file al
location table)を用いていることか
ら、このように命名されている)として知られているフ
ァイルシステムに従って構成されている。FATファイ
ルシステムは、今日、世界中で最も広範囲に使用されて
いるファイルシステムの1つである。テープ記憶装置の
ような周辺装置の他の形式のデータ記憶装置には、他の
ファイルシステムを接続することもできる。ファイルシ
ステムにより、オペレーティングシステムのカーネルと
デバイス従属ドライバ(device dependa
nt derivers)との間の通信を容易に行うこ
とができる。また、ファイルシステムは、オペレーティ
ングシステムのカーネルにより発せられた読取り及び書
込みコマンド(並びに、ファイルを開閉する機能)をデ
バイスドライバが認識できるフォームに変換することに
応答することができる。
【発明が解決しようとする課題】MS−DOSオペレー
ティングシステムを用いる場合には、オペレーティング
システムは、コンピュータシステムに用いられている特
定の周辺装置に使用できる適合ファイルシステムを構成
しなければならない。一旦ファイルシステムが構成され
たならば、このファイルシステムは、オペレーティング
システムが変更されない限りそのままであり、すなわち
変更されることはない。このため、一般に、広範囲のプ
ログラム作成努力と多大の消費時間とが要求される。ま
た、コンピュータオペレーティングシステムについての
広範囲の知識が必要であり、オペレーティングシステム
の詳細にアクセスできない人は、ファイルシステムを容
易に変更することはできない。また、従来のシステムに
おいては、異種ファイルシステム(foreignfi
le systems)のファイルを収容しているディ
スクメディアを、固有システム(nativesyst
em)に使用することはできない。例えば、多数の製造
業者(各製造業者は別々のファイルシステム構成に準拠
している)により多くのコンピュータシステムが多年に
亘って開発されている。現在のスタティックファイルシ
ステムの技術では、一般に、或る1つのシステムからの
ディスクメディアを別の形式のシステムで機能させるこ
とはできない。コンピュータは一層ポピュラーなものと
なっているため、あらゆる形式のコンピュータシステム
の間でファイルを共用できるようにすることの重要性が
増大している。事実上知られているあらゆるコンピュー
タシステムからのディスクメディアを、単一のオペレー
ティング環境において自動的に認識しかつ読み取ること
ができるシステムは未だ存在しない。また、コンピュー
タオペレーティングシステムのカーネルを変える必要な
くして、或るシステムに付加(又は変更)できるファイ
ルシステムは未だ存在しない。従って、本発明の目的は
現在のファイルシステムに性能が勝っている改良された
ファイルシステムを提供することである。本発明の別の
目的はディスクの崩壊を最小とするファイルシステム構
成を提供することである。本発明の更に別の目的は指定
されたボリュームにファイルを迅速且つ効率よく配置で
きるようにするファイルシステム構成を提供することで
ある。本発明のこれらの目的及び他の目的は、添付図面
を参照して以下に述べる本発明の詳細な説明により明ら
かになるであろう。
ティングシステムを用いる場合には、オペレーティング
システムは、コンピュータシステムに用いられている特
定の周辺装置に使用できる適合ファイルシステムを構成
しなければならない。一旦ファイルシステムが構成され
たならば、このファイルシステムは、オペレーティング
システムが変更されない限りそのままであり、すなわち
変更されることはない。このため、一般に、広範囲のプ
ログラム作成努力と多大の消費時間とが要求される。ま
た、コンピュータオペレーティングシステムについての
広範囲の知識が必要であり、オペレーティングシステム
の詳細にアクセスできない人は、ファイルシステムを容
易に変更することはできない。また、従来のシステムに
おいては、異種ファイルシステム(foreignfi
le systems)のファイルを収容しているディ
スクメディアを、固有システム(nativesyst
em)に使用することはできない。例えば、多数の製造
業者(各製造業者は別々のファイルシステム構成に準拠
している)により多くのコンピュータシステムが多年に
亘って開発されている。現在のスタティックファイルシ
ステムの技術では、一般に、或る1つのシステムからの
ディスクメディアを別の形式のシステムで機能させるこ
とはできない。コンピュータは一層ポピュラーなものと
なっているため、あらゆる形式のコンピュータシステム
の間でファイルを共用できるようにすることの重要性が
増大している。事実上知られているあらゆるコンピュー
タシステムからのディスクメディアを、単一のオペレー
ティング環境において自動的に認識しかつ読み取ること
ができるシステムは未だ存在しない。また、コンピュー
タオペレーティングシステムのカーネルを変える必要な
くして、或るシステムに付加(又は変更)できるファイ
ルシステムは未だ存在しない。従って、本発明の目的は
現在のファイルシステムに性能が勝っている改良された
ファイルシステムを提供することである。本発明の別の
目的はディスクの崩壊を最小とするファイルシステム構
成を提供することである。本発明の更に別の目的は指定
されたボリュームにファイルを迅速且つ効率よく配置で
きるようにするファイルシステム構成を提供することで
ある。本発明のこれらの目的及び他の目的は、添付図面
を参照して以下に述べる本発明の詳細な説明により明ら
かになるであろう。
【課題を解決するための手段】要するに本発明は、第1
のディスク フィールドがブート ブロックを備え、こ
の第1のフィールドにつずく第2のフィールドがスーパ
ーブロックを備え、この第2のフィールドに続く第3の
フィールドはスペアブロックを備え、そして複数のバン
ドがデータを記憶するための一連の連続セクタを含み、
各バンドはセクタ使用を示すフリースペース ビット
マップを含んでいる、ボリュームもしくはディスク内で
データを編成する改良構造を本発明は意図している。フ
リースペース ビットマップはバンドの始めか終わりに
あって、交互のバンドのためのビットマップは相互に隣
接している。ブートブロックはボリューム ネーム、ボ
リュームI.D.そしてディスク ブートストラップ
プログラムを含んでいる。スーパーブロックはフリース
ペース ビットマップ、バッド ブロック リスト、デ
イクショナリ ブロックバンドそしてルート デイクシ
ョナリへのポインタを含んでいる。本発明に従ってファ
イルとデイクショナリとはFノード構成にアンカーされ
ている。Fノード構成はセクタの続きを指している複数
のポインタを備えている。
のディスク フィールドがブート ブロックを備え、こ
の第1のフィールドにつずく第2のフィールドがスーパ
ーブロックを備え、この第2のフィールドに続く第3の
フィールドはスペアブロックを備え、そして複数のバン
ドがデータを記憶するための一連の連続セクタを含み、
各バンドはセクタ使用を示すフリースペース ビット
マップを含んでいる、ボリュームもしくはディスク内で
データを編成する改良構造を本発明は意図している。フ
リースペース ビットマップはバンドの始めか終わりに
あって、交互のバンドのためのビットマップは相互に隣
接している。ブートブロックはボリューム ネーム、ボ
リュームI.D.そしてディスク ブートストラップ
プログラムを含んでいる。スーパーブロックはフリース
ペース ビットマップ、バッド ブロック リスト、デ
イクショナリ ブロックバンドそしてルート デイクシ
ョナリへのポインタを含んでいる。本発明に従ってファ
イルとデイクショナリとはFノード構成にアンカーされ
ている。Fノード構成はセクタの続きを指している複数
のポインタを備えている。
【作用】本発明の原理によれば、第1のディスク フィ
ールドがブートブロックを備え、この第1のフィールド
につづく第2のフィールドがスーパーブロックを備え、
この第2のフィールドに続く第3のフィールドはスペア
ブロックを備え、そして複数のバンドがデータを記憶す
るための一連の連続セクタを含み、各バンドはセクタ使
用を示すフリースペースビットマップを含んでいる、デ
ィスクの一連のフィールドにデータを編成する。フリー
スペースビットマップはバンドの始めか終わりにあっ
て、交互のバンドのためのビットマップは相互に隣接し
ている。ブートブロックはボリュームネーム、ボリュー
ムI.D.そしてディスクブートストラッププログラム
を含んでいる。スーパーブロックはフリースペースビッ
トマップ、バッドブロックリスト、ディクショナリブロ
ックバンド、そしてルートディクショナリへのポインタ
を含んでいる。
ールドがブートブロックを備え、この第1のフィールド
につづく第2のフィールドがスーパーブロックを備え、
この第2のフィールドに続く第3のフィールドはスペア
ブロックを備え、そして複数のバンドがデータを記憶す
るための一連の連続セクタを含み、各バンドはセクタ使
用を示すフリースペースビットマップを含んでいる、デ
ィスクの一連のフィールドにデータを編成する。フリー
スペースビットマップはバンドの始めか終わりにあっ
て、交互のバンドのためのビットマップは相互に隣接し
ている。ブートブロックはボリュームネーム、ボリュー
ムI.D.そしてディスクブートストラッププログラム
を含んでいる。スーパーブロックはフリースペースビッ
トマップ、バッドブロックリスト、ディクショナリブロ
ックバンド、そしてルートディクショナリへのポインタ
を含んでいる。
【実施例】図1及び図2には、本発明の原理に従って構
成されたコンピュータシステム100が示されている。
このコンピュータシステム100は、中央処理装置すな
わちマイクロプロセッサ102と、ランダムアクセスメ
モリ104と、リードオンリメモリ106と、マウス1
08及びキーボード110のような入力装置と、ディス
プレイ112及びプリンタ114のような出力装置と、
フロッピディスクドライブ116、ハードディスクドラ
イブ120、CD−ROMドライブ122及びテープド
ライブ124等からなる種々の不揮発性記憶装置とを有
している。また、このコンピュータシステム100は、
ネットワーク126と通信できるようになっている。不
揮発性記憶とは、装置の電源を遮断してもデータが消去
されないことをいう。従来のシステムにおいては、オペ
レーティングシステムは、各周辺装置が単一のメディア
形ファイルシステムドライバのみと互換性をもつファイ
ルシステムドライバによりスタティックに構成されてい
る。指定のファイルシステムドライブとの互換性のない
ドライブにメディアが供給されると、メディアは首尾良
くアクセスすることができない。以下に説明するよう
に、本発明は、周辺装置とは独立してかつメディアに関
するデータのフォーマット又は位置についての条件を賦
課することなくして、関連するファイルシステムにメデ
ィアを自動的にマッピングする方法及び手段を提供する
ものである。例えば、フロッピドライブユニット(フロ
ッピディスクドライブ)116は、多数のファイルシス
テムに従ってフォーマット化されたボリューム(例え
ば、FATファイルシステムに従ってフォーマット化さ
れたボリューム128、良く知られたHigh Sie
rraファイルシステムに従ってフォーマット化された
ボリューム132、及びもう1つのファイルシステムに
従ってフォーマット化されたボリューム130)に使用
することができる。同様に、ハードディスク(ハードデ
ィスクドライブ)120の種々の区分(パーティショ
ン)は、ボリューム134、136、138として表し
た多数のファイルシステムに従ってフォーマット化する
ことができる。同様に、CD−ROMドライブ122及
びテープシステム(テープドライブ)124は、ボリュ
ーム140、142(これらは、それぞれのファイルシ
ステムに従ってフォーマット化されている)に使用する
ことができる。また、ネットワーク126は、サーバ
(該サーバは、それら自体のファイルシステムに従って
作動する)を備えた任意の数のネットワークに接続する
ことができる。コンピュータシステム100の作動(オ
ペレーション)は、良く知られた多数のオペレーティン
グシステムのうちの任意のオペレーティングシステムに
より調整することができる。しかしながら、本発明は特
に、Microsoft社により開発されたOS/2オ
ペレーティングシステムに使用するのに適している。本
発明の作動環境(operating environ
ment)の構成が図2に示してある。一般に、アプリ
ケーション152は、カーネル154により処理される
ファイルシステムのリクエストを発生する。次いで、カ
ーネル154は、このリクエストを適当なファイルシス
テムドライバ(FSD)156〜170に導く。任意の
ファイルシステムドライバを、多数のハードウェア装置
と協働させることができる。例えば、ボリューム17
2、174についてファイルシステム作動を行う場合に
は、High Sierraファイルシステム156を
CD−ROMプレーヤ(CD−ROMドライブ)122
及びディスクドライブ116に使用することができる。
同様に、FATファイルシステム160及びHPFSフ
ァイルシステム162の両者は、ボリューム176、1
78(これらの各々は、ハードディスク120にある)
についてのファイルシステム作動を行うのに使用するこ
とができる。ボリューム180についてファイルシステ
ム作動を行う場合には、ディスクドライブ116にファ
イルシステムドライバを使用することができる。従っ
て、本発明によれば、ファイルシステムの形式及びフォ
ーマットの如何に拘わらず、適当なファイルシステムに
不確実メディアを自動的にかつダイナミックにマッピン
グする方法及び手段が提供される。図3は、従来技術に
よるMS−DOSオペレーティングシステムのファイル
システム構成を示すものである。MS−DOSオペレー
ティングシステム200においては、オペレーティング
システムのカーネル204内にFATファイルシステム
202が埋設されている。このFATファイルシステム
202はオペレーティングシステムのカーネル204内
に一体化されているため、変更(モディファイ)するこ
とは困難である。また、付加的なファイルシステムが必
要な場合には、オペレーティングシステムのカーネル2
04を書き替えてそれらのファイルシステムに適合でき
るようにしなければならない。本発明によれば、図4に
示すシステム技術により上記問題点を解決することがで
きる。本発明のコンピュータシステム100において
も、OS/2カーネル252内には、FATファイルシ
ステム202が埋設されている。しかしながら、本発明
によれば、オペレーティングシステムのカーネル252
に対して外部装置であるFATファイルシステムドライ
バ254、256、258をダイナミックに取り付ける
方法及び手段が提供される。図面には、設置可能な3つ
のファイルシステムドライバを備えたシステム250が
示されているが、実際には、本発明は、ファイルシステ
ムドライバの数に制限されることはない。設置可能(i
nstallable)なファイルシステムドライバ
(filesystem driver、「FSD」)
は、多くの点でデバイスドライバに類似している。FS
Dは、ダイナミックリンクライブラリ(dynamic
−link library、「DLL」、一般には、
SYS又はIFSエクステンションを備えている))の
ように構成されたファイルのディスク上に存在し、CO
NFIG.SYSファイルにおけるIFS=ステートメ
ント(statements)によるシステムの初期化
中にローディングされる。IFS=宣言(direct
ives)は、それらが出合う命令において処理され、
また、デバイスドライバについてDEVICE=文(s
tatements)の命令に対して感応する。これに
より、ユーザが、非標準デバイス用のデバイスドライバ
をローディングし、該デバイスのボリュームからファイ
ルシステムドライバをローディングすること等が可能に
なる。一旦FSDが設置され且つ初期化されると、カー
ネルは、ファイルの開放、読取り、書込み、シーク(s
eeks)、閉鎖等についての論理的リクエスト(lo
gical request)の言語で、FSDで通信
する。FSDは、ボリュームそれ自体に見出される制御
構成及びテーブルを用いて、これらのリクエストをセク
タ読取り(sector reads)用のリクエスト
に翻訳し、かつ、ファイルシステムヘルパ(File
System Helpers、「FsHlps」)と
呼ばれる特別なカーネル入口点を呼び出すことができる
書込みを行う。カーネルは、セクタI/Oに対するデマ
ンドを適当なデバイスドライバに導き、かつその結果を
FSDに戻す。ボリュームをFSDs(複数のFSD)
と結合させるべくオペレーティングシステムにより用い
られる手順は、ダイナミックボリュームマウンティング
(daynamic volume mountin
g)と呼ばれ、次のように作動する。ボリュームが最初
にアクセスされるとき、或いは、直接アクセスを行うべ
く(例えばFORMATオペレーションにより)ボリュ
ームがロックされ次いでアンロックされた後に、オペレ
ーティングシステムのカーネルは、ボリュームからFS
Dsの各々への識別情報を発生し、これは、FSDがこ
の情報を認識するまで順次行われる。FSDがボリュー
ムをクレイムすると、ボリュームがマウントされ、ボリ
ュームに対する全ての連続ファイルI/Oリクエスト
が、ボリュームをクレイムしたFSDに導かれる。この
構成により、従来技術にはない幾つかの利点を得ること
ができる。例えば、不確実メディアがコンピュータシス
テムに与えられる場合に、コンピュータシステムは、利
用できるファイルシステムドライバを走査して、このメ
ディアを認識できるファイルシステムドライバを位置付
けすることができ、これにより、メディアへのファイル
システムドライバの自動マッピングを行うことが可能に
なる。また、オペレーティングシステムのカーネルを変
更する必要なくして、ファイルシステムドライバを更新
することができる。更に、新しい形式の周辺装置が開発
されたときに、既存システムのソフトウェアを混乱させ
ることなく、適当なファイルシステムドライバをオペレ
ーティングシステムに付加することができる。コンピュ
ータシステム100のより詳細なダイアグラムが図5に
示してある。コンピュータシステム100は、アプリケ
ーションプログラム302とディスク装置304のよう
なデータ記憶装置との間の通信を行うことができるオペ
レーティングシステムのカーネル252を有している。
また、このコンピュータシステム100は、ファイルシ
ステムドライバ254〜258と関連して作動するデバ
イスドライバ306を有している。図面には単一の周辺
装置304を備えたコンピュータシステム100が示さ
れているが、本発明は、任意の数の論理的又は物理的周
辺装置と組み合わせて使用できるものである。作動に際
し、アプリケーションプログラム302は、所望の機能
についての入口点を呼び出すことにより、オペレーティ
ングシステムのカーネル252に対する論理的ファイル
リクエストを発行する。これらの機能には、ファイルを
開放すること(DosOpen)、ファイルを読み取る
こと(DosRead)、ファイルに書き込むこと(D
osWrite)等のリクエストを含めることができ
る。オペレーティングシステムのカーネル252は、こ
れらのリクエストを、ファイルを保持(ホールディン
グ)する特定のボリュームについての適当なファイルシ
ステムドライバ254〜258に導く。次に、適当な設
置可能なファイルシステムドライバが、論理的ファイル
リクエストを、指定メディアの論理的セクタの読取り及
び書込みのためのリクエストに翻訳し、かつオペレーテ
ィングシステムのカーネルのファイルシステムヘルパ3
08を呼び出して、これらのリクエストを適当なデバイ
スドライバ306に導く。ファイルシステムヘルパ(F
sHlps)308については、以下により詳細に説明
する。デバイスドライバ306は、オペレーティングシ
ステムのカーネルからの論理的セクタリクエストを、特
定の物理ユニット(すなわち、メディアのシリンダ、ヘ
ッド及びセクタ)についてのリクエストに変形し、か
つ、ディスク装置にコマンドを発行して、ディスクメデ
ィアとランダムアクセスメモリ310との間にデータを
伝達する。次に、物理装置を特定のファイルシステムに
マッピングすることについて以下に詳細に説明する。M
S−DOS環境(MS−DOS environmen
t)においては、フロッピディスクはボリュームと呼ば
れる。固定ディスク(又はハードディスク)は、多数の
ボリュームに区分することができる。このターミノロジ
が、本発明に首尾よく適用されている。簡単に言えば、
コンピュータシステムが最初にブート(boot)され
るとき、ボリュームが最初にアクセスされるとき、又は
コンピュータシステムが、ディスク装置304内に不確
実メディアが存在することを決定するときにはいつで
も、コンピュータシステムは、ファイルシステムドライ
バのリンクされたリストにおける最初のファイルシステ
ムドライバを試験する。ファイルシステムドライバがデ
ィスク装置にローディングされたボリュームを認識する
場合には、ファイルシステムドライバがマウントされ
る。そうでない場合には、コンピュータシステムは、メ
ディアを認識するファイルシステムドライバが位置付け
されるまで、利用できるファイルシステムドライバを連
続的にボーリングする。関心をもつメディアを認識する
設置可能なファイルシステムドライバが全く見出されな
い場合には、省略時ファイルシステムドライバがマウン
トされる。本発明の好ましい実施例においては、省略時
ファイルシステムは、上記のFATファイルシステムで
ある。不確実メディアは、幾つかの方法により検出する
ことができる。ディスク装置には機械的なラッチ機構が
設けられており、該ラッチ機構は、ディスクがディスク
装置から取り出されるとき又はディスク装置に装填され
るときに作動する。一般にラッチ機構は、ドライブの次
の作動によりドアが開放されたことを示すように機能す
る。デバイスドライバがこの表示を受け取ると、エラー
不確実メディア(ERROR_UNCERTAIN M
EDIA)がオペレーティングシステムに戻される。機
械的なラッチ機構がないシステムにおいては、所定時間
より短い時間内にメディアを変更できないと考えられ
る。本発明の好ましい実施例においては、この時間は2
秒であるこ考えられる。従って、所定時間以上の時間を
かけても特定のボリュームがアクセスされない場合に
は、このメディアは不確実であると推定される。図6
は、FATファイルシステムのディスクフォーマットの
ダイアグラムである。FATファイルシステムは、MS
−DOSオペレーティングシステムの初期から該MS−
DOSオペレーティングシステムに使用されている。F
ATファイルシステムについての詳細な説明が、Dan
can著「アドバンスMS DOSプログラミング
(“Advance MS DOS Programm
ing”)」(Microsoft Press社刊、
1986、1988)においてなされている。FATフ
ァイルシステムは、FATファイルシステムは、ファイ
ル割当てテーブル(File Allocation
Table)を中心題目としている。各論理的ボリュー
ムはそれ自体のFATと関連していて、2つの重要な機
能を有している。すなわち、各論理的ボリュームは、割
当てユニット(allocationunits)のリ
ンクされたリストの形態をなすボリュームに関する各フ
ァイルについての割当て情報(allocation
information)を収容していて、その割当て
ユニットには、創出(又は拡大)されているファイルへ
の割当て(代入、assignment)がないことを
表示する。FATファイルシステムに従ってディスクが
フォーマット化されると、ブートセクタ(boot s
ecter)がセクタゼロと書き込まれる。ファイル割
当てテーブルの後にはルートディレクトリ(root
directory)が続き、このルートディレクトリ
の後にはボリュームファイルが続く。ブートセクタに
は、ブートパラメータブロックすなわちBPBと呼ばれ
る、或る領域におけるボリュームに関する種々の記述情
報(descriptive informatio
n)、ドライブの数及びボリュームI.D.のような情
報、及びブートストラップルーチン(bootstra
p routine)が収容されている。ファイル割当
てテーブルは、ディスクについての割当て可能なクラス
タ(これらのクラスタは、セクタを2乗したものであ
る)に直接相当するフィールド(欄)に区分される。一
般に、これらのフィールドは16ビットの幅を有してい
る。最初にリザーブされたFAT入口には、BPBにお
いても見出すことができるメディア記述バイト(med
ia descriptor byte)のコピーが収
容されている。リザーブされた残余のフィールドにはO
FPHが収容されている。残余のFAT入口には、それ
らの相当ディスククラスタ(correspondin
g disk clusters)の使用が記述され
る。ディレクトリの各ファイルの入口には、これらのフ
ァイル(該ファイルは、FATへの入口点として使用さ
れる)に割り当てられる最初のクラスタの数が収容され
る。入口点から、各FATスロット(FAT slo
t)が、最終クラスタマークに出合うまで、ファイル内
の次のクラスタの番号を収容する。また、FATファイ
ルシステムには、読取りエラー等によるFATのセクタ
へのアクセスが失敗した場合に用いることができる最初
のファイル割当てテーブルの複製を維持する機能をオプ
ションとして設けることができる。ファイル割当てテー
ブルの後には、ルートディフレクトリが続く。このルー
トディレクトリは、ファイル、他のディレクトリ、及び
オプションとしてのボリュームラベルを記述する32バ
イトの入口を収容している。ルートディレクトリの後の
残余のボリュームは、クラスタのプールとして見ること
ができるファイル領域(各ファイル領域には1つ以上の
論理的セクタが収容されている)として知られている。
各クラスタは、FATの対応入口(該入口には、FAT
の現在使用、すなわち、利用できること、リザーブされ
ていること、ファイルに割り当てられていること、又は
使用できないことが記述されている)を備えている。F
ATファイルシステムは、1Mb以下のボリュームで優
れた性能を得ることができる。しかしながら、ボリュー
ムのサイズが1Mbを越えると、FATファイルシステ
ムの性能は急激に低下する。容易に入手可能なハードデ
ィスクのサイズは急激に増大しているため、このことは
重要な問題となっている。ボリュームが1Mb以下の場
合には、FATは、いつでもランダムアクセスメモリ内
に保持される程充分に小さく、従って、ファイルのいか
なる部分にも非常に高速のランダムアクセスを行うこと
ができる。しかしながら、ハードディスク又は固定ディ
スクに適用した場合には、FATは大き過ぎてメモリに
保持できなくなり、かつ細分してメモリ内にページ付け
しなければならない。このために多くの余分のディスク
ヘッド運動が必要になり、コンピュータシステムのスル
ープットを低下させている。また、ディスクの空きスペ
ース(free space)についての情報が、FA
Tの多数のセクタを横切って分散されるため、連続的に
ファイルスペースを割り当てることは実際的でない。こ
のため:ファイルが細分化され、コンピュータシステム
のスループットが更に低下される。また、ハードディス
クに比較的大型のクラスタを用いるため、無駄なスペー
スが非常に大きくなる。図7〜図14には、設置可能な
ファイルシステムの1つの場合のディスクフォーマット
を示す一連のダイアグラムが示されている。このファイ
ルシステムは、高性能ファイルシステム(High p
erformance file system,HP
FS)と呼ばれているものである。本発明の高性能ファ
イルシステムは、FATファイルシステムについての上
記問題を解消でき、かつあらゆる形式のディスクメディ
アについて優れた性能を発揮できるものである。図7に
示すように、HPFSボリュームは、前に形成されたF
ATパーティション形の側面に沿って固定ディスク上に
設けることができる。HPFSボリュームは、512バ
イトのセクタサイズを使用しており、2199Gb(2
32のセクタ)の最大サイズを有している。HPFSは
固定ディスクに使用することを主として設計されている
が、実際上、あらゆる形式のディスクメディアとの互換
性を有している。HPFSボリュームは、固定された構
成が殆ど必要とされない。ブートブロック502にはボ
リューム(8Kb)のセクタ0〜15が割り当てられ、
該セクタ0〜15は、ボリュームのネームフィールド
(名前欄)504、32ビットボリュームの1Dフィー
ルド506、BIOSパラメータブロック508、ディ
スクブートストラッププログラム510を収容してい
る。ディスクブートストラッププログラム510は、オ
ペレーティングシステムファイルが見出される限りは、
これらのオペレーティングシステムファイルの位置付け
及び読取りを行う限定モードで使用することができる。
ブートブロック(BootBlock)502の後に
は、スーパーブロック(SuperBlock)512
及びスペアブロック(SpareBlock)514が
続いている。スーパーブロック512は、ディスクメイ
ンテナンスユーティリティによって変更されるに過ぎな
い。スーパーブロック512は、空きスペースのビット
マップを指すポインタ516、バットブロックリスト5
18、ディレクトリブロックバンドを指すポインタ52
0、ルートディレクトリを指すポインタ522を収容し
ている。更にスーパーブロック512は、デート(日付
け)を備えたデートフィールド(日付け欄)524を収
容しており、ボリュームはCHKDSKにより最終チェ
ック及び修復がなされる。CHKDSKは、ディスクの
悪い部分を検出しかつカタログするための良く知られた
OS/2ディスクユーティリティである。スペアブロッ
ク514は種々のフラグ及びポインタを収容しており、
これらについては以下に詳述する。スペアブロック51
4は、コンピュータシステムが実行されるときに変更さ
れる。残余のボリュームは、ファイルの記憶に使用され
る8Mbバンド(例えば、バンド516〜522)に区
分される。図7には4つの8Mbバンドが示されている
が、HPFSは非常に多数のバンドを得ることがきる。
各バンドには、それ自体の空きスペースビットマップ
(例えば、ビットマップ524〜534参照)が設けら
れている。空きスペースビットマップの各ビットは、セ
クタを表している。セクタが使用されている場合にはビ
ットは0であり、セクタが使用可能(アベイラブル)で
あるときには、ビットは1である。ビットマップは、バ
ンドのヘッド又はテールに位置付けされるため、2つの
ビットマップは交互のバンドの間に隣接している。ビッ
トマップのバンドサイズは、任意のサイズのファイルを
収容できるように変更できるけれども、上記構成によ
り、16Mbになるようにファイルに割り当てることが
できる最大の連続空きスペースを得ることができる。デ
ィスクのシークセンタにおいて(又はシークセンタに向
かって)位置付けされた1つのバンドは、ディレクトリ
ブロックバンドと呼ばれ、後述するような特別な処理を
受ける。HPFSの全てのファイル又はディレクトリ
は、図8及び図9に示すFnodeと呼ばれている基本
ファイルシステムの目的(オブジェクト)にアンカーさ
れている。Fnode530は、ファイル又はディレク
トリに割り当てられた最初のセクタすなわち第1セクタ
であり、スーパーブロック504におけるフィールド5
22により指示されている。各Fnode530は単一
のセクタを占拠し、かつ、図8に示すように、ファイル
システムにより内的に用いられる制御及びアクセス情報
フィールド540、拡大属性(extended at
tribute、「EA」)、及びアクセス制御リスト
(access control lists,「AC
Ls」)を記憶する領域542、関連するファイル又は
ディレクトリのネームの長さ及び最初の15文字を表示
したい場合にはそのためのフィールド544、及び割当
て構成546を収容している。Fnodeは、これを代
表するファイル又はディレクトリの近くに常に記憶され
ている。図9に示す割当て構成546は、ファイル又は
ディレクトリの連続性のサイズ及び度合に基づいて幾つ
かの形態をとる。本発明のHPFSは、1つ以上の連続
セクタの1つ以上の実行(runs)又はエクステント
の割当てとして、ファイルをビュー(views)して
いる。各実行は、1対の二重ワード、すなわち、セクタ
における32ビットのスタートセクタ数及び32ビット
の長さ(この長さは、実行長さエンコーディングと呼ば
れている)により記号化される。アプリケーションプロ
グラムの観点からすると、エクステントは目で見ること
はできない。すなわち、ファイルはバイトの継ぎ目のな
い流れであると考えることができる。Fnodeにおけ
る割当て情報にリザーブされたスペースは、各16Mb
までのセクタの8回の実行と同数のポインタを保持する
ことができる。従って、高度連続サイズのかなり小さな
ファイルを、Fnodeの中に完全に記述することがで
きる。HPFSは、Fnodeにとっては大き過ぎるか
細分され過ぎているファイルの位置を示す新しい方法を
採用しており、8回以上の実行を有している、Fnod
eの割当ては、割当てセクタのB+ツリー(木)のルー
ト(根)となり、このルートには、図10に示すよう
に、ファイルのセクタ実行を指す実際のポインタが収容
されている。B+ツリー及びB−ツリーの概念について
は後で詳述する。Fnodeのルートは、12のエレメ
ントのためのルームを有している。各割当てセクタは、
種々のセクタ情報に加えて、セクタ実行を指す40個程
のポインタを収容することができる。従って、本発明の
好ましい実施例においては、2レベル割当てのB+ツリ
ー(two level allocations B
+Tree)が、7.68Gb(12*40*16M
b)の論理的最大サイズを持つ480(12*40)回
のセクタ実行のファイルを記述することができる。これ
と異なり、高度に細分化されたファイルを記述するには
2レベル割当てのB+ツリーが充分でない場合には、H
PFSファイルシステムが、ツリーに必要なだけの付加
的レベルを導入する。中間レベルにおける割当てセクタ
は、60個程の内部(端部ではない)B+ツリーノード
を保持することができ、このことは、この構成の記述能
力が極めて大きな数に急速に成長することを意味してい
る。例えば、3レベル割当てB+ツリーは、28,80
0(12*60*40)回のセクタ実行を記述すること
ができる。割当てセクタの実行長さエンコーディング
(run−length encodings)及びB
+ツリーは、ファイルのサイズ及び位置を充分に特定で
きるメモリであり、かつ従来技術に比べ幾つかの優れた
長所を有している。セクタ数への論理的ファイルオフセ
ットの翻訳は極めて高速に行われる。すなわち、ファイ
ルシステムは、正しい範囲が見出されるまで実行サイズ
を要約し、実行ポインタ(run pointers)
のリスト(すなわちリストのB+ツリー)を単に横切る
だけである。そのとき、簡単な計算を行うことにより、
実行の中でセクタを識別することができる。また、新た
に割り当てられたセクタがファイルの前の最終セクタと
連続している場合には、実行長さエンコーディングによ
って、ファイルを論理的に拡大することが極めて簡単に
なる。このファイルシステムは、ファイルの最終実行ポ
インタのサイズ二重ワード(size double
nord)を単に増大させるだけであり、適当な空きス
ペースのビットマップにおけるセクタのビットをクリア
するように構成されている。ファイルと同様に、ディレ
クトリはFnodesにアンカーされる。ルートディレ
クトリ(root directory)についてのF
nodeを指すポインタは、スーパーブロック512に
おいて見出すことができる。図11は、本発明によるデ
ィレクトリ構成を示すものであり、ここにはディレクト
リFnode550が示されている。ルート以外のディ
レクトリについてのFnodeは、それらの親ディレク
トリ(parent directories)におけ
るサブディレクトリ入口を通って到達する。ディレクト
リは、ディスク上に4つの連続セクタ(consecu
tivesectors)として割り当てられる2Kb
のディレクトリブロックから構成されていて、任意のサ
イズに成長することができる。例えば、ディレクトリブ
ロック552、554、556を参照されたい。このフ
ァイルシステムは、ディスクのシークセンタ又はその近
くに位置付けされたディレクトリバンドにディレクトリ
ブロックを割り当てることを試みている。ディレクトリ
バンドが満たされると、スペースが利用できる限り、デ
ィレクトリブロックが割り当てられる。2Kbの各ディ
レクトリブロックには、1つから多数のディレクトリ入
口を設けることができる。例えば、入口558〜568
を参照されたい。ディレクトリ入口には幾つかのフィー
ルド(欄)が設けられ、これらのフィールドには、図1
1に示すように、時間及び日付スタンプのためのフィー
ルド570と、Fnodeポインタを収容するフィール
ド572と、ディスクメインテナンスプログラム(この
プログラムは良く知られたものである)による使用がで
きるようにするための用法カウントフィールド(usa
ge count field)574と、ファイルの
長さすなわちディレクトリネームを収容するフィールド
576と、ネーム自体のフィールド578と、B−ツリ
ーポインタを収容するフィールド580とが含まれてい
る。各ディレクトリ入口は、入口の長さを含んでいるワ
ード582で始まる。これにより、各入口の終時におけ
るフレックススペースの可変量が与えられる。この可変
量は、ファイルシステムの特別なバージョンに使用でき
るようにし、かつディレクトリブロックを極めて迅速に
横切らせることを可能にする。ディレクトリブロックの
入口の数は、ネームの長さによって変化する。平均的な
ファイルネームの長さが13文字であるときには、平均
ディレクトリブロックはほぼ40個の入口を保持するで
あろう。ディレクトリブロックの入口は、それらのネー
ムフィールド(名前欄)の2進字句順序(binary
lexical order)により分類される。最
終入口は、ブロックの終了を印すダミーレコードであ
る。ディレクトリが大きくなり過ぎて1つのブロック内
に記憶されなくなった場合には、B−ツリーとして編成
される2Kbブロックを付加することによりサイズを大
きくできる。特定のネームをサーチする場合には、ファ
イルシステムが一致を見出すか、目的とするネームより
も字句的に多いネームを見出すまで、ファイルシステム
がディレクトリブロックを横行する。後者の場合、ファ
イルシステムが、入口からB−ツリーのポインタを抽出
する。このポインタがどのサーチフィールドをも指示し
ない場合には、ファイルシステムは、ツリーにおける次
のディレクトリブロックを次のポインタにより指示さ
せ、サーチを続行する。ブロック当り40個の入口があ
るものと仮定すれば、ディレクトリブロックの2レベル
ツリーは1,640個のディレクトリ入口を保持でき、
3レベルツリーは65,640個の入口を保持すること
ができる。換言すれば、最大限3つのディスクアクセス
を備えた一般的な65,640個のファイルにおいて、
特定のファイルを見出すことができる(又は、それが存
在しないことを示すことができる)。ディスクアクセス
の実際の数は、キャッシュコンテンツ(cache c
ontents)及びディレクトリブロックのB−ツリ
ーのファイルネームの位置に基づいて定められる。これ
は、最悪の場合4,000個のセクタを読み取って、同
数のファイルを収容しているディレクトリにファイルが
存在するか否かを画定しなければならないFATファイ
ルシステムに対して顕著な改善を与えるものである。H
PFSのB−ツリーディレクトリ構成は、開放作業及び
見出し作業に関するその効果を超える興味ある含意(i
mplications)を有している。ディレクトリ
ブロックを付加(又は除去)するか、或いはネームが或
るブロックから他のブロックに移動されてツリーのバラ
ンスを保つとき、ファイルの創出、リネーミング又は削
除により、複雑な作業のカスケードを生じさせるかもし
れない。実際、ファイル自体が成長することはないけれ
ども、リネーム作業によってディスクスペースの不足を
きたすであろう。この問題を回避するには、HPFS
が、ディレクトリの緊急時に引き出すことができる空き
ブロックの小さなプールをリザーブし、このプールを指
すポインタがスペアブロックに記憶されるように構成す
るのが好ましい。ファイル属性は、ファイルの明白な記
憶領域の外でオペレーティングシステムにより維持され
るファイルについての情報である。本発明のHPFS
は、拡大属性(Extended Attribute
s,「EAs」を支持し、ネームバリューの形態をと
る。但し、バリュー部分は、ゼロで終わる記号列(nu
ll−terminatedstring,「ASCI
IZ」)でもよいし2進データでもよい点を除く。本発
明の好ましい実施例においては、各ファイル又はディレ
クトリは、これに取り付けられたEAsの64Kbの最
大値をとることができる。但し、この制限は容易に変更
することができる。EAsの記憶方法は変えることがで
きる。所与のファイル又はディレクトリと関連するEA
sが充分に小さい場合には、これらのEAsはFnod
eに記憶されるであろう。また、EAsの全体のサイズ
が非常に大きいときには、これらのEAsはセクタ実行
においてFnodesの外に記憶され、割当てセクタの
B+ツリーが創出されて実行が記述される。単一のEA
が非常に大きい場合には、該EAはFnodeの外に押
し出され、該EA自体のB+ツリー内に押し込まれる。
本発明は、アプリケーションプログラムがファイルの拡
大属性(ExtendedAttributes)を走
査することを可能にするOS/2カーネルのAPI機
能、すなわち、DOSQFileInfo及びDosS
etFileInfoを改善することができる。また、
本発明によれば、任意のパスネーム(パス名)と関連す
るEAsの読取り及び書込みに使用できる2つの新たな
機能、すなわちDOSQPathInfo及びDOsS
elPathInfoを得ることができる。アプリケー
ションプログラムは、特定のEA(これは、一致させる
べきネームを供給する)のバリューを要求するか、ファ
イル又はディレクトリについての全てのEAsを一度に
得ることができる。EAsの支持により、目的にかなっ
たアプリケーションプログラムの使用が容易になる。フ
ァイルを所有するアプリケーションのネームから、従属
ファイルのネーム、アイコン及び実行コード(exec
utable code)に至る殆ど全ての形式の情報
をEAsに記憶させることができる。HPFSは、多レ
ベルでのディスクスループットの潜在的ボトルネックを
アタックする。性能を向上させるため、HPFSは、進
歩したデータ構成、連続セクタ割当て、インテリジェン
トキャッシング、読取りヘッド、及びデファード書込み
(deferred writes)を使用している。
最初に、HPFSは、そのデータ構成、すなわち、ファ
イルネーム、ディレクトリネーム、ファイル又はディレ
クトリに割り当てられたセクタのリストへの高速ランダ
ムアクセスが行えるようにした複雑なデータ構成(B−
ツリー及びB+ツリー)、及び適当なサイズの空きスペ
ースのチャンクを位置付けできるようにする簡単でコン
パクトなデータ構成(ビットマップ)をタスクに一致さ
せる。これらのデータ構成を操作するルーチンは、アセ
ンブラ言語で記載するのが好ましい。HPFSの主目的
は、可能な限り、連続セクタをファイルに割り当てるこ
とである。ディスクの読取り/書込みヘッドを或るトラ
ックから他のトラックに移動させるのに要する時間は、
可能性のある他の遅延よりも遙かに重大であり、このた
め、HPFSは、ファイルスペースを連続的に割り当て
ることにより、及びFnode及び該Fnodeが制御
する事柄の近くの空きスペースビットマップのような制
御構成を維持することにより、このようなヘッド運動を
回避するか最小限にする。高度の連続的なファイルはま
た、多くのセクタに対し一度に要求されるディスクドラ
イバのリクエストを、ファイルシステムによって少なく
することを補助し、ディスクドライバが、ディスクコン
トローラの多セクタ移送能力を活用できるようにし、か
つ、修理すべきディスクの完全な中断数を低減させるこ
とができる。多数のファイルを同時に更新させるマルチ
タスキングオペレーティングシステムにおいてファイル
が細分化されないように維持することは、従来技術には
見られない特徴である。HPFSが用いている1つの方
法(手順)は、新しく創出されたファイルを別々のバン
ドのディスクを横切って分散させ、できるならば、セク
タが拡大されるときファイルに割り当てられるセクタが
インターリーブされないようにすることである。他の方
法は、ファイルを拡大しなければならない度毎に、連続
スペースの4Kbをファイルに予め割り当てて、ファイ
ルを閉じるときに全ての過剰のスペースを戻す方法であ
る。アプリケーションが、新しいファイルの最終的サイ
ズを予め知ることができるならば、HPFSがファイル
を創出するときに、最初のファイル割当てを特定化する
ことにより、HPFSを補助することができるであろ
う。そうすれば、システムは全ての空きスペースビット
マップをサーチして、ファイルを充分に保持できる連続
セクタの実行を見出すことができるであろう。このこと
に失敗した場合には、システムは、ファイルのサイズの
1/2である2ラウンドをサーチし、以下このことが繰
り返される。HPFSは、幾つかの異なる種類のキャッ
シングに頼って、HPFSが要求する物理ディスク転送
の数を最小限にしている。HPFSは、FATファイル
システムが行ったようにして、セクタのキャッシングを
行う。しかしながら、FATファイルシステムとは異な
り、HPFSは非常に大きなキャッシユを効率良く管理
し、セクタキャッシングを、パーハンドルベース(pe
r−handle basis)で、ファイルが用いら
れる方法に調節するようになっている。また、HPFS
は、パスネーム、ディレクトリ、トランスフォーミング
ディスクディレクトリ入口を、記憶表現(memory
representation)におけるよりコンパ
クトで効率の良いものにキャッシングする。性能を向上
させるべくHPFSが用いられているもう1つの技術
は、プログラムが必要とすると考えられるデータを予め
読み取ることである。例えば、ファイルが開かれると
き、ファイルシステムが、Fnode及びファイルの内
容の最初の幾つかのセクタを予めよみとりかつキャッシ
ングする。ファイルが、該ファイル注の実行プログラム
(Executable Program)又はヒスト
リー情報である場合には、Fnodeは、全ファイルを
直ちに連続的に読み取ることにより、ファイルの開放作
業が一般的に続けられていることを示す。ファイルシス
テムは、より多くのファイル内容物を用意しかつキャッ
シングする。プログラムが比較的少量の読取りリクエス
トを発行する場合には、ファイルシステムは2Kbのチ
ャングのファイルから絶えずデータを取り出し、過剰の
データをキャッシングする。このキャッシングにより、
殆どの読取り作業が満足できるものになる。本発明のH
PFSは、OS/2のマルチタスキング能力に基づいた
遅い書込み(lazy writes、デファード書込
み又はライトビハインド(write behind)
とも呼ばれている)を頼りにしているところが大きい。
例えば、プログラムがディスク書込みを要求する場合に
は、データはキャッシュ内に置かれ、キャッシュバッフ
ァがダーティとしてフラグされる(すなわち、ディスク
のデータの状態と一致しないことを示す)。ディスクが
アイドル状態になるか、或いはキャッシュがダーティバ
ッファで飽和されると、ファイルシステムは、ダエモン
プロセス(daemonprocess)からのキャプ
ティプスレッド(captive thread)を用
いてバッファをディスクに書き込み、最も古いデータで
スタートする。キャプティブスレッド及びダエモンプロ
セスについては、Hastings、その他の著者によ
るテキストシリーズ「マイクロソフト社のOS/2プロ
グラマーズリファレンス(“Microsoft OS
/2Programmers Reference”」
(1989年、Microsoft Press社刊)
において説明されている。一般に、遅い書込みは、プロ
グラムがより高速で実行されることを意味している。な
ぜならば、一般に、プログラムの読取りリクエストは、
書込みリクエストを待機して遅延することなく完了する
からである。繰り返し読み取られるプログラムの場合
は、小さなワーキングセットを変更して書き込むので、
遅い書込みはまた、多くの不必要なすなわち冗長な物理
ディスク書込みを回避することができる。遅い書込みは
それらの或る危険性を有しており、従って本発明は、D
osOpenに対してOpenModeパラメータのラ
イトスルーフラグ(write−through fl
ag)を設定することにより、パーハンドルベース(p
er−handle basis)上で遅い書込みに打
ち勝ち、DosRefReset機能により、パーハン
ドルベース上のディスクにデータを委託(commi
t)することができる。OS/2の現行バージョンにお
いても、DosOpen及びDosBufResetの
両機能を利用することができる。遅い書込み(lazy
write)の広範囲な使用により、HPFSが、あ
らゆる緊事態の下での書込みエラーから優雅に回復でき
るようになる。例えば、書込みの失敗が知られるときま
でに、アプリケーションは長時間を要する。なぜなら
ば、アプリケーションは、データをディスク記憶装置内
に安全に運び出したという錯覚の下で行われるからであ
る。ディスクアダプタにより戻される「セクタが見つけ
ないエラー(“sector not found”e
rror)」のようなエラーは、ハードウェアにより検
出することができる。或いは、そのようなエラーは、デ
ータの書込み後、読取り検証(read after−
write verification)中、ハードウ
ェアのディスクドライバにより検出される。書込みエラ
ーを取り扱う主要機構は、ホットフィックス(hotf
ix)と呼ばれる。エラーが検出されると、ファイルシ
ステムは、リザーブされたネットフィックスプールから
空きブロックを取り出し、該ブロックにデータを書込ん
で、ホットフィックスマップを更新する(ホットフィッ
クスマップとは、単に、一連の対をなす二重ワードのこ
とであり、二重ワードの各対は、そのホットフィックス
交換の番号と関連する番号の悪いセクタを収容してい
る)。次に、ホットフィックスマップのコピーがスペア
ブロックに書き込まれ、ディスク装置に問題があること
をユーザに知らせる警告メッセージがディスプレイされ
る。ファイルシステムがディスクドライバからのセクタ
読取り又は書込みを要求する度毎に、ファンシステム
は、ネットフィックスマップを走査して、悪いセクタの
番号を実際のデータを保持している良いセクタに相当す
る番号に置き換える。CHKDSKの1つのデューティ
はホットフィックスマップを空にすることである。ホッ
トフィックスマップの各交換ブロックに対し、CHKD
SKは、データを所有するファイルに対する好ましい位
置にある新しいセクタを割り当て、データをホットフィ
ックスブロックから新しい割り当てられたセクタに移動
させ、かつ、ファイルの割当て情報(この情報には、再
バランスしている割当てツリー及び他の精巧な作業が含
まれている)を更新する。次いで、CHKDSKは、悪
いブロックリストに悪いセクタを付加し、交換セクタを
解放してホットフィックスプールに戻し、ホットフィッ
クスマップからホットフィックス入口を削除し、かつ、
更新したホットフィックスマップをスペアブロックに書
き込む。HPFSは、かくHPFSボリュームのスペア
ブロックにダーティFSフラグを維持するHPFSボリ
ームの全てのファイルが閉じられるとき、キャッシュ内
の全てのダーティバッファが書き込まれるとき、或い
は、ブートボリュームの場合にはシャットダウンが選択
されかつその作業を完了したときに、フラグがクリアさ
れる。OS/2のブートシーケンス中に、ファイルシス
テムが各HPFS上のダーティFSフラグを検査して、
フラグが設定されている場合には、CHKDSKが実行
されるまでブートボリュームには更にアクセスできない
ようにする。ブートボリュームにダーティFSフラグが
設定されている場合には、システムは自動的にCHKD
SKを実行する。スーパーブロック又はルートディレク
トリの損失というような眞に重大な事故には、最も成功
の可能性のあるデータ回復を与えることができるように
HPFSが設計されている。Fnode、割当てセクタ
及びディレクトリブロックを備えた殆ど全ての形式の重
要なファイル目的(オブジェクト)が、その親及び子の
両方に二重にリンクされており、かつ、ユニークな32
ビットのサインを収容している。Fnodeはまた、そ
れらのファイル又はディレクトリのネームの最初の部分
を収容している。従って、SHODSは、Fnode、
割当てセクタ及びディレクトリブロックに対してディス
クを規則正しく走査し、Fnode、割当てセクタ及び
ディレクトリブロックを用いてファイル及びディレクト
リダイアグラムに空きスペースのビットマップを再創出
(regenerating)することにより、全ボリ
ュームをリビルドすることができる。上記のように、本
発明は、ファイル及びディレクトリを理論的に順序付け
するのに、B+ツリー及びB−ツリー(2進ツリー)を
用いている。2進ツリーは、データを物理的に順序付け
することなくして、ポインタを用いてデータ項目の集合
を論理的に順序付けする技術である。図12を参照すれ
ば、簡単な2進ツリーにおける各ノードには、ツリーに
おるノードの論理的位置を決定するキー値を含む或るデ
ータと、並びにノードの左右のサブツリーを指すポイン
タとが設けられている。ツリーを開始するノードはルー
ト(根)として知られており、ツリーの枝の端部に位置
するノードは、ときどきリーフ(葉)と呼ばれている。
データの特定ピースを見出すには、2進ツリーがルート
を横切るようにする。各ノードにおいて、所望のキーが
ノードのキーと比較される。両キーが一致しない場合に
は、所望のキーがノードのキーより小さいか大きいかに
基づいて、ノードのサブツリーの1つのブランチ又は他
のブランチが選択される。このプロセスは、一致が見出
されるまで、又は図12に示すように空のサブツリーに
出合うまで続けられる。このような簡単な2進ツリー
は、理解と実施が容易であるけれども、実用に際しての
欠点を有している。キーが非ランダムな態様でツリーに
首尾良く分散されなかった付加されなかったりすると、
ツリーが全く非対称的になり、ツリーの横断時間が広範
囲に変化してしまう。アクセス時間を均一にするため、
多くのプログラマは、図5に示すようなB−ツリーとし
て知られているバランス形ツリーを好む傾向にある。B
−ツリーについての重要な点は、データが全てのノード
に記憶され、1つ以上のデータ項目が1つのノードに記
憶され、かつ、ツリーの全てのブランチが同じ長さをも
っているということである。B−ツリーの最悪の場合の
挙動(behavior)は予測可能であり、簡単な2
次ツリーの挙動より遙かに良好であるが、B−ツリーの
メインテナンスはかなり複雑である。新しいデータ項目
ノ付加、キーバリューの変更、又はデータ項目の削除に
より、ノードのスプリッティング(分割)又はマージン
グ(併合)が生じ、これにより、ツリーには他の作業の
カスケードが強制される。図13に示すように、B+ツ
リーは、2つのノード形式(内部ノードは他のノードを
指すだけであり、外部ノードは実際のデータを有してい
る)をもつB−ツリーの特殊化されたフォームである。
B−ツリーよりもB+ツリーの優れている点は、B+ツ
リーの内部ノードが、B−ツリーの中間レベルノードよ
り非常に多くの決定バリューを保持でき、そのため、ツ
リーの外のファンが高速になりかつブランチの平均長さ
が短くなることである。これにより、必要データを見出
すにはB+ツリーのヴランチがその端部に続かなければ
ならないという事実を補償でき、一方、B−ツリーにお
いては、データは中間ノードにおいて発見され、或い
は、ルート(根)においてさえも発見される。本発明
は、OS/2オペレーティングシステムを改善したもの
であり、多くのユーティリティとOS/2の現行バージ
ョンにおいて利用できるサブルーチンを用いて実施する
ことができる。本発明は、主としてOS/2オペレーテ
ィングシステムに使用することを意図しているが、本発
明の原理は、実際のあらゆるコンピュータのオペレーテ
ィングシステムに適用できるものである。ここで説明す
る新しいユーティリティ及びサブルーチンを除き、他の
全てのユーティリティ及びサブルーチンは現在利用され
ていて良く知られたものである。OS/2オペレーティ
ングシステムの詳細な説明については、前述のOS/2
プログラマ用参考書を参照されたい。本発明の改善され
たOS/2オペレーティングシステムのボリュームマネ
ージメント(volume management)
は、OS/2の従来のバージョンにおいて行われている
ものと同じデューディ、すなわち、悪いボリュームがド
ライブにインサートされたときの検出、ボリュームが除
去されたときの検出、ボリュームパラメータブロック
(VPB)を介してドライブ内に置かれた新しいメディ
アに関する新しい情報の創出、適当なデバイスドライバ
との通信、新しいインサートメディアにアクセスする必
要のあるデバイス情報をシステムに与えること、バッフ
ァ及びCDS機構とのインターフェース、及び特定ボリ
ュームへの変更をシステムに知らせること等に応答する
ことができる。OS/2の従来のバージョンにおいて
は、僅かに1つのファイルシステムがあったに過ぎな
い。本発明によれば、統一された環境内に多数のファイ
ルシステムを設けることができる。ボリュームマネージ
ャは、どのファイルシステムを特定のボリュームにアク
セスさせるべきかを決定し、ファイルシステムドライバ
(FSDs)が特定のボリュームについてのそれらの資
源(resources)を管理(マネージ)できるよ
うにする機構を提供し、かつボリュームの管理のために
過去に設けられた全てのFSDsに対して同じサポート
を提供する。本発明は、良く知られている既存のOS/
2呼び出し(OS/2 calls)並びに以下に説明
する幾つかの新しい機能を有している。本発明の設置可
能(installable)なファイルシステムにつ
いての完全な説明は、マイクロフィッシュの形態で本願
に添付されかつ参考として掲示する付録I(Appen
dixI)において述べられている。本発明は、個々の
ボリュームについての正しいファイルシステムドライバ
の識別及びローディングが容易に行えるマウンドプロセ
ス及びアンマウントプロセスを用いることを意図してい
る。マウントプロセスは、幾つかの異なる事象が生じた
とき、すなわち、 1. ボリュームへの最初のアクセスがあったとき、 2. ドライブのボリュームが不確実になる(このこと
は、通常、ユーザが新しいメディアをドライブに入れる
ことを意味する)全てのとき、 3. ドライブ内にないボリュームへのアクセスが要求
される全てのとき、に開始される。 マウントプロセスへの入力は、ドライブパラメータブロ
ック(DPB)(このドライブパラメータブロックは、
デバイスドライバにI/Oを行うこと、及びドライブ内
にあると現在考えられているボリュームのVPBにハン
ドルを記憶させることに使用される)を指すポインタで
ある。マウント作業によりこれが更新される。ローカル
VPBがスタック上に割り当てられ、DPBポインタと
共に初期化される。図15に示すように、項目602で
示すようにメディアの論理的セクタ0を読み取ることに
より、マウントプロセス600が開始される。デバイス
ドライバからの全てのエラーは無視する。なぜならば、
異なる形式のメディア(すなわち、光学ディスク又はC
D−ROM)がトラック0を読取り不能にできるからで
ある。論理的セクタ0を読み取る前に、テンポラリマウ
ントバッファが0に初期化される。ボリュームのラベル
テキストフィールドが「UNLABELED」に初期化
される。セクタ0がチェックされ、特定バリュー(4
1)に対してサインバイト(signaturebyt
e)を比較することにより、フォーマットが認識されて
いるか否かを決定する。フォーマットが認識されていな
い場合には、VPBに近い情報がスタック上に充填され
る(すなわち、32ビットボリューム連続番号(32
Bit Volume Serial Numbe
r))。次に、項目604により、BUILDBPB呼
び出し(BUILDBPB call)が、DPBにお
いて特定化されたデバイスドライバに発行される。BU
ILDBPBは、デバイスドライバによりエクスポート
(移出)される手順である。このBUILDBPB手順
については、付録Iにおいて詳細に説明されている。B
UILDBPBは、装置の物理パラメータ(バイトパー
セクタ(byteper sector)、セクタパー
トラック(sector per trarck)等)
を学習させるべく呼び出される。デバイスドライバは、
ボリュームの物理パラメータを決定するのに用いること
ができる情報を収容しているパッファを指すポインタに
導かれる。殆どのドライバにとっては、これはセクタ0
であり、非常に古い幾つかのドライバにとっては、FA
Tの最初のセクタである。装置が、セクタ0から読み取
られるデータを解釈できない場合(例えば、この場合の
フロッピがFATではなく、従ってFAT IDバイト
が意味をもたない場合)には、装置は最小のBPBを戻
し、カーネル及びFSDsが必要なI/Oを行って、ボ
リュームを完全に識別できるようにする。前に創出され
たBPBからの適合フィールド(relevant f
ield)は、スタックのローカルVPB(すなわち、
Sectors/track、Number of H
eads、Total Sectors、Sector
Size)にコピーされる。新しいVPBが割り当てら
れ、ローカルVPBからの情報がそれにコピーされる。
次に、本発明によれば、ループ606に入り、項目60
8で示すように、新しい創出されたVPB、論理的セク
タ0を指すポインタ、及びVPBファイルシステムの独
立及び従属領域(independentand de
pendentareas)を指すポインタを備えたF
S MOUNT(フラグ=0)の入口点を呼び出すこと
により、各FSDをボール(poll)する。FSDは
FSH DovolIOを呼び出し、ボリュームから他
のセクタを読み取る(それ自体のバッファを割り当てな
くてはならない)。FSDが、ERROR UNCER
TAIN MEDIAに戻る場合には、エラーが戻さ
れ、プロセスは、決定(decision)610によ
り示すように再スタートされる。FSDがブートセクタ
をサポートする場合には、FSDは、ブートセクタのフ
ァイルシステムのネームフィールドをチェックして、こ
れがネームフィールドを認識しているか否かを決定す
る。FSDがブートセクタをサポートしない場合には、
FSDがボリュームを認識しているか否かを決定すべ
く、装置へのI/Oが行われる。FSDがひとたびボリ
ュームを認識しているならば、項目612で示すよう
に、VPBファイルシステムの独立及び従属領域におけ
る適合フィールドを更新する。VPBファイルシステム
の独立及び従属領域については、図16に関連して更に
詳細に説明する。この時点においては、FSDはFS
Hepoer(FSH)機能を発行して、新しいボリュ
ームが、本発明が管理する他の任意のボリュームと同じ
であるか否かを決定する。このFS Helperは、
ファイルシステムの独立及び従属領域にポインタを戻
す。次いでFSDは、項目614で示すように、新しく
創出されたVPBから古いVPBへと情報をコピーす
る。新しい創出されたVPBは、MOUNTの呼び出し
を行った後に破壊される。次に、FSDは、あらゆるバ
ッファを無効にするような古いVPBに対してあらゆる
クリナップ作業(cleanup work)を行う。
これは、ドライブからボリュームが除去されていること
からである。本発明によれば、ひとたびFSDがボリュ
ームを認識すると、リスト内に一致するものが見出され
る場合には新しいVPBが除去される。リスト内に一致
するものが見出されない場合には、VPBは、マウント
されたFSDsのリストにリンクされる。FSDsが認
識されない場合には、決定614及び項目616に示す
ように、VPBが空にされかつFATファイルシステム
がマウントされる。新しいボリュームがドライブにイン
サートされかつ古いボリュームに対してカーネルがもは
や関与しない場合には、本発明では、FSDにFS M
OUNT(フラグ=2)が発行され、これにより、この
ボリュームに割り当てられた資源の割当てを解除するよ
うになっている。本発明により、新しくインサートされ
たボリュームが、ドライブの最終ボリュームとは異なる
ものであることが検出された場合には、FSDに対しF
S MOUNT(フラグ=1)の呼出しが発行され、こ
れにより、除去されたボリュームに関するバッファ無効
のようなあらゆるクリナップ形式の作業を行うことがで
きる。ボリュームに対してもはやカーネルが関与しない
場合には、FS MO NT(フラグ=2、UNMOU
NT)が続いて行われる。新しくインサートされたボリ
ュームが、ドライブにおいて最終的に見出されたボリュ
ームと同じものである場合には、この呼出しは発行され
ない。本発明は、FSDにより要求される機能に対する
既存のカーネル資源を利用するのに、効率の良い機構を
用いることを意図するものである。より詳しくは、FS
Dがカーネル内に存在する機能を要求する場合には、F
SDは、ファイルシステムヘルパ(FSH)を呼び出す
(invoke)ファイルシステムヘルパ呼出し(ca
ll)を発行する。呼び出されたFSHは、次に、要求
された情報を戻す。以下に、ファイルシステムヘルパに
ついて簡単に説明する。以下に述べる要約においては幾
つかの重要なファイルシステムヘルパがリストアップさ
れているけれども、必要に応じて付加的なファイルシス
テムヘルパを設けることができる。ファイルシステムヘ
ルパは、Appendix Iにおいて詳細に説明され
ている。ファイルシステムヘルパ(File System H
elpers) FSH GETVOLPARM:多くのFS呼出し時
に、VPBへのハンドルがFSDに導かれ、FSDが、
VPBのファイルシステムの独立及び従属領域にアクセ
スすることがしばしば必要になる。このヘルパは、その
ようなサービスを与えるものである。 FSH DOVOLIO:FSDが、特定のボリューム
に対してI/Oを行う必要があるときには、FSDは、
このヘルパを使用して、要求されたボリュームが実際に
ドライブ内にあることを保証し、適当なデバイスドライ
バを呼び出し、かつハードエラーを取り扱う。このヘル
パは、FSD内で常時用いることができる。FS_MO
UNT呼出しの範囲内で呼び出されるとき、FSDはド
ライブのボリュームに適用される。しかしながら、FS
DがFS_MOUNT呼出しに戻るまでは、ボリューム
の認識が完了していないので、ERROR UNCER
TAIN MEDIAが戻される場合には、FSDに注
意しなければならない。このことは、ドライブにおける
メディアの識別を試みる間に、メディアが不確実になっ
ていることを示すものである。また、このことにより、
FSDが認識を試みていたボリュームが除去されたこと
を示すようにすることもできる。この場合には、FSD
は、FS_MOUNT呼出しに導かれたhVPBに取り
付けられた(attached)全ての資源を解放し、
ERROR UNCERTAIN MEDIAがFS_
MOUNT呼出しに戻される。これにより、ボリューム
トラッキング論理が、マウントプロセスを再スタートす
るように命令される。FSHDUPLICATEVP
B:FS_MOUNT呼出しの間、入力VPBは、管理
されている他の1つのボリュームと同じボリュームにす
ることができる。新しいボリュームに関する更新情報を
創出しかつ古い複製VPB(older duplic
ate VPB)への情報をコピーすることは、FSD
の責任である。このヘルパは、古い複製VPBが存在し
ているか否かを決定し、存在している場合には、古い複
製VPBのファイルシステムの独立及び従属領域を指す
ポインタを戻し、これらの領域がFSDによって更新さ
れるようにする。次いで、FSDは、ボリュームが除去
されているので、古いボリュームについてあらゆるクリ
ナップ作業を行う。上記のように、本発明は、可能な限
り、予め存在しているOS/2資源を使用することを狙
ったものである。以下のリストは、本発明の作業中に呼
び出される機能の階層(hierarchy)を要約し
たものである。 本発明によれば、メディアが不確実であるか否か又はメ
ディアが最初にアクセスされたか否かが呼び出される。
本発明のボリュームマネージメント機能(ボリューム管
理機能)はライン1.により表される。最初のプロセス
は、ライン1.1で示すように、どのボリュームがシス
テムに表されたかを決定することである。ライン1.
1.1のProbe Changeは、デバイスドライ
バにアクセスすべく呼び出され、メディアの変化をデバ
イスドライバが検出したか否かを決定する。メディアの
変化が検出されたときは、ライン1.1.2においてR
esetMediaが呼び出され、デバイスドライバが
メディアにI/Oできることを知らせる。次に、ライン
1.1.3においてGenhVPBが呼び出され、ボリ
ュームパラメータブロックが創出される。このプロセス
は、LockVBufが呼び出されてオペレーティング
システムのカーネル内のバッファをクリアしかつ直列化
(aerialize)するライン1.1.3.1と共
に開始する。ライン1.1.3.2においては、メディ
アブートセクタのデータが、オペレーティングシステム
のバッファに読み取られる。システムはライン1.1.
3.3に続き、該ライン1.1.3.3においては、B
uildBPBが呼び出されて(invoked)、デ
ィスクドライバを呼び出し(call)、ブートパラメ
ータブロックを作る。次に、.FS_MOUNTがライ
ン1.1.3.4に呼び出される。FS_MOUNTに
おける最初のステップは、ライン1.1.3.4.1の
Bmp Getを呼び出す。ライン1.1.3.4.1
は、BPBのバッファを設定すべく呼び出されカーネル
におけるメモリマネージメントユーティリティである。
ライン1.1.3.4においては、FSMountVo
lumeが呼び出されると、FSMountVolum
eは、FSDsのリストを介して反復し、サクセスに戻
るかリストの終部(エンド)に到達するまで、各FSD
のFS_Mount手順を呼び出す。ライン1.1.
3.4.2においてFSDがサクセスに戻ると、VPB
Copyが呼び出されて、BPBのコピーに対するテン
ポラリバッファを創出する。次に、ライン1.1.3.
4.3におけるVPBLinkが呼び出され、VPBを
チェーンにリンクさせ、該チェーンにおける次のVPB
を指すべくBPBを設定し、現在のVPBをリストの開
始に初期化する。VPBFindがライン1.1.3.
4.4に呼び出されてVPBsのチェーンを試験し、プ
ロセス中のVPBと同じボリューム識別子を所有してい
るVPBを見出す。複製VPBの識別子が。見出された
場合には、ライン1.1.3.4.5にVPBfree
が呼び出され、複製VPBがVPBsのリスト内に見出
された場合には、試験を受けてVPBがVPBから自由
になる。FSMountVolumeが完了すると、V
PBに適当なフィールドを設定するライン1.1.3.
5.にSetVPBが呼び出される。ライン1.1.
3.6において、FindVIDが呼び出され、ボリュ
ーム識別子が見出される。メディアのセクタ0にブート
ブロックが見出されない場合には、ライン1.1.3.
7にDiskIOが呼び出され、ボリュームのBPBが
位置付けされる。FSDのFS_MOuntルーチンが
サクセスに戻らない場合には、(残留)FATファイル
システムのFS_Mount手順と論理的に等価のイン
ラインコードが呼び出される。ライン1.1.3.8に
おいては、CRCが呼び出されて、古いFATボリュー
ムの最初のディレクトリが検査合計(checksu
m)され、それらのブートセクタの連続番号をもたない
ボリュームについてのユニークなボリューム連続番号が
創出される。次に、ライン1.1.3.9〜ライン1.
1.3.13にリストアップされた機能が呼び出され
て、新しいボリューム識別子が創出されかつボリューム
識別子バッファが空にされる。ライン1.1.2.14
においてはBuflnvalidateが呼び出され
て、プロセス開始以来メディアが変化している場合には
バッファ内の全てのデータが無効にされる。その場合に
は、ライン1.1.3.15にFlushBufが呼び
出され、新しいメディアに対してバッファをフラッシュ
させる。 ボリュームについて前から存在しているVP
Bが見出されない場合には、ライン1.1.4のInc
VPBRefが呼び出されて、現在のVPBの基準カウ
ンタが増大(increment)される。この基準カ
ウンタは、ここで問題にしているボリュームが、オペレ
ーティングシステムのカーネルに対して依然として開放
しているか否かを記録するのに使用される。ライン1.
1.5においては、DecVPBRefが呼び出され、
前のVPBの基準カウンタが減少(decremen
t)される。基準カウンタがゼロに減少された場合は、
VBPFreeがライン1.1.5.1に呼び出され、
VPBが空にされる。ライン1.1.6にはReset
Currencyが呼び出され、現在のディレクトリ構
成における位置データが無効であるとしてマークする。
NextCDS(ライン1.1.6.1)及びPoin
tComp(ライン1.1.6.2)は、現在のディレ
クトリ構成(CDSs)を列挙するのに用いられる内部
ルーチンである。ライン1.1.6.3においてBuf
Invalidateが呼び出され、ファイルシステム
のバッファプールから、(現在は陳腐化している)VP
B基準が除去される。上記のように、VPBは、コンピ
ュータシステムに使用されている特定のボリュームにつ
いての情報を記憶するシステムにより用いられる。ボリ
ュームは、ブロック装置におけるメディアとして構成さ
れ、メディアに関する情報は、このボリュームを他の全
てのボリュームから区別する。VPBsは、BMPとし
てセグメントに維持される。従って、システムは記録が
使用されているトラックのみを必要とし、かつ空のリス
トが管理される。新しいボリュームに出合う度毎に、す
なわち、ボリュームのVPB作製(VPB buil
t)がシステムに既存のいかなるVPBsとも一致しな
い度毎に、新しい入口(newentry)が、BMP
管理されたセグメント内で割当てられ、メディアからの
等価データで充填される。システムがVPBが完了する
度毎に、すなわち、システムのRefCountがゼロ
になる度毎に、BMP管理されたセグメントの入口が空
になり、BMPは、この空になった記憶機構(stor
age)を再使用のためにトラックする。テーブルIの
機能により用いられた構成を以下に説明する。VPB
は、次の3つの部分に分割される。 1. カーネルのプライベート部分。この部分は、情報
をカーネルに維持するのに使用され、VPB(例えば、
基準カウント)の管理を必要とする。これは、カーネル
にとってのプライベートなものであり、FSDsは決し
てこのプライベート部分にアクセスしないしかつこれを
変更することがないことを意味している。 2. ファイルシステムの独立部分。この部分は、全て
のファイルシステムにより使用されかつ特定のあらゆる
ファイルシステムから独立している。この部分は、或る
ファイルシステム(file system、「F
S」)の要求に応じて、設置可能なファイルシステムに
導かれる。 3. VPBを用いているファイルシステムに特有の部
分。この部分は、必要に応じてファイルシステムを使用
できる「作業領域」として設定される。この部分は、或
るFSの要求に応じてIFSに導かれる。VPBのレイ
アウトは図16に示されている。次の構成は、ファイル
システムのVPBとは独立した部分を明らかにするもの
である。この構成は、ファイルシステムの形式の如何に
係わりなく、あらゆるファイルシステムにより使用でき
るものである。 下記の構成は、VPBのファイルシステムの従属部分を
定めるものである。この構成は、適合すると考えられる
ファイルシステムにより使用される。 下記の構成は、ボリュームパラメータブロック(VP
B)の構成を定めるものである。 下記の構成は、FSH GETVOLPARM(これ
は、VPBハンドルからVPBデータを得るのに使用さ
れる)により使用される。 下記の構成は、FSH DOVOLIO(これは、ボリ
ュームベース形セクタ配向転送(volume−bas
ed se−ctor−oriented trans
fers)に使用される)により使用される。 下記の構成は、FSH DUPLICATEVPB(こ
れは、複製(古い)VPBへのVPBデータを得るのに
使用される)により使用される。 RedetermineMediaは、下記に示すよう
な特殊な組の入口パラメータ(entry param
eters)を有している。 下記の呼び出しは、ボリューム管理の内部コンポーネン
トインターフェースに使用される。GenhVPBは、
特定のドライブの内部VPBの決定に使用される。戻さ
れた全てのエラーは、ユーザに送られる。 全てのレジスタは、変更することができる。Build
dBPBは、古いディスク(すなわち、認識されたプー
トセクタを有していないディスク)用の正しいBPBを
創出すべく呼び出される。新しいディスクは、ブートセ
クタ内に、KNOWN(既知)で正しいすなわち正当な
BPB(VALID BPB)を有している。デバイス
ドライバへのバッファは、BuildBPB呼び出しの
一部である。 全てのレジスタは、BPを除く全てを変更した。FSM
ountVolumeは、IFSドライブが、関心をも
つボリュームを認識しているか否かを決定すべくチェッ
クする。FSMountVolumeは、各FSドライ
バのFS_Mount入口点を呼び出すFSDチェーン
を通してループし、IFSが、関心をもつボリュームを
認識しているか否かを決定する。このループは、最初の
IFSがボリュームを認識するとき、又はシステム内に
設置されたFSドライバの番号のループカウンタが0に
減少するときに、終端する。 変更されたレジスタ;ax,bp,bx,di,es,
si,VPBFreeは、リンクリストからVPBを除
去して、セグメントからそのブロックを空にする。 VPBLinkは、リストの開始時に新しいVPBをイ
ンサートし、新しいVPB及び古い最初のVPBの前方
及び後方のリンクフィールドを調節する。 VPBFindは、内部リストを走査して、入力VPB
と同じボリュームIDをもつVPBを探す。 VPBCopyは、ローカル領域からBMP管理領域に
VPBをコピーし、かつ正当であるとしてVPBをスタ
ンプする。 悪いボリュームがマウントされたときにこれを検出して
オペレータに正しい処置をとるように知られること、す
なわちボリュームマネージメント(ボリューム管理)
は、オペレーティングシステムのカーネル及び適当なデ
パイスドライバを介して直接行われる。本発明の原理に
よれば、各ファイルシステムドライバ(FSD)は、ボ
リュームラベルと、ファイルシステムに使用される各ボ
リュームについての32ビットのボリューム連続番号と
を創出するようになっている。これらは、ボリュームが
フォーマット化されるときに、理論的セクタゼロのリザ
ーブされた位置に記憶させるのが好ましい。この情報を
記憶するのに、特別のフォーマットが必要になることは
ない。オペレーティングシステムのカーネルは、FSD
を呼び出して、これを含むことがある作業を実行する。
FSDは、ボリュームラベル又は連続番号が変更された
場合には、いつでもボリュームパラメータブロック(V
PB)を更新する。FSDがI/OリクエストをFSヘ
ルパルーチンに導くと、デバイスドライバは、32ビッ
トのボリューム連続番号及びボリュームラベルを(VP
Bを介して)導く。ボリュームに関してI/Oが実行さ
れるとき、オペレーティングシステムのカーネルは、リ
クエストされたボリュームの連続番号を、装置を維持し
ている現在のボリュームの連続番号と比較する。これ
は、ドライブにマウントされたボリュームのドライブパ
ラメータブロック(DPB)のVPBをチェックするこ
とにより行われるインストレージ試験(in−stor
age test)であり、いかなるI/Oも必要とさ
れない。比較の結果、等しくない場合には、オペレーテ
ィングシステムのカーネルは、クリチカルエラーハンド
ラに信号を発生して、特定の連続番号及びラベルをもつ
ボリュームをユーザがインサートすることを促進させ
る。メディアの変化が検出されると、アプリケーション
プログラムのインターフェース(API)の機能呼び出
しの代わりに、ドライブがアクセスし、本発明によれ
ば、そのボリュームに対するマネージングI/Oに応答
できるファイルシステムドライバ(FSD)が決定され
る。次に、本発明は、ボリュームパラメータブロック
(VPB)を割当て、設置されたFSDsをボーリング
(poll)する。FSDは、これがメディアを認識し
ていることを表示する。FSDsは上記のようにしてボ
ーリングされる。FATのFSDは、FSDsのリスト
の最後にあり、他のFSDの認識が生じない場合には、
全てのメディアを認識することにより、省略時FSD
(defaultFSD)として作用する。本発明の原
理によれば、ファイルシステムドライバには、次の2つ
のクラス、すなわち、 1. ローカルすなわち遠隔(仮想ディスク)装置に対
してI/Oを行うブロックデバイスドライバを用いてい
るFSD(これは、ローカルファイルシステムと呼ばれ
ている)と、 2.ブロックデバイスドライバを用いることなくして遠
隔システムにアクセするFSD(これは、遠隔ファイル
システムと呼ばれている)とがある。ドライブレター
(ドライブ文字)と遠隔ファイルシステムとの間の連結
はプログラムされたインターフェースを介して行われ
る。システムのネームスペース(例えば、ドライブ)の
目的とFSDとの間の結合を生じさせるには、DosF
SAttachシステムの呼出しが用いられる。疑似文
字装置(pseudo−character devi
ce)と遠隔ファイルシステムとの間の連結も、Dos
FsAttachインターフェースを介して行われる。
DosFsAttachインターフェースは、DosF
sAttach呼出し及びDosQFsAttach呼
出しで構成されており、これらは、Appendix
Iにおいて詳細に説明されている。ローカルボリューム
が最初に参照されるとき、本発明では、FSDチェーン
の各ローカルFSDを連続的に尋ねて(ask)、各F
SDのFS_MOUNT入口点への呼出しを介してメデ
ィアを受け入れるようになっている。どのFSDもメデ
ィアを受け入れない場合には、メディアは、省略時ファ
イルシステムに割り当てられる。FORMATでは認識
されないメディアにアクセスするため行われる他の全て
の試みがなされて、「無効(正しくない)メディアフォ
ーマット(INVALID MEDIA FORMA
T)」のエラーメッセージが出される。ひとたびボリュ
ームが認識されると、ドライブと、FSDと、ボリュー
ムの連続番号と、ボリュームのラベルとの間の関係が記
憶される。ボリュームの連続番号及びラベルは、ボリュ
ームのパラメータブロック(VPB)に記憶される。V
PBは、開放ファイル(I/Oに基づくファイルハンド
ル)、サーチ及びバッファリファレンス(buffer
references)についてのオペレーティング
システムにより維持される。除去されたボリュームに対
する連続リクエストは、FS_MOUNTを呼び出すこ
とによりボリュームについての設置されたFSDsのボ
ーリングを要する。認識しているFSDにより戻された
VPB及び既存のVPBのボリューム連続番号及びボリ
ュームラベルが比較される。試験が成功した場合には、
ボリュームにFSDがアクセスされる。これに対し、試
験が失敗した場合には、オペレーティングシステムがク
リチカルエラーハンドラに信号を伝達し、ユーザがボリ
ュームを矯正することを促進させる。メディアとVPB
との間の連結は、ボリュームの全ての開放ファイルが閉
じられるまでセーブされ、サーチリファレンス及びキャ
ッチシュバッファリファレンスが除去される。ボリュー
ムの変化によってのみ、次のアクセス時にメディアの再
決定がなされる。ブート可能で論理的に区分(part
ition)されたメディアに関するオペレーティング
システムの区分へのアクセスは、OS/2オペレーティ
ングシステムに利用できる機能セット(機能組)のよう
なフルオペレーティングシステムの機能セットを介して
行われる。ディスクの区分化の設計(disk par
titioning design)についての詳細な
説明が、前述のOS/2プログラマ用参考書においてな
されている。本発明によれば、ネットワークを介してオ
ペレーティングシステムと通信する遠隔装置を識別する
ためのDosQFsAttach機能が提供される。D
osQFsAttachの目的は、取り付け(atta
ch)られた遠隔ファイルシステム、ローカルファイル
システム、文字装置(character devic
e)、又は、ローカルFSD又は遠隔FSDに取り付け
られた疑似装置ネームに関する情報を尋ねることであ
る。DosQFsAttachを呼び出すシーケンスは
次の通りである。 ここで、DeviceNameは、コロン(:)を付し
た駆動文字(drive letter)を指すか、或
は文字又は疑似文字装置ネームを指し、FSAInfo
LeVelの幾つかのバリューは無視する。Devic
eNameが文字又は疑似文字であるときには、Dev
iceNameは、コロンを付した疑似文字の形態を有
するASCIZストリングである。DeviceNam
eが、文字又は疑似文字の装置ネームであるときには、
そのフォーマットは、サブダイレクトリ呼出しのファイ
ルネームのフォーマットにおけるASCIIZストリン
グのフォーマットであり\DEV\のように示すのが好
ましい。序数(ordinal)は、文字装置、疑似文
字装置又はドライブの組のリストのインデックスであ
る。序数は常に1からスタートする。リストの1つの項
目の序数位置は重要でない。序数は、リスト全体を厳格
にステップするのに使用される。序数から項目へのマッ
ピングは揮発性であり、DosQFAttachに対す
る或る呼出しから次の呼出しまで変化することができ
る。FSAInfoLevelは、要求される情報のレ
ベルであり、DataBufferのデータがどの項目
に関するものであるかを決定する。レベル0×0001
は、DeviceNameにより名付けられた特定のド
ライブ又は装置ネームのデータを戻す。序数のフィール
ド(欄)は無視する。レベル0×0002は、序数によ
り選択された文字又は疑似文字装置のリストの入口のデ
ータを戻す。DeviceNameのフィールドは無視
する。レベル0×0003は、序数によって選択された
ドライブのリストの入口のデータを戻す。Device
Nameのフィールドは無視する。DataBuffe
rは戻り情報バッファ(return informa
tion buffer)であり、次のフォーマット内
にある。 szFSNameは、FSDにより移出(エクスポー
ト)されたFSDネームであり、このネームは、必ずし
もブートセクタのFSDネームと同じネームである必要
はない。ローカル文字装置(iType=1)について
は、cbFSDName=0であり、szFSDNam
eは、ゼロで終わるバイトのみを含んでいて、cbFS
AData=0である。ローカルドライブ(iType
=3)については、szFSDNameは、呼出しの時
点でドライブに取り付けられたFSDのネームを含んで
いる。この情報はダイナミックに変化する。ドライブが
オペレーティングシステムのカーネルの常駐ファイルシ
ステムに取り付けられている場合には、szFSDNa
meに“FAT”又は“UNKNOWN”が含まれるで
あろう。常駐ファイルは、マウントを拒むFSDs以外
の任意のディスクに取り付けられるので、認識可能なフ
ァイルシステムを含んでいないディスクを設けることが
できるが、常駐ファイルシステムに取り付けることもで
きる。この場合、差異を検出することができ、この情報
は、破壊されないデータのプログラムが、適正に認識さ
れなかったディスクに存在することを助ける。Data
BufferLenは、戻りバッファのバイト長さであ
る。戻り時においては、この長さは、FSDによりDa
taBufferに戻されたデータの長さである。 全てのブロック装置及び全ての文字及び疑似文字装置に
ついての情報は、DosQFsAttachにより戻さ
れる。この呼出しにより戻される情報は、揮発性が強
い。戻された情報は、これらが戻されるときまでに既に
変化されていることを呼出しプログラムが気付くことが
できるようにするのが好ましい。カーネルの常駐ファイ
ルシステムに取り付けられたディスクに戻された情報
は、ディスクがファイルシステムを備えたものであるこ
とをカーネルが明確に認識しているか否かの決定、又は
カーネルがそのファイルシステムをカーネルに取り付け
たか否か(他のFSDsはディスクを取り付けていない
からである)の決定を行うのに使用することができる。
全てのFSDsへのエラー信号についてのエラーコード
の組は、0×EEOO−0×EEFFである。必要に応
じて他のエラーを付加できるけれども、次のエラーが定
められている。ERROR VOLUME_NOT M
OUNTED=0×EEOO−FSDは、ボリュームを
認識しなかった。各FSDにより定められるエラーコー
ドの組は、0×EFOO−0×FEFFである。ディス
クメディア及びファイルシステムのレイアウトは、次の
構成により説明される。ファイルシステムに与えられる
データは、ブロック装置に取り付けられたデバイスドラ
イバにより与えられるファイルシステムサポートのレベ
ルに基づいている。これらの構成は、ローカルファイル
システムに対してのみ等価性を有している。 上記のように、FS MOUNT機能は、ボリュームを
マウントしかつアンマウントすべく呼び出され、その目
的は、FSDがファイルシステムのフォーマットを認識
しているか否かを決定すべくボリュームを試験すること
にある。FS−MOUNTを呼び出すシーケンスは下記
の通りである。 ここで、フラグは、要求された作業を示す。flag=
0は、ボリュームをマウント又は受け入れるのにFSD
が要求されることを示す。flag=1は、特定のボリ
ュームが除去されたことをFSDがアドバイスされてい
ることを示す。flag=2は、ボリュームがそのドラ
イバから除去されるときに当該ボリュームに割り当てら
れる全ての内部情報及び当該ボリュームが除去されたこ
との最終のカーネル管理リファレンスを開放するのにF
SDが要求されることを示す。flag=3は、FSD
に使用するためのフォーマット化の準備において、認識
の如何に係わらずボリュームを受け入れることをFSD
が要求されることを示す。他の全てのバリューはリザー
ブされる。FSDに導かれるバリューは正しいであろ
う。pvpfsi−VPBのファイルシステム独立部分
を指すポインタ。メディアが、オペレーティングシステ
ムの認識可能なブートセクタを収容している場合には、
ファイルされたvpi vidは、ボリュームについて
の32ビット識別子を収容する。メディアがそのような
ブートセクタを収容しない場合には、FSDは、メディ
アに対してユニークなラベルを創出して、該ラベルをフ
ァイルされたvpi vidに配置する。pvpfsd
−VPBのファイルシステム従属部分を指すポインタ。
FSDは、必要に応じ情報をこの領域に記載させること
ができる。 hVPB−ボリュームへのハンドル。 pBoot−メディアから読み取られたセクタ0を指す
ポインタ。このポインタは、フラグ==0のときにのみ
正当である。ポインタのバッファは、「MUST NO
T BE MODIFIED(変更してはならない)」
を指示する。ポインタは常に正当であり、フラグ==0
である場合にはその正当であることを確認する必要はな
い。読取りエラーが生じた場合には、バッファはゼロを
包含する。FSDは、もたらされたボリュームを試験
し、ボリュームがファイルシステムを認識しているか否
かを決定する。ボリュームがファイルシステムを認識し
ている場合には、vpfsi及びvpfsdの適当な部
分を充填した後に、ゼロに戻る。vpi vid及びv
pi textのフィールドは、FSDにより充填され
る。FSDがオペレーティングシステムのフォーマット
ブートセクタを有している場合には、FSDは、メディ
アをラベルからasclizフォームに変換する。vp
i hDevのフィールドは、オペレーティングシステ
ムにより充填される。ボリュームが認識されていない場
合には、ドライバは非ゼロ(non−zero)に戻
る。vpi text及びvpi vidは、これらの
バリューが変化する度毎により更新されるvpfsdの
内容は次の通りである。 FLAG=0 FSDはFSD FINDDUPHVPBを発行して、
複製VPBが存在しているか否かを決定する。複製VP
Bが存在している場合には、新しいVPBのfs従属領
域が正しくなく、FSDがFS_MOUNTの呼出しか
ら戻った後に、新しいVPBがアンマウントされる。F
SDは、古いVPBのfs従属領域を更新する。複製V
PBが存在しない場合には、FSDは、fs従属領域を
初期化する。 FLAG=1 VPBのfs従属部分は、FSDが最後にこの従属部分
を変更したものと同じである。 FLAG=2 VPBのfs従属部分は、FSDが最後にこの従属部分
を変更したものと同じである。メディア認識プロセスの
後、FSH GETVOLPARM呼出しを用いて、ボ
リュームパラメータを試験することができる。ボリュー
ムパラメータは、メディア認識プロセスの後に変更すべ
きではない。マウントリクエストの間、FSDは、FS
H DOVOLIOを用いることによりメディアの他の
セクタを試験し、I/Oを行うことができる。不確実メ
ディアの戻りが検出される場合には、FSDは「cle
ansup(クリナップ)」の状態になってERROR
UNCER−TAIN MEDIAを戻し、新しいイ
ンサートされたメディアに関してボリュームマウント論
理が再スタートできるようにする。FSDは、付加I/
Oに使用できるバッファを設ける。オペレーティングシ
ステムのカーネルは、上記レフカウント(refcou
n)のかウンタを介してVPBを管理する。全てのボリ
ューム特定目的(volumespecific ob
jects)は、適当なボリュームハンドルでラベリン
グされ、VPBに対する基準を示す。ボリュームに対す
る全てのカーネル基準が消滅すると、フラグ=2でFS
_MOUNTが呼び出され、ディスマウントリクエスト
を表示する。ボリュームがそのドライブから除去された
ことをカーネルが検出し、かつ、依然としてボリューム
に対する未解決の基準(outstanding re
ferences)が存在すると、FS_MOUNTは
フラグ=1で呼び出され、FSDが、ボリュームについ
てのクリーンなデータ(又は、他の再生可能データ)を
記憶できるようにする。ダヒティで再生不可能なデータ
は、該データがドライブ内にリマウントされるときに、
ボリュームに書き込むことができるように保持される。
本発明の目的を得る上で、クリーンデータは変化されな
いデータであり、ダーティなデータは変更されたデータ
である。FSDに使用できるようにするためボリューム
をフォーマット化すべきときには、オペレーティングシ
ステムのカーネルは、フラグ=3でFSDのFS_MO
UNT入口を呼び出し、FSDがフォーマット作業の準
備を行えるようにする。FSDは、ボリュームがFSD
の認識するボリュームでない場合でもボリュームを受け
入れる。フォーマットがボリュームに関してファイルシ
ステムを変化させるからである。フォーマット化を完了
できない場合(例えば、FSDがCD−ROMのサポー
トする場合)には、作業は失敗するであろう。殆どのコ
ンピュータシステムのハードウェアは、メディアのカー
ネルメディア形除去(Kernel−mediated
removal of media)ができないの
で、ボリュームがどのドライブにも存在しないときにア
ンマウントリクエストが発行されることは確実である。
FSH_DOVOLIOは、特定のボリュームに対する
I/Oを実行する。FSH_DOVOLIOは、リクエ
ストされたI/Oに対するデバイスドライバのリクエス
トパケットをフォーマット化し、デバイスドライバを呼
出し、かつFSDに戻る前に、あらゆるエラーをハード
エラーダエモンに報告する。ハードエラーダエモンによ
り表示された全ての再試行(retries)又はDO
SERRORにより表示されたアクションは、FSH_
DOVOLIOへの呼出しを行っている間に行われる。
次に、FSH_DOVOLIOに対する呼出しフォーマ
ットについて説明する。 ここで、オペレーションビットマスク(operati
on bit mask)は、実行すべきread/r
ead−bypass/Write/Write−by
pass/verify−after−write/w
rite−through及びノーキャッシュ作業(n
o−cache operation)を表示する。 Bit 0×0001 offは、読取りを表示する。 Bit 0×0001 onは、書込みを表示する。 Bit 0×0002 offは、no−bypass
を表示する。 Bit 0×0002 onは、casche byp
assを表示する。 Bit 0×0004 offは、no verife
y−after−write作業を表示する。 Bit 0×0004 onは、verify−aft
er−writeを表示する。 Bit 0×0008 offは、ハードエラーダエモ
ンに信号を送られたエラーを表示する。 Bit 0×0008 onは、ハードエラーが直接戻
されることを表示する。 Bit 0×00010 offは、I/Oが“wri
te−through”でないことを表示する。 Bit 0×00010 on は、このI/Oが“w
rite−through”であることを表示する。 Bit 0×00020 offは、このI/Oに対す
るデータを変更すべきことを表示する。 Bit 0×00020 on は、このI/Oに対す
るデータを変更すべきではないことを表示する。 リザーブされた他の全てのビットはゼロである。「ca
che bypass(キャッシュバイパス)」と、
「no cache(のキャッシュ)」ビットとの間の
相違は、リクエストパケットの形式においてデバイスド
ライバが導かれることである。「cache bypa
ss」では、コマンドコード24、25又は26でパケ
ットが得られ、「no cache」では、システム
は、コマンドコード4、8又は9に対するバケットを拡
大する。 hVPB I/Oの資源に対するボリュームハンド
ル。 pData ユーザの転送領域(transfer
area)の長いアドレス。 pcSec 転送すべきセクタ数を指すポインタ。 戻り時には、これは首尾良く転送されたセクタ数であ
る。 iSec 転送の最初のセクタ数。 Returns −作業が失敗した場合には、0以外の
エラーコード。ERROR PROJECTION V
IOLATION−供給されたaddress/len
gthは正しくない。ERROR UNCERTAIN
MEDIA−メディアが変更されているときには、デ
バイスドイバは信頼性をもって告げることはできない。
このことは、FS MOUNTのコンテクスト内におい
てのみ生じる。ERROR TRANSFER TOO
LONG−デバイスにとって転送が非常に短い。FS
H_DOVOLIOは、常時、FSD内で使用すること
ができる。FS_MOUNT呼出しの範囲内で呼び出さ
れるとき、FSH_DOVOLIOは、ボリュームの如
何に係わらず、ドライブのボリュームに適用される。し
かしながら、FSDがFS_MOUNTの呼出しに戻る
までは、ボリュームの認識が完了しないので、FSD
は、ERROR UNCERTAIN MEDIAが戻
されないときには、特別な注意を払わなければならな
い。これは、ドライブにおけるメディアを識別するの
に、メディアが不確実な試みを行ったことを表示する。
また、FSDが認識を試みたポリュームが除去されたこ
とを表示するようにしてもよい。この場合、FSDは、
FS MOUNTの呼出し時に導かれたhVPBに取り
付けられたあらゆる資源を解放し、かつERROR U
NCERTA−INMEDIAをFS_MOUNT呼出
しに戻す。これにより、マウントプロセスを再スタート
させるように、ボリュームトラッキング論理を仕向けら
れる。FSDsは、FSH DOVOLIO2を呼出し
て、I/O作業とは独立して、デバイスドライバの作業
を制御する。このルーチンは、IOCTL作業に対する
ボリューム管理をサポートしている。FSDに戻る前
に、全てのエラーがハードエラーダエモンに報告され
る。ハードエラーダエモンにより表示されるすべての再
試行又はDOSERRORにより表示されるアクション
は、FSH DOVOLIO2への呼出し内に行われ
る。 ここで、 hDev−VPBから得られたデバイスハンドル。 Sfn−FSH DEVIOCTL呼出しを引き起こし
たオープンインスタンス(open instanc
e)からのシステムファイルの数。このフィールドは、
変化されない状態で、sfi selfsfnのフィー
ルドから導かれるべきである。どのオーブンインスタン
スもこの呼出しに一致しないときには、このフィールド
は、0×FFFFに設定される。 cat −実行すべきIOCTLのカテゴリ。 func−IOCTLのカテゴリ内での機能。 pParm−パラメータ領域へのロングアドレス。 cbParm−パラメータ領域の長さ。 pData−データ領域へのロングアドレス。 cbData−データ領域の長さ。 Returns−エラーが検出されないときには0以外
のエラーコード。 供給された機能が、ここに述べているシステムとの互換
性をもたない場合には、ERROR INVALID
FUNCTIONが呼び出される。メディアが不確実に
なるときにはいつでも、新しいVPBが割り当てられる
(メディアが変更されていないことがもはや確かではな
いことを、デバイスドライバは認識している)。このV
PBは、FS MOUNT呼出しが戻るまで、(メディ
アの再インサートにより)前に割り当てられたVPBと
共に崩壊することはない。しかしながら、前のVPB
は、メディア(このメディアは、該メディアが除去され
ている間に書き込むことができる)から更新されなくて
はならない幾つかのキャッシュデータをもつことができ
る。古いVPBについてのキャッシュ情報(cache
d information)を更新するため、FSH
FINDDUPHVPBは、ボリュームの、この前に
生じたことをFSDが見出すことを可能にする。このボ
リュームについて別の古いVPBが存在しない場合に
は、新しい創出されたVPBがアンマウントされる。F
SH FINDDUPHVPBについての呼出しフォー
マットは次の通りである。 ここで、 hVPB−見出すべきボリュームに対するハンドル。 phVPB−マッチングボリュームのハンドルをどこに
記憶させるかを指すポインタ。 Returns−マッチングVPBが見出されないとき
には0以外のエラーコード。 ERROR NO ITEMS−マッチングhVPBは
存在しない。FSH GETVOLPARMは、FSD
が、VPBからファイルシステムの独立及び従属データ
を検索することを可能にする。FSルータはVPBハン
ドル内を通るので、ここのFSDsは、適合部分を指す
ポインタ内にハンドルをマッピングする。FSH GE
TVOLPARMについての呼出しシーケンスは次の通
りである。 ここで、 hVPB−関心のあるボリュームハンドル。 ppVPBfsi−ファイルシステムの独立データを記
憶させるべくポインタが指す位置。 ppVPBfsd−ファイルシステムの従属データを記
憶させるべくポインタが指す位置。 Returns−なし。 FSD Volumeのマッピングはダイナミックであ
り、かつFSD−DD連結は、FSD及びDDの独立方
法により、オペレーティングシステムのカーネルを介し
て行われるので、あらゆるFSDは、DDsがこのFS
Dからローディングされたボリュームを含むあらゆるボ
リュームにアクセスできる。ボリュームは、除去可能な
メディアの特定のピース(片)、又は区分できる任意の
メディアの任意の区分にマッビングするので、多数のF
SDsが特定のハードディスク又は他のメディアにアク
セスできるようにしてもよい。ボリュームファイル作業
は、2つのカテゴリ、すなわち、ネームベース作業(n
amed−hased operations)及びハ
ンドルベース作業(handle−based ope
rations)に分けることができる。ネームベース
作業は一般にユーザによって開始され、システム100
がファイルについてネーム作業を行うことをユーザがシ
ステム100に命令(instruct)する。ハンド
ルベース作業は、一般に、システムのバックグラウンド
作業中に開始される。通常、ハンドルベース作業は、ネ
ームベース作業の後に行われる。図17に示すように、
コンピュータシステム100がネームベース作業を行っ
ているときに、ルーチン800が呼び出される。ネーム
ド作業は、文字ネームにより指示された作業である。す
なわち、この作業は、ファイル又はディレクトリのネー
ムにより特定化される。「Open file“xx
x”」はネームベース作業の一例である。プロセス80
2は、ネームをパーシング(parse)すべく呼び出
されて、3つの変数すなわち、PathNameTyp
e、TCBThishVPB及びTCBThisFSC
を戻す。このプロセス802については、図18に関連
して詳細に説明する。(注、hはハンドルをいい、TC
Bは、TCHThishVPBが現に関心をもっている
VPBへのハンドルでありかつTCBThisFCHが
関心のあるファイルシステムを指すポインタである、ス
レッド制御ブロック(thread control
block)いう。)次に、項目804は、プロセス8
02により戻された変数PathType、TchTh
ishVPB及びTCHThisFCHに基づく適当な
機能に制御をルーチング(route)する。UNC
FSDが呼び出されるユニバーサルネーミングコンベン
ション(Universal Naming Conv
ention、「UNC」)のグローバルネットワーク
を表示する「\\」で経路(path)が始まるときに
は、項目806を通る制御が行われる。ローカル装置が
表示される場合には、制御が項目808に導かれ、カー
ネル内でリクエストが処理される。疑似装置又は遠隔フ
ァイルが表示されるときには、制御は項目810に導か
れて、疑似装置又は遠隔ファイルが取り付けられた遠隔
FSDに対するリクエストをルーチングする。ネームド
パイプ(named pipe)が検出された場合に
は、制御は項目812に導かれて、カーネル無しでロー
カルネームドパイプコードを呼び出す。ローカルファイ
ルが表示される場合には、制御は項目814に導かれ
る。この項目814は、項目816におけるFSHDO
VOLIOを呼び出すことによりボリュームへの読取り
及び書込みを行うFSDにおけるFSDワーカである。
FSHDOVOLIOについては、図20に関して更に
詳細に説明する。次に、図18を参照して、パーシング
プロセス802を説明する。呼出しがあると、項目90
2は、現在のドライブ、現在のディレクトリ及びネーム
自体に基づいて、関心のあるネームをカノニカルフォー
ム(canonjal form)に変形する。次に、
変数TCBTHISFSC、TCHThisVPB及び
pathnametypeが下記のようにして決定され
るデシジョン904は、ユーザのネームが「\\」で始
まっているか否かを決定して、UNCネームが表示され
ているか否かを決定する。UNCネームが表示されてい
れば、制御が項目905に導かれ、ここで、変数pat
htype、TchThishVPB及びTCBThi
sFCHが初期化され、ユーザのネームを適当な位置に
ルーチングする。UNCネームが表示されていなけれ
ば、デシジョン906は、関心をもつネームがカーネル
により維持された、装置のネームリストに載ったネーム
であるか否かを決定する。装置のネームリストに載った
ネームであるときには、デシジョン908は、それが疑
似文字装置であるか否かを決定する。疑似文字装置であ
れば、項目910は表示のように変数を設定する。疑似
文字装置でないときは、制御912に導かれ、表示のよ
うに変数を設定する。デシジョン914は、ネームの初
めにおける「\pipe\」を探すことにより、そのネ
ームが、ネームドパイプであるか否かを決定する。その
ネームがネームドパイブであるときは、項目916は、
表示のように変数を設定する。ネームドパイブでないと
きは、デシジョン918は、そのネームがローカルドラ
イブ又は遠隔ドライブのパスネーム(pathnam
e)を表示しているか否かを決定する。遠隔ドライブが
表示されているときは、制御は項目920に導かれ、こ
こでは、表示のように変数PathType、TchT
hishVPB及びTCBThisFCHを設定する。
遠隔ドライブが表示されていないときは、制御は項目9
22に導かれ、ここでは、どのボリュームから適当なデ
ータを読み取るかが呼び出される。WhatVolum
eが戻ると、制御は項目924に導かれ、ここでは、表
示のように変数PathType、TchThishV
PB及びTCBThisFCHが設定される。図19を
参照すると、プロセス1000が呼び出され、ハンドル
ベース作業が行われる。呼出し時に、項目1002はS
FT入口を検索する。SFT入口及びハンドルは、両方
共DosOpenにより設定される。次いで、TCBT
hisFSCが表示のように設定される。次に、項目1
004において、FSCが指示するファイルシステムの
適合FSDワーカが呼び出される。次いで、項目100
6は、項目1016を呼び出し、必要に応じて項目10
16を呼び出すことにより、呼び出し者すなわちコーラ
ー(caller)によりリクエストされたあらゆるI
/Oを実行する。図20には、FSH Do Vol
10が示されている。項目1102において呼出しがな
されると、hVPBが使用されて、ドライブ並びに関心
のあるボリュームにどのようなボリュームがあるかを決
定する。次に、デシジョン1104は、ドライブにおけ
るボリュームが関心のあるボリュームであるか否かを決
定する。関心のあるボリュームであるときは、項目11
06が呼び出されて、デバイスドライバが呼び出されか
つ特定のパラメータでI/Oを実行する。次にデシジョ
ン1108は、作業中にメディアが不確実に移行したか
否かを決定する。不確実に移行していないときには、プ
ロセスは項目1114に戻る。デシジョン1108が、
メディアは不確実ではないことを決定するときには、制
御は項目1112に導かれ、ここでは、WhatVol
umeが呼び出されてメディアが確実なものにされる。
次いで、制御はデシジョン1104に戻る。ドライブに
おけるボリュームが関心のあるボリュームに一致しない
ときには、項目1110が呼び出されて、HardEr
rorが呼び出され、ドライブに正しいドライブを置く
ことをユーザに知らせる。次に制御は上記項目1112
に導かれる。付録(Appendix)IIからVI
は、設置可能なファイルシステムの資源の一例としてこ
こに包含される。ここで、付録IIは、本発明の教示に
従ってサポートすることが期待されるファイルシステム
の移出インターフェース(exported inte
rfaces)のリストである。付録IIIは、ファイ
ルシステムを用いることができるカーネルにより移出さ
れるインターフェースのリストである。付録IVは、本
発明に従って構成された設置可能なファイルシステムの
一例の資源コードである。付録Vは、付録IVのFSD
を作るべくOS/2により用いられる定義ファイル(d
efinitions file)のリストである。付
録VIは付録IVのIFSにより使用される構成とパラ
メータを限定しているヘッダーファイルである。付録V
IIは本発明の高性能ファイルシステムを実現するのに
使用するディスク構成の詳細なリストである。要約し
て、データをボリューム内に編成するための改良型高性
能ファイルシステムを説明した。本発明の原理によれ
ば、第1のディスク フィールドがブートブロックを備
え、この第1のフィールドにつづく第2のフィールドが
スーパーブロックを備え、この第2のフィールドに続く
第3のフィールドはスペアブロックを備え、そして複数
のバンドがデータを記憶するための一連の連続セクタを
含み、各バンドはセクタ使用を示すフリースペースビッ
トマップを含んでいる、ディスクの一連のフィールドに
データを編成する。フリースペースビットマップはバン
ドの始めか終わりにあって、交互のバンドのためのビッ
トマップは相互に隣接している。ブートブロックはボリ
ュームネーム、ボリュームI.D.そしてディスクブー
トストラッププログラムを含んでいる。スーパーブロッ
クはフリースペースビットマップ、バッドブロックリス
ト、ディクショナリブロックバンド、そしてルートディ
クショナリへのポインタを含んでいる。本発明に従って
ファイルとディクショナリとはFノード構成にアンカー
されている。Fノード構成はセクタの続きを指している
複数のポインタを備えている。他の使用や変形は当業者
には自明のことであろう。このような使用や変形は本発
明の思想に含まれるものである。
成されたコンピュータシステム100が示されている。
このコンピュータシステム100は、中央処理装置すな
わちマイクロプロセッサ102と、ランダムアクセスメ
モリ104と、リードオンリメモリ106と、マウス1
08及びキーボード110のような入力装置と、ディス
プレイ112及びプリンタ114のような出力装置と、
フロッピディスクドライブ116、ハードディスクドラ
イブ120、CD−ROMドライブ122及びテープド
ライブ124等からなる種々の不揮発性記憶装置とを有
している。また、このコンピュータシステム100は、
ネットワーク126と通信できるようになっている。不
揮発性記憶とは、装置の電源を遮断してもデータが消去
されないことをいう。従来のシステムにおいては、オペ
レーティングシステムは、各周辺装置が単一のメディア
形ファイルシステムドライバのみと互換性をもつファイ
ルシステムドライバによりスタティックに構成されてい
る。指定のファイルシステムドライブとの互換性のない
ドライブにメディアが供給されると、メディアは首尾良
くアクセスすることができない。以下に説明するよう
に、本発明は、周辺装置とは独立してかつメディアに関
するデータのフォーマット又は位置についての条件を賦
課することなくして、関連するファイルシステムにメデ
ィアを自動的にマッピングする方法及び手段を提供する
ものである。例えば、フロッピドライブユニット(フロ
ッピディスクドライブ)116は、多数のファイルシス
テムに従ってフォーマット化されたボリューム(例え
ば、FATファイルシステムに従ってフォーマット化さ
れたボリューム128、良く知られたHigh Sie
rraファイルシステムに従ってフォーマット化された
ボリューム132、及びもう1つのファイルシステムに
従ってフォーマット化されたボリューム130)に使用
することができる。同様に、ハードディスク(ハードデ
ィスクドライブ)120の種々の区分(パーティショ
ン)は、ボリューム134、136、138として表し
た多数のファイルシステムに従ってフォーマット化する
ことができる。同様に、CD−ROMドライブ122及
びテープシステム(テープドライブ)124は、ボリュ
ーム140、142(これらは、それぞれのファイルシ
ステムに従ってフォーマット化されている)に使用する
ことができる。また、ネットワーク126は、サーバ
(該サーバは、それら自体のファイルシステムに従って
作動する)を備えた任意の数のネットワークに接続する
ことができる。コンピュータシステム100の作動(オ
ペレーション)は、良く知られた多数のオペレーティン
グシステムのうちの任意のオペレーティングシステムに
より調整することができる。しかしながら、本発明は特
に、Microsoft社により開発されたOS/2オ
ペレーティングシステムに使用するのに適している。本
発明の作動環境(operating environ
ment)の構成が図2に示してある。一般に、アプリ
ケーション152は、カーネル154により処理される
ファイルシステムのリクエストを発生する。次いで、カ
ーネル154は、このリクエストを適当なファイルシス
テムドライバ(FSD)156〜170に導く。任意の
ファイルシステムドライバを、多数のハードウェア装置
と協働させることができる。例えば、ボリューム17
2、174についてファイルシステム作動を行う場合に
は、High Sierraファイルシステム156を
CD−ROMプレーヤ(CD−ROMドライブ)122
及びディスクドライブ116に使用することができる。
同様に、FATファイルシステム160及びHPFSフ
ァイルシステム162の両者は、ボリューム176、1
78(これらの各々は、ハードディスク120にある)
についてのファイルシステム作動を行うのに使用するこ
とができる。ボリューム180についてファイルシステ
ム作動を行う場合には、ディスクドライブ116にファ
イルシステムドライバを使用することができる。従っ
て、本発明によれば、ファイルシステムの形式及びフォ
ーマットの如何に拘わらず、適当なファイルシステムに
不確実メディアを自動的にかつダイナミックにマッピン
グする方法及び手段が提供される。図3は、従来技術に
よるMS−DOSオペレーティングシステムのファイル
システム構成を示すものである。MS−DOSオペレー
ティングシステム200においては、オペレーティング
システムのカーネル204内にFATファイルシステム
202が埋設されている。このFATファイルシステム
202はオペレーティングシステムのカーネル204内
に一体化されているため、変更(モディファイ)するこ
とは困難である。また、付加的なファイルシステムが必
要な場合には、オペレーティングシステムのカーネル2
04を書き替えてそれらのファイルシステムに適合でき
るようにしなければならない。本発明によれば、図4に
示すシステム技術により上記問題点を解決することがで
きる。本発明のコンピュータシステム100において
も、OS/2カーネル252内には、FATファイルシ
ステム202が埋設されている。しかしながら、本発明
によれば、オペレーティングシステムのカーネル252
に対して外部装置であるFATファイルシステムドライ
バ254、256、258をダイナミックに取り付ける
方法及び手段が提供される。図面には、設置可能な3つ
のファイルシステムドライバを備えたシステム250が
示されているが、実際には、本発明は、ファイルシステ
ムドライバの数に制限されることはない。設置可能(i
nstallable)なファイルシステムドライバ
(filesystem driver、「FSD」)
は、多くの点でデバイスドライバに類似している。FS
Dは、ダイナミックリンクライブラリ(dynamic
−link library、「DLL」、一般には、
SYS又はIFSエクステンションを備えている))の
ように構成されたファイルのディスク上に存在し、CO
NFIG.SYSファイルにおけるIFS=ステートメ
ント(statements)によるシステムの初期化
中にローディングされる。IFS=宣言(direct
ives)は、それらが出合う命令において処理され、
また、デバイスドライバについてDEVICE=文(s
tatements)の命令に対して感応する。これに
より、ユーザが、非標準デバイス用のデバイスドライバ
をローディングし、該デバイスのボリュームからファイ
ルシステムドライバをローディングすること等が可能に
なる。一旦FSDが設置され且つ初期化されると、カー
ネルは、ファイルの開放、読取り、書込み、シーク(s
eeks)、閉鎖等についての論理的リクエスト(lo
gical request)の言語で、FSDで通信
する。FSDは、ボリュームそれ自体に見出される制御
構成及びテーブルを用いて、これらのリクエストをセク
タ読取り(sector reads)用のリクエスト
に翻訳し、かつ、ファイルシステムヘルパ(File
System Helpers、「FsHlps」)と
呼ばれる特別なカーネル入口点を呼び出すことができる
書込みを行う。カーネルは、セクタI/Oに対するデマ
ンドを適当なデバイスドライバに導き、かつその結果を
FSDに戻す。ボリュームをFSDs(複数のFSD)
と結合させるべくオペレーティングシステムにより用い
られる手順は、ダイナミックボリュームマウンティング
(daynamic volume mountin
g)と呼ばれ、次のように作動する。ボリュームが最初
にアクセスされるとき、或いは、直接アクセスを行うべ
く(例えばFORMATオペレーションにより)ボリュ
ームがロックされ次いでアンロックされた後に、オペレ
ーティングシステムのカーネルは、ボリュームからFS
Dsの各々への識別情報を発生し、これは、FSDがこ
の情報を認識するまで順次行われる。FSDがボリュー
ムをクレイムすると、ボリュームがマウントされ、ボリ
ュームに対する全ての連続ファイルI/Oリクエスト
が、ボリュームをクレイムしたFSDに導かれる。この
構成により、従来技術にはない幾つかの利点を得ること
ができる。例えば、不確実メディアがコンピュータシス
テムに与えられる場合に、コンピュータシステムは、利
用できるファイルシステムドライバを走査して、このメ
ディアを認識できるファイルシステムドライバを位置付
けすることができ、これにより、メディアへのファイル
システムドライバの自動マッピングを行うことが可能に
なる。また、オペレーティングシステムのカーネルを変
更する必要なくして、ファイルシステムドライバを更新
することができる。更に、新しい形式の周辺装置が開発
されたときに、既存システムのソフトウェアを混乱させ
ることなく、適当なファイルシステムドライバをオペレ
ーティングシステムに付加することができる。コンピュ
ータシステム100のより詳細なダイアグラムが図5に
示してある。コンピュータシステム100は、アプリケ
ーションプログラム302とディスク装置304のよう
なデータ記憶装置との間の通信を行うことができるオペ
レーティングシステムのカーネル252を有している。
また、このコンピュータシステム100は、ファイルシ
ステムドライバ254〜258と関連して作動するデバ
イスドライバ306を有している。図面には単一の周辺
装置304を備えたコンピュータシステム100が示さ
れているが、本発明は、任意の数の論理的又は物理的周
辺装置と組み合わせて使用できるものである。作動に際
し、アプリケーションプログラム302は、所望の機能
についての入口点を呼び出すことにより、オペレーティ
ングシステムのカーネル252に対する論理的ファイル
リクエストを発行する。これらの機能には、ファイルを
開放すること(DosOpen)、ファイルを読み取る
こと(DosRead)、ファイルに書き込むこと(D
osWrite)等のリクエストを含めることができ
る。オペレーティングシステムのカーネル252は、こ
れらのリクエストを、ファイルを保持(ホールディン
グ)する特定のボリュームについての適当なファイルシ
ステムドライバ254〜258に導く。次に、適当な設
置可能なファイルシステムドライバが、論理的ファイル
リクエストを、指定メディアの論理的セクタの読取り及
び書込みのためのリクエストに翻訳し、かつオペレーテ
ィングシステムのカーネルのファイルシステムヘルパ3
08を呼び出して、これらのリクエストを適当なデバイ
スドライバ306に導く。ファイルシステムヘルパ(F
sHlps)308については、以下により詳細に説明
する。デバイスドライバ306は、オペレーティングシ
ステムのカーネルからの論理的セクタリクエストを、特
定の物理ユニット(すなわち、メディアのシリンダ、ヘ
ッド及びセクタ)についてのリクエストに変形し、か
つ、ディスク装置にコマンドを発行して、ディスクメデ
ィアとランダムアクセスメモリ310との間にデータを
伝達する。次に、物理装置を特定のファイルシステムに
マッピングすることについて以下に詳細に説明する。M
S−DOS環境(MS−DOS environmen
t)においては、フロッピディスクはボリュームと呼ば
れる。固定ディスク(又はハードディスク)は、多数の
ボリュームに区分することができる。このターミノロジ
が、本発明に首尾よく適用されている。簡単に言えば、
コンピュータシステムが最初にブート(boot)され
るとき、ボリュームが最初にアクセスされるとき、又は
コンピュータシステムが、ディスク装置304内に不確
実メディアが存在することを決定するときにはいつで
も、コンピュータシステムは、ファイルシステムドライ
バのリンクされたリストにおける最初のファイルシステ
ムドライバを試験する。ファイルシステムドライバがデ
ィスク装置にローディングされたボリュームを認識する
場合には、ファイルシステムドライバがマウントされ
る。そうでない場合には、コンピュータシステムは、メ
ディアを認識するファイルシステムドライバが位置付け
されるまで、利用できるファイルシステムドライバを連
続的にボーリングする。関心をもつメディアを認識する
設置可能なファイルシステムドライバが全く見出されな
い場合には、省略時ファイルシステムドライバがマウン
トされる。本発明の好ましい実施例においては、省略時
ファイルシステムは、上記のFATファイルシステムで
ある。不確実メディアは、幾つかの方法により検出する
ことができる。ディスク装置には機械的なラッチ機構が
設けられており、該ラッチ機構は、ディスクがディスク
装置から取り出されるとき又はディスク装置に装填され
るときに作動する。一般にラッチ機構は、ドライブの次
の作動によりドアが開放されたことを示すように機能す
る。デバイスドライバがこの表示を受け取ると、エラー
不確実メディア(ERROR_UNCERTAIN M
EDIA)がオペレーティングシステムに戻される。機
械的なラッチ機構がないシステムにおいては、所定時間
より短い時間内にメディアを変更できないと考えられ
る。本発明の好ましい実施例においては、この時間は2
秒であるこ考えられる。従って、所定時間以上の時間を
かけても特定のボリュームがアクセスされない場合に
は、このメディアは不確実であると推定される。図6
は、FATファイルシステムのディスクフォーマットの
ダイアグラムである。FATファイルシステムは、MS
−DOSオペレーティングシステムの初期から該MS−
DOSオペレーティングシステムに使用されている。F
ATファイルシステムについての詳細な説明が、Dan
can著「アドバンスMS DOSプログラミング
(“Advance MS DOS Programm
ing”)」(Microsoft Press社刊、
1986、1988)においてなされている。FATフ
ァイルシステムは、FATファイルシステムは、ファイ
ル割当てテーブル(File Allocation
Table)を中心題目としている。各論理的ボリュー
ムはそれ自体のFATと関連していて、2つの重要な機
能を有している。すなわち、各論理的ボリュームは、割
当てユニット(allocationunits)のリ
ンクされたリストの形態をなすボリュームに関する各フ
ァイルについての割当て情報(allocation
information)を収容していて、その割当て
ユニットには、創出(又は拡大)されているファイルへ
の割当て(代入、assignment)がないことを
表示する。FATファイルシステムに従ってディスクが
フォーマット化されると、ブートセクタ(boot s
ecter)がセクタゼロと書き込まれる。ファイル割
当てテーブルの後にはルートディレクトリ(root
directory)が続き、このルートディレクトリ
の後にはボリュームファイルが続く。ブートセクタに
は、ブートパラメータブロックすなわちBPBと呼ばれ
る、或る領域におけるボリュームに関する種々の記述情
報(descriptive informatio
n)、ドライブの数及びボリュームI.D.のような情
報、及びブートストラップルーチン(bootstra
p routine)が収容されている。ファイル割当
てテーブルは、ディスクについての割当て可能なクラス
タ(これらのクラスタは、セクタを2乗したものであ
る)に直接相当するフィールド(欄)に区分される。一
般に、これらのフィールドは16ビットの幅を有してい
る。最初にリザーブされたFAT入口には、BPBにお
いても見出すことができるメディア記述バイト(med
ia descriptor byte)のコピーが収
容されている。リザーブされた残余のフィールドにはO
FPHが収容されている。残余のFAT入口には、それ
らの相当ディスククラスタ(correspondin
g disk clusters)の使用が記述され
る。ディレクトリの各ファイルの入口には、これらのフ
ァイル(該ファイルは、FATへの入口点として使用さ
れる)に割り当てられる最初のクラスタの数が収容され
る。入口点から、各FATスロット(FAT slo
t)が、最終クラスタマークに出合うまで、ファイル内
の次のクラスタの番号を収容する。また、FATファイ
ルシステムには、読取りエラー等によるFATのセクタ
へのアクセスが失敗した場合に用いることができる最初
のファイル割当てテーブルの複製を維持する機能をオプ
ションとして設けることができる。ファイル割当てテー
ブルの後には、ルートディフレクトリが続く。このルー
トディレクトリは、ファイル、他のディレクトリ、及び
オプションとしてのボリュームラベルを記述する32バ
イトの入口を収容している。ルートディレクトリの後の
残余のボリュームは、クラスタのプールとして見ること
ができるファイル領域(各ファイル領域には1つ以上の
論理的セクタが収容されている)として知られている。
各クラスタは、FATの対応入口(該入口には、FAT
の現在使用、すなわち、利用できること、リザーブされ
ていること、ファイルに割り当てられていること、又は
使用できないことが記述されている)を備えている。F
ATファイルシステムは、1Mb以下のボリュームで優
れた性能を得ることができる。しかしながら、ボリュー
ムのサイズが1Mbを越えると、FATファイルシステ
ムの性能は急激に低下する。容易に入手可能なハードデ
ィスクのサイズは急激に増大しているため、このことは
重要な問題となっている。ボリュームが1Mb以下の場
合には、FATは、いつでもランダムアクセスメモリ内
に保持される程充分に小さく、従って、ファイルのいか
なる部分にも非常に高速のランダムアクセスを行うこと
ができる。しかしながら、ハードディスク又は固定ディ
スクに適用した場合には、FATは大き過ぎてメモリに
保持できなくなり、かつ細分してメモリ内にページ付け
しなければならない。このために多くの余分のディスク
ヘッド運動が必要になり、コンピュータシステムのスル
ープットを低下させている。また、ディスクの空きスペ
ース(free space)についての情報が、FA
Tの多数のセクタを横切って分散されるため、連続的に
ファイルスペースを割り当てることは実際的でない。こ
のため:ファイルが細分化され、コンピュータシステム
のスループットが更に低下される。また、ハードディス
クに比較的大型のクラスタを用いるため、無駄なスペー
スが非常に大きくなる。図7〜図14には、設置可能な
ファイルシステムの1つの場合のディスクフォーマット
を示す一連のダイアグラムが示されている。このファイ
ルシステムは、高性能ファイルシステム(High p
erformance file system,HP
FS)と呼ばれているものである。本発明の高性能ファ
イルシステムは、FATファイルシステムについての上
記問題を解消でき、かつあらゆる形式のディスクメディ
アについて優れた性能を発揮できるものである。図7に
示すように、HPFSボリュームは、前に形成されたF
ATパーティション形の側面に沿って固定ディスク上に
設けることができる。HPFSボリュームは、512バ
イトのセクタサイズを使用しており、2199Gb(2
32のセクタ)の最大サイズを有している。HPFSは
固定ディスクに使用することを主として設計されている
が、実際上、あらゆる形式のディスクメディアとの互換
性を有している。HPFSボリュームは、固定された構
成が殆ど必要とされない。ブートブロック502にはボ
リューム(8Kb)のセクタ0〜15が割り当てられ、
該セクタ0〜15は、ボリュームのネームフィールド
(名前欄)504、32ビットボリュームの1Dフィー
ルド506、BIOSパラメータブロック508、ディ
スクブートストラッププログラム510を収容してい
る。ディスクブートストラッププログラム510は、オ
ペレーティングシステムファイルが見出される限りは、
これらのオペレーティングシステムファイルの位置付け
及び読取りを行う限定モードで使用することができる。
ブートブロック(BootBlock)502の後に
は、スーパーブロック(SuperBlock)512
及びスペアブロック(SpareBlock)514が
続いている。スーパーブロック512は、ディスクメイ
ンテナンスユーティリティによって変更されるに過ぎな
い。スーパーブロック512は、空きスペースのビット
マップを指すポインタ516、バットブロックリスト5
18、ディレクトリブロックバンドを指すポインタ52
0、ルートディレクトリを指すポインタ522を収容し
ている。更にスーパーブロック512は、デート(日付
け)を備えたデートフィールド(日付け欄)524を収
容しており、ボリュームはCHKDSKにより最終チェ
ック及び修復がなされる。CHKDSKは、ディスクの
悪い部分を検出しかつカタログするための良く知られた
OS/2ディスクユーティリティである。スペアブロッ
ク514は種々のフラグ及びポインタを収容しており、
これらについては以下に詳述する。スペアブロック51
4は、コンピュータシステムが実行されるときに変更さ
れる。残余のボリュームは、ファイルの記憶に使用され
る8Mbバンド(例えば、バンド516〜522)に区
分される。図7には4つの8Mbバンドが示されている
が、HPFSは非常に多数のバンドを得ることがきる。
各バンドには、それ自体の空きスペースビットマップ
(例えば、ビットマップ524〜534参照)が設けら
れている。空きスペースビットマップの各ビットは、セ
クタを表している。セクタが使用されている場合にはビ
ットは0であり、セクタが使用可能(アベイラブル)で
あるときには、ビットは1である。ビットマップは、バ
ンドのヘッド又はテールに位置付けされるため、2つの
ビットマップは交互のバンドの間に隣接している。ビッ
トマップのバンドサイズは、任意のサイズのファイルを
収容できるように変更できるけれども、上記構成によ
り、16Mbになるようにファイルに割り当てることが
できる最大の連続空きスペースを得ることができる。デ
ィスクのシークセンタにおいて(又はシークセンタに向
かって)位置付けされた1つのバンドは、ディレクトリ
ブロックバンドと呼ばれ、後述するような特別な処理を
受ける。HPFSの全てのファイル又はディレクトリ
は、図8及び図9に示すFnodeと呼ばれている基本
ファイルシステムの目的(オブジェクト)にアンカーさ
れている。Fnode530は、ファイル又はディレク
トリに割り当てられた最初のセクタすなわち第1セクタ
であり、スーパーブロック504におけるフィールド5
22により指示されている。各Fnode530は単一
のセクタを占拠し、かつ、図8に示すように、ファイル
システムにより内的に用いられる制御及びアクセス情報
フィールド540、拡大属性(extended at
tribute、「EA」)、及びアクセス制御リスト
(access control lists,「AC
Ls」)を記憶する領域542、関連するファイル又は
ディレクトリのネームの長さ及び最初の15文字を表示
したい場合にはそのためのフィールド544、及び割当
て構成546を収容している。Fnodeは、これを代
表するファイル又はディレクトリの近くに常に記憶され
ている。図9に示す割当て構成546は、ファイル又は
ディレクトリの連続性のサイズ及び度合に基づいて幾つ
かの形態をとる。本発明のHPFSは、1つ以上の連続
セクタの1つ以上の実行(runs)又はエクステント
の割当てとして、ファイルをビュー(views)して
いる。各実行は、1対の二重ワード、すなわち、セクタ
における32ビットのスタートセクタ数及び32ビット
の長さ(この長さは、実行長さエンコーディングと呼ば
れている)により記号化される。アプリケーションプロ
グラムの観点からすると、エクステントは目で見ること
はできない。すなわち、ファイルはバイトの継ぎ目のな
い流れであると考えることができる。Fnodeにおけ
る割当て情報にリザーブされたスペースは、各16Mb
までのセクタの8回の実行と同数のポインタを保持する
ことができる。従って、高度連続サイズのかなり小さな
ファイルを、Fnodeの中に完全に記述することがで
きる。HPFSは、Fnodeにとっては大き過ぎるか
細分され過ぎているファイルの位置を示す新しい方法を
採用しており、8回以上の実行を有している、Fnod
eの割当ては、割当てセクタのB+ツリー(木)のルー
ト(根)となり、このルートには、図10に示すよう
に、ファイルのセクタ実行を指す実際のポインタが収容
されている。B+ツリー及びB−ツリーの概念について
は後で詳述する。Fnodeのルートは、12のエレメ
ントのためのルームを有している。各割当てセクタは、
種々のセクタ情報に加えて、セクタ実行を指す40個程
のポインタを収容することができる。従って、本発明の
好ましい実施例においては、2レベル割当てのB+ツリ
ー(two level allocations B
+Tree)が、7.68Gb(12*40*16M
b)の論理的最大サイズを持つ480(12*40)回
のセクタ実行のファイルを記述することができる。これ
と異なり、高度に細分化されたファイルを記述するには
2レベル割当てのB+ツリーが充分でない場合には、H
PFSファイルシステムが、ツリーに必要なだけの付加
的レベルを導入する。中間レベルにおける割当てセクタ
は、60個程の内部(端部ではない)B+ツリーノード
を保持することができ、このことは、この構成の記述能
力が極めて大きな数に急速に成長することを意味してい
る。例えば、3レベル割当てB+ツリーは、28,80
0(12*60*40)回のセクタ実行を記述すること
ができる。割当てセクタの実行長さエンコーディング
(run−length encodings)及びB
+ツリーは、ファイルのサイズ及び位置を充分に特定で
きるメモリであり、かつ従来技術に比べ幾つかの優れた
長所を有している。セクタ数への論理的ファイルオフセ
ットの翻訳は極めて高速に行われる。すなわち、ファイ
ルシステムは、正しい範囲が見出されるまで実行サイズ
を要約し、実行ポインタ(run pointers)
のリスト(すなわちリストのB+ツリー)を単に横切る
だけである。そのとき、簡単な計算を行うことにより、
実行の中でセクタを識別することができる。また、新た
に割り当てられたセクタがファイルの前の最終セクタと
連続している場合には、実行長さエンコーディングによ
って、ファイルを論理的に拡大することが極めて簡単に
なる。このファイルシステムは、ファイルの最終実行ポ
インタのサイズ二重ワード(size double
nord)を単に増大させるだけであり、適当な空きス
ペースのビットマップにおけるセクタのビットをクリア
するように構成されている。ファイルと同様に、ディレ
クトリはFnodesにアンカーされる。ルートディレ
クトリ(root directory)についてのF
nodeを指すポインタは、スーパーブロック512に
おいて見出すことができる。図11は、本発明によるデ
ィレクトリ構成を示すものであり、ここにはディレクト
リFnode550が示されている。ルート以外のディ
レクトリについてのFnodeは、それらの親ディレク
トリ(parent directories)におけ
るサブディレクトリ入口を通って到達する。ディレクト
リは、ディスク上に4つの連続セクタ(consecu
tivesectors)として割り当てられる2Kb
のディレクトリブロックから構成されていて、任意のサ
イズに成長することができる。例えば、ディレクトリブ
ロック552、554、556を参照されたい。このフ
ァイルシステムは、ディスクのシークセンタ又はその近
くに位置付けされたディレクトリバンドにディレクトリ
ブロックを割り当てることを試みている。ディレクトリ
バンドが満たされると、スペースが利用できる限り、デ
ィレクトリブロックが割り当てられる。2Kbの各ディ
レクトリブロックには、1つから多数のディレクトリ入
口を設けることができる。例えば、入口558〜568
を参照されたい。ディレクトリ入口には幾つかのフィー
ルド(欄)が設けられ、これらのフィールドには、図1
1に示すように、時間及び日付スタンプのためのフィー
ルド570と、Fnodeポインタを収容するフィール
ド572と、ディスクメインテナンスプログラム(この
プログラムは良く知られたものである)による使用がで
きるようにするための用法カウントフィールド(usa
ge count field)574と、ファイルの
長さすなわちディレクトリネームを収容するフィールド
576と、ネーム自体のフィールド578と、B−ツリ
ーポインタを収容するフィールド580とが含まれてい
る。各ディレクトリ入口は、入口の長さを含んでいるワ
ード582で始まる。これにより、各入口の終時におけ
るフレックススペースの可変量が与えられる。この可変
量は、ファイルシステムの特別なバージョンに使用でき
るようにし、かつディレクトリブロックを極めて迅速に
横切らせることを可能にする。ディレクトリブロックの
入口の数は、ネームの長さによって変化する。平均的な
ファイルネームの長さが13文字であるときには、平均
ディレクトリブロックはほぼ40個の入口を保持するで
あろう。ディレクトリブロックの入口は、それらのネー
ムフィールド(名前欄)の2進字句順序(binary
lexical order)により分類される。最
終入口は、ブロックの終了を印すダミーレコードであ
る。ディレクトリが大きくなり過ぎて1つのブロック内
に記憶されなくなった場合には、B−ツリーとして編成
される2Kbブロックを付加することによりサイズを大
きくできる。特定のネームをサーチする場合には、ファ
イルシステムが一致を見出すか、目的とするネームより
も字句的に多いネームを見出すまで、ファイルシステム
がディレクトリブロックを横行する。後者の場合、ファ
イルシステムが、入口からB−ツリーのポインタを抽出
する。このポインタがどのサーチフィールドをも指示し
ない場合には、ファイルシステムは、ツリーにおける次
のディレクトリブロックを次のポインタにより指示さ
せ、サーチを続行する。ブロック当り40個の入口があ
るものと仮定すれば、ディレクトリブロックの2レベル
ツリーは1,640個のディレクトリ入口を保持でき、
3レベルツリーは65,640個の入口を保持すること
ができる。換言すれば、最大限3つのディスクアクセス
を備えた一般的な65,640個のファイルにおいて、
特定のファイルを見出すことができる(又は、それが存
在しないことを示すことができる)。ディスクアクセス
の実際の数は、キャッシュコンテンツ(cache c
ontents)及びディレクトリブロックのB−ツリ
ーのファイルネームの位置に基づいて定められる。これ
は、最悪の場合4,000個のセクタを読み取って、同
数のファイルを収容しているディレクトリにファイルが
存在するか否かを画定しなければならないFATファイ
ルシステムに対して顕著な改善を与えるものである。H
PFSのB−ツリーディレクトリ構成は、開放作業及び
見出し作業に関するその効果を超える興味ある含意(i
mplications)を有している。ディレクトリ
ブロックを付加(又は除去)するか、或いはネームが或
るブロックから他のブロックに移動されてツリーのバラ
ンスを保つとき、ファイルの創出、リネーミング又は削
除により、複雑な作業のカスケードを生じさせるかもし
れない。実際、ファイル自体が成長することはないけれ
ども、リネーム作業によってディスクスペースの不足を
きたすであろう。この問題を回避するには、HPFS
が、ディレクトリの緊急時に引き出すことができる空き
ブロックの小さなプールをリザーブし、このプールを指
すポインタがスペアブロックに記憶されるように構成す
るのが好ましい。ファイル属性は、ファイルの明白な記
憶領域の外でオペレーティングシステムにより維持され
るファイルについての情報である。本発明のHPFS
は、拡大属性(Extended Attribute
s,「EAs」を支持し、ネームバリューの形態をと
る。但し、バリュー部分は、ゼロで終わる記号列(nu
ll−terminatedstring,「ASCI
IZ」)でもよいし2進データでもよい点を除く。本発
明の好ましい実施例においては、各ファイル又はディレ
クトリは、これに取り付けられたEAsの64Kbの最
大値をとることができる。但し、この制限は容易に変更
することができる。EAsの記憶方法は変えることがで
きる。所与のファイル又はディレクトリと関連するEA
sが充分に小さい場合には、これらのEAsはFnod
eに記憶されるであろう。また、EAsの全体のサイズ
が非常に大きいときには、これらのEAsはセクタ実行
においてFnodesの外に記憶され、割当てセクタの
B+ツリーが創出されて実行が記述される。単一のEA
が非常に大きい場合には、該EAはFnodeの外に押
し出され、該EA自体のB+ツリー内に押し込まれる。
本発明は、アプリケーションプログラムがファイルの拡
大属性(ExtendedAttributes)を走
査することを可能にするOS/2カーネルのAPI機
能、すなわち、DOSQFileInfo及びDosS
etFileInfoを改善することができる。また、
本発明によれば、任意のパスネーム(パス名)と関連す
るEAsの読取り及び書込みに使用できる2つの新たな
機能、すなわちDOSQPathInfo及びDOsS
elPathInfoを得ることができる。アプリケー
ションプログラムは、特定のEA(これは、一致させる
べきネームを供給する)のバリューを要求するか、ファ
イル又はディレクトリについての全てのEAsを一度に
得ることができる。EAsの支持により、目的にかなっ
たアプリケーションプログラムの使用が容易になる。フ
ァイルを所有するアプリケーションのネームから、従属
ファイルのネーム、アイコン及び実行コード(exec
utable code)に至る殆ど全ての形式の情報
をEAsに記憶させることができる。HPFSは、多レ
ベルでのディスクスループットの潜在的ボトルネックを
アタックする。性能を向上させるため、HPFSは、進
歩したデータ構成、連続セクタ割当て、インテリジェン
トキャッシング、読取りヘッド、及びデファード書込み
(deferred writes)を使用している。
最初に、HPFSは、そのデータ構成、すなわち、ファ
イルネーム、ディレクトリネーム、ファイル又はディレ
クトリに割り当てられたセクタのリストへの高速ランダ
ムアクセスが行えるようにした複雑なデータ構成(B−
ツリー及びB+ツリー)、及び適当なサイズの空きスペ
ースのチャンクを位置付けできるようにする簡単でコン
パクトなデータ構成(ビットマップ)をタスクに一致さ
せる。これらのデータ構成を操作するルーチンは、アセ
ンブラ言語で記載するのが好ましい。HPFSの主目的
は、可能な限り、連続セクタをファイルに割り当てるこ
とである。ディスクの読取り/書込みヘッドを或るトラ
ックから他のトラックに移動させるのに要する時間は、
可能性のある他の遅延よりも遙かに重大であり、このた
め、HPFSは、ファイルスペースを連続的に割り当て
ることにより、及びFnode及び該Fnodeが制御
する事柄の近くの空きスペースビットマップのような制
御構成を維持することにより、このようなヘッド運動を
回避するか最小限にする。高度の連続的なファイルはま
た、多くのセクタに対し一度に要求されるディスクドラ
イバのリクエストを、ファイルシステムによって少なく
することを補助し、ディスクドライバが、ディスクコン
トローラの多セクタ移送能力を活用できるようにし、か
つ、修理すべきディスクの完全な中断数を低減させるこ
とができる。多数のファイルを同時に更新させるマルチ
タスキングオペレーティングシステムにおいてファイル
が細分化されないように維持することは、従来技術には
見られない特徴である。HPFSが用いている1つの方
法(手順)は、新しく創出されたファイルを別々のバン
ドのディスクを横切って分散させ、できるならば、セク
タが拡大されるときファイルに割り当てられるセクタが
インターリーブされないようにすることである。他の方
法は、ファイルを拡大しなければならない度毎に、連続
スペースの4Kbをファイルに予め割り当てて、ファイ
ルを閉じるときに全ての過剰のスペースを戻す方法であ
る。アプリケーションが、新しいファイルの最終的サイ
ズを予め知ることができるならば、HPFSがファイル
を創出するときに、最初のファイル割当てを特定化する
ことにより、HPFSを補助することができるであろ
う。そうすれば、システムは全ての空きスペースビット
マップをサーチして、ファイルを充分に保持できる連続
セクタの実行を見出すことができるであろう。このこと
に失敗した場合には、システムは、ファイルのサイズの
1/2である2ラウンドをサーチし、以下このことが繰
り返される。HPFSは、幾つかの異なる種類のキャッ
シングに頼って、HPFSが要求する物理ディスク転送
の数を最小限にしている。HPFSは、FATファイル
システムが行ったようにして、セクタのキャッシングを
行う。しかしながら、FATファイルシステムとは異な
り、HPFSは非常に大きなキャッシユを効率良く管理
し、セクタキャッシングを、パーハンドルベース(pe
r−handle basis)で、ファイルが用いら
れる方法に調節するようになっている。また、HPFS
は、パスネーム、ディレクトリ、トランスフォーミング
ディスクディレクトリ入口を、記憶表現(memory
representation)におけるよりコンパ
クトで効率の良いものにキャッシングする。性能を向上
させるべくHPFSが用いられているもう1つの技術
は、プログラムが必要とすると考えられるデータを予め
読み取ることである。例えば、ファイルが開かれると
き、ファイルシステムが、Fnode及びファイルの内
容の最初の幾つかのセクタを予めよみとりかつキャッシ
ングする。ファイルが、該ファイル注の実行プログラム
(Executable Program)又はヒスト
リー情報である場合には、Fnodeは、全ファイルを
直ちに連続的に読み取ることにより、ファイルの開放作
業が一般的に続けられていることを示す。ファイルシス
テムは、より多くのファイル内容物を用意しかつキャッ
シングする。プログラムが比較的少量の読取りリクエス
トを発行する場合には、ファイルシステムは2Kbのチ
ャングのファイルから絶えずデータを取り出し、過剰の
データをキャッシングする。このキャッシングにより、
殆どの読取り作業が満足できるものになる。本発明のH
PFSは、OS/2のマルチタスキング能力に基づいた
遅い書込み(lazy writes、デファード書込
み又はライトビハインド(write behind)
とも呼ばれている)を頼りにしているところが大きい。
例えば、プログラムがディスク書込みを要求する場合に
は、データはキャッシュ内に置かれ、キャッシュバッフ
ァがダーティとしてフラグされる(すなわち、ディスク
のデータの状態と一致しないことを示す)。ディスクが
アイドル状態になるか、或いはキャッシュがダーティバ
ッファで飽和されると、ファイルシステムは、ダエモン
プロセス(daemonprocess)からのキャプ
ティプスレッド(captive thread)を用
いてバッファをディスクに書き込み、最も古いデータで
スタートする。キャプティブスレッド及びダエモンプロ
セスについては、Hastings、その他の著者によ
るテキストシリーズ「マイクロソフト社のOS/2プロ
グラマーズリファレンス(“Microsoft OS
/2Programmers Reference”」
(1989年、Microsoft Press社刊)
において説明されている。一般に、遅い書込みは、プロ
グラムがより高速で実行されることを意味している。な
ぜならば、一般に、プログラムの読取りリクエストは、
書込みリクエストを待機して遅延することなく完了する
からである。繰り返し読み取られるプログラムの場合
は、小さなワーキングセットを変更して書き込むので、
遅い書込みはまた、多くの不必要なすなわち冗長な物理
ディスク書込みを回避することができる。遅い書込みは
それらの或る危険性を有しており、従って本発明は、D
osOpenに対してOpenModeパラメータのラ
イトスルーフラグ(write−through fl
ag)を設定することにより、パーハンドルベース(p
er−handle basis)上で遅い書込みに打
ち勝ち、DosRefReset機能により、パーハン
ドルベース上のディスクにデータを委託(commi
t)することができる。OS/2の現行バージョンにお
いても、DosOpen及びDosBufResetの
両機能を利用することができる。遅い書込み(lazy
write)の広範囲な使用により、HPFSが、あ
らゆる緊事態の下での書込みエラーから優雅に回復でき
るようになる。例えば、書込みの失敗が知られるときま
でに、アプリケーションは長時間を要する。なぜなら
ば、アプリケーションは、データをディスク記憶装置内
に安全に運び出したという錯覚の下で行われるからであ
る。ディスクアダプタにより戻される「セクタが見つけ
ないエラー(“sector not found”e
rror)」のようなエラーは、ハードウェアにより検
出することができる。或いは、そのようなエラーは、デ
ータの書込み後、読取り検証(read after−
write verification)中、ハードウ
ェアのディスクドライバにより検出される。書込みエラ
ーを取り扱う主要機構は、ホットフィックス(hotf
ix)と呼ばれる。エラーが検出されると、ファイルシ
ステムは、リザーブされたネットフィックスプールから
空きブロックを取り出し、該ブロックにデータを書込ん
で、ホットフィックスマップを更新する(ホットフィッ
クスマップとは、単に、一連の対をなす二重ワードのこ
とであり、二重ワードの各対は、そのホットフィックス
交換の番号と関連する番号の悪いセクタを収容してい
る)。次に、ホットフィックスマップのコピーがスペア
ブロックに書き込まれ、ディスク装置に問題があること
をユーザに知らせる警告メッセージがディスプレイされ
る。ファイルシステムがディスクドライバからのセクタ
読取り又は書込みを要求する度毎に、ファンシステム
は、ネットフィックスマップを走査して、悪いセクタの
番号を実際のデータを保持している良いセクタに相当す
る番号に置き換える。CHKDSKの1つのデューティ
はホットフィックスマップを空にすることである。ホッ
トフィックスマップの各交換ブロックに対し、CHKD
SKは、データを所有するファイルに対する好ましい位
置にある新しいセクタを割り当て、データをホットフィ
ックスブロックから新しい割り当てられたセクタに移動
させ、かつ、ファイルの割当て情報(この情報には、再
バランスしている割当てツリー及び他の精巧な作業が含
まれている)を更新する。次いで、CHKDSKは、悪
いブロックリストに悪いセクタを付加し、交換セクタを
解放してホットフィックスプールに戻し、ホットフィッ
クスマップからホットフィックス入口を削除し、かつ、
更新したホットフィックスマップをスペアブロックに書
き込む。HPFSは、かくHPFSボリュームのスペア
ブロックにダーティFSフラグを維持するHPFSボリ
ームの全てのファイルが閉じられるとき、キャッシュ内
の全てのダーティバッファが書き込まれるとき、或い
は、ブートボリュームの場合にはシャットダウンが選択
されかつその作業を完了したときに、フラグがクリアさ
れる。OS/2のブートシーケンス中に、ファイルシス
テムが各HPFS上のダーティFSフラグを検査して、
フラグが設定されている場合には、CHKDSKが実行
されるまでブートボリュームには更にアクセスできない
ようにする。ブートボリュームにダーティFSフラグが
設定されている場合には、システムは自動的にCHKD
SKを実行する。スーパーブロック又はルートディレク
トリの損失というような眞に重大な事故には、最も成功
の可能性のあるデータ回復を与えることができるように
HPFSが設計されている。Fnode、割当てセクタ
及びディレクトリブロックを備えた殆ど全ての形式の重
要なファイル目的(オブジェクト)が、その親及び子の
両方に二重にリンクされており、かつ、ユニークな32
ビットのサインを収容している。Fnodeはまた、そ
れらのファイル又はディレクトリのネームの最初の部分
を収容している。従って、SHODSは、Fnode、
割当てセクタ及びディレクトリブロックに対してディス
クを規則正しく走査し、Fnode、割当てセクタ及び
ディレクトリブロックを用いてファイル及びディレクト
リダイアグラムに空きスペースのビットマップを再創出
(regenerating)することにより、全ボリ
ュームをリビルドすることができる。上記のように、本
発明は、ファイル及びディレクトリを理論的に順序付け
するのに、B+ツリー及びB−ツリー(2進ツリー)を
用いている。2進ツリーは、データを物理的に順序付け
することなくして、ポインタを用いてデータ項目の集合
を論理的に順序付けする技術である。図12を参照すれ
ば、簡単な2進ツリーにおける各ノードには、ツリーに
おるノードの論理的位置を決定するキー値を含む或るデ
ータと、並びにノードの左右のサブツリーを指すポイン
タとが設けられている。ツリーを開始するノードはルー
ト(根)として知られており、ツリーの枝の端部に位置
するノードは、ときどきリーフ(葉)と呼ばれている。
データの特定ピースを見出すには、2進ツリーがルート
を横切るようにする。各ノードにおいて、所望のキーが
ノードのキーと比較される。両キーが一致しない場合に
は、所望のキーがノードのキーより小さいか大きいかに
基づいて、ノードのサブツリーの1つのブランチ又は他
のブランチが選択される。このプロセスは、一致が見出
されるまで、又は図12に示すように空のサブツリーに
出合うまで続けられる。このような簡単な2進ツリー
は、理解と実施が容易であるけれども、実用に際しての
欠点を有している。キーが非ランダムな態様でツリーに
首尾良く分散されなかった付加されなかったりすると、
ツリーが全く非対称的になり、ツリーの横断時間が広範
囲に変化してしまう。アクセス時間を均一にするため、
多くのプログラマは、図5に示すようなB−ツリーとし
て知られているバランス形ツリーを好む傾向にある。B
−ツリーについての重要な点は、データが全てのノード
に記憶され、1つ以上のデータ項目が1つのノードに記
憶され、かつ、ツリーの全てのブランチが同じ長さをも
っているということである。B−ツリーの最悪の場合の
挙動(behavior)は予測可能であり、簡単な2
次ツリーの挙動より遙かに良好であるが、B−ツリーの
メインテナンスはかなり複雑である。新しいデータ項目
ノ付加、キーバリューの変更、又はデータ項目の削除に
より、ノードのスプリッティング(分割)又はマージン
グ(併合)が生じ、これにより、ツリーには他の作業の
カスケードが強制される。図13に示すように、B+ツ
リーは、2つのノード形式(内部ノードは他のノードを
指すだけであり、外部ノードは実際のデータを有してい
る)をもつB−ツリーの特殊化されたフォームである。
B−ツリーよりもB+ツリーの優れている点は、B+ツ
リーの内部ノードが、B−ツリーの中間レベルノードよ
り非常に多くの決定バリューを保持でき、そのため、ツ
リーの外のファンが高速になりかつブランチの平均長さ
が短くなることである。これにより、必要データを見出
すにはB+ツリーのヴランチがその端部に続かなければ
ならないという事実を補償でき、一方、B−ツリーにお
いては、データは中間ノードにおいて発見され、或い
は、ルート(根)においてさえも発見される。本発明
は、OS/2オペレーティングシステムを改善したもの
であり、多くのユーティリティとOS/2の現行バージ
ョンにおいて利用できるサブルーチンを用いて実施する
ことができる。本発明は、主としてOS/2オペレーテ
ィングシステムに使用することを意図しているが、本発
明の原理は、実際のあらゆるコンピュータのオペレーテ
ィングシステムに適用できるものである。ここで説明す
る新しいユーティリティ及びサブルーチンを除き、他の
全てのユーティリティ及びサブルーチンは現在利用され
ていて良く知られたものである。OS/2オペレーティ
ングシステムの詳細な説明については、前述のOS/2
プログラマ用参考書を参照されたい。本発明の改善され
たOS/2オペレーティングシステムのボリュームマネ
ージメント(volume management)
は、OS/2の従来のバージョンにおいて行われている
ものと同じデューディ、すなわち、悪いボリュームがド
ライブにインサートされたときの検出、ボリュームが除
去されたときの検出、ボリュームパラメータブロック
(VPB)を介してドライブ内に置かれた新しいメディ
アに関する新しい情報の創出、適当なデバイスドライバ
との通信、新しいインサートメディアにアクセスする必
要のあるデバイス情報をシステムに与えること、バッフ
ァ及びCDS機構とのインターフェース、及び特定ボリ
ュームへの変更をシステムに知らせること等に応答する
ことができる。OS/2の従来のバージョンにおいて
は、僅かに1つのファイルシステムがあったに過ぎな
い。本発明によれば、統一された環境内に多数のファイ
ルシステムを設けることができる。ボリュームマネージ
ャは、どのファイルシステムを特定のボリュームにアク
セスさせるべきかを決定し、ファイルシステムドライバ
(FSDs)が特定のボリュームについてのそれらの資
源(resources)を管理(マネージ)できるよ
うにする機構を提供し、かつボリュームの管理のために
過去に設けられた全てのFSDsに対して同じサポート
を提供する。本発明は、良く知られている既存のOS/
2呼び出し(OS/2 calls)並びに以下に説明
する幾つかの新しい機能を有している。本発明の設置可
能(installable)なファイルシステムにつ
いての完全な説明は、マイクロフィッシュの形態で本願
に添付されかつ参考として掲示する付録I(Appen
dixI)において述べられている。本発明は、個々の
ボリュームについての正しいファイルシステムドライバ
の識別及びローディングが容易に行えるマウンドプロセ
ス及びアンマウントプロセスを用いることを意図してい
る。マウントプロセスは、幾つかの異なる事象が生じた
とき、すなわち、 1. ボリュームへの最初のアクセスがあったとき、 2. ドライブのボリュームが不確実になる(このこと
は、通常、ユーザが新しいメディアをドライブに入れる
ことを意味する)全てのとき、 3. ドライブ内にないボリュームへのアクセスが要求
される全てのとき、に開始される。 マウントプロセスへの入力は、ドライブパラメータブロ
ック(DPB)(このドライブパラメータブロックは、
デバイスドライバにI/Oを行うこと、及びドライブ内
にあると現在考えられているボリュームのVPBにハン
ドルを記憶させることに使用される)を指すポインタで
ある。マウント作業によりこれが更新される。ローカル
VPBがスタック上に割り当てられ、DPBポインタと
共に初期化される。図15に示すように、項目602で
示すようにメディアの論理的セクタ0を読み取ることに
より、マウントプロセス600が開始される。デバイス
ドライバからの全てのエラーは無視する。なぜならば、
異なる形式のメディア(すなわち、光学ディスク又はC
D−ROM)がトラック0を読取り不能にできるからで
ある。論理的セクタ0を読み取る前に、テンポラリマウ
ントバッファが0に初期化される。ボリュームのラベル
テキストフィールドが「UNLABELED」に初期化
される。セクタ0がチェックされ、特定バリュー(4
1)に対してサインバイト(signaturebyt
e)を比較することにより、フォーマットが認識されて
いるか否かを決定する。フォーマットが認識されていな
い場合には、VPBに近い情報がスタック上に充填され
る(すなわち、32ビットボリューム連続番号(32
Bit Volume Serial Numbe
r))。次に、項目604により、BUILDBPB呼
び出し(BUILDBPB call)が、DPBにお
いて特定化されたデバイスドライバに発行される。BU
ILDBPBは、デバイスドライバによりエクスポート
(移出)される手順である。このBUILDBPB手順
については、付録Iにおいて詳細に説明されている。B
UILDBPBは、装置の物理パラメータ(バイトパー
セクタ(byteper sector)、セクタパー
トラック(sector per trarck)等)
を学習させるべく呼び出される。デバイスドライバは、
ボリュームの物理パラメータを決定するのに用いること
ができる情報を収容しているパッファを指すポインタに
導かれる。殆どのドライバにとっては、これはセクタ0
であり、非常に古い幾つかのドライバにとっては、FA
Tの最初のセクタである。装置が、セクタ0から読み取
られるデータを解釈できない場合(例えば、この場合の
フロッピがFATではなく、従ってFAT IDバイト
が意味をもたない場合)には、装置は最小のBPBを戻
し、カーネル及びFSDsが必要なI/Oを行って、ボ
リュームを完全に識別できるようにする。前に創出され
たBPBからの適合フィールド(relevant f
ield)は、スタックのローカルVPB(すなわち、
Sectors/track、Number of H
eads、Total Sectors、Sector
Size)にコピーされる。新しいVPBが割り当てら
れ、ローカルVPBからの情報がそれにコピーされる。
次に、本発明によれば、ループ606に入り、項目60
8で示すように、新しい創出されたVPB、論理的セク
タ0を指すポインタ、及びVPBファイルシステムの独
立及び従属領域(independentand de
pendentareas)を指すポインタを備えたF
S MOUNT(フラグ=0)の入口点を呼び出すこと
により、各FSDをボール(poll)する。FSDは
FSH DovolIOを呼び出し、ボリュームから他
のセクタを読み取る(それ自体のバッファを割り当てな
くてはならない)。FSDが、ERROR UNCER
TAIN MEDIAに戻る場合には、エラーが戻さ
れ、プロセスは、決定(decision)610によ
り示すように再スタートされる。FSDがブートセクタ
をサポートする場合には、FSDは、ブートセクタのフ
ァイルシステムのネームフィールドをチェックして、こ
れがネームフィールドを認識しているか否かを決定す
る。FSDがブートセクタをサポートしない場合には、
FSDがボリュームを認識しているか否かを決定すべ
く、装置へのI/Oが行われる。FSDがひとたびボリ
ュームを認識しているならば、項目612で示すよう
に、VPBファイルシステムの独立及び従属領域におけ
る適合フィールドを更新する。VPBファイルシステム
の独立及び従属領域については、図16に関連して更に
詳細に説明する。この時点においては、FSDはFS
Hepoer(FSH)機能を発行して、新しいボリュ
ームが、本発明が管理する他の任意のボリュームと同じ
であるか否かを決定する。このFS Helperは、
ファイルシステムの独立及び従属領域にポインタを戻
す。次いでFSDは、項目614で示すように、新しく
創出されたVPBから古いVPBへと情報をコピーす
る。新しい創出されたVPBは、MOUNTの呼び出し
を行った後に破壊される。次に、FSDは、あらゆるバ
ッファを無効にするような古いVPBに対してあらゆる
クリナップ作業(cleanup work)を行う。
これは、ドライブからボリュームが除去されていること
からである。本発明によれば、ひとたびFSDがボリュ
ームを認識すると、リスト内に一致するものが見出され
る場合には新しいVPBが除去される。リスト内に一致
するものが見出されない場合には、VPBは、マウント
されたFSDsのリストにリンクされる。FSDsが認
識されない場合には、決定614及び項目616に示す
ように、VPBが空にされかつFATファイルシステム
がマウントされる。新しいボリュームがドライブにイン
サートされかつ古いボリュームに対してカーネルがもは
や関与しない場合には、本発明では、FSDにFS M
OUNT(フラグ=2)が発行され、これにより、この
ボリュームに割り当てられた資源の割当てを解除するよ
うになっている。本発明により、新しくインサートされ
たボリュームが、ドライブの最終ボリュームとは異なる
ものであることが検出された場合には、FSDに対しF
S MOUNT(フラグ=1)の呼出しが発行され、こ
れにより、除去されたボリュームに関するバッファ無効
のようなあらゆるクリナップ形式の作業を行うことがで
きる。ボリュームに対してもはやカーネルが関与しない
場合には、FS MO NT(フラグ=2、UNMOU
NT)が続いて行われる。新しくインサートされたボリ
ュームが、ドライブにおいて最終的に見出されたボリュ
ームと同じものである場合には、この呼出しは発行され
ない。本発明は、FSDにより要求される機能に対する
既存のカーネル資源を利用するのに、効率の良い機構を
用いることを意図するものである。より詳しくは、FS
Dがカーネル内に存在する機能を要求する場合には、F
SDは、ファイルシステムヘルパ(FSH)を呼び出す
(invoke)ファイルシステムヘルパ呼出し(ca
ll)を発行する。呼び出されたFSHは、次に、要求
された情報を戻す。以下に、ファイルシステムヘルパに
ついて簡単に説明する。以下に述べる要約においては幾
つかの重要なファイルシステムヘルパがリストアップさ
れているけれども、必要に応じて付加的なファイルシス
テムヘルパを設けることができる。ファイルシステムヘ
ルパは、Appendix Iにおいて詳細に説明され
ている。ファイルシステムヘルパ(File System H
elpers) FSH GETVOLPARM:多くのFS呼出し時
に、VPBへのハンドルがFSDに導かれ、FSDが、
VPBのファイルシステムの独立及び従属領域にアクセ
スすることがしばしば必要になる。このヘルパは、その
ようなサービスを与えるものである。 FSH DOVOLIO:FSDが、特定のボリューム
に対してI/Oを行う必要があるときには、FSDは、
このヘルパを使用して、要求されたボリュームが実際に
ドライブ内にあることを保証し、適当なデバイスドライ
バを呼び出し、かつハードエラーを取り扱う。このヘル
パは、FSD内で常時用いることができる。FS_MO
UNT呼出しの範囲内で呼び出されるとき、FSDはド
ライブのボリュームに適用される。しかしながら、FS
DがFS_MOUNT呼出しに戻るまでは、ボリューム
の認識が完了していないので、ERROR UNCER
TAIN MEDIAが戻される場合には、FSDに注
意しなければならない。このことは、ドライブにおける
メディアの識別を試みる間に、メディアが不確実になっ
ていることを示すものである。また、このことにより、
FSDが認識を試みていたボリュームが除去されたこと
を示すようにすることもできる。この場合には、FSD
は、FS_MOUNT呼出しに導かれたhVPBに取り
付けられた(attached)全ての資源を解放し、
ERROR UNCERTAIN MEDIAがFS_
MOUNT呼出しに戻される。これにより、ボリューム
トラッキング論理が、マウントプロセスを再スタートす
るように命令される。FSHDUPLICATEVP
B:FS_MOUNT呼出しの間、入力VPBは、管理
されている他の1つのボリュームと同じボリュームにす
ることができる。新しいボリュームに関する更新情報を
創出しかつ古い複製VPB(older duplic
ate VPB)への情報をコピーすることは、FSD
の責任である。このヘルパは、古い複製VPBが存在し
ているか否かを決定し、存在している場合には、古い複
製VPBのファイルシステムの独立及び従属領域を指す
ポインタを戻し、これらの領域がFSDによって更新さ
れるようにする。次いで、FSDは、ボリュームが除去
されているので、古いボリュームについてあらゆるクリ
ナップ作業を行う。上記のように、本発明は、可能な限
り、予め存在しているOS/2資源を使用することを狙
ったものである。以下のリストは、本発明の作業中に呼
び出される機能の階層(hierarchy)を要約し
たものである。 本発明によれば、メディアが不確実であるか否か又はメ
ディアが最初にアクセスされたか否かが呼び出される。
本発明のボリュームマネージメント機能(ボリューム管
理機能)はライン1.により表される。最初のプロセス
は、ライン1.1で示すように、どのボリュームがシス
テムに表されたかを決定することである。ライン1.
1.1のProbe Changeは、デバイスドライ
バにアクセスすべく呼び出され、メディアの変化をデバ
イスドライバが検出したか否かを決定する。メディアの
変化が検出されたときは、ライン1.1.2においてR
esetMediaが呼び出され、デバイスドライバが
メディアにI/Oできることを知らせる。次に、ライン
1.1.3においてGenhVPBが呼び出され、ボリ
ュームパラメータブロックが創出される。このプロセス
は、LockVBufが呼び出されてオペレーティング
システムのカーネル内のバッファをクリアしかつ直列化
(aerialize)するライン1.1.3.1と共
に開始する。ライン1.1.3.2においては、メディ
アブートセクタのデータが、オペレーティングシステム
のバッファに読み取られる。システムはライン1.1.
3.3に続き、該ライン1.1.3.3においては、B
uildBPBが呼び出されて(invoked)、デ
ィスクドライバを呼び出し(call)、ブートパラメ
ータブロックを作る。次に、.FS_MOUNTがライ
ン1.1.3.4に呼び出される。FS_MOUNTに
おける最初のステップは、ライン1.1.3.4.1の
Bmp Getを呼び出す。ライン1.1.3.4.1
は、BPBのバッファを設定すべく呼び出されカーネル
におけるメモリマネージメントユーティリティである。
ライン1.1.3.4においては、FSMountVo
lumeが呼び出されると、FSMountVolum
eは、FSDsのリストを介して反復し、サクセスに戻
るかリストの終部(エンド)に到達するまで、各FSD
のFS_Mount手順を呼び出す。ライン1.1.
3.4.2においてFSDがサクセスに戻ると、VPB
Copyが呼び出されて、BPBのコピーに対するテン
ポラリバッファを創出する。次に、ライン1.1.3.
4.3におけるVPBLinkが呼び出され、VPBを
チェーンにリンクさせ、該チェーンにおける次のVPB
を指すべくBPBを設定し、現在のVPBをリストの開
始に初期化する。VPBFindがライン1.1.3.
4.4に呼び出されてVPBsのチェーンを試験し、プ
ロセス中のVPBと同じボリューム識別子を所有してい
るVPBを見出す。複製VPBの識別子が。見出された
場合には、ライン1.1.3.4.5にVPBfree
が呼び出され、複製VPBがVPBsのリスト内に見出
された場合には、試験を受けてVPBがVPBから自由
になる。FSMountVolumeが完了すると、V
PBに適当なフィールドを設定するライン1.1.3.
5.にSetVPBが呼び出される。ライン1.1.
3.6において、FindVIDが呼び出され、ボリュ
ーム識別子が見出される。メディアのセクタ0にブート
ブロックが見出されない場合には、ライン1.1.3.
7にDiskIOが呼び出され、ボリュームのBPBが
位置付けされる。FSDのFS_MOuntルーチンが
サクセスに戻らない場合には、(残留)FATファイル
システムのFS_Mount手順と論理的に等価のイン
ラインコードが呼び出される。ライン1.1.3.8に
おいては、CRCが呼び出されて、古いFATボリュー
ムの最初のディレクトリが検査合計(checksu
m)され、それらのブートセクタの連続番号をもたない
ボリュームについてのユニークなボリューム連続番号が
創出される。次に、ライン1.1.3.9〜ライン1.
1.3.13にリストアップされた機能が呼び出され
て、新しいボリューム識別子が創出されかつボリューム
識別子バッファが空にされる。ライン1.1.2.14
においてはBuflnvalidateが呼び出され
て、プロセス開始以来メディアが変化している場合には
バッファ内の全てのデータが無効にされる。その場合に
は、ライン1.1.3.15にFlushBufが呼び
出され、新しいメディアに対してバッファをフラッシュ
させる。 ボリュームについて前から存在しているVP
Bが見出されない場合には、ライン1.1.4のInc
VPBRefが呼び出されて、現在のVPBの基準カウ
ンタが増大(increment)される。この基準カ
ウンタは、ここで問題にしているボリュームが、オペレ
ーティングシステムのカーネルに対して依然として開放
しているか否かを記録するのに使用される。ライン1.
1.5においては、DecVPBRefが呼び出され、
前のVPBの基準カウンタが減少(decremen
t)される。基準カウンタがゼロに減少された場合は、
VBPFreeがライン1.1.5.1に呼び出され、
VPBが空にされる。ライン1.1.6にはReset
Currencyが呼び出され、現在のディレクトリ構
成における位置データが無効であるとしてマークする。
NextCDS(ライン1.1.6.1)及びPoin
tComp(ライン1.1.6.2)は、現在のディレ
クトリ構成(CDSs)を列挙するのに用いられる内部
ルーチンである。ライン1.1.6.3においてBuf
Invalidateが呼び出され、ファイルシステム
のバッファプールから、(現在は陳腐化している)VP
B基準が除去される。上記のように、VPBは、コンピ
ュータシステムに使用されている特定のボリュームにつ
いての情報を記憶するシステムにより用いられる。ボリ
ュームは、ブロック装置におけるメディアとして構成さ
れ、メディアに関する情報は、このボリュームを他の全
てのボリュームから区別する。VPBsは、BMPとし
てセグメントに維持される。従って、システムは記録が
使用されているトラックのみを必要とし、かつ空のリス
トが管理される。新しいボリュームに出合う度毎に、す
なわち、ボリュームのVPB作製(VPB buil
t)がシステムに既存のいかなるVPBsとも一致しな
い度毎に、新しい入口(newentry)が、BMP
管理されたセグメント内で割当てられ、メディアからの
等価データで充填される。システムがVPBが完了する
度毎に、すなわち、システムのRefCountがゼロ
になる度毎に、BMP管理されたセグメントの入口が空
になり、BMPは、この空になった記憶機構(stor
age)を再使用のためにトラックする。テーブルIの
機能により用いられた構成を以下に説明する。VPB
は、次の3つの部分に分割される。 1. カーネルのプライベート部分。この部分は、情報
をカーネルに維持するのに使用され、VPB(例えば、
基準カウント)の管理を必要とする。これは、カーネル
にとってのプライベートなものであり、FSDsは決し
てこのプライベート部分にアクセスしないしかつこれを
変更することがないことを意味している。 2. ファイルシステムの独立部分。この部分は、全て
のファイルシステムにより使用されかつ特定のあらゆる
ファイルシステムから独立している。この部分は、或る
ファイルシステム(file system、「F
S」)の要求に応じて、設置可能なファイルシステムに
導かれる。 3. VPBを用いているファイルシステムに特有の部
分。この部分は、必要に応じてファイルシステムを使用
できる「作業領域」として設定される。この部分は、或
るFSの要求に応じてIFSに導かれる。VPBのレイ
アウトは図16に示されている。次の構成は、ファイル
システムのVPBとは独立した部分を明らかにするもの
である。この構成は、ファイルシステムの形式の如何に
係わりなく、あらゆるファイルシステムにより使用でき
るものである。 下記の構成は、VPBのファイルシステムの従属部分を
定めるものである。この構成は、適合すると考えられる
ファイルシステムにより使用される。 下記の構成は、ボリュームパラメータブロック(VP
B)の構成を定めるものである。 下記の構成は、FSH GETVOLPARM(これ
は、VPBハンドルからVPBデータを得るのに使用さ
れる)により使用される。 下記の構成は、FSH DOVOLIO(これは、ボリ
ュームベース形セクタ配向転送(volume−bas
ed se−ctor−oriented trans
fers)に使用される)により使用される。 下記の構成は、FSH DUPLICATEVPB(こ
れは、複製(古い)VPBへのVPBデータを得るのに
使用される)により使用される。 RedetermineMediaは、下記に示すよう
な特殊な組の入口パラメータ(entry param
eters)を有している。 下記の呼び出しは、ボリューム管理の内部コンポーネン
トインターフェースに使用される。GenhVPBは、
特定のドライブの内部VPBの決定に使用される。戻さ
れた全てのエラーは、ユーザに送られる。 全てのレジスタは、変更することができる。Build
dBPBは、古いディスク(すなわち、認識されたプー
トセクタを有していないディスク)用の正しいBPBを
創出すべく呼び出される。新しいディスクは、ブートセ
クタ内に、KNOWN(既知)で正しいすなわち正当な
BPB(VALID BPB)を有している。デバイス
ドライバへのバッファは、BuildBPB呼び出しの
一部である。 全てのレジスタは、BPを除く全てを変更した。FSM
ountVolumeは、IFSドライブが、関心をも
つボリュームを認識しているか否かを決定すべくチェッ
クする。FSMountVolumeは、各FSドライ
バのFS_Mount入口点を呼び出すFSDチェーン
を通してループし、IFSが、関心をもつボリュームを
認識しているか否かを決定する。このループは、最初の
IFSがボリュームを認識するとき、又はシステム内に
設置されたFSドライバの番号のループカウンタが0に
減少するときに、終端する。 変更されたレジスタ;ax,bp,bx,di,es,
si,VPBFreeは、リンクリストからVPBを除
去して、セグメントからそのブロックを空にする。 VPBLinkは、リストの開始時に新しいVPBをイ
ンサートし、新しいVPB及び古い最初のVPBの前方
及び後方のリンクフィールドを調節する。 VPBFindは、内部リストを走査して、入力VPB
と同じボリュームIDをもつVPBを探す。 VPBCopyは、ローカル領域からBMP管理領域に
VPBをコピーし、かつ正当であるとしてVPBをスタ
ンプする。 悪いボリュームがマウントされたときにこれを検出して
オペレータに正しい処置をとるように知られること、す
なわちボリュームマネージメント(ボリューム管理)
は、オペレーティングシステムのカーネル及び適当なデ
パイスドライバを介して直接行われる。本発明の原理に
よれば、各ファイルシステムドライバ(FSD)は、ボ
リュームラベルと、ファイルシステムに使用される各ボ
リュームについての32ビットのボリューム連続番号と
を創出するようになっている。これらは、ボリュームが
フォーマット化されるときに、理論的セクタゼロのリザ
ーブされた位置に記憶させるのが好ましい。この情報を
記憶するのに、特別のフォーマットが必要になることは
ない。オペレーティングシステムのカーネルは、FSD
を呼び出して、これを含むことがある作業を実行する。
FSDは、ボリュームラベル又は連続番号が変更された
場合には、いつでもボリュームパラメータブロック(V
PB)を更新する。FSDがI/OリクエストをFSヘ
ルパルーチンに導くと、デバイスドライバは、32ビッ
トのボリューム連続番号及びボリュームラベルを(VP
Bを介して)導く。ボリュームに関してI/Oが実行さ
れるとき、オペレーティングシステムのカーネルは、リ
クエストされたボリュームの連続番号を、装置を維持し
ている現在のボリュームの連続番号と比較する。これ
は、ドライブにマウントされたボリュームのドライブパ
ラメータブロック(DPB)のVPBをチェックするこ
とにより行われるインストレージ試験(in−stor
age test)であり、いかなるI/Oも必要とさ
れない。比較の結果、等しくない場合には、オペレーテ
ィングシステムのカーネルは、クリチカルエラーハンド
ラに信号を発生して、特定の連続番号及びラベルをもつ
ボリュームをユーザがインサートすることを促進させ
る。メディアの変化が検出されると、アプリケーション
プログラムのインターフェース(API)の機能呼び出
しの代わりに、ドライブがアクセスし、本発明によれ
ば、そのボリュームに対するマネージングI/Oに応答
できるファイルシステムドライバ(FSD)が決定され
る。次に、本発明は、ボリュームパラメータブロック
(VPB)を割当て、設置されたFSDsをボーリング
(poll)する。FSDは、これがメディアを認識し
ていることを表示する。FSDsは上記のようにしてボ
ーリングされる。FATのFSDは、FSDsのリスト
の最後にあり、他のFSDの認識が生じない場合には、
全てのメディアを認識することにより、省略時FSD
(defaultFSD)として作用する。本発明の原
理によれば、ファイルシステムドライバには、次の2つ
のクラス、すなわち、 1. ローカルすなわち遠隔(仮想ディスク)装置に対
してI/Oを行うブロックデバイスドライバを用いてい
るFSD(これは、ローカルファイルシステムと呼ばれ
ている)と、 2.ブロックデバイスドライバを用いることなくして遠
隔システムにアクセするFSD(これは、遠隔ファイル
システムと呼ばれている)とがある。ドライブレター
(ドライブ文字)と遠隔ファイルシステムとの間の連結
はプログラムされたインターフェースを介して行われ
る。システムのネームスペース(例えば、ドライブ)の
目的とFSDとの間の結合を生じさせるには、DosF
SAttachシステムの呼出しが用いられる。疑似文
字装置(pseudo−character devi
ce)と遠隔ファイルシステムとの間の連結も、Dos
FsAttachインターフェースを介して行われる。
DosFsAttachインターフェースは、DosF
sAttach呼出し及びDosQFsAttach呼
出しで構成されており、これらは、Appendix
Iにおいて詳細に説明されている。ローカルボリューム
が最初に参照されるとき、本発明では、FSDチェーン
の各ローカルFSDを連続的に尋ねて(ask)、各F
SDのFS_MOUNT入口点への呼出しを介してメデ
ィアを受け入れるようになっている。どのFSDもメデ
ィアを受け入れない場合には、メディアは、省略時ファ
イルシステムに割り当てられる。FORMATでは認識
されないメディアにアクセスするため行われる他の全て
の試みがなされて、「無効(正しくない)メディアフォ
ーマット(INVALID MEDIA FORMA
T)」のエラーメッセージが出される。ひとたびボリュ
ームが認識されると、ドライブと、FSDと、ボリュー
ムの連続番号と、ボリュームのラベルとの間の関係が記
憶される。ボリュームの連続番号及びラベルは、ボリュ
ームのパラメータブロック(VPB)に記憶される。V
PBは、開放ファイル(I/Oに基づくファイルハンド
ル)、サーチ及びバッファリファレンス(buffer
references)についてのオペレーティング
システムにより維持される。除去されたボリュームに対
する連続リクエストは、FS_MOUNTを呼び出すこ
とによりボリュームについての設置されたFSDsのボ
ーリングを要する。認識しているFSDにより戻された
VPB及び既存のVPBのボリューム連続番号及びボリ
ュームラベルが比較される。試験が成功した場合には、
ボリュームにFSDがアクセスされる。これに対し、試
験が失敗した場合には、オペレーティングシステムがク
リチカルエラーハンドラに信号を伝達し、ユーザがボリ
ュームを矯正することを促進させる。メディアとVPB
との間の連結は、ボリュームの全ての開放ファイルが閉
じられるまでセーブされ、サーチリファレンス及びキャ
ッチシュバッファリファレンスが除去される。ボリュー
ムの変化によってのみ、次のアクセス時にメディアの再
決定がなされる。ブート可能で論理的に区分(part
ition)されたメディアに関するオペレーティング
システムの区分へのアクセスは、OS/2オペレーティ
ングシステムに利用できる機能セット(機能組)のよう
なフルオペレーティングシステムの機能セットを介して
行われる。ディスクの区分化の設計(disk par
titioning design)についての詳細な
説明が、前述のOS/2プログラマ用参考書においてな
されている。本発明によれば、ネットワークを介してオ
ペレーティングシステムと通信する遠隔装置を識別する
ためのDosQFsAttach機能が提供される。D
osQFsAttachの目的は、取り付け(atta
ch)られた遠隔ファイルシステム、ローカルファイル
システム、文字装置(character devic
e)、又は、ローカルFSD又は遠隔FSDに取り付け
られた疑似装置ネームに関する情報を尋ねることであ
る。DosQFsAttachを呼び出すシーケンスは
次の通りである。 ここで、DeviceNameは、コロン(:)を付し
た駆動文字(drive letter)を指すか、或
は文字又は疑似文字装置ネームを指し、FSAInfo
LeVelの幾つかのバリューは無視する。Devic
eNameが文字又は疑似文字であるときには、Dev
iceNameは、コロンを付した疑似文字の形態を有
するASCIZストリングである。DeviceNam
eが、文字又は疑似文字の装置ネームであるときには、
そのフォーマットは、サブダイレクトリ呼出しのファイ
ルネームのフォーマットにおけるASCIIZストリン
グのフォーマットであり\DEV\のように示すのが好
ましい。序数(ordinal)は、文字装置、疑似文
字装置又はドライブの組のリストのインデックスであ
る。序数は常に1からスタートする。リストの1つの項
目の序数位置は重要でない。序数は、リスト全体を厳格
にステップするのに使用される。序数から項目へのマッ
ピングは揮発性であり、DosQFAttachに対す
る或る呼出しから次の呼出しまで変化することができ
る。FSAInfoLevelは、要求される情報のレ
ベルであり、DataBufferのデータがどの項目
に関するものであるかを決定する。レベル0×0001
は、DeviceNameにより名付けられた特定のド
ライブ又は装置ネームのデータを戻す。序数のフィール
ド(欄)は無視する。レベル0×0002は、序数によ
り選択された文字又は疑似文字装置のリストの入口のデ
ータを戻す。DeviceNameのフィールドは無視
する。レベル0×0003は、序数によって選択された
ドライブのリストの入口のデータを戻す。Device
Nameのフィールドは無視する。DataBuffe
rは戻り情報バッファ(return informa
tion buffer)であり、次のフォーマット内
にある。 szFSNameは、FSDにより移出(エクスポー
ト)されたFSDネームであり、このネームは、必ずし
もブートセクタのFSDネームと同じネームである必要
はない。ローカル文字装置(iType=1)について
は、cbFSDName=0であり、szFSDNam
eは、ゼロで終わるバイトのみを含んでいて、cbFS
AData=0である。ローカルドライブ(iType
=3)については、szFSDNameは、呼出しの時
点でドライブに取り付けられたFSDのネームを含んで
いる。この情報はダイナミックに変化する。ドライブが
オペレーティングシステムのカーネルの常駐ファイルシ
ステムに取り付けられている場合には、szFSDNa
meに“FAT”又は“UNKNOWN”が含まれるで
あろう。常駐ファイルは、マウントを拒むFSDs以外
の任意のディスクに取り付けられるので、認識可能なフ
ァイルシステムを含んでいないディスクを設けることが
できるが、常駐ファイルシステムに取り付けることもで
きる。この場合、差異を検出することができ、この情報
は、破壊されないデータのプログラムが、適正に認識さ
れなかったディスクに存在することを助ける。Data
BufferLenは、戻りバッファのバイト長さであ
る。戻り時においては、この長さは、FSDによりDa
taBufferに戻されたデータの長さである。 全てのブロック装置及び全ての文字及び疑似文字装置に
ついての情報は、DosQFsAttachにより戻さ
れる。この呼出しにより戻される情報は、揮発性が強
い。戻された情報は、これらが戻されるときまでに既に
変化されていることを呼出しプログラムが気付くことが
できるようにするのが好ましい。カーネルの常駐ファイ
ルシステムに取り付けられたディスクに戻された情報
は、ディスクがファイルシステムを備えたものであるこ
とをカーネルが明確に認識しているか否かの決定、又は
カーネルがそのファイルシステムをカーネルに取り付け
たか否か(他のFSDsはディスクを取り付けていない
からである)の決定を行うのに使用することができる。
全てのFSDsへのエラー信号についてのエラーコード
の組は、0×EEOO−0×EEFFである。必要に応
じて他のエラーを付加できるけれども、次のエラーが定
められている。ERROR VOLUME_NOT M
OUNTED=0×EEOO−FSDは、ボリュームを
認識しなかった。各FSDにより定められるエラーコー
ドの組は、0×EFOO−0×FEFFである。ディス
クメディア及びファイルシステムのレイアウトは、次の
構成により説明される。ファイルシステムに与えられる
データは、ブロック装置に取り付けられたデバイスドラ
イバにより与えられるファイルシステムサポートのレベ
ルに基づいている。これらの構成は、ローカルファイル
システムに対してのみ等価性を有している。 上記のように、FS MOUNT機能は、ボリュームを
マウントしかつアンマウントすべく呼び出され、その目
的は、FSDがファイルシステムのフォーマットを認識
しているか否かを決定すべくボリュームを試験すること
にある。FS−MOUNTを呼び出すシーケンスは下記
の通りである。 ここで、フラグは、要求された作業を示す。flag=
0は、ボリュームをマウント又は受け入れるのにFSD
が要求されることを示す。flag=1は、特定のボリ
ュームが除去されたことをFSDがアドバイスされてい
ることを示す。flag=2は、ボリュームがそのドラ
イバから除去されるときに当該ボリュームに割り当てら
れる全ての内部情報及び当該ボリュームが除去されたこ
との最終のカーネル管理リファレンスを開放するのにF
SDが要求されることを示す。flag=3は、FSD
に使用するためのフォーマット化の準備において、認識
の如何に係わらずボリュームを受け入れることをFSD
が要求されることを示す。他の全てのバリューはリザー
ブされる。FSDに導かれるバリューは正しいであろ
う。pvpfsi−VPBのファイルシステム独立部分
を指すポインタ。メディアが、オペレーティングシステ
ムの認識可能なブートセクタを収容している場合には、
ファイルされたvpi vidは、ボリュームについて
の32ビット識別子を収容する。メディアがそのような
ブートセクタを収容しない場合には、FSDは、メディ
アに対してユニークなラベルを創出して、該ラベルをフ
ァイルされたvpi vidに配置する。pvpfsd
−VPBのファイルシステム従属部分を指すポインタ。
FSDは、必要に応じ情報をこの領域に記載させること
ができる。 hVPB−ボリュームへのハンドル。 pBoot−メディアから読み取られたセクタ0を指す
ポインタ。このポインタは、フラグ==0のときにのみ
正当である。ポインタのバッファは、「MUST NO
T BE MODIFIED(変更してはならない)」
を指示する。ポインタは常に正当であり、フラグ==0
である場合にはその正当であることを確認する必要はな
い。読取りエラーが生じた場合には、バッファはゼロを
包含する。FSDは、もたらされたボリュームを試験
し、ボリュームがファイルシステムを認識しているか否
かを決定する。ボリュームがファイルシステムを認識し
ている場合には、vpfsi及びvpfsdの適当な部
分を充填した後に、ゼロに戻る。vpi vid及びv
pi textのフィールドは、FSDにより充填され
る。FSDがオペレーティングシステムのフォーマット
ブートセクタを有している場合には、FSDは、メディ
アをラベルからasclizフォームに変換する。vp
i hDevのフィールドは、オペレーティングシステ
ムにより充填される。ボリュームが認識されていない場
合には、ドライバは非ゼロ(non−zero)に戻
る。vpi text及びvpi vidは、これらの
バリューが変化する度毎により更新されるvpfsdの
内容は次の通りである。 FLAG=0 FSDはFSD FINDDUPHVPBを発行して、
複製VPBが存在しているか否かを決定する。複製VP
Bが存在している場合には、新しいVPBのfs従属領
域が正しくなく、FSDがFS_MOUNTの呼出しか
ら戻った後に、新しいVPBがアンマウントされる。F
SDは、古いVPBのfs従属領域を更新する。複製V
PBが存在しない場合には、FSDは、fs従属領域を
初期化する。 FLAG=1 VPBのfs従属部分は、FSDが最後にこの従属部分
を変更したものと同じである。 FLAG=2 VPBのfs従属部分は、FSDが最後にこの従属部分
を変更したものと同じである。メディア認識プロセスの
後、FSH GETVOLPARM呼出しを用いて、ボ
リュームパラメータを試験することができる。ボリュー
ムパラメータは、メディア認識プロセスの後に変更すべ
きではない。マウントリクエストの間、FSDは、FS
H DOVOLIOを用いることによりメディアの他の
セクタを試験し、I/Oを行うことができる。不確実メ
ディアの戻りが検出される場合には、FSDは「cle
ansup(クリナップ)」の状態になってERROR
UNCER−TAIN MEDIAを戻し、新しいイ
ンサートされたメディアに関してボリュームマウント論
理が再スタートできるようにする。FSDは、付加I/
Oに使用できるバッファを設ける。オペレーティングシ
ステムのカーネルは、上記レフカウント(refcou
n)のかウンタを介してVPBを管理する。全てのボリ
ューム特定目的(volumespecific ob
jects)は、適当なボリュームハンドルでラベリン
グされ、VPBに対する基準を示す。ボリュームに対す
る全てのカーネル基準が消滅すると、フラグ=2でFS
_MOUNTが呼び出され、ディスマウントリクエスト
を表示する。ボリュームがそのドライブから除去された
ことをカーネルが検出し、かつ、依然としてボリューム
に対する未解決の基準(outstanding re
ferences)が存在すると、FS_MOUNTは
フラグ=1で呼び出され、FSDが、ボリュームについ
てのクリーンなデータ(又は、他の再生可能データ)を
記憶できるようにする。ダヒティで再生不可能なデータ
は、該データがドライブ内にリマウントされるときに、
ボリュームに書き込むことができるように保持される。
本発明の目的を得る上で、クリーンデータは変化されな
いデータであり、ダーティなデータは変更されたデータ
である。FSDに使用できるようにするためボリューム
をフォーマット化すべきときには、オペレーティングシ
ステムのカーネルは、フラグ=3でFSDのFS_MO
UNT入口を呼び出し、FSDがフォーマット作業の準
備を行えるようにする。FSDは、ボリュームがFSD
の認識するボリュームでない場合でもボリュームを受け
入れる。フォーマットがボリュームに関してファイルシ
ステムを変化させるからである。フォーマット化を完了
できない場合(例えば、FSDがCD−ROMのサポー
トする場合)には、作業は失敗するであろう。殆どのコ
ンピュータシステムのハードウェアは、メディアのカー
ネルメディア形除去(Kernel−mediated
removal of media)ができないの
で、ボリュームがどのドライブにも存在しないときにア
ンマウントリクエストが発行されることは確実である。
FSH_DOVOLIOは、特定のボリュームに対する
I/Oを実行する。FSH_DOVOLIOは、リクエ
ストされたI/Oに対するデバイスドライバのリクエス
トパケットをフォーマット化し、デバイスドライバを呼
出し、かつFSDに戻る前に、あらゆるエラーをハード
エラーダエモンに報告する。ハードエラーダエモンによ
り表示された全ての再試行(retries)又はDO
SERRORにより表示されたアクションは、FSH_
DOVOLIOへの呼出しを行っている間に行われる。
次に、FSH_DOVOLIOに対する呼出しフォーマ
ットについて説明する。 ここで、オペレーションビットマスク(operati
on bit mask)は、実行すべきread/r
ead−bypass/Write/Write−by
pass/verify−after−write/w
rite−through及びノーキャッシュ作業(n
o−cache operation)を表示する。 Bit 0×0001 offは、読取りを表示する。 Bit 0×0001 onは、書込みを表示する。 Bit 0×0002 offは、no−bypass
を表示する。 Bit 0×0002 onは、casche byp
assを表示する。 Bit 0×0004 offは、no verife
y−after−write作業を表示する。 Bit 0×0004 onは、verify−aft
er−writeを表示する。 Bit 0×0008 offは、ハードエラーダエモ
ンに信号を送られたエラーを表示する。 Bit 0×0008 onは、ハードエラーが直接戻
されることを表示する。 Bit 0×00010 offは、I/Oが“wri
te−through”でないことを表示する。 Bit 0×00010 on は、このI/Oが“w
rite−through”であることを表示する。 Bit 0×00020 offは、このI/Oに対す
るデータを変更すべきことを表示する。 Bit 0×00020 on は、このI/Oに対す
るデータを変更すべきではないことを表示する。 リザーブされた他の全てのビットはゼロである。「ca
che bypass(キャッシュバイパス)」と、
「no cache(のキャッシュ)」ビットとの間の
相違は、リクエストパケットの形式においてデバイスド
ライバが導かれることである。「cache bypa
ss」では、コマンドコード24、25又は26でパケ
ットが得られ、「no cache」では、システム
は、コマンドコード4、8又は9に対するバケットを拡
大する。 hVPB I/Oの資源に対するボリュームハンド
ル。 pData ユーザの転送領域(transfer
area)の長いアドレス。 pcSec 転送すべきセクタ数を指すポインタ。 戻り時には、これは首尾良く転送されたセクタ数であ
る。 iSec 転送の最初のセクタ数。 Returns −作業が失敗した場合には、0以外の
エラーコード。ERROR PROJECTION V
IOLATION−供給されたaddress/len
gthは正しくない。ERROR UNCERTAIN
MEDIA−メディアが変更されているときには、デ
バイスドイバは信頼性をもって告げることはできない。
このことは、FS MOUNTのコンテクスト内におい
てのみ生じる。ERROR TRANSFER TOO
LONG−デバイスにとって転送が非常に短い。FS
H_DOVOLIOは、常時、FSD内で使用すること
ができる。FS_MOUNT呼出しの範囲内で呼び出さ
れるとき、FSH_DOVOLIOは、ボリュームの如
何に係わらず、ドライブのボリュームに適用される。し
かしながら、FSDがFS_MOUNTの呼出しに戻る
までは、ボリュームの認識が完了しないので、FSD
は、ERROR UNCERTAIN MEDIAが戻
されないときには、特別な注意を払わなければならな
い。これは、ドライブにおけるメディアを識別するの
に、メディアが不確実な試みを行ったことを表示する。
また、FSDが認識を試みたポリュームが除去されたこ
とを表示するようにしてもよい。この場合、FSDは、
FS MOUNTの呼出し時に導かれたhVPBに取り
付けられたあらゆる資源を解放し、かつERROR U
NCERTA−INMEDIAをFS_MOUNT呼出
しに戻す。これにより、マウントプロセスを再スタート
させるように、ボリュームトラッキング論理を仕向けら
れる。FSDsは、FSH DOVOLIO2を呼出し
て、I/O作業とは独立して、デバイスドライバの作業
を制御する。このルーチンは、IOCTL作業に対する
ボリューム管理をサポートしている。FSDに戻る前
に、全てのエラーがハードエラーダエモンに報告され
る。ハードエラーダエモンにより表示されるすべての再
試行又はDOSERRORにより表示されるアクション
は、FSH DOVOLIO2への呼出し内に行われ
る。 ここで、 hDev−VPBから得られたデバイスハンドル。 Sfn−FSH DEVIOCTL呼出しを引き起こし
たオープンインスタンス(open instanc
e)からのシステムファイルの数。このフィールドは、
変化されない状態で、sfi selfsfnのフィー
ルドから導かれるべきである。どのオーブンインスタン
スもこの呼出しに一致しないときには、このフィールド
は、0×FFFFに設定される。 cat −実行すべきIOCTLのカテゴリ。 func−IOCTLのカテゴリ内での機能。 pParm−パラメータ領域へのロングアドレス。 cbParm−パラメータ領域の長さ。 pData−データ領域へのロングアドレス。 cbData−データ領域の長さ。 Returns−エラーが検出されないときには0以外
のエラーコード。 供給された機能が、ここに述べているシステムとの互換
性をもたない場合には、ERROR INVALID
FUNCTIONが呼び出される。メディアが不確実に
なるときにはいつでも、新しいVPBが割り当てられる
(メディアが変更されていないことがもはや確かではな
いことを、デバイスドライバは認識している)。このV
PBは、FS MOUNT呼出しが戻るまで、(メディ
アの再インサートにより)前に割り当てられたVPBと
共に崩壊することはない。しかしながら、前のVPB
は、メディア(このメディアは、該メディアが除去され
ている間に書き込むことができる)から更新されなくて
はならない幾つかのキャッシュデータをもつことができ
る。古いVPBについてのキャッシュ情報(cache
d information)を更新するため、FSH
FINDDUPHVPBは、ボリュームの、この前に
生じたことをFSDが見出すことを可能にする。このボ
リュームについて別の古いVPBが存在しない場合に
は、新しい創出されたVPBがアンマウントされる。F
SH FINDDUPHVPBについての呼出しフォー
マットは次の通りである。 ここで、 hVPB−見出すべきボリュームに対するハンドル。 phVPB−マッチングボリュームのハンドルをどこに
記憶させるかを指すポインタ。 Returns−マッチングVPBが見出されないとき
には0以外のエラーコード。 ERROR NO ITEMS−マッチングhVPBは
存在しない。FSH GETVOLPARMは、FSD
が、VPBからファイルシステムの独立及び従属データ
を検索することを可能にする。FSルータはVPBハン
ドル内を通るので、ここのFSDsは、適合部分を指す
ポインタ内にハンドルをマッピングする。FSH GE
TVOLPARMについての呼出しシーケンスは次の通
りである。 ここで、 hVPB−関心のあるボリュームハンドル。 ppVPBfsi−ファイルシステムの独立データを記
憶させるべくポインタが指す位置。 ppVPBfsd−ファイルシステムの従属データを記
憶させるべくポインタが指す位置。 Returns−なし。 FSD Volumeのマッピングはダイナミックであ
り、かつFSD−DD連結は、FSD及びDDの独立方
法により、オペレーティングシステムのカーネルを介し
て行われるので、あらゆるFSDは、DDsがこのFS
Dからローディングされたボリュームを含むあらゆるボ
リュームにアクセスできる。ボリュームは、除去可能な
メディアの特定のピース(片)、又は区分できる任意の
メディアの任意の区分にマッビングするので、多数のF
SDsが特定のハードディスク又は他のメディアにアク
セスできるようにしてもよい。ボリュームファイル作業
は、2つのカテゴリ、すなわち、ネームベース作業(n
amed−hased operations)及びハ
ンドルベース作業(handle−based ope
rations)に分けることができる。ネームベース
作業は一般にユーザによって開始され、システム100
がファイルについてネーム作業を行うことをユーザがシ
ステム100に命令(instruct)する。ハンド
ルベース作業は、一般に、システムのバックグラウンド
作業中に開始される。通常、ハンドルベース作業は、ネ
ームベース作業の後に行われる。図17に示すように、
コンピュータシステム100がネームベース作業を行っ
ているときに、ルーチン800が呼び出される。ネーム
ド作業は、文字ネームにより指示された作業である。す
なわち、この作業は、ファイル又はディレクトリのネー
ムにより特定化される。「Open file“xx
x”」はネームベース作業の一例である。プロセス80
2は、ネームをパーシング(parse)すべく呼び出
されて、3つの変数すなわち、PathNameTyp
e、TCBThishVPB及びTCBThisFSC
を戻す。このプロセス802については、図18に関連
して詳細に説明する。(注、hはハンドルをいい、TC
Bは、TCHThishVPBが現に関心をもっている
VPBへのハンドルでありかつTCBThisFCHが
関心のあるファイルシステムを指すポインタである、ス
レッド制御ブロック(thread control
block)いう。)次に、項目804は、プロセス8
02により戻された変数PathType、TchTh
ishVPB及びTCHThisFCHに基づく適当な
機能に制御をルーチング(route)する。UNC
FSDが呼び出されるユニバーサルネーミングコンベン
ション(Universal Naming Conv
ention、「UNC」)のグローバルネットワーク
を表示する「\\」で経路(path)が始まるときに
は、項目806を通る制御が行われる。ローカル装置が
表示される場合には、制御が項目808に導かれ、カー
ネル内でリクエストが処理される。疑似装置又は遠隔フ
ァイルが表示されるときには、制御は項目810に導か
れて、疑似装置又は遠隔ファイルが取り付けられた遠隔
FSDに対するリクエストをルーチングする。ネームド
パイプ(named pipe)が検出された場合に
は、制御は項目812に導かれて、カーネル無しでロー
カルネームドパイプコードを呼び出す。ローカルファイ
ルが表示される場合には、制御は項目814に導かれ
る。この項目814は、項目816におけるFSHDO
VOLIOを呼び出すことによりボリュームへの読取り
及び書込みを行うFSDにおけるFSDワーカである。
FSHDOVOLIOについては、図20に関して更に
詳細に説明する。次に、図18を参照して、パーシング
プロセス802を説明する。呼出しがあると、項目90
2は、現在のドライブ、現在のディレクトリ及びネーム
自体に基づいて、関心のあるネームをカノニカルフォー
ム(canonjal form)に変形する。次に、
変数TCBTHISFSC、TCHThisVPB及び
pathnametypeが下記のようにして決定され
るデシジョン904は、ユーザのネームが「\\」で始
まっているか否かを決定して、UNCネームが表示され
ているか否かを決定する。UNCネームが表示されてい
れば、制御が項目905に導かれ、ここで、変数pat
htype、TchThishVPB及びTCBThi
sFCHが初期化され、ユーザのネームを適当な位置に
ルーチングする。UNCネームが表示されていなけれ
ば、デシジョン906は、関心をもつネームがカーネル
により維持された、装置のネームリストに載ったネーム
であるか否かを決定する。装置のネームリストに載った
ネームであるときには、デシジョン908は、それが疑
似文字装置であるか否かを決定する。疑似文字装置であ
れば、項目910は表示のように変数を設定する。疑似
文字装置でないときは、制御912に導かれ、表示のよ
うに変数を設定する。デシジョン914は、ネームの初
めにおける「\pipe\」を探すことにより、そのネ
ームが、ネームドパイプであるか否かを決定する。その
ネームがネームドパイブであるときは、項目916は、
表示のように変数を設定する。ネームドパイブでないと
きは、デシジョン918は、そのネームがローカルドラ
イブ又は遠隔ドライブのパスネーム(pathnam
e)を表示しているか否かを決定する。遠隔ドライブが
表示されているときは、制御は項目920に導かれ、こ
こでは、表示のように変数PathType、TchT
hishVPB及びTCBThisFCHを設定する。
遠隔ドライブが表示されていないときは、制御は項目9
22に導かれ、ここでは、どのボリュームから適当なデ
ータを読み取るかが呼び出される。WhatVolum
eが戻ると、制御は項目924に導かれ、ここでは、表
示のように変数PathType、TchThishV
PB及びTCBThisFCHが設定される。図19を
参照すると、プロセス1000が呼び出され、ハンドル
ベース作業が行われる。呼出し時に、項目1002はS
FT入口を検索する。SFT入口及びハンドルは、両方
共DosOpenにより設定される。次いで、TCBT
hisFSCが表示のように設定される。次に、項目1
004において、FSCが指示するファイルシステムの
適合FSDワーカが呼び出される。次いで、項目100
6は、項目1016を呼び出し、必要に応じて項目10
16を呼び出すことにより、呼び出し者すなわちコーラ
ー(caller)によりリクエストされたあらゆるI
/Oを実行する。図20には、FSH Do Vol
10が示されている。項目1102において呼出しがな
されると、hVPBが使用されて、ドライブ並びに関心
のあるボリュームにどのようなボリュームがあるかを決
定する。次に、デシジョン1104は、ドライブにおけ
るボリュームが関心のあるボリュームであるか否かを決
定する。関心のあるボリュームであるときは、項目11
06が呼び出されて、デバイスドライバが呼び出されか
つ特定のパラメータでI/Oを実行する。次にデシジョ
ン1108は、作業中にメディアが不確実に移行したか
否かを決定する。不確実に移行していないときには、プ
ロセスは項目1114に戻る。デシジョン1108が、
メディアは不確実ではないことを決定するときには、制
御は項目1112に導かれ、ここでは、WhatVol
umeが呼び出されてメディアが確実なものにされる。
次いで、制御はデシジョン1104に戻る。ドライブに
おけるボリュームが関心のあるボリュームに一致しない
ときには、項目1110が呼び出されて、HardEr
rorが呼び出され、ドライブに正しいドライブを置く
ことをユーザに知らせる。次に制御は上記項目1112
に導かれる。付録(Appendix)IIからVI
は、設置可能なファイルシステムの資源の一例としてこ
こに包含される。ここで、付録IIは、本発明の教示に
従ってサポートすることが期待されるファイルシステム
の移出インターフェース(exported inte
rfaces)のリストである。付録IIIは、ファイ
ルシステムを用いることができるカーネルにより移出さ
れるインターフェースのリストである。付録IVは、本
発明に従って構成された設置可能なファイルシステムの
一例の資源コードである。付録Vは、付録IVのFSD
を作るべくOS/2により用いられる定義ファイル(d
efinitions file)のリストである。付
録VIは付録IVのIFSにより使用される構成とパラ
メータを限定しているヘッダーファイルである。付録V
IIは本発明の高性能ファイルシステムを実現するのに
使用するディスク構成の詳細なリストである。要約し
て、データをボリューム内に編成するための改良型高性
能ファイルシステムを説明した。本発明の原理によれ
ば、第1のディスク フィールドがブートブロックを備
え、この第1のフィールドにつづく第2のフィールドが
スーパーブロックを備え、この第2のフィールドに続く
第3のフィールドはスペアブロックを備え、そして複数
のバンドがデータを記憶するための一連の連続セクタを
含み、各バンドはセクタ使用を示すフリースペースビッ
トマップを含んでいる、ディスクの一連のフィールドに
データを編成する。フリースペースビットマップはバン
ドの始めか終わりにあって、交互のバンドのためのビッ
トマップは相互に隣接している。ブートブロックはボリ
ュームネーム、ボリュームI.D.そしてディスクブー
トストラッププログラムを含んでいる。スーパーブロッ
クはフリースペースビットマップ、バッドブロックリス
ト、ディクショナリブロックバンド、そしてルートディ
クショナリへのポインタを含んでいる。本発明に従って
ファイルとディクショナリとはFノード構成にアンカー
されている。Fノード構成はセクタの続きを指している
複数のポインタを備えている。他の使用や変形は当業者
には自明のことであろう。このような使用や変形は本発
明の思想に含まれるものである。
【発明の効果】従って、本発明によれば、ファイルシス
テムの形式及びフォーマットの如何に拘わらず、適当な
ファイルシステムに不確実メディアを自動的にかつダイ
ナミックにマッピングする方法及び手段が提供される。
テムの形式及びフォーマットの如何に拘わらず、適当な
ファイルシステムに不確実メディアを自動的にかつダイ
ナミックにマッピングする方法及び手段が提供される。
【図1】本発明の原理に従って構成されたコンピュータ
システムのブロックダイアグラムである。
システムのブロックダイアグラムである。
【図2】図1のコンピュータシステムの作業及びファイ
ルシステムアーキテクチュアを示すブロックダイアグラ
ムである。
ルシステムアーキテクチュアを示すブロックダイアグラ
ムである。
【図3】MS−DOSオペレーティングシステムのファ
イルシステム構成の詳細を示すブロックダイアグラムで
ある。
イルシステム構成の詳細を示すブロックダイアグラムで
ある。
【図4】本発明の設置可能なファイルシステムのファイ
ルシステム構成の詳細を示すブロックダイアグラムであ
る。
ルシステム構成の詳細を示すブロックダイアグラムであ
る。
【図5】図4のファイルシステムのより詳細なブロック
ダイアグラムである。
ダイアグラムである。
【図6】FATフィルタシステムのディクフォーマット
を示すブロックダイアグラムである。
を示すブロックダイアグラムである。
【図7】本発明に使用できるように構成された設置可能
なファイルシステムのディスクフォーマットを示すブロ
ックダイアグラムである。
なファイルシステムのディスクフォーマットを示すブロ
ックダイアグラムである。
【図8】本発明に使用できるように構成された設置可能
なファイルシステムのディスクフォーマットを示す他の
ブロックダイアグラムである。
なファイルシステムのディスクフォーマットを示す他の
ブロックダイアグラムである。
【図9】本発明に使用できるように構成された設置可能
なファイルシステムのディスクフォーマットを示す別の
ブロックダイアグラムである。
なファイルシステムのディスクフォーマットを示す別の
ブロックダイアグラムである。
【図10】本発明に使用できるように構成された設置可
能なファイルシステムのディスクフォーマットを示す更
に別のブロックダイアグラムである。
能なファイルシステムのディスクフォーマットを示す更
に別のブロックダイアグラムである。
【図11】本発明に使用できるように構成された設置可
能なファイルシステムのディスクフォーマットを示す他
のブロックダイアグラムである。
能なファイルシステムのディスクフォーマットを示す他
のブロックダイアグラムである。
【図12】本発明に使用できるように構成された設置可
能なファイルシステムのディスクフォーマットを示す別
のブロックダイアグラムである。
能なファイルシステムのディスクフォーマットを示す別
のブロックダイアグラムである。
【図13】本発明に使用できるように構成された設置可
能なファイルシステムのディスクフォーマットを示す他
のブロックダイアグラムである。
能なファイルシステムのディスクフォーマットを示す他
のブロックダイアグラムである。
【図14】本発明に使用できるように構成された設置可
能なファイルシステムのディスクフォーマットを示す更
に別のブロックダイアグラムである。
能なファイルシステムのディスクフォーマットを示す更
に別のブロックダイアグラムである。
【図15】本発明のマウントプロセスの全作業の詳細を
示すフローチャートである。
示すフローチャートである。
【図16】本発明の設置可能なファイルシステムの構成
を示すブロックダイアグラムである。
を示すブロックダイアグラムである。
【図17】本発明の原理に従がうネームベース作業の実
行の詳細を示すフローチャートである。
行の詳細を示すフローチャートである。
【図18】ネームベース作業プロセスにより呼び出され
るパーシングプロセスを示すフローチャートである。
るパーシングプロセスを示すフローチャートである。
【図19】本発明の原理に従がうハンドルベース作業を
示すフローチャートである。
示すフローチャートである。
【図20】図17及び図19に関連して説明したプロセ
スにより呼び出されFSH DoVolIoプロセスを
示すフローチャートである。
スにより呼び出されFSH DoVolIoプロセスを
示すフローチャートである。
100 コンピュータシステム 102 マイクロプーセッサ 104 ランダムアクセスメモリ 106 リードオンリメモリ 108 マウス 110 キーボード 112 ディスプレイ 114 プリンタ 116 フロッピディスクドライプ 120 ハードディスクドライブ 122 CD−ROMドライブ 124 テープドライブ 126 ネットワーク
Claims (26)
- 【請求項1】 メモリが複数のバンドから構成されてお
り、各該バンドが複数のセクタから構成されており、各
該セクタが複数のメモリロケーションから構成されてい
る該メモリのアロケーションをトラッキングするための
コンピュータシステムにおけるトラッキング方法であっ
て、各ビットマップがバンド内の各セクタについてビッ
トを有しており、前記複数のバンドのそれぞれについて
該ビットマップをアロケーティングし、メモリのセクタ
をアロケーティングするときに、セクタがアロケートさ
れたことを示すべくセクタを包含するバンドのビットマ
ップにビットを設定し、メモリのセクタをディアロケー
ティングするときに、セクタがディアロケートされたこ
とを示すべくセクタを包含するバンドのビットマップに
ビットを設定する段階を具備することを特徴とするトラ
ッキング方法。 - 【請求項2】 前記ビットマップをアロケーティングす
る段階は、更に、ビットマップのアロケーションについ
て各バンドに最も近いメモリの部分を選択する段階を含
むことを特徴とする請求項1に記載のトラッキング方
法。 - 【請求項3】 前記ビットマップをアロケーティングす
る段階は、更に、論理的に連続するバンドの組について
のビットマップは、論理的に連続するメモリロケーショ
ンにアロケートされるように、メモリの部分を選択する
段階を含むことを特徴とする請求項1に記載のトラッキ
ング方法。 - 【請求項4】 前記ビットマップをアロケーティングす
る段階は、更に、2つのビットマップは、交互バンド間
の隣接するメモリロケーションにアロケートされるよう
に、ビットマップのアロケーションについて各バンドの
ヘッド又はテールでメモリの部分を選択する段階を含む
ことを特徴とする請求項1に記載のトラッキング方法。 - 【請求項5】 2つの論理的に連続するバンドから1つ
のファイルに論理的に連続するセクタのグループをアロ
ケーティングし、グループの第1のセクタの指示子及び
最後のセクタの指示子によって論理的に連続するセクタ
のグループを識別する段階を含むことを特徴とする請求
項3又は4に記載のトラッキング方法。 - 【請求項6】 コンピュータシステムが複数のメモリロ
ケーションを伴うメモリを有しており、ファイルにメモ
リロケーションのアロケーションをトラッキングするた
めのコンピュータシステムにおけるトラッキング方法で
あって、ファイル Fnodeがファイルにアロケート
された論理的に連続するメモリロケーションの変数−長
さ走行の指示子を記憶するメモリロケーションを有して
おり、該ファイルFnodeについてメモリロケーショ
ンをアロケーティングし、論理的に連続するメモリロケ
ーションの複数の変数−長さ走行をファイルにアロケー
ティングし、ファイルにアロケートされた各走行につい
て、ロケーション及び走行の長さを識別すべくファイル
Fnodeに指示子を設定する段階を具備することを特
徴とするトラッキング方法。 - 【請求項7】 メモリロケーションの部分がファイルに
アロケートされた走行の指示子を記憶しており、走行の
数が走行の指示子を記憶するためのファイルFnode
の許容量を越えたときに、ファイルFnodeにメモリ
ロケーションの部分を指しポインタを記憶する段階を含
むことを特徴とする請求項6に記載のトラッキング方
法。 - 【請求項8】 前記ファイルFnodeに指示子を設定
する段階は、木構造に指示子を記憶する段階を含むこと
を特徴とする請求項6に記載のトラッキング方法。 - 【請求項9】 前記木構造は、B+木であることを特徴
とする請求項8に記載のトラッキング方法。 - 【請求項10】 ファイルサイズの増加を示すべくファ
イルの最後の走行の長さを増加する段階を含むことを特
徴とする請求項6または9に記載のトラッキング方法。 - 【請求項11】 ファイル内の論理的な位置をアクセス
するときに、論理的なファイル位置のメモリ位置を決定
すべく該ファイルの複数の走行の長さを合計することを
特徴とする請求項6または9に記載のトラッキング方
法。 - 【請求項12】 記憶装置アロケーションをトラッキン
グするコンピュータシステムであって、各バンドが複数
のセクタを有し、各セクタが複数の記憶位置を有する、
複数のバンドを有する記憶装置と、各該ビットマップが
該バンド内の各セクタについてビットを有しており、前
記複数のバンドのそれぞれについてビットマップをアロ
ケーティングする手段と、セクタがアロケートされたこ
とを示すべくセクタを包含するバンドのビットマップに
ビットを設定する手段と、セクタがディアロケートされ
たことを示すべくセクタを包含するバンドのビットマッ
プにビットを設定する手段とを備えることを特徴とする
コンピュータシステム。 - 【請求項13】 ビットマップのアロケーションについ
て各バンドに近い記憶位置を選択する手段を含むことを
特徴とする請求項12に記載のコンピュータシステム。 - 【請求項14】 論理的に連続するバンドの組について
のビットマップは、論理的に連続する記憶位置にアロケ
ートされるように、記憶位置を選択する手段を含むこと
を特徴とする請求項12に記載のコンピュータシステ
ム。 - 【請求項15】 2つのビットマップは、交互バンド間
の隣接する記憶位置にアロケートされるように、ビット
マップのアロケーションについて各バンドのヘッド又は
テールで記憶位置を選択する手段を含むことを特徴とす
る請求項12に記載のコンピュータシステム。 - 【請求項16】 1つのファイルに2つの論理的に連続
するバンドから論理的に連続するセクタのグループをア
ロケーティングする手段と、グループの第1のセクタの
指示子及び最後のセクタの指示子によって論理的に連続
するセクタのグループを識別する手段とを含むことを特
徴とする請求項14又は15に記載のコンピュータシス
テム。 - 【請求項17】 ファイルにメモリロケーションのアロ
ケーションをトラッキングするコンピュータシステムで
あって、複数のメモリロケーションを伴うメモリと、フ
ァイルノードについてメモリロケーションをアロケーテ
ィングする手段と、該ファイルノードがファイルにアロ
ケートされた論理的に連続するメモリロケーションの変
数−長さ走行の指示子を記憶するメモリロケーションを
有しており、論理的に連続するメモリロケーションの複
数の変数−長さ走行をファイルにアロケーティングする
手段と、走行のロケーション及び長さを識別すべくファ
イルノードに指示子を設定する手段とを備えることを特
徴とするコンピュータシステム。 - 【請求項18】 走行の数が、走行の指示子を記憶する
ためのファイルノードの許容量を越えたときに、ファイ
ルノードにメモリロケーションの標識を記憶する手段、
該部分がファイルにアロケートされた走行の指示子を記
憶する、を含むことを特徴とする請求項17に記載のコ
ンピュータシステム。 - 【請求項19】 木構造に前記指示子を記憶する手段を
含むことを特徴とする請求項17に記載のコンピュータ
システム。 - 【請求項20】 B+木に前記指示子を記憶する手段を
含むことを特徴とする請求項17に記載のコンピュータ
システム。 - 【請求項21】 ファイルサイズの増加を示すべくファ
イルの最後の走行の長さを増加する手段を含むことを特
徴とする請求項17、18、19または20に記載のコ
ンピュータシステム。 - 【請求項22】 ファイル内の論理的な位置をアクセス
するときに、論理的なファイル位置のメモリ位置を決定
すべく該ファイルの複数の走行の長さを合計する手段を
含むことを特徴とする請求項17、18、19または2
0に記載のコンピュータシステム。 - 【請求項23】 ファイル記憶装置上のディレクトリ階
層を維持するコンピュータシステムにおける方法であっ
て、各ディレクトリについて、ディレクトリ構造を指す
ポインタを有するディレクトリ Fnodeを割当
て、それぞれがファイル Fnode又はディレクトリ
Fnodeを指すポインタを有する複数のディレクトリ
エントリからなるディレクトリ構造を割当てる段階を具
備することを特徴とする方法。 - 【請求項24】 記憶装置に階層的方法でファイルを編
成するコンピュータシステムにおける方法であって、前
記ファイルの階層は、複数のディレクトリ及びファイル
からなり、前記記憶装置は、複数の論理的に連続なセク
タを有し、前記各セクタは、複数の論理的に連続なロケ
ーションを有しており、前記方法は、前記記憶装置の記
述的なブロック部分を割当て、各ディレクトリについ
て、該ディレクトリに関する情報を記憶するための記憶
装置のディレクトリ部分を割当て、各ファイルについ
て、該ファイルに関する情報を記憶するための記憶装置
のファイル部分を割当てる段階を具備しており、該記述
的なブロック部分は、ファイルシステム情報部分及びセ
クタ割当て部分を有し、該ファイルシステム情報部分
は、ルートディレクトリを指すポインタを有し、該セク
タ割当て部分は、該セクタの割当てを記述している情報
を包含しており、該ディレクトリ部分は、ディレクトリ
Fnode部分及びディレクトリブロック部分を有し、
該ディレクトリFnode部分は、該ディレクトリを記
述している情報を包含し、該ディレクトリブロック部分
は、該ディレクトリ内に各ディレクトリを記述している
エントリ及びファイルを包含しており、前記ファイル部
分は、ファイルFnode 部分及びデータ部分を有
し、該ファイル Fnode部は、該ファイルを識別
する情報及び複数の実行標識を包含し、各該実行標識
は、複数の論理的に連続なロケーションの実行を識別
し、該データ部分は、複数の実行からなることを特徴と
する方法。 - 【請求項25】 ディレクトリ階層を維持するコンピュ
ータシステムであって、ファイル記憶装置と、前記ファ
イル記憶装置内の第1のディレクトリ構造を割当てる手
段と、前記ファイリ記憶装置内の第2のディレクトリ構
造を割当てる手段とを備えており、各前記第1のディレ
クトリは、第2のディレクトリ構造を指すポインタを有
し、該第2のディレクトリ構造は、複数のディレクトリ
エントリからなり、各該ディレクトリエントリは、ファ
イル又はディリクトリの標識を有して、該第1のディレ
クトリ構造及び該第2のディレクトリ構造がディレクト
リ階層を形成することを特徴とするコンピュータシステ
ム。 - 【請求項26】 階層的方法でファイルを編成するコン
ピュータシステムであって、ファイルの階層は、複数の
ディレクトリ及びファイルからなり、前記コンピュータ
システムは、それぞれが複数の論理的に連続なロケーシ
ョンを有する複数の論理的に連続なセクタを有する記憶
装置と、前記記憶装置の記述的なブロック部分を割当て
る手段と、前記ディレクトリに関する情報を記憶するた
めの記憶装置のディレクトリ部分を割当てる手段と、前
記ファイルに関する情報を記憶するための記憶装置のフ
ァイル部分を割当てる手段とを備えており、前記記述的
なブロック部分は、ファイルシステム情報部分及びセク
タ割当て部分を有し、該ファイルシステム情報部分は、
ルートディレクトリの標識を有し、該セクタ割当て部分
は、セクタの割当てを記述する情報を包含しており、該
ディレクトリ部分は、ディレクトリノード部分及びディ
レクトリブロック部分を有し、該ディレクトリノード部
分は、該ディレクトリを記述する情報を包含し、該ディ
レクトリブロック部分は、ディレクトリ内で各ディレク
トリを記述するエントリ及びファイルを包含しており、
該ファイル部分は、ファイルノード部分及びデータ部分
を有し、該ファイルノード部分は、該ファイル及び複数
の実行標識を識別する情報を包含し、各実行標識は、複
数の論理的に連続なロケーションの実行を識別し、該デ
ータ部分は、複数の実行からなることを特徴とするコン
ピュータシステム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US400533 | 1989-08-29 | ||
| US07/400,533 US5371885A (en) | 1989-08-29 | 1989-08-29 | High performance file system |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2227906A Division JPH03171239A (ja) | 1989-08-29 | 1990-08-29 | 高性能ファイルシステム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH08278904A true JPH08278904A (ja) | 1996-10-22 |
Family
ID=23583991
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2227906A Pending JPH03171239A (ja) | 1989-08-29 | 1990-08-29 | 高性能ファイルシステム |
| JP7354961A Pending JPH08278904A (ja) | 1989-08-29 | 1995-11-01 | 高性能ファイルシステム |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2227906A Pending JPH03171239A (ja) | 1989-08-29 | 1990-08-29 | 高性能ファイルシステム |
Country Status (5)
| Country | Link |
|---|---|
| US (3) | US5371885A (ja) |
| EP (1) | EP0416445A3 (ja) |
| JP (2) | JPH03171239A (ja) |
| AU (2) | AU646225B2 (ja) |
| CA (1) | CA2024174C (ja) |
Families Citing this family (216)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH04271443A (ja) * | 1991-02-27 | 1992-09-28 | Canon Inc | データベース構築方法及び装置 |
| US5628014A (en) * | 1992-03-20 | 1997-05-06 | Paranode, Inc. | Methods and apparatus for node caching at the file level |
| US5506983A (en) * | 1992-07-06 | 1996-04-09 | Microsoft Corporation | Method and system for transactioning of modifications to a tree structured file |
| US5539908A (en) * | 1992-11-24 | 1996-07-23 | International Business Machines Corporation | Dynamically linked and shared compression/decompression |
| DE69429378T2 (de) * | 1993-04-01 | 2002-05-23 | Microsoft Corp., Redmond | Gemeinsamer Speicherbereich für lange und kurze Dateinamen |
| US6286013B1 (en) | 1993-04-01 | 2001-09-04 | Microsoft Corporation | Method and system for providing a common name space for long and short file names in an operating system |
| US5572709A (en) * | 1993-06-18 | 1996-11-05 | Lucent Technologies Inc. | Using dynamically-linked libraries to add side effects to operations |
| US5613105A (en) * | 1993-06-30 | 1997-03-18 | Microsoft Corporation | Efficient storage of objects in a file system |
| US5471675A (en) * | 1993-07-27 | 1995-11-28 | Taligent, Inc. | Object oriented video framework system |
| JP3270216B2 (ja) * | 1993-10-08 | 2002-04-02 | 富士通株式会社 | ファイル名検出方式 |
| US5568639A (en) * | 1993-11-24 | 1996-10-22 | Menai Corporation | Method and apparatus for providing an object-oriented file structuring system on a computer |
| US5499358A (en) * | 1993-12-10 | 1996-03-12 | Novell, Inc. | Method for storing a database in extended attributes of a file system |
| US5450579A (en) * | 1994-03-24 | 1995-09-12 | International Business Machines Corporation | Method and apparatus for error recovery in computer peripheral devices |
| US5551020A (en) * | 1994-03-28 | 1996-08-27 | Flextech Systems, Inc. | System for the compacting and logical linking of data blocks in files to optimize available physical storage |
| US5574903A (en) * | 1994-05-13 | 1996-11-12 | Apple Computer, Inc. | Method and apparatus for handling request regarding information stored in a file system |
| US6564321B2 (en) | 1995-04-28 | 2003-05-13 | Bobo Ii Charles R | Systems and methods for storing, delivering, and managing messages |
| US5668970A (en) * | 1994-06-20 | 1997-09-16 | Cd Rom, U.S.A., Inc. | Method and apparatus for generating a file allocation table for a storage medium with no file allocation table using file storage information |
| US5737594A (en) * | 1994-07-05 | 1998-04-07 | Trustus Pty Ltd. | Method for matching elements of two groups |
| JPH0830397A (ja) * | 1994-07-20 | 1996-02-02 | Sony Corp | 情報記憶装置 |
| DE19513308A1 (de) * | 1994-10-04 | 1996-04-11 | Hewlett Packard Co | Dreidimensionales Dateisystem unter Verwendung einer virtuellen Knotenarchitektur |
| US5745752A (en) * | 1994-12-13 | 1998-04-28 | Microsoft Corporation | Dual namespace client having long and short filenames |
| US5617568A (en) * | 1994-12-14 | 1997-04-01 | International Business Machines Corporation | System and method for supporting file attributes on a distributed file system without native support therefor |
| US5579516A (en) * | 1994-12-15 | 1996-11-26 | Hewlett-Packard Company | Method for storing data files on a multiple volume media set |
| JP3464836B2 (ja) * | 1995-01-19 | 2003-11-10 | 富士通株式会社 | 記憶装置のメモリ管理装置 |
| US5675769A (en) * | 1995-02-23 | 1997-10-07 | Powerquest Corporation | Method for manipulating disk partitions |
| US5706472A (en) * | 1995-02-23 | 1998-01-06 | Powerquest Corporation | Method for manipulating disk partitions |
| US5930831A (en) * | 1995-02-23 | 1999-07-27 | Powerquest Corporation | Partition manipulation architecture supporting multiple file systems |
| US6108759A (en) * | 1995-02-23 | 2000-08-22 | Powerquest Corporation | Manipulation of partitions holding advanced file systems |
| US5864856A (en) * | 1995-04-21 | 1999-01-26 | Actuate Software, Inc. | Process and apparatus for simplifying access to information stored in databases |
| US5740469A (en) * | 1995-04-24 | 1998-04-14 | Motorola Inc. | Apparatus for dynamically reading/writing multiple object file formats through use of object code readers/writers interfacing with generalized object file format interface and applications programmers' interface |
| US5715455A (en) * | 1995-05-18 | 1998-02-03 | International Business Machines Corporation | Apparatus and method for storing file allocation table efficiently in memory |
| US5764992A (en) * | 1995-06-06 | 1998-06-09 | Apple Computer, Inc. | Method and apparatus for automatic software replacement |
| US5713017A (en) * | 1995-06-07 | 1998-01-27 | International Business Machines Corporation | Dual counter consistency control for fault tolerant network file servers |
| WO1997003405A2 (en) * | 1995-07-13 | 1997-01-30 | Philips Electronics N.V. | Method and system for data repetition between logically successive clusters |
| US5771379A (en) * | 1995-11-01 | 1998-06-23 | International Business Machines Corporation | File system and method for file system object customization which automatically invokes procedures in response to accessing an inode |
| US6393492B1 (en) | 1995-11-03 | 2002-05-21 | Texas Instruments Incorporated | Method and arrangement for operating a mass memory storage peripheral computer device connected to a host computer |
| US5742817A (en) * | 1995-12-08 | 1998-04-21 | Emc Corporation | Method and apparatus for file server addressing |
| US5754844A (en) * | 1995-12-14 | 1998-05-19 | Sun Microsystems, Inc. | Method and system for accessing chunks of data using matching of an access tab and hashing code to generate a suggested storage location |
| GB2312059B (en) * | 1996-04-12 | 2000-11-15 | Sony Uk Ltd | Data storage |
| US5778430A (en) * | 1996-04-19 | 1998-07-07 | Eccs, Inc. | Method and apparatus for computer disk cache management |
| US6119118A (en) * | 1996-05-10 | 2000-09-12 | Apple Computer, Inc. | Method and system for extending file system metadata |
| US5819298A (en) * | 1996-06-24 | 1998-10-06 | Sun Microsystems, Inc. | File allocation tables with holes |
| US6424991B1 (en) | 1996-07-01 | 2002-07-23 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server communication framework |
| US6266709B1 (en) | 1996-07-01 | 2001-07-24 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server failure reporting process |
| US5848246A (en) * | 1996-07-01 | 1998-12-08 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system |
| US6434598B1 (en) | 1996-07-01 | 2002-08-13 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system |
| US6304893B1 (en) | 1996-07-01 | 2001-10-16 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system |
| US6035396A (en) * | 1996-07-01 | 2000-03-07 | Iomega Corporation | Method for sharing a storage medium between computers having disparate operating systems |
| US6272555B1 (en) | 1996-07-01 | 2001-08-07 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system |
| US5987245A (en) * | 1996-07-01 | 1999-11-16 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework |
| US5999972A (en) * | 1996-07-01 | 1999-12-07 | Sun Microsystems, Inc. | System, method and article of manufacture for a distributed computer system framework |
| US6038590A (en) * | 1996-07-01 | 2000-03-14 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system |
| US5875344A (en) * | 1996-07-16 | 1999-02-23 | Compaq Computer Corporation | Using a file enabler with firmware |
| US5857203A (en) * | 1996-07-29 | 1999-01-05 | International Business Machines Corporation | Method and apparatus for dividing, mapping and storing large digital objects in a client/server library system |
| US5828876A (en) * | 1996-07-31 | 1998-10-27 | Ncr Corporation | File system for a clustered processing system |
| US5727206A (en) * | 1996-07-31 | 1998-03-10 | Ncr Corporation | On-line file system correction within a clustered processing system |
| US5875444A (en) * | 1996-12-10 | 1999-02-23 | International Business Machines Corporation | Computer file system check and repair utility |
| DE69719934T2 (de) * | 1996-12-20 | 2003-11-27 | International Business Machines Corp., Armonk | Verfahren und Vorrichtung zur schnellen und sicheren Datensammlung |
| US5832501A (en) * | 1996-12-31 | 1998-11-03 | Apple Computer, Inc. | Method and system for filtering file manager attribute values |
| DE19708755A1 (de) | 1997-03-04 | 1998-09-17 | Michael Tasler | Flexible Schnittstelle |
| JP3547069B2 (ja) * | 1997-05-22 | 2004-07-28 | 日本電信電話株式会社 | 情報関連づけ装置およびその方法 |
| US5933825A (en) * | 1997-07-21 | 1999-08-03 | Apple Computer, Inc. | Arbitrating concurrent access to file system objects |
| US6298401B1 (en) | 1997-08-11 | 2001-10-02 | Seagate Technology Llc | Object oriented storage device having a disc drive controller providing an interface exposing methods which are invoked to access objects stored in a storage media |
| US6336120B1 (en) * | 1997-08-26 | 2002-01-01 | International Business Machines Corporation | Method and system for supporting hierarchical storage management (HSM) file system across multiple platforms |
| US6321358B1 (en) | 1997-08-28 | 2001-11-20 | Seagate Technology Llc | Object reconstruction on object oriented data storage device |
| US6070254A (en) * | 1997-10-17 | 2000-05-30 | International Business Machines Corporation | Advanced method for checking the integrity of node-based file systems |
| US6065019A (en) * | 1997-10-20 | 2000-05-16 | International Business Machines Corporation | Method and apparatus for allocating and freeing storage utilizing multiple tiers of storage organization |
| US7930278B2 (en) * | 1998-02-13 | 2011-04-19 | Oracle International Corporation | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
| US7200623B2 (en) | 1998-11-24 | 2007-04-03 | Oracle International Corp. | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
| US6597688B2 (en) | 1998-06-12 | 2003-07-22 | J2 Global Communications, Inc. | Scalable architecture for transmission of messages over a network |
| US6411770B1 (en) * | 1998-07-02 | 2002-06-25 | Sony Corporation | Data recording method and apparatus |
| US6223262B1 (en) | 1998-08-18 | 2001-04-24 | International Business Machines Corporation | Method for multi-volume, write-behind data storage in a distributed processing system |
| US6216209B1 (en) | 1998-08-18 | 2001-04-10 | International Business Machines Corporation | Multi-volume, write-behind data storage in a distributed processing system |
| US6237068B1 (en) | 1998-08-18 | 2001-05-22 | International Business Machines Corp. | System for multi-volume, write-behind data storage in a distributed processing system |
| US6269377B1 (en) * | 1998-09-21 | 2001-07-31 | Microsoft Corporation | System and method for managing locations of software components via a source list |
| US7058563B1 (en) | 1998-09-23 | 2006-06-06 | Microsoft Corporation | Device driver auto-load |
| US6574588B1 (en) * | 1998-09-23 | 2003-06-03 | Microsoft Corporation | Solid-state memory device that emulates a known storage device |
| GB9822841D0 (en) * | 1998-10-20 | 1998-12-16 | Koninkl Philips Electronics Nv | File systems supporting data sharing |
| US6665779B1 (en) * | 1998-12-24 | 2003-12-16 | Roxio, Inc. | Image backup method for backing up disk partitions of a storage device |
| US7296060B2 (en) * | 1998-12-24 | 2007-11-13 | Intel Corporation | System and method for automatically identifying and attaching related documents |
| US6341325B2 (en) * | 1999-01-12 | 2002-01-22 | International Business Machines Corporation | Method and apparatus for addressing main memory contents including a directory structure in a computer system |
| US6233105B1 (en) * | 1999-03-29 | 2001-05-15 | Inventec Corporation | Method of disk formatting |
| US6374265B1 (en) * | 1999-03-29 | 2002-04-16 | Inventec Corp. | Method for backup and recovery of the long filename in computer system |
| US6401093B1 (en) | 1999-03-31 | 2002-06-04 | International Business Machines Corporation | Cross file system caching and synchronization |
| EP1049029A3 (en) * | 1999-04-28 | 2003-07-09 | Emc Corporation | File systems with versatile indirection |
| US6895418B1 (en) | 1999-04-28 | 2005-05-17 | Emc Corporation | Versatile indirection in an extent based file system |
| JP2001043117A (ja) * | 1999-07-28 | 2001-02-16 | Sharp Corp | ディスク媒体管理方法 |
| US6910054B1 (en) * | 1999-08-16 | 2005-06-21 | International Business Machines Corporation | Methods, systems and computer program products for storing data using a rolling window file |
| US6594675B1 (en) * | 1999-08-26 | 2003-07-15 | International Business Machines Corporation | Method, system for using file name to access application program where a logical file system processes pathname to determine whether the request is a file on storage device or operation for application program |
| US6530038B1 (en) | 1999-09-16 | 2003-03-04 | International Business Machines Corporation | Streamlined initialization and refresh of file system directory limits |
| US6578054B1 (en) | 1999-10-04 | 2003-06-10 | Microsoft Corporation | Method and system for supporting off-line mode of operation and synchronization using resource state information |
| ATE390788T1 (de) | 1999-10-14 | 2008-04-15 | Bluearc Uk Ltd | Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen |
| US6470345B1 (en) * | 2000-01-04 | 2002-10-22 | International Business Machines Corporation | Replacement of substrings in file/directory pathnames with numeric tokens |
| US6424975B1 (en) | 2000-01-07 | 2002-07-23 | Trg Products, Inc. | FAT file system in palm OS computer |
| US6874062B1 (en) * | 2000-02-22 | 2005-03-29 | Unisys Corporation | System and method for utilizing a hierarchical bitmap structure for locating a set of contiguous ordered search items having a common attribute |
| US6862689B2 (en) | 2001-04-12 | 2005-03-01 | Stratus Technologies Bermuda Ltd. | Method and apparatus for managing session information |
| US6594674B1 (en) * | 2000-06-27 | 2003-07-15 | Microsoft Corporation | System and method for creating multiple files from a single source file |
| US6763428B1 (en) | 2000-08-02 | 2004-07-13 | Symantec Corporation | Methods and systems for performing push-pull optimization of files while file storage allocations are actively changing |
| US6948010B2 (en) | 2000-12-20 | 2005-09-20 | Stratus Technologies Bermuda Ltd. | Method and apparatus for efficiently moving portions of a memory block |
| US6970892B2 (en) * | 2001-02-16 | 2005-11-29 | Stratus Technologies Bermuda Ltd | Implementing standards-based file operations in proprietary operating systems |
| US6766413B2 (en) | 2001-03-01 | 2004-07-20 | Stratus Technologies Bermuda Ltd. | Systems and methods for caching with file-level granularity |
| US6874102B2 (en) | 2001-03-05 | 2005-03-29 | Stratus Technologies Bermuda Ltd. | Coordinated recalibration of high bandwidth memories in a multiprocessor computer |
| CN1147795C (zh) * | 2001-04-29 | 2004-04-28 | 北京瑞星科技股份有限公司 | 检测和清除已知及未知计算机病毒的方法、系统 |
| GB2377049A (en) * | 2001-06-30 | 2002-12-31 | Hewlett Packard Co | Billing for utilisation of a data storage array |
| US7444393B2 (en) * | 2001-10-30 | 2008-10-28 | Keicy K. Chung | Read-only storage device having network interface, a system including the device, and a method of distributing files over a network |
| GB0129044D0 (en) * | 2001-12-05 | 2002-01-23 | Koninkl Philips Electronics Nv | Data storage methods and apparatuses with basic and extended file system capacity |
| US6909910B2 (en) | 2002-02-01 | 2005-06-21 | Microsoft Corporation | Method and system for managing changes to a contact database |
| TW552501B (en) * | 2002-03-22 | 2003-09-11 | Taiwan Semiconductor Mfg | Version recording and tracking method |
| US6895413B2 (en) * | 2002-03-22 | 2005-05-17 | Network Appliance, Inc. | System and method for performing an on-line check of a file system |
| US7058665B1 (en) * | 2002-06-21 | 2006-06-06 | Unisys Corporation | Verification of data coherency in word-addressable files that support concurrent access |
| US6996695B2 (en) * | 2002-07-17 | 2006-02-07 | Masse Wayne P | Method, system, and storage medium for optimizing disk space and information access |
| US6954831B2 (en) * | 2002-08-29 | 2005-10-11 | International Business Machines Corporation | Method, system, and article of manufacture for borrowing physical volumes |
| US6961812B2 (en) * | 2002-10-03 | 2005-11-01 | International Business Machines Corporation | Universal disk format volumes with variable size |
| 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 |
| CN1711606A (zh) * | 2002-11-07 | 2005-12-21 | 皇家飞利浦电子股份有限公司 | 具有主文件系统区域和虚拟文件系统区域的记录载体 |
| US7146371B2 (en) * | 2002-12-05 | 2006-12-05 | International Business Machines Corporation | Performance and memory bandwidth utilization for tree searches using tree fragmentation |
| US7702659B2 (en) * | 2003-03-27 | 2010-04-20 | Sandisk Il Ltd. | Robust, self-maintaining file system |
| US20050192985A1 (en) * | 2003-03-31 | 2005-09-01 | Fujitsu Limited | Apparatus and method for classifying files, and computer product |
| US7607000B1 (en) | 2003-05-13 | 2009-10-20 | Apple Inc. | Method for booting an operating system |
| US7120637B2 (en) * | 2003-05-30 | 2006-10-10 | Microsoft Corporation | Positional access using a b-tree |
| US7069351B2 (en) * | 2003-06-02 | 2006-06-27 | Chung Keicy K | Computer storage device having network interface |
| JP4490917B2 (ja) * | 2003-07-24 | 2010-06-30 | パナソニック株式会社 | ファイル管理方法及び情報処理装置 |
| US7644376B2 (en) | 2003-10-23 | 2010-01-05 | Microsoft Corporation | Flexible architecture for notifying applications of state changes |
| US20050131960A1 (en) * | 2003-12-15 | 2005-06-16 | Reed Benjamin C. | Method and system of accessing at least one target file in a computer system with an operating system with file locking implemented at file-open time |
| US7380246B2 (en) * | 2003-12-15 | 2008-05-27 | Lenovo (Singapore) Pte. Ltd. | Method and system of accessing at least one target file in a computer system with an operating system with file locking implemented with byte-range locking |
| JP4354268B2 (ja) * | 2003-12-22 | 2009-10-28 | 株式会社河合楽器製作所 | 信号処理装置 |
| US7814131B1 (en) | 2004-02-02 | 2010-10-12 | Network Appliance, Inc. | Aliasing of exported paths in a storage system |
| US7428557B2 (en) * | 2004-03-22 | 2008-09-23 | Microsoft Corporation | Efficient data transfer to/from storage medium of computing device |
| JP4227931B2 (ja) * | 2004-04-15 | 2009-02-18 | 株式会社日立製作所 | 情報記憶装置、情報格納方法及び情報記憶処理プログラム |
| US7424574B1 (en) | 2004-04-21 | 2008-09-09 | Sun Microsystems, Inc. | Method and apparatus for dynamic striping |
| US7603568B1 (en) | 2004-04-21 | 2009-10-13 | Sun Microsystems, Inc. | Method and apparatus for self-validating checksums in a file system |
| US7415653B1 (en) | 2004-04-21 | 2008-08-19 | Sun Microsystems, Inc. | Method and apparatus for vectored block-level checksum for file system data integrity |
| US7412450B1 (en) | 2004-05-26 | 2008-08-12 | Sun Microsystems, Inc. | Method and apparatus for identifying tampering of data in a file system |
| US7225314B1 (en) | 2004-05-26 | 2007-05-29 | Sun Microsystems, Inc. | Automatic conversion of all-zero data storage blocks into file holes |
| US7281188B1 (en) | 2004-05-26 | 2007-10-09 | Sun Microsystems, Inc. | Method and system for detecting and correcting data errors using data permutations |
| US7496586B1 (en) | 2004-05-26 | 2009-02-24 | Sun Microsystems, Inc. | Method and apparatus for compressing data in a file system |
| US7526622B1 (en) | 2004-05-26 | 2009-04-28 | Sun Microsystems, Inc. | Method and system for detecting and correcting data errors using checksums and replication |
| GB2415797B (en) * | 2004-06-24 | 2009-02-25 | Symbian Software Ltd | A method for improving the performance of a file system in a computer device |
| US7533225B1 (en) | 2004-08-17 | 2009-05-12 | Sun Microsystems, Inc. | Method and apparatus for enabling adaptive endianness |
| US7437528B1 (en) * | 2004-08-17 | 2008-10-14 | Sun Microsystems, Inc. | Gang blocks |
| US7873782B2 (en) * | 2004-11-05 | 2011-01-18 | Data Robotics, Inc. | Filesystem-aware block storage system, apparatus, and method |
| EP1825372A2 (en) * | 2004-11-05 | 2007-08-29 | Data Robotics Incorporated | Dynamically expandable and contractible fault-tolerant storage system permitting variously sized storage devices and method |
| US7904906B2 (en) * | 2004-11-23 | 2011-03-08 | Stratus Technologies Bermuda Ltd. | Tracking modified pages on a computer 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 |
| US9639554B2 (en) * | 2004-12-17 | 2017-05-02 | Microsoft Technology Licensing, Llc | Extensible file system |
| CN100449504C (zh) * | 2005-01-05 | 2009-01-07 | 华为技术有限公司 | 一种基于bitmap表的缓存管理方法 |
| JP4722519B2 (ja) * | 2005-03-25 | 2011-07-13 | 株式会社日立製作所 | 計算機システム及びストレージサーバ、検索サーバ、端末装置並びに検索方法 |
| KR100714691B1 (ko) * | 2005-05-04 | 2007-05-04 | 삼성전자주식회사 | 파일 시스템에 추가 정보를 저장하고 관리하는 장치 및방법 |
| US20060253440A1 (en) * | 2005-05-09 | 2006-11-09 | Ibm Confidential | Eliminating file redundancy in a computer filesystem and establishing match permission in a computer filesystem |
| CN100419756C (zh) * | 2005-09-13 | 2008-09-17 | 北京中星微电子有限公司 | 文件分配表文件系统读写方法及装置 |
| US7480684B2 (en) * | 2005-11-04 | 2009-01-20 | Sun Microsystems, Inc. | Method and system for object allocation using fill counts |
| US20070106868A1 (en) * | 2005-11-04 | 2007-05-10 | Sun Microsystems, Inc. | Method and system for latency-directed block allocation |
| US7743225B2 (en) * | 2005-11-04 | 2010-06-22 | Oracle America, Inc. | Ditto blocks |
| US7865673B2 (en) * | 2005-11-04 | 2011-01-04 | Oracle America, Inc. | Multiple replication levels with pooled devices |
| US7873799B2 (en) * | 2005-11-04 | 2011-01-18 | Oracle America, Inc. | Method and system supporting per-file and per-block replication |
| US20070112895A1 (en) * | 2005-11-04 | 2007-05-17 | Sun Microsystems, Inc. | Block-based incremental backup |
| US7925827B2 (en) * | 2005-11-04 | 2011-04-12 | Oracle America, Inc. | Method and system for dirty time logging |
| US8495010B2 (en) * | 2005-11-04 | 2013-07-23 | Oracle America, Inc. | Method and system for adaptive metadata replication |
| US7716519B2 (en) * | 2005-11-04 | 2010-05-11 | Oracle America, Inc. | Method and system for repairing partially damaged blocks |
| US7596739B2 (en) * | 2005-11-04 | 2009-09-29 | Sun Microsystems, Inc. | Method and system for data replication |
| US8549051B2 (en) * | 2005-11-04 | 2013-10-01 | Oracle America, Inc. | Unlimited file system snapshots and clones |
| US7716445B2 (en) * | 2005-11-04 | 2010-05-11 | Oracle America, Inc. | Method and system for storing a sparse file using fill counts |
| US7877554B2 (en) * | 2005-11-04 | 2011-01-25 | Oracle America, Inc. | Method and system for block reallocation |
| US7376758B2 (en) * | 2005-11-04 | 2008-05-20 | Sun Microsystems, Inc. | I/O dependency graphs |
| US7930495B2 (en) * | 2005-11-04 | 2011-04-19 | Oracle America, Inc. | Method and system for dirty time log directed resilvering |
| US8635190B2 (en) * | 2005-11-04 | 2014-01-21 | Oracle America, Inc. | Method and system for pruned resilvering using a dirty time log |
| US8938594B2 (en) * | 2005-11-04 | 2015-01-20 | Oracle America, Inc. | Method and system for metadata-based resilvering |
| US7689877B2 (en) * | 2005-11-04 | 2010-03-30 | Sun Microsystems, Inc. | Method and system using checksums to repair data |
| US7899989B2 (en) * | 2005-11-04 | 2011-03-01 | Oracle America, Inc. | Method and system for using a block allocation policy |
| JP2007141124A (ja) * | 2005-11-22 | 2007-06-07 | Sanyo Electric Co Ltd | リスト作成装置 |
| US7660826B2 (en) * | 2006-05-02 | 2010-02-09 | International Business Machines Corporation | Implementing adaptive buffer management on network fetches of directory contents and object attributes |
| US9971776B1 (en) * | 2006-06-29 | 2018-05-15 | Veritas Technologies Llc | Method and apparatus for extending functionality of an operating system |
| JP5002201B2 (ja) * | 2006-06-30 | 2012-08-15 | 株式会社東芝 | メモリシステム |
| JP4961606B2 (ja) * | 2006-08-29 | 2012-06-27 | アイシン・エィ・ダブリュ株式会社 | データ管理システム、更新用ファイル生成システム、及び、データ更新方法 |
| US7840657B2 (en) * | 2006-10-31 | 2010-11-23 | Oracle America, Inc. | Method and apparatus for power-managing storage devices in a storage pool |
| US7584229B2 (en) * | 2006-10-31 | 2009-09-01 | Sun Microsystems, Inc. | Method and system for priority-based allocation in a storage pool |
| US7783847B2 (en) * | 2006-10-31 | 2010-08-24 | Oracle America Inc. | Method and system for reallocating blocks in a storage pool |
| US9734086B2 (en) | 2006-12-06 | 2017-08-15 | Sandisk Technologies Llc | Apparatus, system, and method for a device shared between multiple independent hosts |
| US7747664B2 (en) * | 2007-01-16 | 2010-06-29 | Microsoft Corporation | Storage system format for transaction safe file system |
| US7792882B2 (en) * | 2007-09-27 | 2010-09-07 | Oracle America, Inc. | Method and system for block allocation for hybrid drives |
| US8769185B2 (en) * | 2007-10-23 | 2014-07-01 | Keicy Chung | Computer storage device having separate read-only space and read-write space, removable media component, system management interface, and network interface |
| 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 |
| US8176017B2 (en) * | 2007-12-14 | 2012-05-08 | Microsoft Corporation | Live volume access |
| US8073884B2 (en) * | 2007-12-20 | 2011-12-06 | Hewlett-Packard Development Company, L.P. | System and method to derive high level file system information by passively monitoring low level operations on a FAT file system |
| US8095728B2 (en) * | 2008-04-18 | 2012-01-10 | Oracle America, Inc. | Method and system for power aware I/O scheduling |
| US8037279B2 (en) * | 2008-06-12 | 2011-10-11 | Oracle America, Inc. | Method and system for cross-domain data sharing |
| US7921280B2 (en) * | 2008-06-27 | 2011-04-05 | Intel Corporation | Selectively powered retirement unit using a partitioned allocation array and a partitioned writeback array |
| US8135907B2 (en) * | 2008-06-30 | 2012-03-13 | Oracle America, Inc. | Method and system for managing wear-level aware file systems |
| US20100036858A1 (en) * | 2008-08-06 | 2010-02-11 | Microsoft Corporation | Meta file system - transparently managing storage using multiple file systems |
| US8793223B1 (en) | 2009-02-09 | 2014-07-29 | Netapp, Inc. | Online data consistency checking in a network storage system with optional committal of remedial changes |
| US8230208B2 (en) * | 2009-04-20 | 2012-07-24 | Intel Corporation | Booting an operating system of a system using a read ahead technique |
| US8280858B2 (en) * | 2009-06-29 | 2012-10-02 | Oracle America, Inc. | Storage pool scrubbing with concurrent snapshots |
| JP5310399B2 (ja) * | 2009-09-01 | 2013-10-09 | 富士通株式会社 | 索引管理装置の処理方法および索引管理装置 |
| US8510334B2 (en) | 2009-11-05 | 2013-08-13 | Oracle International Corporation | Lock manager on disk |
| US8433865B2 (en) | 2009-12-11 | 2013-04-30 | Microsoft Corporation | Consistency without ordering dependency |
| US8793440B2 (en) | 2010-06-17 | 2014-07-29 | Microsoft Corporation | Error detection for files |
| US8897432B2 (en) | 2010-07-01 | 2014-11-25 | Etherfax, Llc | System and method of remote fax interconnect technology |
| US8713067B1 (en) * | 2010-07-09 | 2014-04-29 | Open Invention Network, Llc | Stable file system |
| CN102479163A (zh) * | 2010-11-25 | 2012-05-30 | 鸿富锦精密工业(深圳)有限公司 | 多硬盘自动识别系统及方法 |
| US8776094B2 (en) | 2011-08-11 | 2014-07-08 | Microsoft Corporation | Runtime system |
| US8249230B1 (en) | 2012-01-09 | 2012-08-21 | EC Data Systems, Inc. | Scalable and flexible internet fax architecture |
| US8254538B1 (en) | 2012-02-27 | 2012-08-28 | EC Data Systems, Inc. | Scalable and flexible internet fax architecture for processing outbound fax messages |
| US9542401B1 (en) | 2012-03-30 | 2017-01-10 | EMC IP Holding Company LLC | Using extents of indirect blocks for file mapping of large files |
| US9223791B2 (en) | 2013-07-02 | 2015-12-29 | Red Hat, Inc. | System and method for reading file blocks |
| US9558297B1 (en) * | 2014-03-27 | 2017-01-31 | EMC IP Holding Company LLC | Memory management techniques |
| US10277778B2 (en) | 2014-06-24 | 2019-04-30 | Ec Data Systems Inc. | Audit logging for a secure, scalable and flexible internet fax architecture |
| US20170083630A1 (en) * | 2015-09-21 | 2017-03-23 | Egemen Tas | Method to virtualize large files in a sandbox |
| US10635504B2 (en) | 2014-10-16 | 2020-04-28 | Microsoft Technology Licensing, Llc | API versioning independent of product releases |
| US10614044B2 (en) * | 2016-07-07 | 2020-04-07 | Tuxera, Inc. | Systems and methods for performing data object renaming operations |
| US10733144B2 (en) * | 2016-07-13 | 2020-08-04 | Netapp, Inc. | Persistent indexing and free space management for flat directory |
| US11855971B2 (en) * | 2018-01-11 | 2023-12-26 | Visa International Service Association | Offline authorization of interactions and controlled tasks |
| EP3736705B1 (en) * | 2018-02-05 | 2024-09-18 | Huawei Technologies Co., Ltd. | Date query method and device |
| CN111124256B (zh) * | 2018-10-31 | 2023-10-27 | 伊姆西Ip控股有限责任公司 | 管理存储的方法、设备和计算机程序产品 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63116232A (ja) * | 1986-10-30 | 1988-05-20 | アプル・コンピユータ・インコーポレーテツド | 階層構造のファイルシステムおよびそれを構成する方法 |
| JPS63187344A (ja) * | 1987-01-30 | 1988-08-02 | Nec Corp | フアイル内空き領域管理方式 |
Family Cites Families (18)
| 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 |
| US4156908A (en) * | 1974-02-28 | 1979-05-29 | Burroughs Corporation | Cursive mechanism in a data driven digital data processor |
| US4454576A (en) * | 1981-05-18 | 1984-06-12 | International Business Machines Corporation | Report preparation |
| US4468728A (en) * | 1981-06-25 | 1984-08-28 | At&T Bell Laboratories | Data structure and search method for a data base management system |
| US4464653A (en) * | 1981-12-09 | 1984-08-07 | The Bendix Corporation | Combustible gas detection system |
| CA1233266A (en) * | 1985-02-21 | 1988-02-23 | William L. Terrell | Configuration capability for devices in an open system |
| US4825354A (en) * | 1985-11-12 | 1989-04-25 | American Telephone And Telegraph Company, At&T Bell Laboratories | Method of file access in a distributed processing computer network |
| US5047918A (en) * | 1985-12-31 | 1991-09-10 | Tektronix, Inc. | File management system |
| US4709367A (en) * | 1986-03-31 | 1987-11-24 | International Business Machines Corporation | Method and apparatus for distinguishing between diskettes in a diskette drive |
| US5034914A (en) * | 1986-05-15 | 1991-07-23 | Aquidneck Systems International, Inc. | Optical disk data storage method and apparatus with buffered interface |
| US4945475A (en) * | 1986-10-30 | 1990-07-31 | Apple Computer, Inc. | Hierarchical file system to provide cataloging and retrieval of data |
| US5008820A (en) * | 1987-03-30 | 1991-04-16 | International Business Machines Corporation | Method of rapidly opening disk files identified by path names |
| JPH01128266A (ja) * | 1987-11-13 | 1989-05-19 | Pioneer Electron Corp | 書込み可能型ディスク用ドライブ装置の制御方法 |
| US4953080A (en) * | 1988-04-25 | 1990-08-28 | Hewlett-Packard Company | Object management facility for maintaining data in a computer system |
| US5014208A (en) * | 1989-01-23 | 1991-05-07 | Siemens Corporate Research, Inc. | Workcell controller employing entity-server model for physical objects and logical abstractions |
| US5398142B1 (en) * | 1989-05-31 | 1997-09-16 | Raxco Inc | Method for eliminating file fragmentation and reducing average seek times in a magnetic disk media environment |
| US5274802A (en) * | 1991-02-22 | 1993-12-28 | Gte Mobilnet Incorporated | Method for restoring lost databases by comparing existing database and generic database, and generating cellular switch commands to update the generic database |
| CA2122098C (en) * | 1993-04-27 | 1999-02-02 | Michael John Camille Marsh | Printing apparatus |
-
1989
- 1989-08-29 US US07/400,533 patent/US5371885A/en not_active Expired - Lifetime
-
1990
- 1990-08-28 EP EP19900116474 patent/EP0416445A3/en not_active Withdrawn
- 1990-08-28 CA CA002024174A patent/CA2024174C/en not_active Expired - Lifetime
- 1990-08-29 JP JP2227906A patent/JPH03171239A/ja active Pending
- 1990-08-29 AU AU61912/90A patent/AU646225B2/en not_active Expired
-
1994
- 1994-05-16 AU AU63093/94A patent/AU676284B2/en not_active Expired
- 1994-09-01 US US08/299,542 patent/US5608901A/en not_active Expired - Lifetime
- 1994-09-01 US US08/299,511 patent/US5873118A/en not_active Expired - Lifetime
-
1995
- 1995-11-01 JP JP7354961A patent/JPH08278904A/ja active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63116232A (ja) * | 1986-10-30 | 1988-05-20 | アプル・コンピユータ・インコーポレーテツド | 階層構造のファイルシステムおよびそれを構成する方法 |
| JPS63187344A (ja) * | 1987-01-30 | 1988-08-02 | Nec Corp | フアイル内空き領域管理方式 |
Also Published As
| Publication number | Publication date |
|---|---|
| AU6191290A (en) | 1991-03-07 |
| EP0416445A3 (en) | 1992-10-28 |
| US5371885A (en) | 1994-12-06 |
| AU6309394A (en) | 1994-07-14 |
| EP0416445A2 (en) | 1991-03-13 |
| US5873118A (en) | 1999-02-16 |
| US5608901A (en) | 1997-03-04 |
| CA2024174A1 (en) | 1991-03-01 |
| JPH03171239A (ja) | 1991-07-24 |
| CA2024174C (en) | 1996-05-21 |
| AU646225B2 (en) | 1994-02-17 |
| AU676284B2 (en) | 1997-03-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH08278904A (ja) | 高性能ファイルシステム | |
| EP0415346B1 (en) | Method and system for dynamic volume tracking in an installable file system | |
| US6792518B2 (en) | Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies | |
| US7363540B2 (en) | Transaction-safe FAT file system improvements | |
| US8914567B2 (en) | Storage management system for virtual machines | |
| US6934822B2 (en) | Organization of multiple snapshot copies in a data storage system | |
| US6957362B2 (en) | Instantaneous restoration of a production copy from a snapshot copy in a data storage system | |
| US8156165B2 (en) | Transaction-safe FAT files system | |
| US6185575B1 (en) | In-place disk partition canonization and storage optimization | |
| US5826012A (en) | Boot-time anti-virus and maintenance facility | |
| US7225210B2 (en) | Block level data snapshot system and method | |
| US20150378921A1 (en) | Systems and methods for storage service automation | |
| KR100317691B1 (ko) | 로그 구조화 목표 저장장치를 사전에 구성하여 볼륨을 효율적으로 복사하는 방법 및 장치 | |
| US20070180206A1 (en) | Method of updating a duplicate copy of an operating system on the same disk | |
| JPH04504018A (ja) | 消去不可能な記憶媒体上にファイルを読出しかつ書込む方法 | |
| JPS62165249A (ja) | ペ−ジ・セグメント化仮想記憶デ−タ処理システムにおけるセグメント・サイズを自動的に大きくする方法 | |
| US6996682B1 (en) | System and method for cascading data updates through a virtual copy hierarchy | |
| CN114911574B (zh) | 一种数据处理方法及装置 | |
| US10235373B2 (en) | Hash-based file system | |
| US7191297B2 (en) | Method for volume manager to have configurable device type and subtype for application use | |
| Kwon | Designing Systems for Emerging Memory Technologies |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 19971027 |