JP3543661B2 - 交換機ファイルシステムにおけるバッファキャッシュ方法および装置 - Google Patents

交換機ファイルシステムにおけるバッファキャッシュ方法および装置 Download PDF

Info

Publication number
JP3543661B2
JP3543661B2 JP05795999A JP5795999A JP3543661B2 JP 3543661 B2 JP3543661 B2 JP 3543661B2 JP 05795999 A JP05795999 A JP 05795999A JP 5795999 A JP5795999 A JP 5795999A JP 3543661 B2 JP3543661 B2 JP 3543661B2
Authority
JP
Japan
Prior art keywords
buffer
btree
acquisition request
area
request data
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.)
Expired - Fee Related
Application number
JP05795999A
Other languages
English (en)
Other versions
JP2000259468A (ja
Inventor
亘 山中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP05795999A priority Critical patent/JP3543661B2/ja
Priority to US09/516,167 priority patent/US6549982B1/en
Priority to CNB001030329A priority patent/CN1208725C/zh
Publication of JP2000259468A publication Critical patent/JP2000259468A/ja
Application granted granted Critical
Publication of JP3543661B2 publication Critical patent/JP3543661B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device

Description

【0001】
【発明の属する技術分野】
本発明は、ファイルシステム、特に交換機のファイルシステムにおけるバッファキャッシュ方法および装置に関する。
【0002】
【従来の技術】
交換機システムは、図17に示すように、電話加入者10が会話できるように電話線を制御する通信路系装置12を備えており、この通信路系装置は、コンピュータに代表される中央処理系装置14により制御される。すなわち、中央制御装置16が、主記憶装置18および補助記憶装置20のような記憶装置のプログラムを読みとって解読・判断を行い、必要な命令やデータを通信路系装置12に送り、課金や呼処理など全ての機能を管理・処理している。また、保守運用系装置(コンソール)22は、オペレーターと中央制御装置16との間の情報のやりとりを行っている。
【0003】
このような交換機システムのファイルには、さまざまなものがあるが、従来の技術では一定のブロックサイズのバッファキャッシュを用いてキャッシングを行っている。図17を参照して、交換機の一般的なファイル操作を説明する。主記憶装置である磁気ディスク装置18にファイルaaaがあるものとする。このファイルaaaは、磁気ディスク上では、ブロック単位に分かれている(ブロック100,101,102,205,206,255,256,300)。ファイルの容量が大きくなると、一番後につながっているブロックからブロックをのばす。のばせないときは異なるところにブロックを確保する。例えば、ブロック番号301が使われていなければ使用し、使われていたら解放されているブロックを使用する。
【0004】
ファイルaaaをバッファキャッシュに全て読取ることは、メモリ使用率が大きいのでできない。そこで、必要な部分を含むブロックの内容をバッファキャッシュに読取っている。例えば、ファイルaaaのブロック101,102,205に必要なデータがあるときは、ブロック101,102,205を、ファイルaaaのブロック102だけに必要なデータがある場合には、ブロック102をバッファキャッシュに読取っている。
【0005】
一定のブロックサイズのバッファキャッシュを用いてキャッシングを行う方法では、ファイルを構成するブロックへのアクセスサイズがバッファキャッシュのサイズより小さければ高速化が図れる。しかし、交換機のファイルシステムにおけるように、アクセスサイズが大きくなり、いくつかのブロックを連続してアクセスする場合には、複数のI/O処理に分割されてしまい効果が薄れていた。このため、例えば特開平5−158792号公報に記載の技術では、入出力バッファを設け、アクセスサイズが大きい場合には一旦入出力バッファに取り込んで、データを分割してバッファキャッシュに入力している。
【0006】
また、一定のブロックサイズのバッファキャッシュを用いてキャッシングを行う方法では、ファイルのブロックサイズに関係なしに固定長のアクセスを行っているので、バッファキャッシュのブロックサイズを大きくとると、小さいファイルを扱う際にブロックに無駄が生じていた。
【0007】
このような問題に対処するためのバッファキャッシュのブロックサイズを可変長にする考え方がある。例えば特開平10−69429号公報には、メモリ上のバッファメモリ領域を、アプリケーション・プログラムの要求に応じて割り当て管理する技術が開示されている。しかし、この可変長方式は、通信制御プログラムを目的とするものであり、ある決まった大きさのデータを多く扱うのを考えている。交換機のファイルシステムでは、要求するデータの大きさは多々あるので適していない。
【0008】
また、特開平7−311710号公報には、ハッシュリストを用いるバッファキャッシュ管理方法が開示されているが、ハッシュリストは可変長のバッファキャッシュに適用するには高速アクセスという点では有利ではない。
【0009】
【発明が解決しようとする課題】
交換機のファイルシステムでは、大きいサイズのデータ領域が要求されるので、前述したような各公開公報に記載の従来技術は、高速アクセスを実現するという点では用いることができず、依然として、一定のブロックサイズのバッファキャッシュを用いてキャッシングを行う方法しか用いられていなかった。このような方法では、高速アクセスができなかった。
【0010】
本発明の目的は、種々のサイズのバッファブロックを予め用意することにより、バッファキャッシュのサイズを可変長にし、さまざまなファイルアクセスサイズにおいてもアクセスを高速化できるバッファキャッシュ方法および装置を提供することにある。
【0011】
本発明の他の目的は、要求データサイズに応じて、バッファを使用するために解放・削除や確保・挿入などをして適したバッファを確保するバッファキャッシュ・プログラムを記録した記憶媒体を提供することにある。
【0012】
【線題を解決するための手段】
本発明の第1の態様は、ファイルシステム上へのアクセスに可変長のバッファを用いるバッファキャッシュ方法である。この方法によれば、各ノードが、連続した1つ以上のブロックからなる可変長のバッファの前記ブロックの番号を保持できるBtreeと、複数のサイズからなり、解放されたバッファのリストを持つフリーリストとを用いることで、I/Oアクセス回数を減らしてファイルアクセスを高速化できる。
【0013】
この場合に、データの獲得要求で指示されるブロック番号で表される領域を、Btree上に検索し、Btree上に前記獲得要求データの領域を含んだバッファがある場合は、そのバッファを使用し、Btree上に前記獲得要求データの領域を含んだバッファがない場合は、前記獲得要求データの領域のサイズ以上であって、前記獲得要求データの領域のサイズに最も近いサイズのバッファをフリーリストからはずして確保し、Btreeに挿入して、このバッファを使用し、Btree上の1つのバッファ内に前記獲得要求データの領域の一部がある場合は、そのバッファをBtreeから削除して、フリーリストにつないで解放し、前記獲得要求データの領域のサイズに合うバッファをフリーリストからはずして確保し、Btreeに挿入して、このバッファを使用し、前記獲得要求データの領域がBtree上の複数のバッファ内にある場合は、その全てのバッファをBtreeから削除して、フリーリストにつないで解放し、前記獲得要求データの領域のサイズに合うバッファをフリーリストからはずして確保し、Btreeに挿入する。
【0014】
本発明の第2の態様は、ファイルシステム上へのアクセスに可変長のバッファを用いるバッファキャッシュ装置である。
【0015】
この装置によれば、データを獲得する要求を受付ける要求受付手段と、各ノードが、連続した複数のブロックからなる可変長のバッファの前記ブロックの番号を保持できるBtreeと、複数のサイズからなり、解放されたバッファのリストを持つフリーリストとを含むバッファキャッシュ手段と、データの獲得要求があると、データの獲得要求で指示されるブロック番号で表される領域を、Btree上に検索するBtree検索手段と、Btree上に前記獲得要求データの領域を含んだバッファがない場合は、フリーリストを検索し解放されたバッファを検索する解放バッファ検索手段と、フリーリストの検索の際に、前記獲得要求データの領域のサイズ以上であって、前記獲得要求データの領域のサイズに最も近いサイズのバッファを検索する最適バッファ検索手段と、Btree上の1つのバッファ内に前記獲得要求データの領域の一部がある場合は、そのバッファをBtreeから削除して、フリーリストにつないで解放し、前記獲得要求データの領域のサイズに合うバッファをフリーリストからはずして確保し、Btreeに挿入し、前記獲得要求データの領域がBtree上の複数のバッファ内にある場合は、その全てのバッファをBtreeから削除して、フリーリストにつないで解放し、前記獲得要求データの領域のサイズに合うバッファをフリーリストからはずして確保し、Btreeに挿入するバッファ挿入削除手段とを備えている。
【0016】
本発明の第2の態様は、ファイルシステム上へのアクセスに可変長のバッファの使用を可能とするステップを含むプログラムを記録した記憶媒体である。
【0017】
好適には、ファイルシステム上のアクセスに可変長のバッファを用い、各ノードが、連続した1つ以上のブロックからなる可変長のバッファを保持できるBtreeと、複数のサイズからなり、解放されたバッファのリストを持つフリーリストとを用いて、要求データに応じて、バッファを使用するために削除および挿入を行って、適したバッファを獲得するステップを含むプログラムを記録した記憶媒体である。
【0018】
【発明の実施の形態】
図1は、本発明が適用される交換機システムの基本構造を示す。基本的には、図17で示したものと同様であり、図17に対応する要には、同一の参照番号を付して示してある。図1の交換機システムは、さらに、バッファキャッシュ装置23を備えている。本発明に係るバッファキャッシュ・プログラムは、バッファキャッシュ装置23で動くものである。
【0019】
なお以下の説明において、“解放”という用語は、バッファをフリーリストにつなぐことを、“確保”という用語はバッファをフリーリストからはずして使用することの意味で用いる。また、“挿入”という用語は、Btreeにバッファをつなぐことを、“削除”という用語はバッファをBtreeからはずすことの意味で用いるものとする。
【0020】
図2は、バッファキャッシュ装置の機能ブロック図である。このバッファキャッシュ装置は、機能的には、バッファ獲得要求およびBtreeの修正要求を受付ける要求受付装置24と、バッファ検索のためにBtreeを検索するBtree検索装置26と、フリーリストを検索し解放されたバッファを検索する解放バッファ検索装置28と、フリーリストの検索の際に最適なサイズのバッファを検索する最適バッファ検索装置30と、Btree上でバッファを挿入および削除するバッファ挿入削除装置32と、Btreeのバランスを整えるBtree修正装置34と、磁気ディスク18との入出力を管理する入出力管理装置36と、バッファキャッシュ38と、バッファキャッシュとのアクセスを管理するバッファ管理装置40とから構成されている。
【0021】
以下、本発明のバッファキャッシュ方法を、図3および図4をも参照して説明する。図3は、磁気ディスク18のファイルシステム(ブロック100〜178)と、バッファキャッシュとを示す図であり、図示のようにバッファキャッシュは、バッファ検索のためのBtree(Balanced tree)44と、複数のサイズからなり解放されたバッファのリストを持つフリーリスト46とを含んでいる。Btreeを構成する各ノードは、連続した1つ以上のブロックからなる可変長のバッファを保持する。このBtreeは、2分探索木であり、ノードが保持するブロックの番号より小さい番号のブロックは左部分木内にあり、ノードが保持するブロックの番号より大きい番号ブロックは右部分木内にある。このようにBtreeにおける探索は、根から始まる。ノードのブロックの番号と比較し、目的のブロックの番号が左右どちらの部分木にあるかを判断し、分岐して目的のブロックを探索していく。
【0022】
このように、Btree44上にある各ノードのバッファは、有効なデータを保持し、連続した1つ以上のデータブロックをまとめて保持することを可能にしている。
【0023】
図3において、Btree44の各バッファに示す数字は、保持するブロックの番号を示している。図3では、各バッファは、2ブロックまたは3ブロックよりなる可変長のバッファブロックで構成されている状態を示している。
【0024】
図4は、フリーリスト46の構造を示す。フリーリスト46は、αキロバイト(kB)のバッファサイズ(複数ブロック)を持つリスト、βキロバイトのバッファサイズ(複数ブロック)を持つリストなど、様々な大きさを持つバッファサイズ毎のリストに分けられる。図の右部分には、リストにつながれた1つ以上のブロックよりなる解放されたバッファを示している。
【0025】
磁気ディスク18のファイルシステムへのアクセスの際、バッファを獲得するには、まずBtree44上に要求するデータの領域が存在するか否かを検索し、見つからなければその要求データのサイズを満たす最も近いサイズの解放バッファをフリーリスト46から検索し、検索により得られたバッファにファイルからデータを格納する。使用したブロックの先頭アドレスと最終アドレスをBtree44上のバッファに格納する。
【0026】
このようにして、無駄の少ないバッファ管理と高速なファイルアクセスを可能にする。
【0027】
【実施例】
以下、本発明の実施例を説明するが、本発明の実施例の動作の理解を助けるために、Btree上のバッファの状態の変化について一般的な説明をまず行っておく。
【0028】
(1)システムを起動したとき、およびファイルが削除されたときはBtree上のバッファにデータを残しておく必要がないため、解放状態で有効なデータがバッファに無く、バッファはフリーリストだけにつながれている。
【0029】
(2)Btree上のバッファのデータがプログラムによって使用されるとき(コピー中などのようにバッファのデータを使用しているときなど、まさにそのバッファのデータが使用されているとき)には、使用中で有効なデータがバッファにあるので、バッファがBtreeだけにつながれている。
【0030】
(3)Btreeのバッファのデータがプログラムに使用されていないとき(上記2以外で有効なデータがバッファにあるときはこの状態である。)には、解放状態で有効なデータがBtreeのバッファにあるので、バッファはBtreeとフリーリストにつながれている。
【0031】
以下に、本発明の実施例を、図5,図6,図7,図8のフローチャートをも参照して説明する。
【0032】
バッファキャッシュの獲得状況は4パターンある。第1のパターンは、要求するデータの領域がBtreeのバッファにそのまま存在する場合である(図5のパターン1)。第2のパターンは、要求するデータの領域がBtree上に存在しない場合である(図6のパターン2)。第3のパターンは、要求するデータの領域の一部がBtreeの1つのバッファ内に存在する場合(図7のパターン3)である。第4のパターンは、要求するデータの領域がBtreeの複数のバッファ内に存在する場合である(図8のパターン4)。
【0033】
図5のフローチャートにおいて、データ獲得の要求がCPU16からあると(ステップS1)、図2のバッファキャッシュ装置22の要求受付装置24が、この要求を受付け、Btree検索装置26は、バッファ管理装置40を介して、バッファキャッシュ38にアクセスし、Btreeを探索して要求するデータの領域(ブロックの番号で指示される)がBtree上のバッファに存在するか否かを判断する(ステップS2)。
【0034】
要求するデータの領域がBtree上のバッファに存在する場合には、要求するデータの領域の一部がBtree上の1つのバッファ内に存在するか否かを判断する(ステップS3)。存在しなければ、次に、要求するデータの領域がBtree上の複数のバッファ内に存在するか否かを判断する(ステップS4)。存在しなければ、前述した要求するデータの領域がBtree上にそのまま存在していると判断して、そのまま存在するバッファを使用する(ステップS5)。すなわち、そのバッファから有効データを読出す。この場合、Btreeの状態は変化しない。以上のことは、前述した第1のパターンに相当している。
【0035】
ステップS2において、要求するデータの領域がBtree上のバッファに存在しない場合には、最適バッファ検索装置30および解放バッファ探索装置28は、バッファ管理装置40を介して、バッファキャッシュ38にアクセスし、フリーリスト46内の検索を開始する。
【0036】
フリーリスト内検索では、最適バッファ検索装置30はフリーリストの中から最小バッファサイズを検索する(ステップS21)。次に、メモリ領域に格納しようとするデータのサイズ(以下、単にデータサイズという)と、フリーリスト中に検索された最小バッファサイズとを比較する(ステップS22)。
【0037】
データサイズが最小バッファサイズより大きいと、次に大きいバッファサイズを持つフリーリストを検索し(ステップS23)、ステップS22でデータサイズと比較する。データサイズ以上のバッファサイズを持つフリーリストが検索されるまで、以上のステップS22,S23を繰り返す。
【0038】
ステップS22において、データサイズ以上のバッファサイズを持つフリーリストが検索されると、解放バッファ検索装置28は、そのフリーリストにつながれた解放バッファがあるか否か、すなわち解放バッファが見つかったか否かを判断する(ステップS24)。ステップS24において、解放バッファが見つからない場合には、まだ大きなサイズのバッファを持つフリーリストがあるか否かを判断する(ステップS26)。まだ大きなバッファを持つフリーリストがある場合には、そのフリーリストを検索し(ステップS27)、そこに解放バッファが見つかったか否かを判断する(ステップS24)。解放バッファが見つかったと判断されれば、この解放バッファを確保し、確保したバッファをBtreeに挿入する。そして、このバッファを使用し磁気ディスク上のデータを格納する(ステップS25)。これは、前述した第2のパターンに相当している。
【0039】
ステップS26において、利用できるバッファがなければ、利用できるバッファが解放されるまで処理をスリープする(ステップS28)。
【0040】
図5のフローチャートのステップS3において、要求するデータの領域の一部がBtree上の1つのバッファ内に存在する場合、バッファ挿入削除装置32は、バッファ管理装置40を介してバッファキャッシュ38をアクセスし、まずそのバッファのデータを磁気ディスク18に書き出し(ステップS31)、そのバッファをBtreeからはずす、すなわち削除し、フリーリストにつなぐ、すなわち解放する。バッファ削除・解放後、データサイズに合う新しいバッファをフリーリストからはずして使用する、すなわち確保し、Btreeにつなぐ、すなわち挿入する(ステップS33)。これは、前述した第3のパターンに相当している。
【0041】
図5のフローチャートのステップS4において、要求するデータの領域がBtree上の複数のバッファ内に存在する場合、まずこれら複数のすべてのバッファのデータを磁気ディスク18に書き出し(ステップS41)、すべてのバッファを解放・削除する(ステップS42)。そして、データサイズに合う新しいバッファを確保・挿入する(ステップS43)。これは、前述した第4のパターンに相当している。
【0042】
以上の4つのパターンについて、Btreeの状態を具体的に説明する。
【0043】
まず、全ての場合でBtree44の初めの状態が図9の状態になっているところから考える。
【0044】
第1のパターンでは、Btree上に存在するバッファをそのまま利用するので、Btreeの状態は変わらないが、データを確保しているバッファの内容が更新されている。
【0045】
第2のパターンでは、要求するデータの領域が例えばブロック75−78の場合には、このデータの領域は、図9のBtreeには存在していない。そのため、データサイズを満たす最も近いサイズのバッファのフリーリストから解放バッファを確保する。確保したバッファは、図10に示すようにBtreeに挿入する(ブロック75−78)。
【0046】
第3のパターンでは、要求するデータの領域が例えばブロック15−17の場合には、このデータ領域は図9のBtree上の1つのバッファ(ブロック15−18)内に存在している。そのため、一度そのバッファのデータを全て磁気ディスク18に書き出し解放する。解放されたバッファは、Btreeから削除される。そして、あらためてそのデータサイズに合うバッファを確保する。確保したバッファは、図11に示すようにBtreeに挿入する(ブロック15−17)。
【0047】
このようにすることによって、磁気ディスク上に書き出されたブロック18のデータを他のプログラムが使用できるようになる。
【0048】
パターン4では、要求するデータの領域が例えばブロック165−167の場合には、このデータの領域は図9のBtreeでは、2つのバッファ(ブロック165−166および167−168)内に存在している。そのため、これら2つのバッファのデータを磁気ディスク18に書き出し解放する。解放されたバッファは、Btreeから削除される。そして、あらためてそのデータサイズに合うバッファを確保する。確保したバッファは、図13に示すようにBtreeに挿入する(ブロック165−167)。
【0049】
このようにすることによって、図12のBtreeでは、ブロック165−167よりなるデータの領域の検索において2つのノードを検索しなければならないが、図13のBtreeでは1つのノードの検索で済むので検索速度が向上する。また、磁気ディスク上に書き出されたブロック18のデータを他のプログラムが使用できるようになっている。
【0050】
以上のようにBtree上でバッファの挿入や削除を繰り返していると、Btreeのバランスが悪くなる。Btreeのバランスが悪くなるとツリーの探索に要する時間が大きくなるので、適当なタイミングでツリーのバランスを整えるように修正する必要がある。
【0051】
次に、Btreeの修正について説明する。Btreeの状態が図14に示す状態にある場合に、新たなバッファ(ブロック148−150)が確保され、図15に示すようにBtreeに挿入され、アンバランスが起こる。図15では、アンバランスを生じたツリー部分を点線で囲んで示している。このようなアンバランスの発生は、Btreeの検索時間を増大し、望ましくない。また、このようなBtreeのアンバランスは、バッファが削除されたときにも生じる。このようなアンバランスを修正するタイミングとしては、以下の2通りのうちのいずれかで行う。
【0052】
(1)Btree上でバッファの挿入または削除時にアンバランスが生じたら、すぐに修正する。このような修正は、修正箇所が少ないときに適している。図16は、図15のBtreeを修正してバランスが整えられたBtreeを示す。
【0053】
(2)修正が多岐にわたって行われる場合は、CPUの空き時間に修正する。CPUの空き時間に修正する場合には、全体修正を行うか、あるいは部分修正を行うかは、空き時間の大きさによって適宜選択される。
【0054】
【発明の効果】
本発明によれば、バッファキャッシュを可変長にし、Btreeを採用したため、大きさがばらばらなデータでも高速アクセスできる。
【図面の簡単な説明】
【図1】本発明が適用される交換機システムの基本構造を示す図である。
【図2】バッファキャッシュ装置の機能ブロック図である。
【図3】Btreeを示す図である。
【図4】フリーリストの構成を示す図である。
【図5】本発明の動作を説明するためのフローチャートである。
【図6】本発明の動作を説明するためのフローチャートである。
【図7】本発明の動作を説明するためのフローチャートである。
【図8】本発明の動作を説明するためのフローチャートである。
【図9】Btreeの状態を示す図である。
【図10】Btreeの状態を示す図である。
【図11】Btreeの状態を示す図である。
【図12】Btreeの状態を示す図である。
【図13】Btreeの状態を示す図である。
【図14】Btreeの修正を示す図である。
【図15】Btreeの修正を示す図である。
【図16】Btreeの修正を示す図である。
【図17】交換機システムの基本構成を示す図である。
【図18】交換機の一般的なファイル操作を説明する図である。
【符号の説明】
10 電話加入者
12 通話路系装置
16 プロセッサ(CPU)
18 磁気ディスク
20 磁気テープ
22 コンソール
23 バッファキャッシュ装置
24 要求受付装置
26 Btree検索装置
28 バッファ検索装置
30 最適バッファ検索装置
32 バッファ確保解放装置
34 Btree修正装置
38 バッファキャッシュ
40 バッファ管理装置

Claims (7)

  1. 交換機のファイルシステム上へのアクセスに可変長のバッファを用いるバッファキャッシュ方法において、
    各ノードが、連続した1つ以上のブロックからなる可変長のバッファの前記ブロックの番号を保持できるBtreeと、複数のサイズからなり、解放されたバッファのリストを持つフリーリストとを用い、
    データの獲得要求で指示されるブロック番号で表される領域を、Btree上に検索し、
    Btree上に前記獲得要求データの領域を含んだバッファがある場合は、そのバッファを使用し、
    Btree上に前記獲得要求データの領域を含んだバッファがない場合は、前記獲得要求データの領域のサイズ以上であって、前記獲得要求データの領域のサイズに最も近いサイズのバッファをフリーリストからはずして確保し、Btreeに挿入して、このバッファを使用し、
    Btree上の1つのバッファ内に前記獲得要求データの領域の一部がある場合は、そのバッファをBtreeから削除して、フリーリストにつないで解放し、前記獲得要求データの領域のサイズに合うバッファをフリーリストからはずして確保し、Btreeに挿入して、このバッファを使用し、
    前記獲得要求データの領域がBtree上の複数のバッファ内にある場合は、その全てのバッファをBtreeから削除して、フリーリストにつないで解放し、前記獲得要求データの領域のサイズに合うバッファをフリーリストからはずして確保し、Btreeに挿入して、このバッファを使用することを特徴とする交換機ファイルシステムにおけるバッファキャッシュ方法。
  2. 前記バッファの挿入および削除により、Btreeにアンバランスが生じた場合に、所定のタイミングでBtreeのバランスを修正することを特徴とする請求項1記載の交換機ファイルシステムにおけるバッファキャッシュ方法。
  3. 前記Btreeのバランスの修正は、アンバランスが生じた直後に、またはCPUの空き時間に行うことを特徴とする請求項2記載の交換機ファイルシステムにおけるバッファキャッシュ方法。
  4. 交換機ファイルシステム上へのアクセスに可変長のバッファを用いるバッファキャッシュ装置において、
    データを獲得する要求を受付ける要求受付手段と、
    各ノードが、連続した複数のブロックからなる可変長のバッファの前記ブロックの番号を保持できるBtreeと、複数のサイズからなり、解放されたバッファのリストを持つフリーリストとを含むバッファキャッシュ手段と、
    データの獲得要求があると、データの獲得要求で指示されるブロック番号で表される領域を、Btree上に検索するBtree検索手段と、
    Btree上に前記獲得要求データの領域を含んだバッファがない場合は、フリーリストを検索し解放されたバッファを検索する解放バッファ検索手段と、
    フリーリストの検索の際に、前記獲得要求データの領域のサイズ以上であって、前記獲得要求データの領域のサイズに最も近いサイズのバッファを検索する最適バッファ検索手段と、
    Btree上の1つのバッファ内に前記獲得要求データの領域の一部がある場合は、そのバッファをBtreeから削除して、フリーリストにつないで解放し、前記獲得要求データの領域のサイズに合うバッファをフリーリストからはずして確保し、Btreeに挿入し、前記獲得要求データの領域がBtree上の複数のバッファ内にある場合は、その全てのバッファをBtreeから削除して、フリーリストにつないで解放し、前記獲得要求データの領域のサイズに合うバッファをフリーリストからはずして確保し、Btreeに挿入するバッファ挿入削除手段と、
    を備えることを特徴とする交換機ファイルシステムにおけるバッファキャッシュ装置。
  5. 前記バッファの挿入および削除により、Btreeにアンバランスが生じた場合に、Btreeのバランスを整えるBtree修正手段をさらに備えることを特徴とする請求項4記載の交換機ファイルシステムにおけるバッファキャッシュ装置。
  6. 交換機のファイルシステム上へのアクセスに可変長のバッファを用いるバッファキャッシュ方法を実行するプログラムを記録した記憶媒体において、
    a)データを獲得する要求を受付けるステップと、
    b)データの獲得要求で指示されるブロック番号で表される領域が、Btree上のバッファに存在するか否かを判断するステップと、
    c)前記ステップbにおいて存在する場合には、前記獲得要求データの領域の一部がBtree上の1つのバッファ内に存在するか否かを判断するステップと、
    d)前記ステップcにおいて存在しない場合には、前記獲得要求データの領域がBtree上の複数のバッファ内に存在するか否かを判断するステップと、
    e)前記ステップdにおいて存在しない場合には、前記獲得要求データの領域がBtreeのバッファにそのまま存在すると判断して、そのバッファを使用するステップと、
    f)前記ステップbにおいて存在しないと判断された場合には、前記獲得要求データの領域のサイズ以上であって、前記獲得要求データの領域のサイズに最も近いサイズの解放されたバッファをフリーリストから検索し、検索されたバッファを使用するステップと、
    g)前記ステップcにおいて1つのバッファ内に存在すると判断された場合には、そのバッファをBtreeから削除して解放し、前記獲得要求データの領域のサイズに合うバッファをフリーリストからはずして確保し、Btreeに挿入し、このバッファを使用するステップと、
    h)前記ステップdにおいて複数のバッファ内に存在すると判断された場合には、それらのバッファをBtreeから削除して解放し、前記獲得要求データの領域のサイズに合うバッファをフリーリストからはずして確保し、Btreeに挿入し、このバッファを使用するステップと、
    を含むプログラムを記録した記憶媒体。
  7. 前記バッファの挿入および削除により、Btreeにアンバランスが生じた場合に、Btreeのバランスを整えるステップをさらに含むことを特徴とする請求項6に記載のプログラムを記録した記憶媒体。
JP05795999A 1999-03-05 1999-03-05 交換機ファイルシステムにおけるバッファキャッシュ方法および装置 Expired - Fee Related JP3543661B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP05795999A JP3543661B2 (ja) 1999-03-05 1999-03-05 交換機ファイルシステムにおけるバッファキャッシュ方法および装置
US09/516,167 US6549982B1 (en) 1999-03-05 2000-02-29 Buffer caching method and apparatus for the same in which buffer with suitable size is used
CNB001030329A CN1208725C (zh) 1999-03-05 2000-03-01 缓冲器高速缓冲方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP05795999A JP3543661B2 (ja) 1999-03-05 1999-03-05 交換機ファイルシステムにおけるバッファキャッシュ方法および装置

Publications (2)

Publication Number Publication Date
JP2000259468A JP2000259468A (ja) 2000-09-22
JP3543661B2 true JP3543661B2 (ja) 2004-07-14

Family

ID=13070568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP05795999A Expired - Fee Related JP3543661B2 (ja) 1999-03-05 1999-03-05 交換機ファイルシステムにおけるバッファキャッシュ方法および装置

Country Status (3)

Country Link
US (1) US6549982B1 (ja)
JP (1) JP3543661B2 (ja)
CN (1) CN1208725C (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100528967B1 (ko) * 2002-12-18 2005-11-15 한국전자통신연구원 가변 길이의 패킷 저장을 위한 메모리 관리 장치 및 방법
JP4291664B2 (ja) * 2003-10-14 2009-07-08 株式会社日立製作所 通信バッファ予約機能を備えるストレージ装置およびシステム
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US8032675B2 (en) * 2005-12-28 2011-10-04 Intel Corporation Dynamic memory buffer allocation method and system
KR101300657B1 (ko) * 2007-07-06 2013-08-27 삼성전자주식회사 비휘발성 메모리 및 버퍼 메모리를 포함하는 메모리 시스템및 그것의 데이터 읽기 방법
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
JP6383289B2 (ja) * 2014-12-29 2018-08-29 三菱電機インフォメーションネットワーク株式会社 入力ファイル処理装置、入力ファイル処理プログラム及び入力ファイル処理方法
KR102610846B1 (ko) * 2016-05-13 2023-12-07 한국전자통신연구원 고속 분산 저장 장치 및 방법
JP6936592B2 (ja) * 2017-03-03 2021-09-15 キヤノン株式会社 演算処理装置およびその制御方法
GB2595265A (en) * 2020-05-20 2021-11-24 Imagination Tech Ltd Memory for storing data blocks

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0239343A (ja) 1988-07-29 1990-02-08 Fujitsu Ltd 送受信バッファリング制御方式
JPH05158792A (ja) 1991-12-03 1993-06-25 Oki Electric Ind Co Ltd キャッシュバッファの一括読込み方式
JPH07210365A (ja) 1994-01-24 1995-08-11 Ricoh Co Ltd 画像形成装置
JPH07311710A (ja) 1994-05-17 1995-11-28 Mitsubishi Electric Corp コンピュータのバッファキャッシュ管理方法
US5758149A (en) * 1995-03-17 1998-05-26 Unisys Corporation System for optimally processing a transaction and a query to the same database concurrently
JPH1069429A (ja) 1996-04-09 1998-03-10 Fujitsu Ltd バッファ割当て管理装置およびバッファ割当て管理プログラム
US5778430A (en) 1996-04-19 1998-07-07 Eccs, Inc. Method and apparatus for computer disk cache management

Also Published As

Publication number Publication date
CN1266229A (zh) 2000-09-13
JP2000259468A (ja) 2000-09-22
US6549982B1 (en) 2003-04-15
CN1208725C (zh) 2005-06-29

Similar Documents

Publication Publication Date Title
JP3543661B2 (ja) 交換機ファイルシステムにおけるバッファキャッシュ方法および装置
JP3612339B2 (ja) データ処理方法および装置
GB2383859A (en) Memory controller managing a file allocation table for a memory card
US20020178176A1 (en) File prefetch contorol method for computer system
CN113138945B (zh) 一种数据缓存方法、装置、设备及介质
KR20010099761A (ko) 기록 재생 장치
JP2586219B2 (ja) 高速媒体優先解放型排他方式
US20050076176A1 (en) Circulating recording apparatus, method and program
JP3440032B2 (ja) メモリ制御装置,ファクシミリ装置および画像形成装置
JP3882461B2 (ja) 記憶装置システム及びそのバックアップ取得方法
JP2010049303A (ja) メモリコントローラ、不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム
JP3477056B2 (ja) データ転送装置
US20060047901A1 (en) Access control method, disk control unit and storage apparatus
JP2001118365A (ja) 記憶階層管理システム、記憶階層管理方法及び記憶階層管理プログラムを記録した記録媒体
JP2856003B2 (ja) 非同期データ入出力方式
JP2546528B2 (ja) 固定長セクタ方式ディスクの可変長ブロック格納システ ム
JP3221409B2 (ja) キャッシュ制御システム及びその読出し方法並びにその制御プログラムを記録した記録媒体
JP2005166073A (ja) 記憶装置の制御装置および制御方法
JP2912657B2 (ja) ファイルアクセス処理装置
JP2817911B2 (ja) キー付ファイルのアクセス制御方式
JPH03177946A (ja) 磁気ディスクバッファキャッシュ制御方式
JPH0712189B2 (ja) 詳細課金情報の記録方法
JPH04205418A (ja) 記憶装置およびアンダーフロー処理方法
JP4059469B2 (ja) データ管理制御装置、同制御方法及び、同制御処理を実行するためのプログラムを記録した記録媒体
JP2004227445A (ja) 記憶装置サブシステムにおけるコピー方法および記憶装置サブシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20031224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040220

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040316

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040329

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080416

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090416

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100416

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110416

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees