JPH05324435A - ディレクトリ管理処理方法および処理装置 - Google Patents

ディレクトリ管理処理方法および処理装置

Info

Publication number
JPH05324435A
JPH05324435A JP4125225A JP12522592A JPH05324435A JP H05324435 A JPH05324435 A JP H05324435A JP 4125225 A JP4125225 A JP 4125225A JP 12522592 A JP12522592 A JP 12522592A JP H05324435 A JPH05324435 A JP H05324435A
Authority
JP
Japan
Prior art keywords
directory
resident
buffer
update
memory
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.)
Withdrawn
Application number
JP4125225A
Other languages
English (en)
Inventor
Nobuhito Fukazawa
信人 深沢
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP4125225A priority Critical patent/JPH05324435A/ja
Publication of JPH05324435A publication Critical patent/JPH05324435A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【目的】ファイルのディレクトリ管理処理方法および処
理装置に関し,ディレクトリアクセスに関する高速化を
実現し,またアクセス競合による待ち時間を減らすこと
により,システム全体のレスポンスを向上させることを
目的とする。 【構成】所定のディレクトリ17の内容をメモリ11上に常
駐化し,ディレクトリ管理処理手段12により,各ディレ
クトリ17をシステム内で一意に識別する識別情報によっ
て,メモリ11上に常駐化したディレクトリ17の内容を参
照または更新する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は,システム内で使うディ
レクトリを柔軟な方法を用いてメモリ上に展開するとと
もに,要求ごとの処理の競合を抑えたディレクトリ管理
処理方法および処理装置に関する。
【0002】
【従来の技術】図17は,データ処理システムにおいて
一般的に用いられているディレクトリの例を示す。
【0003】一般にデータ処理システムでは,ボリュー
ム上のファイルを階層化されたディレクトリによって管
理している。ディレクトリは,配下のディレクトリまた
はファイルがどの場所にあるかなどを示す管理情報を保
持するものである。
【0004】ディレクトリをアクセスする際には,ディ
レクトリのオープン/アクセス/クローズの一連の処理
を行う。例外として,カレントワーキングディレクトリ
のように,プロセスに固有のディレクトリをオープンし
たままにして,ディレクトリの検索性能を向上させるよ
うにした機能がある。しかし,基本的にはアクセスの度
にオープンからクローズまでの処理を繰り返す処理を行
っている。
【0005】したがって,例えば“/sys/c/in
clude/stdio.h”というようなパスで表さ
れるファイル“stdio.h”をたどるためには, / :ルートディレクトリのオープン/
アクセス/クローズ sys :一般ディレクトリのオープン/ア
クセス/クローズ c :一般ディレクトリのオープン/ア
クセス/クローズ include:一般ディレクトリのオープン/ア
クセス/クローズ を繰り返すことでstdio.hに到達している。
【0006】
【発明が解決しようとする課題】特に使用頻度の高いデ
ィレクトリについては,アクセスの度にオープン〜クロ
ーズを行うことは,システム性能を著しく低下させる要
因となる。しかも,ディレクトリの使い方として最も多
いのは,ディレクトリツリーを検索して目的とするファ
イルに到達するいわゆるファイルへのパスをたどる処理
である。
【0007】この処理においては,従来,カレントワー
キングディレクトリ(cd)設定コマンドなどのユーテ
ィリティによって,カレントワーキングディレクトリを
設定することにより,そのディレクトリをオープンした
ままにして,そのディレクトリ配下にあるファイルの検
索処理についての性能向上を図ることが行われている。
しかし,使いたいファイルが一つのディレクトリ(カレ
ントワーキングディレクトリとして設定できるのは一つ
のディレクトリに限定されている)直下にあることは非
常に稀である。
【0008】例えば,Cソースプログラムのコンパイル
を行う場合であって,図17に示すようなディレクトリ
ツリーを持つ場合を考える。Cソースプログラムを開発
している場合には,の部分にカレントワーキングディ
レクトリを設定して作業するのが通常の方法である。し
かし,そのCソースプログラムをコンパイルするために
は,Cコンパイラの格納されているファイルをルートデ
ィレクトリからのディレクトリを経由してたどらなけ
ればならない。また,そのコンパイルで必要なヘッダフ
ァイルを取り込むために,さらに別ののディレクトリ
を必要とする。
【0009】このように,プログラムの開発などの何ら
かの作業を行うためには,一時点でいろいろなディレク
トリを必要とし,このことはパーソナルユース以外のシ
ステムにおいては極当たり前となっているのが実情であ
る。
【0010】また通常の場合,ディレクトリアクセス中
に発生するディレクトリのシリアライズ処理の期間は参
照処理であっても更新処理であっても区別していない。
そのために,参照処理同士が同時に動作できる状況であ
っても,参照処理はシリアルにしか動作しないので,タ
イムスライスによるCPUの多重使用を行っているシス
テムでは,実際には動作可能であるにもかかわらず,後
から要求した参照処理が待たされてしまうことが発生す
る。
【0011】これらのことから,ディレクトリアクセス
の高速化およびディレクトリ参照処理の多重動作化がシ
ステム全体のレスポンスを保証する上で重要な問題とな
っており,大幅な改善が必要である。
【0012】本発明は上記問題点の解決を図り,ディレ
クトリアクセスに関する高速化を実現し,またアクセス
競合による待ち時間を減らすことにより,システム全体
のレスポンスを向上させることを目的としている。
【0013】
【課題を解決するための手段】図1は,本発明の原理説
明図である。図1において,10は命令をフェッチして
実行するCPU,11は命令やデータが格納されるメモ
リ,12はディレクトリ管理処理手段,13はディレク
トリの検索に使用されるハッシュテーブル,14はディ
レクトリ管理表,15は常駐化バッファ,16は磁気デ
ィスク装置などの外部記憶装置,17はディレクトリ,
18はファイルを表す。
【0014】本発明では,メモリ11上に常駐化バッフ
ァ15を設け,指定されたディレクトリ17またはシス
テムの適当な基準によって選択されたディレクトリ17
の内容を常駐化バッファ15に展開するようにしてい
る。
【0015】ディレクトリ管理表14は,常駐化対象の
ディレクトリ17ごとにその内容が展開された常駐化バ
ッファ15へのポインタ情報を含む管理情報を持つ。ハ
ッシュテーブル13は,ディレクトリ管理表14に対す
るアクセスのために,ディレクトリ17をシステム内で
一意に識別する識別情報によってハッシングされた位置
に,ディレクトリ管理表14に対するポインタ情報を持
つテーブルである。
【0016】ディレクトリ管理処理手段12は,メモリ
11上の常駐化バッファ15に展開されたディレクトリ
17の内容を,ハッシュテーブル13およびディレクト
リ管理表14を用いて参照または更新する処理手段であ
る。
【0017】本発明は,常駐化対象のディレクトリ17
の内容を,メモリ11上の常駐化バッファ15に常駐化
し,各ディレクトリ17をシステム内で一意に識別する
識別情報によって,常駐化バッファ15にアクセスし,
必要なディレクトリ17の内容を参照または更新するよ
うにしたものである。
【0018】各ディレクトリ17をシステム内で一意に
識別する識別情報としては,ディレクトリ17が存在す
る外部記憶装置16上のボリューム名とボリューム内の
通し番号とからなる実体通番を用い,この実体通番をハ
ッシングしたハッシュテーブル13によって,ディレク
トリ管理表14のアドレスを得て,常駐化バッファ15
内のディレクトリ17の内容にアクセスする。
【0019】また,ディレクトリ17に対する参照と更
新の競合による処理の待ち時間を短縮するために,メモ
リ11に常駐化したディレクトリ17を更新する場合に
は,ディレクトリ17の内容を常駐化バッファ15から
他の更新用のバッファ(図示省略)に複写し,その更新
用のバッファについてデータ更新処理および外部記憶装
置16への書き出しを行う。その後に,更新用のバッフ
ァの内容を,常駐化バッファ15に反映する処理を行
う。
【0020】そして,更新用のバッファに複写する処理
と,常駐化バッファ15に反映する処理についてのみ,
ディレクトリ更新処理とディレクトリ参照処理との間の
処理のシリアライズ化を実施する。
【0021】
【作用】本発明によれば,システム内部の特定のディレ
クトリの内容をメモリ11内に常駐化することにより,
外部記憶装置16への入出力を頻繁に実行することな
く,ディレクトリ17を参照できるようになる。特に,
ディレクトリをシステム内で一意に識別する実体通番
(ボリューム名とそのボリューム内の通し番号からなる
識別情報)をハッシュしたハッシュテーブル13によ
り,ディレクトリへのアクセス環境が得られるようにし
ているので,効率的にディレクトリを検索することが可
能である。
【0022】また,ディレクトリの参照処理と更新処理
との排他制御期間を,必要最小限にしているので,両者
の同時実行性が向上し,待ち時間を減少させることが可
能である。
【0023】
【実施例】図2は本発明の実施例の処理構成図,図3は
本発明の実施例に係るメモリ上のディレクトリアクセス
環境説明図,図4は本発明の実施例に係る実体通番の構
成説明図,図5は本発明の実施例に係る実行体と更新用
バッファの結合説明図,図6は本発明の実施例に係るデ
ィレクトリのページ(バッファ)の構造説明図,図7は
本発明の実施例に係るディレクトリ参照処理説明図,図
8は本発明の実施例に係るディレクトリ更新処理説明
図,図9は本発明の実施例に係るロバストアクセス処理
に関する説明図,図10は本発明の実施例に係るロバス
トアクセス結果の再常駐化処理説明図,図11は本発明
の実施例に係る常駐化バッファの状態説明図である。
【0024】ディレクトリ管理処理手段12の処理構成
は,例えば図2に示すようになっている。オープン/ク
ローズ機構部20は,ディレクトリ17へのアクセスの
ためのオープン処理およびクローズ処理を実行する部分
である。本発明では,オープン/クローズ機構部20の
延長で,常駐化機構部21が呼び出され,必要な特定の
ディレクトリ17についてのメモリ常駐化が行われるよ
うになっている。
【0025】更新制御部22および参照制御部23は,
ディレクトリ17に対する更新処理の制御および参照処
理の制御を行う部分である。ロバストアクセス機構部2
4は,更新処理においてディレクトリの構造が変化する
ような場合,外部記憶装置16に矛盾のないデータを書
き出すための処理を行う部分である。
【0026】バッファリフレッシュ機構部25は,更新
したディレクトリ17の内容をメモリ上に反映するため
のバッファのリフレッシュ処理を行う部分である。実行
体用バッファ管理部26は,ディレクトリ17へのアク
セスが必要な実行体(例えば,プロセス)に対して更新
処理のために割り当てるバッファを管理する部分であ
る。シリアライズ制御機構部27は,ディレクトリ17
に対して,複数の実行体からアクセス要求があった場
合,更新処理と更新処理間または更新処理と参照処理間
の排他制御を行う部分である。
【0027】I/O機構部28は,外部記憶装置16内
のディレクトリ17に対して入出力命令によって読み書
きを行う部分である。これらの各機構部による本発明に
関係する部分の具体的な処理内容については後述する。
【0028】メモリ上におけるディレクトリのアクセス
環境は,例えば図3に示すようになっている。本実施例
の場合,ディレクトリを常駐化対象とするかどうかは,
ディレクトリの属性として定義している。ディレクトリ
を作成しただけでは常駐化の対象とはしない。システム
が提供するユーティリティを使うことによって,ディレ
クトリに常駐化対象とする属性を与えることができる。
【0029】また,常駐化対象となったディレクトリで
あっても,常駐化処理中に何らかの異常で常駐化できな
いディレクトリについては,従来どおりアクセスの度に
オープン/アクセス/クローズ処理を行う。すなわち,
常駐化しないディレクトリとして扱う。これは,常駐化
属性が絶対的なものではないことを意味する。すなわ
ち,メモリ等の都合で常駐化ができない場合には,常駐
化を強制することはしないことを意味する。
【0030】メモリへの常駐化では,ディレクトリ管理
表14(14−1等も同様)とディレクトリ内のデータ
を保持するための常駐化バッファ15(15−1等も同
様)をメモリに置く。ディレクトリ内のデータがオーバ
フローページを持つとき,常駐化バッファ拡張部15’
を設け,常駐化バッファ15からポイントして,そこに
オーバフローページのデータを格納する。
【0031】ディレクトリには,システム内でユニーク
な識別子(id)として,図4に示すように,ボリュー
ム名とそのボリューム内の通し番号とからなる実体通番
が割り振られている。そこで,ディレクトリ管理空間内
では実体通番をハッシュすることによって,ディレクト
リのアクセス環境を容易に見つけることができるように
している。
【0032】ハッシュテーブル13は,そのためのテー
ブルで,実行通番に対して所定の関数を施した値によっ
て定まるエントリに,ディレクトリ管理表14のアドレ
スを保持するようになっている。ディレクトリ管理表1
4は,常駐化バッファ15およびロバストアクセス環境
31へのポインタの他に,使用中の利用者数すなわち当
該ディレクトリのオープン数,実体通番,参照/更新の
ためのロックid,更新のためのロックidなどの情報
を持つ。
【0033】特に,ルートディレクトリ(ルートdi
r)を管理するディレクトリ管理表14については,ハ
ッシュテーブル13を検索することなくアクセスするこ
とができるように,初期設定時にディレクトリ管理空間
の空間固有域30からもポイントしておく。
【0034】以上のようにディレクトリ管理空間が構成
されるので,システム内でオープンされている全てのデ
ィレクトリアクセス環境を探すことなく効率的にディレ
クトリを検索することができる。
【0035】図3に示すようなディレクトリのメモリへ
の常駐化は,次のように行う。ディレクトリの実体通番
でハッシュテーブル13を検索する。この検索によっ
て,対象となるディレクトリがメモリに常駐化されてい
ないことが判明すると,ディレクトリ管理表14を用意
して,ハッシュテーブル13に連結する。このとき,デ
ィレクトリのロバストアクセスのためのアクセス環境3
1を構築するとともに,ディレクトリ内のデータをメモ
リ上に置くためにディレクトリ内のデータをページ単位
にメモリに読み込む。
【0036】なお,ディレクトリ内のデータの読み込み
途中でエラーが発生した場合,それらの全てのエラーは
無視する。それは常駐化できなかった原因が一過性のも
のである可能性が高いためである。したがって,常駐化
できないからといってすぐにエラーとすることはしない
で常駐化しないディレクトリとして扱い,後に従来方式
と同様にディスクアクセスを行うことで対処する。ただ
し,ディスクアクセス時にさらにエラーとなった場合に
は,必要に応じて従来と同様な障害処理を行う。
【0037】ディレクトリアクセスのほとんどは,参照
処理が占めている。しかし,時々ディレクトリに対しフ
ァイルを作ったり消したりすることも発生する。この両
者の同時実行性を向上させるために,参照処理と更新処
理を一瞬の間だけしか排他制御をしないようにする。
【0038】ルートディレクトリは別であるが,一般デ
ィレクトリの更新処理では,通常の場合,ディレクトリ
に対する「更新処理全体」をシリアライズした後,予め
実行体と結合しておいた更新処理専用のバッファに常駐
化バッファ15からページそのものを複写する。
【0039】図5は,その実行体と更新用バッファとの
結合方法を示しており,空間固有域30からポイントさ
れる実行体別バッファリスト50に,実行体を識別する
実行体idと更新用バッファ51へのポインタとを設定
することによって,実行体ごとの更新用バッファ51を
管理するにようにしている。
【0040】常駐化バッファ15から図5に示す更新用
バッファ51へ複写している間に動作する処理は,既に
更新系のシリアライズが済んでおり,参照処理しかあり
得ないので,通常,参照処理との間のシリアライズ処理
は必要ない。
【0041】参照処理とのシリアライズが必要になるの
は,I/Oエラー等によって常駐化バッファ15が無効
化されており,そのバッファをリフレッシュするような
場合である。そのような場合にだけ,参照処理との一時
的なシリアライズが必要となる。
【0042】更新用バッファ51への複写が完了したな
らば,参照処理とは独立してバッファの更新処理を完結
させ,外部記憶装置16に書き込む。次に,参照処理用
のバッファ,すなわち常駐化バッファ15をリフレッシ
ュする必要があるので,ディレクトリ管理表14からつ
ながる参照用の常駐化バッファ15をアクセスするため
の「参照/更新」のシリアライズを行い,更新済の更新
用バッファ51(実行体と結合したもの)から常駐化バ
ッファ15にデータを複写する。
【0043】複写が完了したならば,「参照/更新」の
シリアライズを解除し,参照処理が動作できるようにす
る(このバッファのリフレッシュ化の期間は参照処理も
動作できない)。
【0044】更新処理の最後に「更新処理全体」のシリ
アライズを解除して,更新処理は完了となる。ハッシュ
構造固有の処理が必要な場合,ロバストアクセスが必要
となるので(外部記憶装置16上に矛盾のないデータを
書き出す必要があるため),既存のロバストアクセス方
式によって更新処理を行う。
【0045】参照処理では,各種の設定を完了して常駐
化バッファ15を触るだけの状態に達したならば,「参
照/更新」のシリアライズを行って,常駐化バッファ1
5内のデータを検索し,該当するデータを作業域に複写
する。複写が完了したならば「参照/更新」のシリアラ
イズを解除して完了とする。
【0046】ルートディレクトリの検索処理は,一般デ
ィレクトリと同じ方式でできるが,更新処理について
は,ハッシュ構造が一般ディレクトリよりも少し大きい
ため,ここで説明した方式では実現できない。そのた
め,ルートディレクトリに対するファイルの創成と削除
の各処理については,既存のロバストアクセス方式によ
って行う。
【0047】もし,外部記憶装置16の記憶媒体である
ディスクとのI/O処理中に異常を検出した場合,常駐
化バッファ15の一部を利用した管理情報にバッファ不
当表示(マーク)を付けると同時に,ディレクトリ管理
表14に常駐化中断表示を付けておく。常駐化中断表示
は,ディレクトリのクローズ処理時にメモリ常駐化を解
除する標識となり,この表示が付いたものは,常駐化バ
ッファ15およびディレクトリ管理表14が解放され
る。
【0048】なお,図3に示すディレクトリ管理表14
は,ディレクトリに対する要求間で共用することができ
る。以下,本発明の実施例をさらに詳細に説明する。
【0049】〔常駐化対象ディレクトリの選択〕本実施
例において,常駐化対象ディレクトリの選択は,ディレ
クトリのオープンの時に,システムのルートディレクト
リであるかどうか,または常駐化属性を持つディレクト
リであるかどうかによって行う。常駐化属性を持つディ
レクトリであるかどうかは,例えば事前にユーティリテ
ィ等によって与えた属性によって判別することができ
る。ルートディレクトリまたは常駐化属性を持つディレ
クトリである場合,そのディレクトリの内容をメモリに
常駐化する。
【0050】メモリに常駐する場合,バッファ域の獲得
と入出力動作を行うため,ディレクトリをオープンする
ときの環境によってはメモリへの常駐化ができなくなる
場合がある。その場合には,常駐化の失敗を直ちにオー
プンエラーとはしないで,実際にそのディレクトリをア
クセスしてエラーを検出した際に,要求元へエラーを通
知する。そのため,オープン処理では,常駐化処理中に
エラーを検出した場合には,単に常駐化の対象から外す
だけにする。
【0051】〔常駐化ディレクトリの検索〕メモリ上に
常駐化したディレクトリは,図3に示すようにハッシュ
テーブル13からつながるディレクトリ管理表14によ
って管理される。このハッシュ値は,ファイル(ディレ
クトリや通常ファイル)に付加されている図4に示すよ
うな実体通番をもとに算出される。
【0052】実体通番は,ボリューム上にあるボリュー
ムラベルに相当するブロックで管理されており,ファイ
ルを作成するたびに1ずつカウントアップされるもの
で,同じ番号が割り当てられることがないように管理さ
れている。
【0053】この実体通番に適当な関数を施すことによ
り,実体通番をハッシュテーブル13のエントリの1つ
に対応させ,該当するハッシュテーブルエントリの位置
を算出できるようにする。最も簡単な関数として,例え
ばハッシュテーブル13のエントリ数を素数とし,実体
通番をエントリ数で割ったときの余りを,その実体通番
の該当するエントリの番号とするような関数を選択する
ことができる。複数のディレクトリが,1つのエントリ
に対応する場合には,図3に示すディレクトリ管理表1
4−1,ディレクトリ管理表14−2のように,ディレ
クトリ管理表を1つのエントリから連鎖させる。
【0054】このように管理されるので,常駐化ディレ
クトリの検索では,実体通番をもとに,ハッシュテーブ
ルエントリを検索して,該当する実体通番を持つディレ
クトリ管理表14を探し出す。この検索で該当するディ
レクトリ管理表14が見つからなければ,そのディレク
トリはまだオープンされていないので,新たにオープン
処理を実行する。オープン済みである場合,ディレクト
リ管理表14にあるオープンカウンタに1加えることに
より全体の使用者数を更新する。
【0055】〔ディレクトリ本体のメモリ常駐化〕ディ
レクトリをオープンする際に,それが常駐化対象ディレ
クトリであった場合,常駐化バッファ15の獲得とデー
タの読出しを行う。ディレクトリのページの構造,すな
わちディレクトリの入出力単位となるデータの構造は,
図6に示すようになっている。
【0056】図6に示すEPMは,ページの前後に設け
られ,同じ時刻の値が設定される各8バイトの領域であ
る。ページを外部記憶装置16のディスク記憶媒体から
読み出したときに,前と後ろのEPMが一致しているか
どうかをチェックするために用いる。前と後ろのEPM
が一致しない場合,書込み時または読出し時に何らかの
エラーが発生していることになるので,そのデータは使
用できない。
【0057】図6に示すSLTは,データ域内のレコー
ドの位置を管理する情報を持つ。また,KSEは,デー
タ域のレコードをキー順に並べるための管理情報を持
つ。PCBは,ページ内のSLT,KSE,データ域の
管理のための情報を持つ。
【0058】常駐化バッファ15におけるデータの構造
は,このページの構造をそのまま利用した形の構造とす
る。ただし,図11により後述するように,EPM等の
一部の領域を,データがオーバフローした場合のポイン
タの管理や,エラー発生時にバッファ不当表示を行うた
めの管理情報格納域として使用する。
【0059】〔常駐化ディレクトリの参照〕常駐化ディ
レクトリの参照処理では,図7に示すように,ディレク
トリ管理表14からポイントされる常駐化バッファ15
のデータ域の内容を,レコード読込みエリア70に転送
する処理を行う。この転送の間だけ,更新処理との間の
シリアライズ化を実施すればよく,必要最低限の排他制
御のためのロック獲得処理によって,参照処理の多重度
を向上させるようにしている。
【0060】〔常駐化ディレクトリの更新〕常駐化ディ
レクトリの更新は,図8(A),(B)に示すように行
う。更新処理同士はロックを獲得することによって,同
時に動かないようにシリアライズするが,参照処理とは
常駐化バッファ15の更新のタイミングだけをシリアラ
イズすることによって,参照処理を停滞させることがな
いようにする。
【0061】 更新処理では,まず更新用のロックを
獲得した後,ディレクトリ管理表14からポイントされ
る常駐化バッファ15のデータを,実行体別バッファリ
スト50に結合した更新用バッファ51に転送する。
【0062】 次に,その更新用バッファ51内で,
更新データ80によるディレクトリデータの更新を行
う。 データを更新したならば,その更新結果を外部記憶
装置16のディスク記憶媒体に書き出す。
【0063】 最後に,更新用バッファ51における
更新結果を,参照用の常駐化バッファ15に転送し,メ
モリ上のディレクトリに最新の状態を反映する。なお,
このような更新処理では,ハッシュ構造を維持するため
にオーバーフロー処理と縮退処理を行う必要が生じるこ
とがある。このときには,メモリ上だけではディスク上
の構造を保つことができないため,ロバストアクセス機
構を使用してディスク上の状態を更新し,その後にメモ
リ上に再常駐化する方式を採っている。
【0064】〔ハッシュ型ディレクトリ固有のアクセ
ス〕メモリに常駐化した場合,プライム部とオーバーフ
ロー部の区別はつくが,ディスク記憶媒体に書き出す場
合には,各ページ間の整合性を考慮して,I/Oが中断
しても論理的なページ間の関連を保つ必要がある。その
ために,ディレクトリアクセス機構ではロバストアクセ
スを行う機能を用意しており,オーバーフローが発生す
る可能性がある場合とオーバーフローの逆である縮退処
理を行う必要がある場合に,図9および図10に示すよ
うなロバストアクセス固有の処理を行う。すなわち,以
下の〜の処理を行う。
【0065】 図9の(A)に示すように,ロバスト
アクセス環境31を使い,ロバストアクセス環境31か
らポイントされるロバストアクセス用バッファ90に,
ディスク記憶媒体からのディレクトリ17のページ読込
みを行う。
【0066】 ロバストアクセス用バッファ90にお
いて,ページの更新を行う。 ロバストアクセス用バッファ90における更新が終
了したならば,次に,図9の(B)に示すように,外部
記憶装置16のディスク記憶媒体に,そのページの書出
しを行う。
【0067】このようにして更新したロバストアクセス
結果のメモリへの再常駐化は,図10の(A),(B)
に示すように行う。すなわち,以下の〜の処理を行
う。 メモリ上に新規バッファ100を獲得し,外部記憶
装置16から,更新結果が反映されたディレクトリ17
のページを読み出す。
【0068】 次に,ディレクトリ管理表14から常
駐化バッファ15へのポインタを,新規バッファ100
へのポインタに切り替え,新規バッファ100を新しい
参照用のバッファとする。
【0069】 元の常駐化バッファ15の領域を解放
する。 〔ハッシュ型ディレクトリのメモリ管理〕常駐化バッフ
ァ15におけるデータの構造として,図6に示すような
ディレクトリの構造を利用する。ただし,ページ内の一
貫性を保証するためのEPM情報域は,read動作の
ときにチェックした後には不要となる。そこで,このペ
ージの先頭にある8バイトのEPM情報域のうち,前の
4バイトをバッファ不当表示用に使用し,次の4バイト
をバッファへのポインタ用に使用する。
【0070】ディレクトリの内容を1つの常駐化バッフ
ァ15に格納できる場合には,図11の(A)に示すよ
うに,常駐化バッファ15の4バイト目にポインタ終了
表示(eofptr)を設定する。ページが複数存在す
る場合には,図11の(B)に示すように,常駐化バッ
ファ15の4バイト目に常駐化バッファ拡張部15’へ
のポインタを設定し,バッファを連結する。
【0071】また,データの有効/無効については,常
駐化バッファ15の先頭の4バイト(元のEPM情報域
の前4バイト)またはその一部を利用して管理する。こ
のデータの無効を示すバッファ不当表示は,先頭の常駐
化バッファ15にだけ設定すればよく,常駐化バッファ
拡張部15’には不要である。
【0072】なお,常駐化ディレクトリの内容を外部記
憶装置16に書き出す場合には,前述のように,実行体
と結合したバッファに複写してから,規定の情報を設定
し,I/O動作を開始するので,EPM情報域を常駐化
バッファ15上で別の意味に利用しても,何ら差支えな
い。
【0073】〔ディレクトリ更新時のI/Oエラーリカ
バリ〕常駐化バッファ15にバッファ不当表示がなされ
るのは,ディレクトリの常駐化処理でI/Oエラーなど
があった場合である。I/Oエラーを検出した場合に
は,常駐化バッファ15にバッファ不当表示を設定する
とともに,ディレクトリ管理表14にも,I/Oエラー
情報を設定する。そして,ディレクトリのクローズ時に
I/Oエラー情報をチェックし,I/Oエラー情報が設
定されていれば常駐化を解除する。
【0074】I/Oエラーが検出された直後には,常駐
化バッファ15の状態は,例えば図11の(C)に示す
ようになる。その後のディレクトリの再常駐化処理で
は,図11の(D)に示すように,新しいバッファ15
a,15a’に再読込みを行い,ディレクトリ管理表1
4からのポインタを新しいバッファ15aに変更する。
【0075】I/Oエラーが検出される契機として,ロ
バストアクセス時とその後の再常駐化時の2カ所があ
る。ロバストアクセスの場合,ディスク記憶媒体上の状
態とメモリ上の状態が異なる可能性があり,再常駐化の
際のエラーについては完全にディスク記憶媒体との間の
状態は異なる。そのため,I/Oエラーを検出した場合
には,常駐化バッファ15のバッファ不当表示と同じ管
理領域にバッファ無効化表示を立てておく。
【0076】この表示は,後に参照処理か更新処理にお
いて参照/更新ロックを獲得してバッファを参照すると
きにチェックし,無効化されている場合には再度常駐化
を試みる。この処理は,ディレクトリをオープンしてい
るすべての使用者がいなくなるまでか,ディスク記憶媒
体からデータが読み込めるようになるまで行われる。デ
ィレクトリをクローズする場合,I/Oエラーが発生し
た情報がディレクトリ管理表14に残っていたならば,
メモリの常駐化を解除する。
【0077】図12は,本発明の実施例に係る参照処理
における参照処理と更新処理のシリアライズに関する処
理フローチャートである。 (a) 参照処理の場合,まず参照/更新用ロックを獲得す
る。参照/更新用ロックは,参照処理と更新処理とを排
他的に動作させるためのロックで,既に更新処理が参照
/更新用ロックを獲得していれば,そのロックが解除さ
れるまで,参照処理を待たせるためのロックである。
【0078】(b) 参照/更新用ロックを獲得したなら
ば,バッファ状態が正常であるか不当であるかを,常駐
化バッファ15内のバッファ不当表示をチェックするこ
とにより判定する。正常であれば,次の処理(c) をスキ
ップする。
【0079】(c) バッファ不当表示が立っていれば,バ
ッファリフレッシュ処理により,ディレクトリの再常駐
化を行う。 (d) 図7に示すように,常駐化バッファ15からレコー
ド読込み領域70へのデータ転送を行う。
【0080】(e) 参照/更新用ロックを解放し,シリア
ライズ処理を終了する。 図13は,本発明の実施例に係る更新処理における参照
処理と更新処理のシリアライズに関する処理フローチャ
ートである。
【0081】(a) まず,更新用ロックを獲得する。この
更新用ロックは,複数の更新処理をシリアライズするた
めのロックで,参照処理は影響を受けない。すなわち,
更新処理と他の更新処理とは排他制御されるが,1つの
更新処理と1以上の参照処理とは同時走行が可能である
ロックである。
【0082】(b) 更新用ロックを獲得したならば,ロバ
ストアクセスが必要かどうかを判定する。すなわち,デ
ィレクトリの構造が変わるようなアクセスかどうかを判
定する。ロバストアクセスが必要な場合,図14に示す
ロバストアクセス更新処理を実行する。
【0083】(c) 普通のディレクトリの更新であって,
ロバストアクセスが必要でない場合,図8に示すような
実行体と結合した更新用バッファ51を獲得する。 (d) 次に,参照/更新用ロックを獲得する。この参照/
更新用ロックは,前述したように,参照処理との間でシ
リアライズを行うためのロックである。
【0084】(e) 参照/更新用ロックを獲得したなら
ば,バッファ状態が正常であるか不当であるかを,常駐
化バッファ15内のバッファ不当表示をチェックするこ
とにより判定する。正常であれば,処理(g) へ進む。
【0085】(f) バッファ不当表示が立っていれば,バ
ッファリフレッシュ処理により,ディレクトリの再常駐
化を行う。 (g) 図8の(A)に示すように,常駐化バッファ15か
ら更新用バッファ51へのデータ転送を行う。
【0086】(h) 参照/更新用ロックを解放し,参照処
理の同時走行を可能とする。 (i) 図8の(B)に示すように,更新用バッファ51に
おいて,データ更新処理を行う。
【0087】(j) 更新用バッファ51の内容を,外部記
憶装置16のディスクへ書き出す。 (k) 〜(l) このときにI/Oエラーが発生したならば,
クローズ時にバッファ領域を解放するために参照するエ
ラー情報を退避する。
【0088】(m) 再度,参照/更新用ロックを獲得す
る。 (n) 図8の(B)に示すように,更新用バッファ51か
ら常駐化バッファ15へのデータ転送(複写)を行う。
【0089】(o) 参照/更新用ロックを解放する。 (p) 更新用ロックを解放し,処理を終了する。 図14は,本発明の実施例に係るロバストアクセス更新
処理のフローチャートである。図13に示す処理(b) に
よって,ロバストアクセスが必要であると判定されたと
き,図14に示す(a) 〜(m) の処理を行う。
【0090】(a) ロバストアクセスによるディスク更新
を行う。 (b) 次に,図10に示すように新規バッファ100を獲
得する。 (c) ディスクから該当するディレクトリページの内容を
読み込む。
【0091】(d) この際にI/Oエラーが発生したなら
ば,処理(j) へ移る。 (e) 正常に読み込むことができたならば,オーバフロー
ページがあるかどうかを判定する。オーバフローページ
があったならば,処理(b) へ戻り,再度,新規バッファ
の獲得と,ディスクからの読込みを行う。このオーバフ
ローページは,メモリ上の常駐化ディレクトリにおいて
は,図3に示す常駐化バッファ拡張部15’に対応する
ものである。
【0092】(f) ディスクからの読込みが終了したなら
ば,参照/更新用ロックを獲得する。 (g) 図10の(B)に示すように,ディレクトリ管理表
14の参照用バッファポインタ(常駐化バッファ15へ
のポインタ)を更新する。
【0093】(h) 参照/更新用ロックを解放する。 (i) 旧参照用バッファ,すなわち元の常駐化バッファ1
5の領域を解放する。その後,図13に示す処理(p) へ
移り,更新用ロックを解放して処理を終了する。
【0094】(j) 処理(d) により,I/Oエラーが検出
されたならば,参照/更新用ロックを獲得する。 (k) 常駐化バッファ15(参照用バッファ)の先頭に,
バッファ不当表示を設定する。
【0095】(l) クローズ時に参照して領域を解放する
ためのエラー情報を退避する。 (m) 参照/更新用ロックを解放し,図13に示す処理
(p) へ移る。 図15は,本発明の実施例に係るディレクトリのオープ
ン処理の処理フローチャートである。ディレクトリのオ
ープン処理では,以下の処理(a) 〜(k) を実行する。
【0096】(a) ディレクトリのハッシュ値を,ディレ
クトリの実体通番をもとに算出する。 (b) ディレクトリがオープン済みであるかどうかを判定
する。オープン済みであれば,処理(j) へ進む。
【0097】(c) 新規オープンの場合,図3に示すロバ
ストアクセス環境31を構築する。 (d) オープンするディレクトリが常駐化対象ディレクト
リであるかどうかを判別する。常駐化対象でない場合,
処理(j) へ進む。
【0098】(e) 常駐化対象の場合,常駐化バッファ1
5を獲得する。 (f) 常駐化バッファ15にオープンするディレクトリの
ページをreadする。
【0099】(g) ディレクトリのreadでI/Oエラ
ーが発生したならば,処理(k) へ進む。 (h) ディレクトリページを正常に読み込むことができた
ならば,オーバフローページがあるかどうかを判定す
る。オーバフローページがある場合,処理(e) へ戻り,
オーバフローページについて同様に処理を繰り返す。
【0100】(i) 以上の処理が終了したならば,全バッ
ファをチェーンする。すなわち,ハッシュテーブル13
からディレクトリ管理表14,ディレクトリ管理表14
から常駐化バッファ15,さらに常駐化バッファ拡張部
15’がある場合には,常駐化バッファ15から常駐化
バッファ拡張部15’をチェーンする。これにより,デ
ィレクトリが常駐化されたことになる。
【0101】(j) ディレクトリ管理表14に設けられた
オープンカウントを+1して,オープン処理を終了す
る。 (k) 外部記憶装置16からのディレクトリのreadで
I/Oエラーが発生したならば,全バッファを解放し,
そのディレクトリを常駐化の対象外として扱う。すなわ
ち,直ちにはオープンエラーとしないで,処理(j) へ進
む。
【0102】図16は,本発明の実施例に係るディレク
トリのクローズ処理の処理フローチャートである。ディ
レクトリのクローズ処理では,以下の処理(a) 〜(g) を
実行する。 (a) まず,オープンカウントを−1する。
【0103】(b) オープンカウント数が0になり,その
ディレクトリの使用者がいなくなったならば,処理(c)
へ進む。使用者がいる場合,クローズ処理を終了する。 (c) クローズされたディレクトリは,常駐化したディレ
クトリであるかどうかを判定する。常駐化したディレク
トリでない場合,処理(g) へ進む。
【0104】(d) I/Oエラー情報があるかどうかを判
定する。I/Oエラー情報がある場合,処理(f) へ進
む。 (e) ディレクトリは削除されたかどうかを判定し,削除
されたならば処理(f)へ進み,そうでないならば処理(g)
へ進む。
【0105】(f) そのディレクトリに関する常駐化バッ
ファ15(拡張部15’を含む)を解放する。 (g) ロバストアクセス環境を解放し,クローズ処理を終
了する。
【0106】
【発明の効果】以上説明したように,本発明によれば,
システムのメモリ空間に,システム内で使うディレクト
リの内容を常駐化することによって,従来のように処理
のシリアライズ待ち状態や入出力動作待ちなどの要因に
よって発生していた処理ごとの待ち時間を低下させるこ
とが可能になる。したがって,システム全体のレスポン
ス性能が向上する。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】本発明の実施例の処理構成図である。
【図3】本発明の実施例に係るメモリ上のディレクトリ
アクセス環境説明図である。
【図4】本発明の実施例に係る実体通番の構成説明図で
ある。
【図5】本発明の実施例に係る実行体と更新用バッファ
の結合説明図である。
【図6】本発明の実施例に係るディレクトリのページ
(バッファ)の構造説明図である。
【図7】本発明の実施例に係るディレクトリ参照処理説
明図である。
【図8】本発明の実施例に係るディレクトリ更新処理説
明図である。
【図9】本発明の実施例に係るロバストアクセス処理に
関する説明図である。
【図10】本発明の実施例に係るロバストアクセス結果
の再常駐化処理説明図である。
【図11】本発明の実施例に係る常駐化バッファの状態
説明図である。
【図12】本発明の実施例に係る参照処理における参照
処理と更新処理のシリアライズに関する処理フローチャ
ートである。
【図13】本発明の実施例に係る更新処理における参照
処理と更新処理のシリアライズに関する処理フローチャ
ートである。
【図14】本発明の実施例に係るロバストアクセス更新
処理の処理フローチャートである。
【図15】本発明の実施例に係るディレクトリのオープ
ン処理の処理フローチャートである。
【図16】本発明の実施例に係るディレクトリのクロー
ズ処理の処理フローチャートである。
【図17】データ処理システムにおいて一般的に用いら
れているディレクトリの例を示す図である。
【符号の説明】
10 CPU 11 メモリ 12 ディレクトリ管理処理手段 13 ハッシュテーブル 14 ディレクトリ管理表 15 常駐化バッファ 16 外部記憶装置 17 ディレクトリ 18 ファイル

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 CPU(10)と,メモリ(11)と,ディレク
    トリ(17)およびそのディレクトリ(17)によって管理され
    るファイル(18)が格納される外部記憶装置(16)とを備え
    た処理装置におけるディレクトリ管理処理方法におい
    て, 所定のディレクトリ(17)の内容をメモリ(11)上に常駐化
    し, 各ディレクトリ(17)をシステム内で一意に識別する識別
    情報によって,メモリ(11)上に常駐化したディレクトリ
    (17)の内容を参照または更新することを特徴とするディ
    レクトリ管理処理方法。
  2. 【請求項2】 請求項1記載のディレクトリ管理処理方
    法において, 前記ディレクトリ(17)をシステム内で一意に識別する識
    別情報として,ディレクトリ(17)が存在する外部記憶装
    置(16)上のボリューム名とボリューム内の通し番号とか
    らなる実体通番を用い, 実体通番をハッシングしたハッシュテーブル(13)によっ
    て,メモリ(11)上に常駐化したディレクトリ(17)の内容
    を検索するようにしたことを特徴とするディレクトリ管
    理処理方法。
  3. 【請求項3】 請求項1記載のディレクトリ管理処理方
    法において, メモリ(11)上に常駐化したディレクトリ(17)を更新する
    場合に,ディレクトリ(17)の内容を更新用のバッファに
    複写し, 更新用のバッファについてデータ更新処理および外部記
    憶装置(16)への書き出しを行い, その後に,更新用のバッファの内容を,メモリ(11)上に
    常駐化したディレクトリ(17)に反映する処理を行い, 前記更新用のバッファに複写する処理と,前記メモリ(1
    1)上に常駐化したディレクトリ(17)に反映する処理につ
    いてのみ,ディレクトリ参照処理との間で処理のシリア
    ライズを行うことを特徴とするディレクトリ管理処理方
    法。
  4. 【請求項4】 CPU(10)と,メモリ(11)と,ディレク
    トリ(17)およびそのディレクトリ(17)によって管理され
    るファイル(18)が格納される外部記憶装置(16)とを備え
    た処理装置において, 常駐化対象のディレクトリ(17)の内容が展開される常駐
    化バッファ(15)と, 常駐化対象のディレクトリ(17)ごとに前記常駐化バッフ
    ァ(15)へのポインタ情報を含む管理情報を持つディレク
    トリ管理表(14)と, ディレクトリ(17)をシステム内で一意に識別する識別情
    報によってハッシングされた位置に,前記ディレクトリ
    管理表(14)に対するポインタ情報を持つハッシュテーブ
    ル(13)とを, 前記メモリ(11)上に備えるとともに, 前記メモリ(11)上の常駐化バッファ(15)に展開されたデ
    ィレクトリ(17)の内容を,前記ハッシュテーブル(13)お
    よび前記ディレクトリ管理表(14)を用いて参照または更
    新するディレクトリ管理処理手段(12)を備えたことを特
    徴とする処理装置。
JP4125225A 1992-05-19 1992-05-19 ディレクトリ管理処理方法および処理装置 Withdrawn JPH05324435A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4125225A JPH05324435A (ja) 1992-05-19 1992-05-19 ディレクトリ管理処理方法および処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4125225A JPH05324435A (ja) 1992-05-19 1992-05-19 ディレクトリ管理処理方法および処理装置

Publications (1)

Publication Number Publication Date
JPH05324435A true JPH05324435A (ja) 1993-12-07

Family

ID=14904936

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4125225A Withdrawn JPH05324435A (ja) 1992-05-19 1992-05-19 ディレクトリ管理処理方法および処理装置

Country Status (1)

Country Link
JP (1) JPH05324435A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209057B1 (en) 1997-10-31 2001-03-27 Fujitsu Limited Storage device having data buffer
JP2002132552A (ja) * 2000-10-20 2002-05-10 Hitachi Ltd 情報処理システム
JP2006163801A (ja) * 2004-12-07 2006-06-22 Canon Inc 情報記録再生装置
JP2008230038A (ja) * 2007-03-20 2008-10-02 Oki Data Corp 画像形成装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209057B1 (en) 1997-10-31 2001-03-27 Fujitsu Limited Storage device having data buffer
JP2002132552A (ja) * 2000-10-20 2002-05-10 Hitachi Ltd 情報処理システム
JP2006163801A (ja) * 2004-12-07 2006-06-22 Canon Inc 情報記録再生装置
JP2008230038A (ja) * 2007-03-20 2008-10-02 Oki Data Corp 画像形成装置

Similar Documents

Publication Publication Date Title
JP7220234B2 (ja) Lsmデータ構造内の効率的なレコードルックアップのためのキャッシュ
US5581750A (en) System and method for improving data recovery performance
KR940005775B1 (ko) 디스크 파일 개방 방법
US5664186A (en) Computer file management and backup system
US5287496A (en) Dynamic, finite versioning for concurrent transaction and query processing
JP2575543B2 (ja) 同時アクセス管理方法
JP2531783B2 (ja) 共用ファイル環境をサポ―トする方法
US9405680B2 (en) Communication-link-attached persistent memory system
US6957362B2 (en) Instantaneous restoration of a production copy from a snapshot copy in a data storage system
US6792518B2 (en) Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies
US5504857A (en) Highly available fault tolerant relocation of storage with atomicity
JPH1063561A (ja) データベース・オブジェクト処理命令を挿入するためにデータベース・アクセス方法を自動的に変更するシステム及び方法
US5963960A (en) Method and apparatus for queuing updates in a computer system
JPH0776944B2 (ja) 仮想索引機構
JPH07200390A (ja) データアクセス方法
US20060004877A1 (en) Method and system for data processing with data replication for the same
US5953728A (en) System for modifying a database using a transaction log
JPH0529938B2 (ja)
US7254672B1 (en) Translation device driver for translating between disk device driver and tape device driver commands
JPH05324435A (ja) ディレクトリ管理処理方法および処理装置
CN104035952B (zh) 硬件支持的存储临时拷贝
US7693883B2 (en) Online data volume deletion
CN104035838B (zh) 硬件支持的存储日志记录
JPH04242842A (ja) データベースバッファ制御装置
JPH06187201A (ja) ファイルシステム

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19990803