(57)【要約】【課題】分散環境においてファイルシステムを共有化でき、相互にファイルアクセスすることができるファイルシステムに共通なインタフェースを提供する。【解決手段】分散環境にあるＯＳ１ａ，１ｂはＣＯＲＢＡ通信に対応したソフトウェアバス７によって接続されている。また、ＯＳ１ａ，１ｂは、ＣＯＲＢＡに基づいて動作するミドルウェア２ａ，２ｂを介してＩＤＬインタフェース４ａ，４ｂに接続されている。尚、ＩＤＬインタフェース４ａ，４ｂは、ＯＳ１ａ，１ｂに依存されないインタフェースを定義するＩＤＬによって記述され、インタフェース実装手段５によってＯＳ１ａ，１ｂに共通なインタフェースとして制御される。これにより、インタフェース実装手段５が、ＩＤＬインタフェース４ａ，４ｂを動作させるメソッドをコールすることにより、アプリケーション６を分散環境のＯＳ１ｂに存在するファイルシステム３に共有化させることができる。【選択図】        図１
2004355309.tif 000002
【特許請求の範囲】
【請求項１】
分散環境のＯＳに存在するファイルシステムを、ＣＯＲＢＡに基づいて動作するミドルウェアを介して共通に使用するためのインタフェースであって、
前記ＯＳに依存されないインタフェースを定義する言語であるＩＤＬによって記述されたＩＤＬインタフェースと、
前記ＩＤＬインタフェースを前記分散環境のＯＳに共通なインタフェースとして制御するインタフェース実装手段とを備え、
前記インタフェース実装手段が、前記ＩＤＬインタフェースを動作させるメソッドをコールすることにより、前記分散環境のＯＳに存在するファイルシステムを共有化させることを特徴とするインタフェース。
【請求項２】
前記インタフェース実装手段は、
前記ファイルシステムの中に存在するファイルの読み書きを実行する機能を提供するファイルインタフェースと、
前記ファイルシステムへのアクセスを可能にするための機能を提供するファイルシステムインタフェースと、
分散しているファイルシステムをひとつのファイルシステムであるように見せる機能を提供するファイルマネージャインタフェースと、
を備えることを特徴とする請求項１に記載のインタフェース。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、分散環境におけるファイルシステムを共有化するためのインタフェースに関するものであり、より詳細には、分散環境に存在するＯＳ（Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）とアプリケーションとの間でＣＯＲＢＡ（Ｃｏｍｍｏｎ  Ｏｂｊｅｃｔ  Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ）に基づいて動作するミドルウェアを介してファイルシステムを共有化するためのインタフェースに関するものである。
【０００２】
【従来の技術】
一般に、ハードディスクなどの記録媒体に保存されているファイルの管理、読み出し、書き込み、及び削除などの制御を行うシステム（以下、このようなシステムをファイルシステムという）においては、分散環境に存在する各マシンで共有フォルダなどを作成することによって、ネットワーク上の他のマシンと共有したファイルを操作することが可能となる。しかし、共有フォルダは、同じオペレーティングシステム（以下、ＯＳ：Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍと云う）を搭載したマシン同士の利用に限定されてしまう。例えば、図１４に示す従来のファイルシステムの概念図のように、ＯＳ１１ａ，１１ｂが共にＵＮＩＸ系ＯＳの一種であるＬｉｎｕｘである場合には、ＯＳ１１ａのアプリケーション１３をＯＳ１１ａのファイルシステム１２に共有化して操作することができる。
【０００３】
しかし、図１４のようなファイルシステムでは、ファイルシステムが拡大するに伴って各マシンの管理が煩雑となってしまう。そこで、このような問題を解決するために、ＯＳとアプリケーションの中間に位置するソフトウェアであって、アプリケーションにサービスを提供する機能を備えたミドルウェアを利用した分散オブジェクト技術が実現されている。このようなミドルウェアを用いることによって、インタフェースが同じである複数のＯＳに跨るアプリケーション同士を連携させて使用することが可能となる。
【０００４】
例えば、図１５に示すミドルウェアを使用した従来のファイルシステムの概念図のように、ＯＳ２１ａがＷｉｎｄｏｗｓ系であってＯＳ２１ｂがＬｉｎｕｘ系というように異なった種類のＯＳがソフトウェアバス２４で接続されている場合でも、ＯＳ２１ａ，ＯＳ２１ｂのそれぞれに搭載されたミドルウェア２２ａ，２２ｂが、各々に対応するアプリケーション２３ａ，２３ｂを制御することにより、ＯＳ２１ａ側のアプリケーション２３ａをＯＳ２１ｂ側のアプリケーション２３ｂと共有化してファイリングすることができる。もちろん、このとき、ＯＳ２１ａとＯＳ２１ｂは同じインタフェース（つまり、ソフトウェアバス２４）にする必要がある。
【０００５】
また、今日、ソフトウェアによって無線機の実行プログラムを切り替えることにより、無線機における同一のハードウェアリソースで複数の無線通信方式に対応できるソフトウェア無線機が広く知られている。このように、ソフトウェアの変更により無線機の構成を変更することができるソフトウェア無線機においては、ネットワークから所望の機能を定義したファイルをダウンロードすることによって、ソフトウェア無線機内のモジュールの構成を変更することによって複数の無線通信方式を実現することが可能となる。
【０００６】
【発明が解決しようとする課題】
しかしなら、一般に利用されているソフトウェア無線機においては、ネットワークからファイルをダウンロードしてモジュールの構成を変更する場合は、指定したモジュールのファイルシステムにアクセスしてファイルの読み書きなどを実行する必要がある。ところが、今日の技術では、分散環境においてファイルシステムを共通に使用するためのインタフェースが存在しないために、そのままではネットワークを介したファイルシステムの使用は不可能である。そのため、ソフトウェア無線機の通信方式を変更するためには、モジュール側と同じインタフェースを備えるＯＳを搭載したソフトウェア無線機に限定されてしまうなど、通信方式を変更する場合のソフトウェア無線機の使い勝手がよくない。
【０００７】
本発明は、このような事情に鑑みてなされたものであり、その目的とするところは、分散環境におけるファイルシステムの共有化が可能であって、相互にファイルアクセスすることができるファイルシステムに共通なインタフェースを提供することにある。
【０００８】
【課題を解決するための手段】
上記の目的を達成するため、本発明のインタフェースは、分散環境のＯＳに存在するファイルシステムを、ＣＯＲＢＡに基づいて動作するミドルウェアを介して共通に使用するためのインタフェースであって、ＯＳに依存されないインタフェースを定義する言語であるＩＤＬ（Ｉｎｔｅｒｆａｃｅ  Ｄｅｆｉｎｉｔｉｏｎ  Ｌａｎｇｕａｇｅ）によって記述されたＩＤＬインタフェースと、ＩＤＬインタフェースを分散環境のＯＳに共通なインタフェースとして制御するインタフェース実装手段とを備え、インタフェース実装手段が、ＩＤＬインタフェースを動作させるメソッドをコールすることにより分散環境のＯＳに存在するファイルシステムを共有化させることを特徴とする。
【０００９】
すなわち、本発明によれば、分散環境のＯＳに共通なインタフェースを設けることによって、遠隔ファイルシステムにおけるファイルアクセスの相互作用を可能にした。これによって、分散環境におけるファイルシステムを共有化することができるので、ファイルシステムのバージョンアップを容易に行うことができると共に、ファイルシステムの拡張性、移植性、保守性などを一段と向上させることができる。
【００１０】
また、本発明のインタフェースにおいては、前記インタフェース実装手段は、ファイルシステムの中に存在するファイルの読み書きを実行する機能を提供するファイルインタフェースと、ファイルシステムへのアクセスを可能にするための機能を提供するファイルシステムインタフェースと、分散しているファイルシステムをひとつのファイルシステムであるように見せる機能を提供するファイルマネージャインタフェースとを備えることを特徴とする。
【００１１】
すなわち、本発明によれば、インタフェース実装手段の内部動作を、ファイルインタフェースメソッド、ファイルシステムインタフェースメソッド、及びファイルマネージャインタフェースメソッドに分類している。このようにして機能を分散することによってマシンの保守性を向上させたり、ソフトウェアの再利用性を向上させることができる。さらには、ソフトウェアを異なるＯＳやマシンで動作させる移植性やファイルの拡張性を一段と向上させることができる。
【００１２】
【発明の実施の形態】
今日のように、情報の管理システムが拡大してファイルシステムが複雑化してくるにしたがって、複雑なファイルシステムの開発コストを最小化し、且つ、運用面における保守性の簡素化が求められている。そのためには、ファイルシステムの機能分割と分散配置、マシンのコンポーネント化とファイル資源の再利用、及びファイルシステムにおける標準技術の採用と相互運用性などを実現することが重要である。したがって、これらを実現するために分散オブジェクト技術が広く採用されている。その中でも、とりわけ、オブジェクト指向の分散処理を実現するミドルウェアとして動作するＣＯＲＢＡは、オブジェクト技術の標準として広く利用され始めている。
【００１３】
そこで、本発明では、ＣＯＲＢＡに基づいて動作するミドルウェアを使用し、ファイルアクセスに不可欠な相互作用が可能なファイルシステムの共通のインタフェースを提供することによって、ファイルの拡張性、移植性、及び保守性の向上を図っている。尚、ＣＯＲＢＡとは、分散環境でクライアントがサーバのオブジェクトにアクセスするためのソフトウェアバスを提供する標準技術であり、ＯＭＧ（０ｂｊｅｃｔ  Ｍａｎａｇｅｍｅｎｔ  Ｇｒｏｕｐ）という標準化団体が標準化した仕様であって、ネットワーク上で異なるアプリケーションソフトで作成されたデータ同士でメッセージ交換を行う機能を備えている。したがって、ＣＯＲＢＡを用いることによってプログラム言語の壁を越えてオブジェクト同士の通信が可能となる。
【００１４】
以下、図面を用いて、本発明におけるインタフェースの実施の形態を詳細に説明する。図１は、ＣＯＲＢＡをミドルウェアとして使用した本発明におけるファイルシステムの概念図である。すなわち、この図では、ＣＯＲＢＡに基づいて動作するミドルウェア２ａ，２ｂを使用し、ネットワーク上のＯＳ１ｂに存在するファイルシステム３を共通のインタフェース（つまり、ＩＤＬインタフェース４ａ，４ｂ）によって利用する構成を示している。
【００１５】
図１において、ＵＮＩＸ系ＯＳなどのように移植性に富んだＰＯＳＩＸ（Ｐｏｒｔａｂｌｅ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）に準拠したＬｉｎｕｘを用いたＯＳ１ａ，１ｂが、ＣＯＲＢＡ通信に対応しているイーサネット等のソフトウェアバス７に接続されてＯＳ領域を構成している。さらに、各ＯＳ１ａ，１ｂは、それぞれ、ＣＯＲＢＡに基づいて動作するミドルウェア２ａ，２ｂを搭載している。また、ミドルウェア２ａはＩＤＬ（Ｉｎｔｅｒｆａｃｅ  Ｄｅｆｉｎｉｔｉｏｎ  Ｌａｎｇｕａｇｅ）で記述されたＩＤＬインタフェース４ａによってアプリケーション６に接続され、ミドルウェア２ｂはＩＤＬの言語で記述されたＩＤＬインタフェース４ｂによってインタフェース実装部５に接続されている。尚、これらの領域（つまり、ミドルウェア２ａ，２ｂとアプリケーション６の領域）はユーザ領域として使用される。また、ＯＳ１ｂにはファイルシステム３が搭載され、このファイルシステム３とインタフェース実装部５は通信接続されている。このような構成により、インタフェース実装部５、アプリケーション６、及びミドルウェア２ａ，２ｂは、ＰＯＳＩＸ準拠のＬｉｎｕｘであるＯＳ１ａ，１ｂ上で動作するようになっている。
【００１６】
ＩＤＬインタフェース４ａ、４ｂは、ＣＯＲＢＡ仕様のＯＳ１ａ，１ｂに依存されないインタフェースを定義する言語であるＩＤＬを用いてインタフェースの機能が定義されている。したがって、インタフェース実装部５が、ＩＤＬインタフェース４ａ、４ｂで表されたメソッドをコールすることによって、他のＯＳに存在するモジュールのソフトウェア機能を実行することができる。尚、このときのＯＳ１ａ，１ｂの物理的な接続は、イーサネットやＣ−ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）などＣＯＲＢＡ通信が対応しているソフトウェアバス７であることが前提となる。
【００１７】
つまり、本発明では、ＩＤＬインタフェース４ａ，４ｂ及びインタフェースの機能を実現するインタフェース実装部５を共通のインタフェースとして定義している。また、ＯＳ１ｂに搭載されたファイルシステム３は、ＯＳ１ｂがファイルを管理しているシステムであって、主に、システムコールを利用してファイルの管理及び操作を行っている。さらに、インタフェース実装部５は、アプリケーション６からＩＤＬインタフェース４ａを通してコールされたメソッドを内部処理によって動作させるために、ＯＳ１ｂのモジュールに存在するファイルシステム３を利用する機能を実装している。このように、ＯＳ１ａとＯＳ１ｂが共にＰＯＳＩＸ準拠のＯＳ（すなわち、Ｌｉｎｕｘ）であれば、その構造は同じであるので、ＯＳ１ａとＯＳ１ｂが共通のインタフェース（つまり、ＩＤＬインタフェース４ａ，４ｂ）を実装することにより、アプリケーション６はファイルシステム３を利用してバージョンアップやその他の拡張や移植などに対応が可能となる。
【００１８】
すなわち、図１の構成及び動作を要約すると、分散環境にあるＯＳ１ａ，１ｂはＣＯＲＢＡ通信に対応したソフトウェアバス７によって接続され、且つ、ＯＳ１ａ，１ｂは、ＣＯＲＢＡに基づいて動作するミドルウェアを介してＩＤＬインタフェース４ａ，４ｂに接続されている。このとき、ＩＤＬインタフェース４ａ，４ｂは、ＯＳ１ａ，１ｂに依存されないインタフェースを定義するＩＤＬによって記述され、インタフェース実装部５によってＯＳ１ａ，１ｂに共通なインタフェースとして制御される。したがって、このような構成により、インタフェース実装部５が、ＩＤＬインタフェース４ａ，４ｂを動作させるメソッドをコールすることにより、アプリケーション６を分散環境のＯＳ１ｂに存在するファイルシステム３に共有化させることができる。
【００１９】
図２は、図１に示すインタフェース実装部の内部構成図である。図２において、インタフェース実装部５は、ファイルシステム３の機能に基づいて、ファイルインタフェース５ａ、ファイルシステムインタフェース５ｂ、及びファイルマネージャンタフェース５ｃに区分される。ファイルインタフェース５ａは、ファイルシステム３の中に存在するファイルの読み書きを実行する機能を提供する。ファイルシステムインタフェース５ｂは、ファイルシステム３へのアクセスを可能にするための機能を提供する。ファイルマネージャインタフェース５ｃは、分散しているファイルシステムをひとつのファイルシステムであるように見せる機能を提供する。
【００２０】
図３はインタフェース実装部５の定義内容を示す図であり、（ａ）はファイルインタフェース５ａで定義したメソッド名とその定義内容、（ｂ）はファイルシステムインタフェース５ｂで定義した関数名とその定義内容、（ｃ）はファイルマネージャインタフェース５ｃで定義した関数名とその定義内容を示す図である。また、図４〜図９は、図３の（ａ）〜（ｃ）に示す各メソッドの定義内容を実現する処理の流れを示すフローチャートである。
【００２１】
すなわち、図４はファイルインタフェースメソッドの処理の流れを示すフローチャートであって、（ａ）はメソッド名＜ｒｅａｄ＞の処理、（ｂ）はメソッド名＜ｗｒｉｔｅ＞の処理、（ｃ）はメソッド名＜ｓｉｚｅＯｆ＞の処理、（ｄ）はメソッド名＜ｃｌｏｓｅ＞の処理を示す。図５はファイルインタフェースメソッドの処理の流れを示すフローチャートであって、メソッド名＜ｓｅｔＦｉｌｅＰｏｉｎｔｅｒ＞の処理を示す。
【００２２】
図６はファイルシステムインタフェースメソッドの処理の流れを示すフローチャートであって、（ａ）は関数名＜ｒｅｍｏｖｅ＞の処理、（ｂ）は関数名＜ｃｏｐｙ＞の処理、（ｃ）は関数名＜ｅｘｉｓｔｓ＞の処理、（ｄ）は関数名＜ｌｉｓｔ＞の処理を示す。図７はファイルシステムインタフェースメソッドの処理の流れを示すフローチャートであって、（ａ）は関数名＜ｃｒｅａｔｅ＞の処理、（ｂ）は関数名＜ｏｐｅｎ＞の処理、（ｃ）は関数名＜ｍｋｄｉｒ＞の処理、（ｄ）は関数名＜ｒｍｄｉｒ＞の処理を示す。図８はファイルシステムインタフェースメソッドの処理の流れを示すフローチャートであって、関数名＜ｑｕｅｒｙ＞の処理を示す。図９はファイルマネージャインタフェースメソッドの処理の流れを示すフローチャートであって、（ａ）は関数名＜ｍｏｕｎｔ＞の処理、（ｂ）は関数名＜ｕｍｏｕｎｔ＞の処理、（ｃ）は関数名＜ｇｅｔＭｏｕｎｔ＞の処理を示す。
【００２３】
図４（ａ）のファイルインタフェースメソッドの処理において、メソッド名が＜ｒｅａｄ＞でファイルを読む場合の処理では、属性値の読み込みを行った後（ステップＳ１）、システムコール“ｒｅａｄ”を実行する（ステップＳ２）。“ｒｅａｄ”の実行を行った後にシステムコールの結果を示す値である戻り値によってシステムコールが正常に行われたか否かを判定する（ステップＳ３）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ４）、戻り値が“≧０”であれば取り出したデータ長を格納する（ステップＳ５）、という処理を繰り返す。
【００２４】
図４（ｂ）のファイルインタフェースメソッドの処理において、メソッド名が＜ｗｒｉｔｅ＞でファイルに書く場合の処理では、属性値の読み込みを行った後（ステップＳ１１）、システムコール“ｗｒｉｔｅ”を実行する（ステップＳ１２）。“ｗｒｉｔｅ”の実行を行った後に戻り値の値によってシステムコールが正常に行われたか否かを判定する（ステップＳ１３）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ１４）、戻り値が“≧０”であればシステムコール“ｗｒｉｔｅ”が正常に行われたのでステップＳ１１の属性値の読込みからの処理を繰り返す。
【００２５】
図４（ｃ）のファイルインタフェースメソッドの処理において、メソッド名が＜ｓｉｚｅＯｆ＞でファイルサイズを取得する場合の処理では、属性値の読み込みを行った後（ステップＳ２１）、システムコール“ｓｔａｔ”を実行する（ステップＳ２２）。“ｓｔａｔ”の実行を行った後にシステムコールの結果を示す値である戻り値によってシステムコールが正常に行われたか否かを判定する（ステップＳ２３）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ２４）、戻り値が“≧０”であれば取り出したファイルサイズを格納する（ステップＳ２５）、という処理を繰り返す。
【００２６】
図４（ｄ）のファイルインタフェースメソッドの処理において、メソッド名が＜ｃｌｏｓｅ＞でファイルを閉じる場合の処理では、属性値の読み込みを行った後（ステップＳ３１）、システムコール“ｃｌｏｓｅ”を実行する（ステップＳ３２）。“ｃｌｏｓｅ”の実行を行った後に戻り値の値によってシステムコールが正常に行われたか否かを判定する（ステップＳ３３）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ３４）、戻り値が“≧０”であればシステムコール“ｃｌｏｓｅ”が正常に行われたのでステップＳ３１の属性値の読込みからの処理を繰り返す。
【００２７】
図５のファイルインタフェースメソッドの処理において、メソッド名が＜ｓｅｔＦｉｌｅＰｏｉｎｔｅｒ＞でポインタの移動を行う場合の処理では、属性値の読み込みを行った後（ステップＳ４１）、システムコールを実行する（ステップＳ４２）。システムコールの実行を行った後に戻り値の値によってシステムコールが正常に行われたか否かを判定する（ステップＳ４３）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ４４）、戻り値が“≧０”であればシステムコールが正常に行われたのでステップＳ４１の属性値の読込みからの処理を繰り返す。
【００２８】
図６（ａ）のファイルシステムインタフェースメソッドの処理において、関数名が＜ｒｅｍｏｖｅ＞でファイルの削除を行う場合の処理では、属性値の読み込みを行った後（ステップＳ５１）、Ｌｉｎｕｘコマンドを実行する（ステップＳ５２）。Ｌｉｎｕｘコマンドの実行を行った後に戻り値の値によって実行が正常に行われたか否かを判定する（ステップＳ５３）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ５４）、戻り値が“≧０”であれば正常に実行が行われたのでステップＳ５１の属性値の読込みからの処理を繰り返す。
【００２９】
図６（ｂ）のファイルシステムインタフェースメソッドの処理において、関数名が＜ｃｏｐｙ＞でファイルのコピーを行う場合の処理では、属性値の読み込みを行った後（ステップＳ６１）、Ｌｉｎｕｘコマンドを実行する（ステップＳ６２）。Ｌｉｎｕｘコマンドの実行を行った後に戻り値の値によって実行が正常に行われたか否かを判定する（ステップＳ６３）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ６４）、戻り値が“≧０”であれば正常に実行が行われたのでステップＳ６１の属性値の読込みからの処理を繰り返す。
【００３０】
図６（ｃ）のファイルシステムインタフェースメソッドの処理において、関数名が＜ｅｘｉｓｔｓ＞でファイルの存在を確認する場合の処理では、属性値の読み込みを行った後（ステップＳ７１）、Ｌｉｎｕｘコマンドを実行し、実行結果を格納する（ステップＳ７２）。Ｌｉｎｕｘコマンドの実行と実行結果の格納を行った後に戻り値の値によって実行が正常に行われたか否かを判定する（ステップＳ７３）。ここで、戻り値が“＝０”であれば“ｒｅｔｕｒｎ  ｆａｌｓｅ”の処理を行い、戻り値が“≧０”であれば“ｒｅｔｕｒｎ  ｔｒｕｅ”の処理を行う。
【００３１】
図６（ｄ）のファイルシステムインタフェースメソッドの処理において、関数名が＜ｌｉｓｔ＞でファイル情報の取得を行う場合の処理では、属性値の読み込みを行った後（ステップＳ８１）、Ｌｉｎｕｘコマンドを実行し、実行結果を格納する（ステップＳ８２）という処理を繰り返す。
【００３２】
図７（ａ）のファイルシステムインタフェースメソッドの処理において、関数名が＜ｃｒｅａｔｅ＞でファイルの作成を行う場合の処理では、システムコールのｏｐｅｎを実行した後に（ステップＳ９１）、戻り値の値によって実行が正常に行われたか否かを判定する（ステップＳ９２）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ９３）、戻り値が“≠−１”であれば属性値の設定を行い（ステップＳ９４）、ステップＳ９１のシステムコールｏｐｅｎの実行からの処理を繰り返す。
【００３３】
図７（ｂ）のファイルシステムインタフェースメソッドの処理において、関数名が＜ｏｐｅｎ＞でファイルを開く場合の処理では、モードが正しいか否かの判定を行い（ステップＳ１０１）、モードが“ｔｒｕｅ”であれば読み出し専用のファイルを開き（ステップＳ１０２）、モードが“ｆａｌｓｅ”であれば書き込み専用のファイルを開く（ステップＳ１０３）。そして、システムコール“ｏｐｅｎ”を実行した後に（ステップＳ１０４）、戻り値の値によって実行が正常に行われたか否かを判定する（ステップＳ１０５）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ１０６）、戻り値が“≠−１”であれば属性値の設定を行い（ステップＳ１０７）、ステップＳ１０１のモードの判定からの処理を繰り返す。
【００３４】
図７（ｃ）のファイルシステムインタフェースメソッドの処理において、関数名が＜ｍｋｄｉｒ＞でディレクトリの生成を行う場合の処理では、属性値の読み込みを行った後（ステップＳ１１１）、Ｌｉｎｕｘコマンドを実行する（ステップＳ１１２）。Ｌｉｎｕｘコマンドの実行を行った後に戻り値の値によって実行が正常に行われたか否かを判定する（ステップＳ１１３）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ１１４）、戻り値が“≧０”であれば正常に実行が行われたのでステップＳ１１１の属性値の読込みからの処理を繰り返す。
【００３５】
図７（ｄ）のファイルシステムインタフェースメソッドの処理において、関数名が＜ｒｍｄｉｒ＞でディレクトリの削除を行う場合の処理では、属性値の読み込みを行った後（ステップＳ１２１）、Ｌｉｎｕｘコマンドを実行する（ステップＳ１２２）。Ｌｉｎｕｘコマンドの実行を行った後に戻り値の値によって実行が正常に行われたか否かを判定する（ステップＳ１２３）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ１２４）、戻り値が“≧０”であれば正常に実行が行われたのでステップＳ１２１の属性値の読込みからの処理を繰り返す。
【００３６】
図８のファイルシステムインタフェースメソッドの処理において、関数名が＜ｑｕｅｒｙ＞でファイルシステムの情報を検索する場合の処理では、属性値の読み込みを行った後（ステップＳ１３１）、Ｌｉｎｕｘコマンドを実行し、実行結果を格納する（ステップＳ１３２）という処理を繰り返す。
【００３７】
図９（ａ）のファイルマネージャインタフェースメソッドの処理において、関数名が＜ｍｏｕｎｔ＞でファイルシステムをマウントする場合の処理では、まず、自モジュールのオブジェクトリファレンスを取得する（ステップＳ１４１）。そして、取得したオブジェクトリファレンスが自モジュールのものであるか他モジュールのものであるかを判定する（ステップＳ１４２）。ここで、取得したオブジェクトリファレンスが自モジュールのものであればＬｉｎｕｘコマンドを実行する（ステップＳ１４３）。一方、取得したオブジェクトリファレンスが他モジュールのものであれば、他モジュールのオブジェクトリファレンスを取得する（ステップＳ１４４）。そして、リファレンスが示すオブジェクトの“ｍｏｕｎｔ”メソッドをコールする（ステップＳ１４５）。そして、ステップＳ１４１に戻ってこのような処理を繰り返す。
【００３８】
図９（ｂ）のファイルマネージャインタフェースメソッドの処理において、関数名が＜ｕｍｏｕｎｔ＞でファイルシステムをアンマウントする場合の処理では、属性値の読み込みを行った後（ステップＳ１５１）、Ｌｉｎｕｘコマンドを実行する（ステップＳ１５２）。Ｌｉｎｕｘコマンドの実行を行った後に戻り値の値によって実行が正常に行われたか否かを判定する（ステップＳ１５３）。ここで、戻り値が“−１”であればエラーと判定するが（ステップＳ１５４）、戻り値が“≧０”であれば正常に実行が行われたのでステップＳ１５１の属性値の読込みからの処理を繰り返す。
【００３９】
図９（ｃ）のファイルマネージャインタフェースメソッドの処理において、関数名が＜ｇｅｔＭｏｕｎｔ＞でマウント情報を取得する場合の処理では、属性値の読み込みを行った後（ステップＳ１６１）、Ｌｉｎｕｘコマンドを実行し、実行結果を格納する（ステップＳ１６２）という処理を繰り返す。
【００４０】
図１０は、ファイルインタフェースメソッドを使用するためのインタフェースを定義するＩＤＬの一例を示す図である。また、図１１は、ファイルシステムインタフェースメソッドを使用するためのインタフェースを定義するＩＤＬの一例を示す図である。さらに、図１２は、ファイルマネージャインタフェースメソッドを使用するためのインタフェースを定義するＩＤＬの一例を示す図である。
【００４１】
このように、各ＯＳ１ａ，１ｂで共通のＩＤＬインタフェース４ａ，４ｂをＩＤＬの言語によって決め、かつ、各ＩＤＬインタフェース４ａ，４ｂの動作をインタフェース実装部５で決定することによって、ファイルシステム３のインタフェースの共通化を実現している。また、ファイルシステム３内のモジュールが共通のインタフェースを相互に実装することによって、モジュール相互にファイルシステム３の機能をコールし、その結果を利用することが可能となる。
【００４２】
次に、シーケンス図を用いて、共通のインタフェースによってファイルを共有化するファイルシステムの実施の形態を説明する。図１３は、本発明のインタフェースによってファイルシステムを実行する処理の流れを示すシーケンス図である。図１３のシーケンス図は、ファイルを開いてデータの読み出しや書き込みを行った後にファイルを閉じるという一連の処理の流れを示している。したがって、図１、図２を参照しながら図１３のシーケンスを説明するが、この実施の形態ではクライアント／サーバのシステム形態をとり、アプリケーション６を起動するオブジェクトをクライアントとし、ファイルシステム３をサーバとする。
【００４３】
また、以下に示す実行方法において、ＩＤＬインタフェースで表されるメソッドは、“モジュール名＃Ｆｉｌｅ  Ｓｙｓｔｅｍ．Ｏｐｅｎ”のように、“モジュール名＃インタフェース．メソッド（）”とコールする。
【００４４】
まず、ステップＳ２０１において、クライアント８（つまり、図１のアプリケーション６）は、モジュール名＃Ｆｉｌｅ  Ｓｙｓｔｅｍ．ｏｐｅｎ（ｆｉｌｅ  Ｎａｍｅ）；というように、操作するファイルが存在するファイルシステムインタフェース５ｂに対して、モジュール名とファイル名を指定してファイルを開くための“ｏｐｅｎ”メソッドをコールする。すると、ステップＳ２０２において、“ｏｐｅｎ”メソッドを実装するファイルシステムインタフェース５ｂは、ＯＳ１ｂに対してシステムコール“ｏｐｅｎ”をコールする。これにより、ステップＳ２０３において、ＯＳ１ｂによって指定されたファイル名のファイル９が開かれる。さらに、ステップＳ２０４において、ＯＳ１ｂは、戻り値として、ファイルを管理する識別子となるファイルディスクリプタｆｄをファイルシステムインタフェース５ｂへ返す。すると、ステップＳ２０５において、ファイルシステムインタフェース５ｂ、このファイルディスクリプタｆｄをファイルインタフェース５ａで属性に設定する。
【００４５】
次に、ステップＳ２０６において、クライアント８は、モジュール名＃Ｆｉｌｅ．Ｒｅａｄ（ｏｕｔＳｅｑｕｅｎｃｅ，ｌｅｎｇｔｈ）；というように、操作するファイルが存在するファイルインタフェース５ａに対して、モジュール名とデータを読み出す長さ“ｌｅｎｇｔｈ”を指定して“ｒｅａｄ”メソッドをコールする。尚、“ｏｕｔＳｅｑｕｅｎｃｅ”は戻り値を格納する。すると、ステップＳ２０７において、ファイルインタフェース５ａは、ＯＳ１ｂからの戻り値であるファイルディスクリプタｆｄをファイルインタフェース５ａの属性に設定する。
【００４６】
さらに、ステップＳ２０８において、“ｒｅａｄ”メソッドを実装するファイルインタフェース５ａは、“ｏｐｅｎ”により設定されていたファイルディスクリブタｆｄを読み出し、ｆｄとｌｅｎｇｔｈを引数としてＯＳ１ｂのシステムコール“ｒｅａｄ”をコールする。これにより、ステップＳ２０９において、ＯＳ１ｂによって指定されたファイル名のファイル９が読み取られる。次に、ステップＳ２１０において、ファイルインタフェース５ａは、ＯＳ１ｂからの戻り値である取り出したデータ長“ｌｅｎｇｔｈ”を“ｏｕｔＳｅｑｕｅｎｃｅ”に格納し、ステップＳ２１１において、ファイルインタフェース５ａはデータ長“ｌｅｎｇｔｈ”をクライアント８へ返す。
【００４７】
次に、ステップＳ２１２において、クライアント８は、モジュール＃ｆｉｌｅ．ｗｒｉｔｅ（ｌｅｎｇｔｈ）；というように、操作するファイルが存在するファイルインタフェース５ａに対して、モジュール名とデータを書き込む長さ“ｌｅｎｇｔｈ”を指定して“ｗｒｉｔｅ”メソッドをコールする。尚、“ｏｕｔＳｅｑｕｅｎｃｅ”は戻り値を格納する。すると、ステップＳ２１３において、ファイルインタフェース５ａは、ＯＳ１ｂからの戻り値であるファイルディスクリプタｆｄをファイルインタフェース５ａの属性に設定する。そして、Ｓ２１４において、“ｗｒｉｔｅ”メソッドを実装するファイルインタフェース５ａは、“ｒｅａｄ”の場合と同様にファイルディスクリプタｆｄを読み出し、ｆｄとｌｅｎｇｔｈを引数としてＯＳ１ｂのシステムコール“ｗｒｉｔｅ”をコールする。これにより、ステップＳ２１５において、ＯＳ１ｂによって指定されたファイル名のファイル９が書き込まれる。次に、ステップＳ２１６において、ファイルインタフェース５ａは、ＯＳ１ｂからの戻り値である取り出したデータ長“ｌｅｎｇｔｈ”を“ｏｕｔＳｅｑｕｅｎｃｅ”に格納する。
【００４８】
次に、ステップＳ２１７において、クライアント８は、モジュール＃ｆｉｌｅ．ｃｌｏｓｅ（）；というように、操作するファイルが存在するファイルインタフェース５ａに対して、ファイルを閉じるときに該当するファイルが存在するモジュール名を指定して“ｃｌｏｓｅ”メソッドをコールする。これによって、ステップＳ２１８において、“ｃｌｏｓｅ”メソッドを実装するファイルインタフェース５ａは、設定されているファイルディスクリプタｆｄを読み出し、このファイルディスクリプタｆｄを引数としてＯＳ１ｂのシステムコール“ｃｌｏｓｅ”をコールする。そして、ステップＳ２１９において、ＯＳ１ｂはファイル９を閉じる。
【００４９】
以上述べた実施の形態は本発明を説明するための一例であり、本発明は、上記の実施の形態に限定されるものではなく、発明の要旨の範囲で種々の変形が可能である。すなわち、上記の実施の形態では、一般的な分散環境におけるファイルシステムにおいて、ＩＤＬインタフェースを用いることによってインタフェースの共通化を図る手法について説明した。しかし、具体的なファイルシステムへの応用としては、ＩＤＬインタフェースを用いてネットワークから所望のファイルをダウンロードし、ソフトウェア無線機内の複数のＯＳに跨るアプリケーションの実行プログラムを切り替えることにより、モジュールの構成を変更して複数の無線通信方式を実現させることができる。
【００５０】
【発明の効果】
以上説明したように、本発明のインタフェースによれば、ファイルシステムの共通のインタフェースを定義することによってオペレーションシステムの内部動作を決定している。これによって、ソフトウェアを異なるＯＳやマシンで動作させる移植性やファイルの拡張性の向上を図ることができると共に、機能を分散することによってマシンの保守性を向上させたり、ソフトウェアの再利用性を向上させることができる。
【図面の簡単な説明】
【図１】ＣＯＲＢＡをミドルウェアとして使用した本発明におけるファイルシステムの概念図である。
【図２】図１に示すインタフェース実装部の内部構成図である。
【図３】インタフェース実装部の定義内容を示す図であり、（ａ）はファイルインタフェースで定義したメソッド名とその定義内容、（ｂ）はファイルシステムインタフェースで定義した関数名とその定義内容、（ｃ）はファイルマネージャインタフェースで定義した関数名とその定義内容を示す。
【図４】ファイルインタフェースメソッドの処理の流れを示すフローチャートであって、（ａ）はメソッド名＜ｒｅａｄ＞の処理、（ｂ）はメソッド名＜ｗｒｉｔｅ＞の処理、（ｃ）はメソッド名＜ｓｉｚｅＯｆ＞の処理、（ｄ）はメソッド名＜ｃｌｏｓｅ＞の処理を示す。
【図５】ファイルインタフェースメソッドの処理の流れを示すフローチャートであって、メソッド名＜ｓｅｔＦｉｌｅＰｏｉｎｔｅｒ＞の処理を示す。
【図６】ファイルシステムインタフェースメソッドの処理の流れを示すフローチャートであって、（ａ）は関数名＜ｒｅｍｏｖｅ＞の処理、（ｂ）は関数名＜ｃｏｐｙ＞の処理、（ｃ）は関数名＜ｅｘｉｓｔｓ＞の処理、（ｄ）は関数名＜ｌｉｓｔ＞の処理を示す。
【図７】ファイルシステムインタフェースメソッドの処理の流れを示すフローチャートであって、（ａ）は関数名＜ｃｒｅａｔｅ＞の処理、（ｂ）は関数名＜ｏｐｅｎ＞の処理、（ｃ）は関数名＜ｍｋｄｉｒ＞の処理、（ｄ）は関数名＜ｒｍｄｉｒ＞の処理を示す。
【図８】ファイルシステムインタフェースメソッドの処理の流れを示すフローチャートであって、関数名＜ｑｕｅｒｙ＞の処理を示す。
【図９】ファイルマネージャインタフェースメソッドの処理の流れを示すフローチャートであって、（ａ）は関数名＜ｍｏｕｎｔ＞の処理、（ｂ）は関数名＜ｕｍｏｕｎｔ＞の処理、（ｃ）は関数名＜ｇｅｔＭｏｕｎｔ＞の処理を示す。
【図１０】ファイルインタフェースメソッドを使用するためのインタフェースを定義するＩＤＬの一例を示す図である。
【図１１】ファイルシステムインタフェースメソッドを使用するためのインタフェースを定義するＩＤＬの一例を示す図である。
【図１２】ファイルマネージャインタフェースメソッドを使用するためのインタフェースを定義するＩＤＬの一例を示す図である。
【図１３】本発明のインタフェースによってファイルシステムを実行する処理の流れを示すシーケンス図である。
【図１４】従来のファイルシステムの概念図である。
【図１５】ミルウェアを使用した従来のファイルシステムの概念図である。
【符号の説明】
１ａ，１ｂ，１１ａ，１１ｂ，２１ａ，２１ｂ  ０Ｓ（オペレーションシステム）、２ａ，２ｂ，２２ａ，２２ｂ  ミドルウェア、３，１２  ファイルシステム、４ａ，４ｂ  ＩＤＬインタフェース、５  インタフェース実装部、５ａ  ファイルインタフェース、５ｂ  ファイルシステムインタフェース、５ｃ  ファイルマネージャインタフェース、６，１３，２３ａ，２３ｂ  アプリケーション、７，２４  ソフトウェアバス、８  クライアント、９  ファイル。
【図１】
2004355309.tif 000003
【図２】
2004355309.tif 000004
【図３】
2004355309.tif 000005
【図４】
2004355309.tif 000006
【図５】
2004355309.tif 000007
【図６】
2004355309.tif 000008
【図７】
2004355309.tif 000009
【図８】
2004355309.tif 000010
【図９】
2004355309.tif 000011
【図１０】
2004355309.tif 000012
【図１１】
2004355309.tif 000013
【図１２】
2004355309.tif 000014
【図１３】
2004355309.tif 000015
【図１４】
2004355309.tif 000016
【図１５】
2004355309.tif 000017