JPH05233402A - メモリマップドファイルアクセス方式 - Google Patents
メモリマップドファイルアクセス方式Info
- Publication number
- JPH05233402A JPH05233402A JP4035091A JP3509192A JPH05233402A JP H05233402 A JPH05233402 A JP H05233402A JP 4035091 A JP4035091 A JP 4035091A JP 3509192 A JP3509192 A JP 3509192A JP H05233402 A JPH05233402 A JP H05233402A
- Authority
- JP
- Japan
- Prior art keywords
- file
- mapped
- memory
- address
- mapping
- 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
Landscapes
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【目的】本発明は、マッピングされたファイルに対し、
そのファイルをアクセスするライブラリルーチンを用意
することで、従来のファイルアクセスと同様のインター
フェイスでメモリマップドファイルをアクセスでき、か
つマッピングされたファイルのサイズの拡大を可能とし
たことを特徴とする。 【構成】マッピングされたファイルに対して、そのファ
イルをアクセスするライブラリルーチンを、ファイル内
のアクセス位置をファイル先頭からのオフセットで表わ
すシーク位置テーブル15(15a,15b) と、マッピングさ
れたファイルのアドレス空間上のアドレスを記憶するマ
ッピングテーブル16(16a,16b) とをもつテーブルで構
成し、ファイルアクセスと同様のインターフェイスでメ
モリマップドファイルをアクセスできるようにするとと
もに、マッピングテーブルをチェーン接続することによ
りファイルサイズを拡張を可能にしたことを特徴とす
る。
そのファイルをアクセスするライブラリルーチンを用意
することで、従来のファイルアクセスと同様のインター
フェイスでメモリマップドファイルをアクセスでき、か
つマッピングされたファイルのサイズの拡大を可能とし
たことを特徴とする。 【構成】マッピングされたファイルに対して、そのファ
イルをアクセスするライブラリルーチンを、ファイル内
のアクセス位置をファイル先頭からのオフセットで表わ
すシーク位置テーブル15(15a,15b) と、マッピングさ
れたファイルのアドレス空間上のアドレスを記憶するマ
ッピングテーブル16(16a,16b) とをもつテーブルで構
成し、ファイルアクセスと同様のインターフェイスでメ
モリマップドファイルをアクセスできるようにするとと
もに、マッピングテーブルをチェーン接続することによ
りファイルサイズを拡張を可能にしたことを特徴とす
る。
Description
【0001】
【産業上の利用分野】本発明は二次記憶装置上のファイ
ルを主記憶装置にマッピングしてアクセスできるメモリ
マップドファイルに於けるメモリマップドファイルアク
セス方式に関する。
ルを主記憶装置にマッピングしてアクセスできるメモリ
マップドファイルに於けるメモリマップドファイルアク
セス方式に関する。
【0002】
【従来の技術】メモリマップドファイル技術によりプロ
セスのアドレス空間にマップされたファイルは、メモリ
のアドレスでファイルのデータにアクセスできるように
なる。即ち、メモリマップドファイルは、ファイルの全
てが主記憶上にあるかのように見える。このメモリマッ
プドファイルでは、最初のレコードの先頭バイトがマッ
ピングの開始位置にあり、2番目のレコードの先頭が先
頭レコードの最終バイトのすぐ次にある。つまりメモリ
マッピングの機構により、ファイルは一つの連続したア
ドレス空間と見なされる。
セスのアドレス空間にマップされたファイルは、メモリ
のアドレスでファイルのデータにアクセスできるように
なる。即ち、メモリマップドファイルは、ファイルの全
てが主記憶上にあるかのように見える。このメモリマッ
プドファイルでは、最初のレコードの先頭バイトがマッ
ピングの開始位置にあり、2番目のレコードの先頭が先
頭レコードの最終バイトのすぐ次にある。つまりメモリ
マッピングの機構により、ファイルは一つの連続したア
ドレス空間と見なされる。
【0003】従って、メモリマップドファイルは、従来
のread/write(リード/ライト)システムコ
ールに見られるようなアクセス方法ではなく、所謂、配
列変数のように、直接、ファイルの内容に対して参照・
更新が可能であり、read/writeシステムコー
ルを使用しないため、システムコールを使用することに
よるオーバーヘッドがなくなり高速にアクセスが可能と
なる。
のread/write(リード/ライト)システムコ
ールに見られるようなアクセス方法ではなく、所謂、配
列変数のように、直接、ファイルの内容に対して参照・
更新が可能であり、read/writeシステムコー
ルを使用しないため、システムコールを使用することに
よるオーバーヘッドがなくなり高速にアクセスが可能と
なる。
【0004】図8は、従来のファイルをプロセスのアド
レス空間にマッピングするシステムに於いて、ファイル
をマッピングした際のプロセスのアドレス空間のマップ
図である。
レス空間にマッピングするシステムに於いて、ファイル
をマッピングした際のプロセスのアドレス空間のマップ
図である。
【0005】図8に於いて、磁気ディスク等の二次記憶
装置81に格納されているファイル82aは、プロセス
のアドレス空間83上に於いて領域83aにマッピング
される。
装置81に格納されているファイル82aは、プロセス
のアドレス空間83上に於いて領域83aにマッピング
される。
【0006】ここで、上記ファイル82aに加えて、フ
ァイル82bをマッピングする場合、既にファイル82
aがマッピングされている領域83aは使用できないの
で、別の空いている領域の中からファイル82bが納ま
るだけのサイズを持った領域を探してマッピングしなけ
ればならない。
ァイル82bをマッピングする場合、既にファイル82
aがマッピングされている領域83aは使用できないの
で、別の空いている領域の中からファイル82bが納ま
るだけのサイズを持った領域を探してマッピングしなけ
ればならない。
【0007】ファイル82aとファイル82bが、それ
ぞれ図9に示すように、領域83a、領域83bの如く
マッピングされた状態で、ファイル82aのサイズを拡
張する場合は、プロセスのアドレス空間83上に於ける
領域83aも拡大されなければならない。
ぞれ図9に示すように、領域83a、領域83bの如く
マッピングされた状態で、ファイル82aのサイズを拡
張する場合は、プロセスのアドレス空間83上に於ける
領域83aも拡大されなければならない。
【0008】しかし、この際、マッピング領域は、領域
83aと領域83bとの間のサイズ分の領域91しか広
げられず、それより大きなサイズ領域を広げることはで
きない。上記領域91の他に十分大きな領域92が存在
しても、その領域92はファイルの連続性が失われるの
で利用できない。即ち、従来のメモリマップドファイル
技術では、通常のファイルのようにファイルサイズを任
意の大きさに拡大することができない。
83aと領域83bとの間のサイズ分の領域91しか広
げられず、それより大きなサイズ領域を広げることはで
きない。上記領域91の他に十分大きな領域92が存在
しても、その領域92はファイルの連続性が失われるの
で利用できない。即ち、従来のメモリマップドファイル
技術では、通常のファイルのようにファイルサイズを任
意の大きさに拡大することができない。
【0009】
【発明が解決しようとする課題】このように、従来のシ
ステムでは、マッピングされたファイルへのアクセスは
高速であるが、一般的なファイルアクセス方法と異なる
配列変数へのアクセスと同様になるため、過去のプログ
ラムはファイルのアクセス方法を全て書き換えなけれ
ば、メモリマップドファイルが使用できないという問題
があった。
ステムでは、マッピングされたファイルへのアクセスは
高速であるが、一般的なファイルアクセス方法と異なる
配列変数へのアクセスと同様になるため、過去のプログ
ラムはファイルのアクセス方法を全て書き換えなけれ
ば、メモリマップドファイルが使用できないという問題
があった。
【0010】また、プロセスのアドレス空間にマッピン
グされたメモリマップドファイルのファイルサイズを拡
大することは、ファイルサイズを拡大したときのアドレ
スが既に他のファイルに使用されている場合があるの
で、単純にメモリマップドファイルの後ろに、拡大した
部分をアドレスが連続するようにマッピングすることは
困難であり、従って通常のファイルのようにファイルサ
イズを任意の大きさに拡大することができないという問
題があった。
グされたメモリマップドファイルのファイルサイズを拡
大することは、ファイルサイズを拡大したときのアドレ
スが既に他のファイルに使用されている場合があるの
で、単純にメモリマップドファイルの後ろに、拡大した
部分をアドレスが連続するようにマッピングすることは
困難であり、従って通常のファイルのようにファイルサ
イズを任意の大きさに拡大することができないという問
題があった。
【0011】本発明は上記実情に鑑みなされたもので、
従来のファイルアクセスと同様のインターフェイスでメ
モリマップドファイルをアクセスでき、かつマッピング
されたメモリマップドファイルのファイルサイズの任意
の拡大を可能とするメモリマップドアクセス方式を提供
することを目的とする。
従来のファイルアクセスと同様のインターフェイスでメ
モリマップドファイルをアクセスでき、かつマッピング
されたメモリマップドファイルのファイルサイズの任意
の拡大を可能とするメモリマップドアクセス方式を提供
することを目的とする。
【0012】
【課題を解決するための手段】上記の目的を達成するた
め、本発明のメモリマップドファイルアクセス方式は、
read/writeシステムコールと同じインターフ
ェイスを持つライブラリルーチンを用意し、そのライブ
ラリルーチンがメモリマップドファイルを使用する。ま
た、ライブラリルーチンが、ファイルのアクセス位置と
マッピングされているアドレスとの関係をテーブルに持
ち管理することにより、一つのファイルが分割されて不
連続なアドレス空間にマッピングされていても、ファイ
ルのアクセス位置よりアドレスが分かり、ライブラリル
ーチンの中でメモリマップドファイルが使用できる。こ
れにより、ファイルサイズを増大した場合のファイルの
マッピングされたアドレス空間が不連続になっても、メ
モリマップドファイルのアクセスが可能となることを特
徴とする。
め、本発明のメモリマップドファイルアクセス方式は、
read/writeシステムコールと同じインターフ
ェイスを持つライブラリルーチンを用意し、そのライブ
ラリルーチンがメモリマップドファイルを使用する。ま
た、ライブラリルーチンが、ファイルのアクセス位置と
マッピングされているアドレスとの関係をテーブルに持
ち管理することにより、一つのファイルが分割されて不
連続なアドレス空間にマッピングされていても、ファイ
ルのアクセス位置よりアドレスが分かり、ライブラリル
ーチンの中でメモリマップドファイルが使用できる。こ
れにより、ファイルサイズを増大した場合のファイルの
マッピングされたアドレス空間が不連続になっても、メ
モリマップドファイルのアクセスが可能となることを特
徴とする。
【0013】
【作用】本発明では、マッピングされたファイルに対し
て、そのファイルをアクセスするライブラリルーチンを
用意することにより、従来のシステムコールと同じファ
イルアクセスインターフェイスを保ち、過去のプログラ
ム資産を無駄にせず高速なメモリマップドファイルの利
用が可能となる。更に、上記ライブラリ内でマップされ
ているアドレス空間をテーブルに保存して、元のファイ
ルをマッピングしたアドレス空間の部分と、当該ファイ
ルの拡大部分のアドレスを互いに上記テーブル上で管理
することにより、ファイルサイズの拡大時に、拡大した
部分を元のファイルをマッピングしたアドレス空間とは
不連続な部分にマッピングしてもファイル位置とマッピ
ングされているアドレスとの対応が上記テーブル上でと
れることから、ファイルサイズの任意の拡大が可能とな
る。
て、そのファイルをアクセスするライブラリルーチンを
用意することにより、従来のシステムコールと同じファ
イルアクセスインターフェイスを保ち、過去のプログラ
ム資産を無駄にせず高速なメモリマップドファイルの利
用が可能となる。更に、上記ライブラリ内でマップされ
ているアドレス空間をテーブルに保存して、元のファイ
ルをマッピングしたアドレス空間の部分と、当該ファイ
ルの拡大部分のアドレスを互いに上記テーブル上で管理
することにより、ファイルサイズの拡大時に、拡大した
部分を元のファイルをマッピングしたアドレス空間とは
不連続な部分にマッピングしてもファイル位置とマッピ
ングされているアドレスとの対応が上記テーブル上でと
れることから、ファイルサイズの任意の拡大が可能とな
る。
【0014】
【実施例】以下図面を参照して本発明の一実施例を説明
する。図1は本発明によるメモリマップドファイルアク
セス方式の一実施例の構成を示すブロック図である。
する。図1は本発明によるメモリマップドファイルアク
セス方式の一実施例の構成を示すブロック図である。
【0015】図1に於いて、11は二次記憶装置であ
り、12a,12bはそれぞれ二次記憶装置11上に置
かれたファイルである。13はプロセスのアドレス空間
であり、14a,14bはそれぞれファイル12a,1
2bがマッピングされているアドレス空間上のマッピン
グ区間である。
り、12a,12bはそれぞれ二次記憶装置11上に置
かれたファイルである。13はプロセスのアドレス空間
であり、14a,14bはそれぞれファイル12a,1
2bがマッピングされているアドレス空間上のマッピン
グ区間である。
【0016】15a,15bはそれぞれファイル12
a,12b内のどの部分をアクセスするのかの位置をフ
ァイルの先頭からのオフセットで示すシーク位置テーブ
ルである。
a,12b内のどの部分をアクセスするのかの位置をフ
ァイルの先頭からのオフセットで示すシーク位置テーブ
ルである。
【0017】16a,16bはそれぞれファイル12
a,12bがマッピングされているプロセスのアドレス
空間13上のマッピング区間14a,14bの先頭及び
最終アドレスと、次のマッピング区間がある場合の次の
マッピング区間に対するマッピングテーブルへのチェー
ンのためのポインタとを保持するマッピングテーブルで
ある。
a,12bがマッピングされているプロセスのアドレス
空間13上のマッピング区間14a,14bの先頭及び
最終アドレスと、次のマッピング区間がある場合の次の
マッピング区間に対するマッピングテーブルへのチェー
ンのためのポインタとを保持するマッピングテーブルで
ある。
【0018】上記図1の構成に於いて、図2に符号21
aで示すように、ファイルのサイズを大きくするような
アクセスが起きた場合、ファイル12aに対しては通常
のシステムコールで増分21aを書き込む。
aで示すように、ファイルのサイズを大きくするような
アクセスが起きた場合、ファイル12aに対しては通常
のシステムコールで増分21aを書き込む。
【0019】次に上記ファイル12aの増分21aに対
して、新たに任意の空いているアドレス空間13上にマ
ッピングを行ない、ここではマッピング区間14a,1
4bの間に領域が確保できないので、マッピング区分2
4aにマッピングする。次に上記マッピング区分24a
に対するマッピングテーブル27aを対応するマッピン
グテーブル16aのチェーンの最後に追加する。
して、新たに任意の空いているアドレス空間13上にマ
ッピングを行ない、ここではマッピング区間14a,1
4bの間に領域が確保できないので、マッピング区分2
4aにマッピングする。次に上記マッピング区分24a
に対するマッピングテーブル27aを対応するマッピン
グテーブル16aのチェーンの最後に追加する。
【0020】ここで、上記図1,図2に示す実施例の構
成に於いて、図3乃至図7に示すフローチャートを参照
しながら、ユーザに対してメモリマップドファイルを意
識させないライブラリルーチンの構成及び動作について
説明する。
成に於いて、図3乃至図7に示すフローチャートを参照
しながら、ユーザに対してメモリマップドファイルを意
識させないライブラリルーチンの構成及び動作について
説明する。
【0021】ユーザプログラムがシステムコールにより
ファイルをアクセスする場合のファイルのアクセスの種
類には、ファイルのオープン、書き込み、読み込み、位
置決め、クローズ等がある。図3はメモリマップドファ
イルに対するオープン(OPEN)のライブラリルーチ
ン処理の流れを示すフローチャートである。
ファイルをアクセスする場合のファイルのアクセスの種
類には、ファイルのオープン、書き込み、読み込み、位
置決め、クローズ等がある。図3はメモリマップドファ
イルに対するオープン(OPEN)のライブラリルーチ
ン処理の流れを示すフローチャートである。
【0022】オープンのライブラリルーチンでは、先ず
ファイルのアドレス空間へのマッピングを行なう(図3
ステップS31)。このとき、マッピングしたアドレス
をマッピングテーブル16aに登録する(図3ステップ
S32)。
ファイルのアドレス空間へのマッピングを行なう(図3
ステップS31)。このとき、マッピングしたアドレス
をマッピングテーブル16aに登録する(図3ステップ
S32)。
【0023】ファイル12aをオープンした場合、ファ
イル12aはアドレス空間13上にマッピング区間14
aとしてマッピングされるので、このときのマッピング
テーブル16aの内容は、図1のように、先頭アドレス
がマッピング区間14aの開始アドレス、最終アドレス
がマッピング区間14aの最後のアドレス、次チェーン
ポインタには、終端を示す記号が入る(図3ステップS
32)。又、シーク位置テーブル15aには、ユーザの
指定によりファイルの先頭オフセットまたは最終オフセ
ットがシーク位置として入る(図3ステップS32)。
図4は、メモリマップドファイルに対する書き込み(W
RITE)のライブラリルーチンの処理の流れを示すフ
ローチャートである。
イル12aはアドレス空間13上にマッピング区間14
aとしてマッピングされるので、このときのマッピング
テーブル16aの内容は、図1のように、先頭アドレス
がマッピング区間14aの開始アドレス、最終アドレス
がマッピング区間14aの最後のアドレス、次チェーン
ポインタには、終端を示す記号が入る(図3ステップS
32)。又、シーク位置テーブル15aには、ユーザの
指定によりファイルの先頭オフセットまたは最終オフセ
ットがシーク位置として入る(図3ステップS32)。
図4は、メモリマップドファイルに対する書き込み(W
RITE)のライブラリルーチンの処理の流れを示すフ
ローチャートである。
【0024】この図4に示す書き込みのライブラリルー
チンでは、先ず、シーク位置テーブル上のシーク位置よ
り、プロセスのアドレス空間上のアドレスを求める(図
4ステップS41)。次に、そのアドレスから書き込む
よう指定された長さが一つのマッピング区分内に納まる
か否かを調べる(図4ステップS42)。
チンでは、先ず、シーク位置テーブル上のシーク位置よ
り、プロセスのアドレス空間上のアドレスを求める(図
4ステップS41)。次に、そのアドレスから書き込む
よう指定された長さが一つのマッピング区分内に納まる
か否かを調べる(図4ステップS42)。
【0025】ここで、書き込み指定された長さが一つの
マッピング区分内に納まっていれば、指定されたバッフ
ァアドレスから上記図4のステップS41で求めたアド
レスへ指定の長さだけコピーする(図4ステップS4
3)。そして、シーク位置テーブル上のシーク位置を書
き込んだサイズ分だけ増加する(図4ステップS4
9)。
マッピング区分内に納まっていれば、指定されたバッフ
ァアドレスから上記図4のステップS41で求めたアド
レスへ指定の長さだけコピーする(図4ステップS4
3)。そして、シーク位置テーブル上のシーク位置を書
き込んだサイズ分だけ増加する(図4ステップS4
9)。
【0026】又、書き込み指定された長さが一つのマッ
ピング区分内に納まらなければ(図4ステップS4
2)、その区分を越える部分はアドレス空間にマッピン
グされていないので、そのまま全部コピーすることはで
きず、以下に述べる図4のステップS44からステップ
S48の手続きを行なう。ここでは、先ず、上記ステッ
プS41で求めたアドレスから区分の終りまで、指定さ
れたバッファアドレスからコピーする(図4ステップS
44)。次に、コピーし残した部分を、ファイルに通常
のシステムコールを用意して書き込む(図4ステップS
45)。このファイルの書き込みによって増加した部分
のみを新たにプロセスのアドレス空間にマッピングする
(図4ステップS46)。図2に於いては、ファイル1
2aの増分21aに対して、アドレス空間13上のマッ
ピング区分24aにマッピングされる。
ピング区分内に納まらなければ(図4ステップS4
2)、その区分を越える部分はアドレス空間にマッピン
グされていないので、そのまま全部コピーすることはで
きず、以下に述べる図4のステップS44からステップ
S48の手続きを行なう。ここでは、先ず、上記ステッ
プS41で求めたアドレスから区分の終りまで、指定さ
れたバッファアドレスからコピーする(図4ステップS
44)。次に、コピーし残した部分を、ファイルに通常
のシステムコールを用意して書き込む(図4ステップS
45)。このファイルの書き込みによって増加した部分
のみを新たにプロセスのアドレス空間にマッピングする
(図4ステップS46)。図2に於いては、ファイル1
2aの増分21aに対して、アドレス空間13上のマッ
ピング区分24aにマッピングされる。
【0027】更に、この際は、新たにマッピングされた
区分に対してマッピングテーブルを作り、その区分の先
頭アドレス、最終アドレスを設定し(図4ステップS4
7)、マッピングテーブルのチェーンにつないで(図4
ステップS48)、その後にシーク位置テーブル上のシ
ーク位置を書き込んだサイズ分だけ増加する(図4ステ
ップS49)。
区分に対してマッピングテーブルを作り、その区分の先
頭アドレス、最終アドレスを設定し(図4ステップS4
7)、マッピングテーブルのチェーンにつないで(図4
ステップS48)、その後にシーク位置テーブル上のシ
ーク位置を書き込んだサイズ分だけ増加する(図4ステ
ップS49)。
【0028】図2に於いては、マッピング区分24aに
対するマッピングテーブル27aが新たに作成され、そ
の作成されたマッピングテーブル27aが、対応する
(基の)マッピングテーブル16aのチェーンの最後に
追加される。図5は、メモリマップドファイルに対する
読み込み(READ)のライブラリルーチンの処理の流
れを示すフローチャートである。読み込みのライブラリ
ルーチンでは、先ずシーク位置テーブル上のシーク位置
よりプロセスのアドレス空間上のアドレスを求める(図
5ステップS51)。次に、そのアドレスから読み込む
よう指定された長さが、一つのマッピング区分内に納ま
っているか否かを調べる(図5ステップS52)。
対するマッピングテーブル27aが新たに作成され、そ
の作成されたマッピングテーブル27aが、対応する
(基の)マッピングテーブル16aのチェーンの最後に
追加される。図5は、メモリマップドファイルに対する
読み込み(READ)のライブラリルーチンの処理の流
れを示すフローチャートである。読み込みのライブラリ
ルーチンでは、先ずシーク位置テーブル上のシーク位置
よりプロセスのアドレス空間上のアドレスを求める(図
5ステップS51)。次に、そのアドレスから読み込む
よう指定された長さが、一つのマッピング区分内に納ま
っているか否かを調べる(図5ステップS52)。
【0029】ここで、読み込み指定された長さが、一つ
のマッピング区分内に納まっていれば、先ずそのアドレ
スから区分の最後までを指定バッファへコピーする(図
5ステップS53)。このとき、次に読み込む時のため
に、コピー先のバッファアドレスをコピーした長さの分
だけ増加させておく。
のマッピング区分内に納まっていれば、先ずそのアドレ
スから区分の最後までを指定バッファへコピーする(図
5ステップS53)。このとき、次に読み込む時のため
に、コピー先のバッファアドレスをコピーした長さの分
だけ増加させておく。
【0030】次にマッピングテーブルの次テーブルへの
ポインタを調べ、次の区分のマッピングテーブルを探
す。更に読み込むべき長さは、上記ステップS53の処
理で既にコピーした分を減少させて(図5ステップS5
4)、再度、上記ステップS52の判断処理に戻る。
ポインタを調べ、次の区分のマッピングテーブルを探
す。更に読み込むべき長さは、上記ステップS53の処
理で既にコピーした分を減少させて(図5ステップS5
4)、再度、上記ステップS52の判断処理に戻る。
【0031】上記ステップS52の判断処理で、コピー
すべき長さが区分内に納まっていれば、上記ステップS
51で求めたアドレス又は区分の先頭アドレスから指定
された長さだけ、指定バッファのアドレスへコピーして
(図5ステップS55)、その後にシーク位置を読み込
んだ長さ分だけ増加する(図5ステップS56)。図6
はメモリマップドファイルの位置決めの処理の流れを示
すフローチャートである。この位置決めのライブラリル
ーチンでは、これからアクセスする位置、即ちシーク位
置の設定を行なうだけである(図6ステップS61)。
図7はメモリマップドファイルに対するファイルのクロ
ーズ(CLOSE)のライブラリルーチンの処理の流れ
を示すフローチャートである。クローズのライブラリル
ーチンでは、先ず、それまで使用していたマッピングテ
ーブルを使用前の状態にクリアする(図7ステップS7
1)。
すべき長さが区分内に納まっていれば、上記ステップS
51で求めたアドレス又は区分の先頭アドレスから指定
された長さだけ、指定バッファのアドレスへコピーして
(図5ステップS55)、その後にシーク位置を読み込
んだ長さ分だけ増加する(図5ステップS56)。図6
はメモリマップドファイルの位置決めの処理の流れを示
すフローチャートである。この位置決めのライブラリル
ーチンでは、これからアクセスする位置、即ちシーク位
置の設定を行なうだけである(図6ステップS61)。
図7はメモリマップドファイルに対するファイルのクロ
ーズ(CLOSE)のライブラリルーチンの処理の流れ
を示すフローチャートである。クローズのライブラリル
ーチンでは、先ず、それまで使用していたマッピングテ
ーブルを使用前の状態にクリアする(図7ステップS7
1)。
【0032】次に、マッピングされていたファイルを二
次記憶装置11上のファイルへ書き戻すため、マッピン
グの解除(アンマップ)を行なう(図7ステップS7
2)。その後に使用していたファイルを通常のシステム
コールによりクローズする(図7ステップS73)。
次記憶装置11上のファイルへ書き戻すため、マッピン
グの解除(アンマップ)を行なう(図7ステップS7
2)。その後に使用していたファイルを通常のシステム
コールによりクローズする(図7ステップS73)。
【0033】上記したように、マッピングされたファイ
ルに対して、そのファイルをアクセスするライブラリル
ーチンを用意することにより、従来のシステムコールと
同じファイルアクセスインターフェイスを保ち、過去の
プログラム資産を無駄にせず高速なメモリマップドファ
イルの利用が可能となる。更に、上記ライブラリ内でマ
ップされているアドレス空間をテーブル(マッピングテ
ーブル)に保存して、元のファイルをマッピングしたア
ドレス空間の部分(図2の符号14a参照)と、当該フ
ァイルの拡大部分のアドレス(図2の符号24a参照)
を互いに上記テーブル(図2の符号16a,27a参
照)上で管理することにより、ファイルサイズの拡大時
(図2の符号21a参照)に、拡大した部分を元のファ
イルをマッピングしたアドレス空間(図2の符号14a
参照)とは不連続な部分(図2の符号24a参照)にマ
ッピングしてもファイル位置とマッピングされているア
ドレスとの対応が上記テーブル上でとれることから、フ
ァイルサイズの任意の拡大が可能となる。
ルに対して、そのファイルをアクセスするライブラリル
ーチンを用意することにより、従来のシステムコールと
同じファイルアクセスインターフェイスを保ち、過去の
プログラム資産を無駄にせず高速なメモリマップドファ
イルの利用が可能となる。更に、上記ライブラリ内でマ
ップされているアドレス空間をテーブル(マッピングテ
ーブル)に保存して、元のファイルをマッピングしたア
ドレス空間の部分(図2の符号14a参照)と、当該フ
ァイルの拡大部分のアドレス(図2の符号24a参照)
を互いに上記テーブル(図2の符号16a,27a参
照)上で管理することにより、ファイルサイズの拡大時
(図2の符号21a参照)に、拡大した部分を元のファ
イルをマッピングしたアドレス空間(図2の符号14a
参照)とは不連続な部分(図2の符号24a参照)にマ
ッピングしてもファイル位置とマッピングされているア
ドレスとの対応が上記テーブル上でとれることから、フ
ァイルサイズの任意の拡大が可能となる。
【0034】
【発明の効果】以上説明したように本発明のメモリマッ
プドファイルアクセス方式によれば、マッピングされた
ファイルに対してそれをアクセスするライブラリルーチ
ンを用意することにより、従来のシステムコールと同じ
ファイルアクセスインターフェイスを保って過去のプロ
グラム資産を無駄にせず高速なメモリマップドファイル
の利用が可能となり、かつ、ライブラリ内でマップされ
ているアドレス空間をテーブルに保存して、ファイルサ
イズの拡大時に、拡大した部分を元のファイルをマッピ
ングしたアドレス空間と不連続な部分にマッピングして
も、ファイル位置とマッピングされているアドレスとの
対応が上記テーブル上で管理される構成としたことによ
り、ファイルサイズの任意の増大が容易に可能となる。
プドファイルアクセス方式によれば、マッピングされた
ファイルに対してそれをアクセスするライブラリルーチ
ンを用意することにより、従来のシステムコールと同じ
ファイルアクセスインターフェイスを保って過去のプロ
グラム資産を無駄にせず高速なメモリマップドファイル
の利用が可能となり、かつ、ライブラリ内でマップされ
ているアドレス空間をテーブルに保存して、ファイルサ
イズの拡大時に、拡大した部分を元のファイルをマッピ
ングしたアドレス空間と不連続な部分にマッピングして
も、ファイル位置とマッピングされているアドレスとの
対応が上記テーブル上で管理される構成としたことによ
り、ファイルサイズの任意の増大が容易に可能となる。
【図1】本発明の実施例の構成を示すブロック図。
【図2】上記実施例に於けるファイルサイズ拡大時の構
成を示すブロック図。
成を示すブロック図。
【図3】上記実施例に於けるメモリマップドファイルの
オープンの処理手順を示すフローチャート。
オープンの処理手順を示すフローチャート。
【図4】上記実施例に於けるメモリマップドファイルの
読み込みの処理手順を示すフローチャート。
読み込みの処理手順を示すフローチャート。
【図5】上記実施例に於けるメモリマップドファイルの
書き込みの処理手順を示すフローチャート。
書き込みの処理手順を示すフローチャート。
【図6】上記実施例に於けるメモリマップドファイルの
位置決めの処理手順を示すフローチャート。
位置決めの処理手順を示すフローチャート。
【図7】上記実施例に於けるメモリマップドファイルの
クローズの処理手順を示すフローチャート。
クローズの処理手順を示すフローチャート。
【図8】従来のメモリマップドファイル技術によるファ
イルマッピングの構成を説明するためのブロック図。
イルマッピングの構成を説明するためのブロック図。
【図9】従来のメモリマップドファイル技術によるファ
イルマッピングの構成を説明するためのブロック図。
イルマッピングの構成を説明するためのブロック図。
11…二次記憶装置、12a,12b…ファイル、13
…プロセスのアドレス空間、14a,14b…マッピン
グ区間、15a,15b…シーク位置テーブル、16
a,16b…マッピングテーブル、21a…ファイルの
増分、24a…増分21aのマッピング区分、27a…
マッピング区分24aに対するマッピングテーブル。
…プロセスのアドレス空間、14a,14b…マッピン
グ区間、15a,15b…シーク位置テーブル、16
a,16b…マッピングテーブル、21a…ファイルの
増分、24a…増分21aのマッピング区分、27a…
マッピング区分24aに対するマッピングテーブル。
Claims (1)
- 【請求項1】 ファイルを保持する二次記憶装置と、 プロセスのコード及びデータを格納する主記憶装置と、 上記二次記憶装置上のファイルを上記主記憶装置のプロ
セスのアドレス空間にマップするマッピング手段を有す
るオペレーティングシステムと、 ファイル内のアクセス位置をファイル先頭からのオフセ
ットで表わすシーク位置を記憶するシーク位置テーブル
と、 マッピングされたファイルのアドレス空間上のアドレス
を記憶するマッピングテーブルとを具備し、 上記プロセスのアドレス空間にマップされたメモリマッ
プドファイルをアクセスし、上記マッピングテーブルを
参照することによりファイルサイズの変更を行なうこと
を特徴とするメモリマップドファイルアクセス方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4035091A JPH05233402A (ja) | 1992-02-21 | 1992-02-21 | メモリマップドファイルアクセス方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4035091A JPH05233402A (ja) | 1992-02-21 | 1992-02-21 | メモリマップドファイルアクセス方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH05233402A true JPH05233402A (ja) | 1993-09-10 |
Family
ID=12432290
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4035091A Pending JPH05233402A (ja) | 1992-02-21 | 1992-02-21 | メモリマップドファイルアクセス方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH05233402A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010061253A (ja) * | 2008-09-02 | 2010-03-18 | Yahoo Japan Corp | メモリ管理サーバ、方法及びプログラム |
| JP2014517941A (ja) * | 2011-01-21 | 2014-07-24 | トムソン ライセンシング | 下位互換性アグリゲートファイルシステムの動作性能の向上方法、及び装置 |
-
1992
- 1992-02-21 JP JP4035091A patent/JPH05233402A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010061253A (ja) * | 2008-09-02 | 2010-03-18 | Yahoo Japan Corp | メモリ管理サーバ、方法及びプログラム |
| JP2014517941A (ja) * | 2011-01-21 | 2014-07-24 | トムソン ライセンシング | 下位互換性アグリゲートファイルシステムの動作性能の向上方法、及び装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5432928A (en) | Updating objects stored in a permanent container while preserving logical contiguity | |
| US20020166022A1 (en) | Access control method, access control apparatus, and computer-readable memory storing access control program | |
| GB2204161A (en) | Method of rapidly opening disk files identified by path names | |
| JP2001067786A (ja) | 記録再生装置 | |
| US5584015A (en) | Buffer memory management method, recording medium, and computer system incorporating same | |
| US5410694A (en) | File access processing system of a computer enabling high-speed sequential access for a stream file | |
| JP2539347B2 (ja) | フアイル管理方法 | |
| JPH05233402A (ja) | メモリマップドファイルアクセス方式 | |
| JP3882461B2 (ja) | 記憶装置システム及びそのバックアップ取得方法 | |
| JPH0895835A (ja) | ファイルスペースの予約方法 | |
| JPH08202595A (ja) | ファイルシステム | |
| JP2988048B2 (ja) | 辞書情報常駐アクセス装置 | |
| JPH086838A (ja) | 分散システム | |
| JP3471838B2 (ja) | 循環順編成ファイルの管理方法 | |
| JPS59136860A (ja) | デイスク制御装置 | |
| JPH07253894A (ja) | 共有記憶装置 | |
| JP2912657B2 (ja) | ファイルアクセス処理装置 | |
| JPH06332769A (ja) | ファイル管理システム | |
| JPH06149647A (ja) | マルチメディアファイル管理方式 | |
| JP2735400B2 (ja) | 非同期入出力制御方式 | |
| JPH04156626A (ja) | Vtocのファイルエントリ作成方式 | |
| JPH0635770A (ja) | ファイル管理方式 | |
| JPH05342152A (ja) | バッファ制御方式 | |
| JP2000172542A (ja) | ファイルアクセス方式 | |
| JPH03109653A (ja) | ボリューム内容管理テーブル初期化方式 |